# HG changeset patch # User andrew # Date 1345796957 -3600 # Node ID aa2c9ce0663291af00f15b816882080833f4d0ed # Parent d15095dfd348117bcb21dece5642eeb73c3289da# Parent 2c6933c5106b81a8578b70996fe5b735fb3adb60 Merge jdk8-b52 diff -r d15095dfd348 -r aa2c9ce06632 .hgtags --- a/.hgtags Fri Aug 03 20:56:16 2012 +0100 +++ b/.hgtags Fri Aug 24 09:29:17 2012 +0100 @@ -175,3 +175,5 @@ 3e4ab821f46166fcf63e8fe5c8046216003c941f jdk8-b48 51707c3b75c0f521794d9ab425f4e5b2351c70c1 jdk8-b49 e4bae5c53fca8fcb9393d47fd36a34b9e2e8d4ec jdk8-b50 +e865efbc71059a414b3b2dd2e0adfcb3d2ab6ff9 jdk8-b51 +e8569a473cee7f4955bd9e76a9bdf6c6a07ced27 jdk8-b52 diff -r d15095dfd348 -r aa2c9ce06632 make/Makefile --- a/make/Makefile Fri Aug 03 20:56:16 2012 +0100 +++ b/make/Makefile Fri Aug 24 09:29:17 2012 +0100 @@ -237,7 +237,7 @@ SUBDIRS += apple endif SUBDIRS_tools = launchers -SUBDIRS_misc = org sunw jpda +SUBDIRS_misc = org jpda # demos ifndef NO_DEMOS diff -r d15095dfd348 -r aa2c9ce06632 make/common/Program.gmk --- a/make/common/Program.gmk Fri Aug 03 20:56:16 2012 +0100 +++ b/make/common/Program.gmk Fri Aug 24 09:29:17 2012 +0100 @@ -155,7 +155,6 @@ ifndef LOCAL_RESOURCE_FILE @$(ECHO) $(OBJDIR)/$(PROGRAM).res >> $@ endif - @$(ECHO) setargv.obj >> $@ @$(ECHO) Created $@ $(ACTUAL_PROGRAM):: $(OBJDIR)/$(PROGRAM)$(EXE_SUFFIX) diff -r d15095dfd348 -r aa2c9ce06632 make/common/Release.gmk --- a/make/common/Release.gmk Fri Aug 03 20:56:16 2012 +0100 +++ b/make/common/Release.gmk Fri Aug 24 09:29:17 2012 +0100 @@ -305,8 +305,7 @@ org/ietf \ org/omg \ org/w3c/dom \ - org/xml/sax \ - sunw + org/xml/sax # # Directories where sources may be found. If a file with the same path # name exists in more than one of these places, the one found last on this diff -r d15095dfd348 -r aa2c9ce06632 make/docs/CORE_PKGS.gmk --- a/make/docs/CORE_PKGS.gmk Fri Aug 03 20:56:16 2012 +0100 +++ b/make/docs/CORE_PKGS.gmk Fri Aug 24 09:29:17 2012 +0100 @@ -33,7 +33,6 @@ java.awt.peer \ java.awt.dnd.peer \ sun.* \ - sunw.* \ com.sun.* \ org.apache.* \ org.jcp.* \ diff -r d15095dfd348 -r aa2c9ce06632 make/java/jli/Makefile --- a/make/java/jli/Makefile Fri Aug 03 20:56:16 2012 +0100 +++ b/make/java/jli/Makefile Fri Aug 24 09:29:17 2012 +0100 @@ -92,7 +92,8 @@ # add platform specific files ifeq ($(PLATFORM), windows) - FILES_c += java_md.c + FILES_c += java_md.c \ + cmdtoargs.c else # NIXES FILES_c += java_md_common.c ifeq ($(PLATFORM), macosx) @@ -151,7 +152,11 @@ -export:JLI_ReportErrorMessage \ -export:JLI_ReportErrorMessageSys \ -export:JLI_ReportMessage \ - -export:JLI_ReportExceptionDescription + -export:JLI_ReportExceptionDescription \ + -export:JLI_MemAlloc \ + -export:JLI_CmdToArgs \ + -export:JLI_GetStdArgc \ + -export:JLI_GetStdArgs endif # PLATFORM OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC) diff -r d15095dfd348 -r aa2c9ce06632 make/java/jli/mapfile-vers --- a/make/java/jli/mapfile-vers Fri Aug 03 20:56:16 2012 +0100 +++ b/make/java/jli/mapfile-vers Fri Aug 24 09:29:17 2012 +0100 @@ -1,5 +1,5 @@ # -# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -34,6 +34,8 @@ JLI_ReportErrorMessageSys; JLI_ReportMessage; JLI_ReportExceptionDescription; + JLI_GetStdArgs; + JLI_GetStdArgc; local: *; }; diff -r d15095dfd348 -r aa2c9ce06632 make/java/nio/FILES_java.gmk --- a/make/java/nio/FILES_java.gmk Fri Aug 03 20:56:16 2012 +0100 +++ b/make/java/nio/FILES_java.gmk Fri Aug 24 09:29:17 2012 +0100 @@ -221,8 +221,6 @@ sun/nio/cs/HistoricallyNamedCharset.java \ sun/nio/cs/ISO_8859_1.java \ sun/nio/cs/SingleByte.java \ - sun/nio/cs/SingleByteDecoder.java \ - sun/nio/cs/SingleByteEncoder.java \ sun/nio/cs/StreamEncoder.java \ sun/nio/cs/StreamDecoder.java \ sun/nio/cs/Surrogate.java \ diff -r d15095dfd348 -r aa2c9ce06632 make/java/nio/Makefile --- a/make/java/nio/Makefile Fri Aug 03 20:56:16 2012 +0100 +++ b/make/java/nio/Makefile Fri Aug 24 09:29:17 2012 +0100 @@ -282,6 +282,9 @@ sun/nio/fs/BsdFileSystem.java \ sun/nio/fs/BsdFileSystemProvider.java \ sun/nio/fs/BsdNativeDispatcher.java \ + sun/nio/fs/MacOSXFileSystemProvider.java \ + sun/nio/fs/MacOSXFileSystem.java \ + sun/nio/fs/MacOSXNativeDispatcher.java \ sun/nio/fs/PollingWatchService.java \ sun/nio/fs/UnixChannelFactory.java \ sun/nio/fs/UnixCopyFile.java \ @@ -311,6 +314,7 @@ \ GnomeFileTypeDetector.c \ BsdNativeDispatcher.c \ + MacOSXNativeDispatcher.c \ UnixCopyFile.c \ UnixNativeDispatcher.c \ \ @@ -385,7 +389,7 @@ OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -lnet -lpthread $(LIBDL) endif ifeq ($(PLATFORM), macosx) -OTHER_LDLIBS += -L$(LIBDIR) -ljava -lnet -pthread +OTHER_LDLIBS += -L$(LIBDIR) -ljava -lnet -pthread -framework CoreFoundation endif ifeq ($(PLATFORM), solaris) OTHER_LDLIBS += $(JVMLIB) $(LIBSOCKET) -lposix4 $(LIBDL) -lsendfile \ diff -r d15095dfd348 -r aa2c9ce06632 make/java/sun_nio/FILES_java.gmk --- a/make/java/sun_nio/FILES_java.gmk Fri Aug 03 20:56:16 2012 +0100 +++ b/make/java/sun_nio/FILES_java.gmk Fri Aug 24 09:29:17 2012 +0100 @@ -34,8 +34,6 @@ sun/nio/cs/HistoricallyNamedCharset.java \ sun/nio/cs/Surrogate.java \ sun/nio/cs/CharsetMapping.java \ - sun/nio/cs/SingleByteEncoder.java \ - sun/nio/cs/SingleByteDecoder.java \ sun/nio/cs/UnicodeEncoder.java \ sun/nio/cs/UnicodeDecoder.java \ sun/nio/cs/ISO_8859_1.java \ diff -r d15095dfd348 -r aa2c9ce06632 make/java/zip/mapfile-vers --- a/make/java/zip/mapfile-vers Fri Aug 03 20:56:16 2012 +0100 +++ b/make/java/zip/mapfile-vers Fri Aug 24 09:29:17 2012 +0100 @@ -37,16 +37,12 @@ Java_java_util_zip_Deflater_deflateBytes; Java_java_util_zip_Deflater_end; Java_java_util_zip_Deflater_getAdler; - Java_java_util_zip_Deflater_getBytesRead; - Java_java_util_zip_Deflater_getBytesWritten; Java_java_util_zip_Deflater_init; Java_java_util_zip_Deflater_initIDs; Java_java_util_zip_Deflater_reset; Java_java_util_zip_Deflater_setDictionary; Java_java_util_zip_Inflater_end; Java_java_util_zip_Inflater_getAdler; - Java_java_util_zip_Inflater_getBytesRead; - Java_java_util_zip_Inflater_getBytesWritten; Java_java_util_zip_Inflater_inflateBytes; Java_java_util_zip_Inflater_init; Java_java_util_zip_Inflater_initIDs; diff -r d15095dfd348 -r aa2c9ce06632 make/sun/nio/cs/FILES_java.gmk --- a/make/sun/nio/cs/FILES_java.gmk Fri Aug 03 20:56:16 2012 +0100 +++ b/make/sun/nio/cs/FILES_java.gmk Fri Aug 24 09:29:17 2012 +0100 @@ -127,7 +127,17 @@ sun/nio/cs/ext/MS949.java \ sun/nio/cs/ext/MS950.java \ sun/nio/cs/ext/GBK.java \ - sun/nio/cs/ext/Big5.java + sun/nio/cs/ext/Big5.java \ + sun/nio/cs/ext/SJIS.java \ + sun/nio/cs/ext/PCK.java \ + sun/nio/cs/ext/JIS_X_0201.java \ + sun/nio/cs/ext/JIS_X_0208.java \ + sun/nio/cs/ext/JIS_X_0208_MS5022X.java \ + sun/nio/cs/ext/JIS_X_0208_MS932.java \ + sun/nio/cs/ext/JIS_X_0208_Solaris.java \ + sun/nio/cs/ext/JIS_X_0212.java \ + sun/nio/cs/ext/JIS_X_0212_MS5022X.java \ + sun/nio/cs/ext/JIS_X_0212_Solaris.java FILES_java = $(FILES_src) $(FILES_gen_extcs) diff -r d15095dfd348 -r aa2c9ce06632 make/sunw/Makefile --- a/make/sunw/Makefile Fri Aug 03 20:56:16 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -# -# Copyright (c) 1996, 2005, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -BUILDDIR = .. -PACKAGE = sunw -PRODUCT = sun -include $(BUILDDIR)/common/Defs.gmk - -# -# Files -# -FILES_java = \ - sunw/util/EventObject.java \ - sunw/util/EventListener.java \ - sunw/io/Serializable.java - -# -# include rules -# -include $(BUILDDIR)/common/Rules.gmk - -# -# Rules -# -clean clobber:: .delete.classlist - $(RM) -r $(CLASSBINDIR)/sunw - diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/DoubleByte-X.java.template --- a/make/tools/CharsetMapping/DoubleByte-X.java.template Fri Aug 03 20:56:16 2012 +0100 +++ b/make/tools/CharsetMapping/DoubleByte-X.java.template Fri Aug 24 09:29:17 2012 +0100 @@ -54,7 +54,7 @@ public CharsetEncoder newEncoder() { initc2b(); - return new DoubleByte.Encoder$ENCTYPE$(this, c2b, c2bIndex); + return new DoubleByte.Encoder$ENCTYPE$(this, $ENC_REPLACEMENT$ c2b, c2bIndex); } $B2C$ diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/JIS_X_0201.c2b --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/JIS_X_0201.c2b Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,2 @@ +0x7e 0x203e +0x5c 0x00a5 diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/JIS_X_0201.map --- a/make/tools/CharsetMapping/JIS_X_0201.map Fri Aug 03 20:56:16 2012 +0100 +++ b/make/tools/CharsetMapping/JIS_X_0201.map Fri Aug 24 09:29:17 2012 +0100 @@ -1,257 +1,192 @@ -#Generated from JIS_X_0201.java -0x00 U+0000 -0x01 U+0001 -0x02 U+0002 -0x03 U+0003 -0x04 U+0004 -0x05 U+0005 -0x06 U+0006 -0x07 U+0007 -0x08 U+0008 -0x09 U+0009 -0x0a U+000a -0x0b U+000b -0x0c U+000c -0x0d U+000d -0x0e U+000e -0x0f U+000f -0x10 U+0010 -0x11 U+0011 -0x12 U+0012 -0x13 U+0013 -0x14 U+0014 -0x15 U+0015 -0x16 U+0016 -0x17 U+0017 -0x18 U+0018 -0x19 U+0019 -0x1a U+001a -0x1b U+001b -0x1c U+001c -0x1d U+001d -0x1e U+001e -0x1f U+001f -0x20 U+0020 -0x21 U+0021 -0x22 U+0022 -0x23 U+0023 -0x24 U+0024 -0x25 U+0025 -0x26 U+0026 -0x27 U+0027 -0x28 U+0028 -0x29 U+0029 -0x2a U+002a -0x2b U+002b -0x2c U+002c -0x2d U+002d -0x2e U+002e -0x2f U+002f -0x30 U+0030 -0x31 U+0031 -0x32 U+0032 -0x33 U+0033 -0x34 U+0034 -0x35 U+0035 -0x36 U+0036 -0x37 U+0037 -0x38 U+0038 -0x39 U+0039 -0x3a U+003a -0x3b U+003b -0x3c U+003c -0x3d U+003d -0x3e U+003e -0x3f U+003f -0x40 U+0040 -0x41 U+0041 -0x42 U+0042 -0x43 U+0043 -0x44 U+0044 -0x45 U+0045 -0x46 U+0046 -0x47 U+0047 -0x48 U+0048 -0x49 U+0049 -0x4a U+004a -0x4b U+004b -0x4c U+004c -0x4d U+004d -0x4e U+004e -0x4f U+004f -0x50 U+0050 -0x51 U+0051 -0x52 U+0052 -0x53 U+0053 -0x54 U+0054 -0x55 U+0055 -0x56 U+0056 -0x57 U+0057 -0x58 U+0058 -0x59 U+0059 -0x5a U+005a -0x5b U+005b -0x5c U+005c -0x5d U+005d -0x5e U+005e -0x5f U+005f -0x60 U+0060 -0x61 U+0061 -0x62 U+0062 -0x63 U+0063 -0x64 U+0064 -0x65 U+0065 -0x66 U+0066 -0x67 U+0067 -0x68 U+0068 -0x69 U+0069 -0x6a U+006a -0x6b U+006b -0x6c U+006c -0x6d U+006d -0x6e U+006e -0x6f U+006f -0x70 U+0070 -0x71 U+0071 -0x72 U+0072 -0x73 U+0073 -0x74 U+0074 -0x75 U+0075 -0x76 U+0076 -0x77 U+0077 -0x78 U+0078 -0x79 U+0079 -0x7a U+007a -0x7b U+007b -0x7c U+007c -0x7d U+007d -0x7e U+007e -0x7f U+007f -0x80 U+fffd -0x81 U+fffd -0x82 U+fffd -0x83 U+fffd -0x84 U+fffd -0x85 U+fffd -0x86 U+fffd -0x87 U+fffd -0x88 U+fffd -0x89 U+fffd -0x8a U+fffd -0x8b U+fffd -0x8c U+fffd -0x8d U+fffd -0x8e U+fffd -0x8f U+fffd -0x90 U+fffd -0x91 U+fffd -0x92 U+fffd -0x93 U+fffd -0x94 U+fffd -0x95 U+fffd -0x96 U+fffd -0x97 U+fffd -0x98 U+fffd -0x99 U+fffd -0x9a U+fffd -0x9b U+fffd -0x9c U+fffd -0x9d U+fffd -0x9e U+fffd -0x9f U+fffd -0xa0 U+fffd -0xa1 U+ff61 -0xa2 U+ff62 -0xa3 U+ff63 -0xa4 U+ff64 -0xa5 U+ff65 -0xa6 U+ff66 -0xa7 U+ff67 -0xa8 U+ff68 -0xa9 U+ff69 -0xaa U+ff6a -0xab U+ff6b -0xac U+ff6c -0xad U+ff6d -0xae U+ff6e -0xaf U+ff6f -0xb0 U+ff70 -0xb1 U+ff71 -0xb2 U+ff72 -0xb3 U+ff73 -0xb4 U+ff74 -0xb5 U+ff75 -0xb6 U+ff76 -0xb7 U+ff77 -0xb8 U+ff78 -0xb9 U+ff79 -0xba U+ff7a -0xbb U+ff7b -0xbc U+ff7c -0xbd U+ff7d -0xbe U+ff7e -0xbf U+ff7f -0xc0 U+ff80 -0xc1 U+ff81 -0xc2 U+ff82 -0xc3 U+ff83 -0xc4 U+ff84 -0xc5 U+ff85 -0xc6 U+ff86 -0xc7 U+ff87 -0xc8 U+ff88 -0xc9 U+ff89 -0xca U+ff8a -0xcb U+ff8b -0xcc U+ff8c -0xcd U+ff8d -0xce U+ff8e -0xcf U+ff8f -0xd0 U+ff90 -0xd1 U+ff91 -0xd2 U+ff92 -0xd3 U+ff93 -0xd4 U+ff94 -0xd5 U+ff95 -0xd6 U+ff96 -0xd7 U+ff97 -0xd8 U+ff98 -0xd9 U+ff99 -0xda U+ff9a -0xdb U+ff9b -0xdc U+ff9c -0xdd U+ff9d -0xde U+ff9e -0xdf U+ff9f -0xe0 U+fffd -0xe1 U+fffd -0xe2 U+fffd -0xe3 U+fffd -0xe4 U+fffd -0xe5 U+fffd -0xe6 U+fffd -0xe7 U+fffd -0xe8 U+fffd -0xe9 U+fffd -0xea U+fffd -0xeb U+fffd -0xec U+fffd -0xed U+fffd -0xee U+fffd -0xef U+fffd -0xf0 U+fffd -0xf1 U+fffd -0xf2 U+fffd -0xf3 U+fffd -0xf4 U+fffd -0xf5 U+fffd -0xf6 U+fffd -0xf7 U+fffd -0xf8 U+fffd -0xf9 U+fffd -0xfa U+fffd -0xfb U+fffd -0xfc U+fffd -0xfd U+fffd -0xfe U+fffd -0xff U+fffd +# copy/pasted from JIS_X_0201.b2c + code points 0-0x1f and 0x7f +0x00 0x0000 +0x01 0x0001 +0x02 0x0002 +0x03 0x0003 +0x04 0x0004 +0x05 0x0005 +0x06 0x0006 +0x07 0x0007 +0x08 0x0008 +0x09 0x0009 +0x0A 0x000A +0x0B 0x000B +0x0C 0x000C +0x0D 0x000D +0x0E 0x000E +0x0F 0x000F +0x10 0x0010 +0x11 0x0011 +0x12 0x0012 +0x13 0x0013 +0x14 0x0014 +0x15 0x0015 +0x16 0x0016 +0x17 0x0017 +0x18 0x0018 +0x19 0x0019 +0x1A 0x001A +0x1B 0x001B +0x1C 0x001C +0x1D 0x001D +0x1E 0x001E +0x1F 0x001F +0x20 0x0020 # SPACE +0x21 0x0021 # EXCLAMATION MARK +0x22 0x0022 # QUOTATION MARK +0x23 0x0023 # NUMBER SIGN +0x24 0x0024 # DOLLAR SIGN +0x25 0x0025 # PERCENT SIGN +0x26 0x0026 # AMPERSAND +0x27 0x0027 # APOSTROPHE +0x28 0x0028 # LEFT PARENTHESIS +0x29 0x0029 # RIGHT PARENTHESIS +0x2A 0x002A # ASTERISK +0x2B 0x002B # PLUS SIGN +0x2C 0x002C # COMMA +0x2D 0x002D # HYPHEN-MINUS +0x2E 0x002E # FULL STOP +0x2F 0x002F # SOLIDUS +0x30 0x0030 # DIGIT ZERO +0x31 0x0031 # DIGIT ONE +0x32 0x0032 # DIGIT TWO +0x33 0x0033 # DIGIT THREE +0x34 0x0034 # DIGIT FOUR +0x35 0x0035 # DIGIT FIVE +0x36 0x0036 # DIGIT SIX +0x37 0x0037 # DIGIT SEVEN +0x38 0x0038 # DIGIT EIGHT +0x39 0x0039 # DIGIT NINE +0x3A 0x003A # COLON +0x3B 0x003B # SEMICOLON +0x3C 0x003C # LESS-THAN SIGN +0x3D 0x003D # EQUALS SIGN +0x3E 0x003E # GREATER-THAN SIGN +0x3F 0x003F # QUESTION MARK +0x40 0x0040 # COMMERCIAL AT +0x41 0x0041 # LATIN CAPITAL LETTER A +0x42 0x0042 # LATIN CAPITAL LETTER B +0x43 0x0043 # LATIN CAPITAL LETTER C +0x44 0x0044 # LATIN CAPITAL LETTER D +0x45 0x0045 # LATIN CAPITAL LETTER E +0x46 0x0046 # LATIN CAPITAL LETTER F +0x47 0x0047 # LATIN CAPITAL LETTER G +0x48 0x0048 # LATIN CAPITAL LETTER H +0x49 0x0049 # LATIN CAPITAL LETTER I +0x4A 0x004A # LATIN CAPITAL LETTER J +0x4B 0x004B # LATIN CAPITAL LETTER K +0x4C 0x004C # LATIN CAPITAL LETTER L +0x4D 0x004D # LATIN CAPITAL LETTER M +0x4E 0x004E # LATIN CAPITAL LETTER N +0x4F 0x004F # LATIN CAPITAL LETTER O +0x50 0x0050 # LATIN CAPITAL LETTER P +0x51 0x0051 # LATIN CAPITAL LETTER Q +0x52 0x0052 # LATIN CAPITAL LETTER R +0x53 0x0053 # LATIN CAPITAL LETTER S +0x54 0x0054 # LATIN CAPITAL LETTER T +0x55 0x0055 # LATIN CAPITAL LETTER U +0x56 0x0056 # LATIN CAPITAL LETTER V +0x57 0x0057 # LATIN CAPITAL LETTER W +0x58 0x0058 # LATIN CAPITAL LETTER X +0x59 0x0059 # LATIN CAPITAL LETTER Y +0x5A 0x005A # LATIN CAPITAL LETTER Z +0x5B 0x005B # LEFT SQUARE BRACKET +0x5C 0x005C # YEN SIGN +0x5D 0x005D # RIGHT SQUARE BRACKET +0x5E 0x005E # CIRCUMFLEX ACCENT +0x5F 0x005F # LOW LINE +0x60 0x0060 # GRAVE ACCENT +0x61 0x0061 # LATIN SMALL LETTER A +0x62 0x0062 # LATIN SMALL LETTER B +0x63 0x0063 # LATIN SMALL LETTER C +0x64 0x0064 # LATIN SMALL LETTER D +0x65 0x0065 # LATIN SMALL LETTER E +0x66 0x0066 # LATIN SMALL LETTER F +0x67 0x0067 # LATIN SMALL LETTER G +0x68 0x0068 # LATIN SMALL LETTER H +0x69 0x0069 # LATIN SMALL LETTER I +0x6A 0x006A # LATIN SMALL LETTER J +0x6B 0x006B # LATIN SMALL LETTER K +0x6C 0x006C # LATIN SMALL LETTER L +0x6D 0x006D # LATIN SMALL LETTER M +0x6E 0x006E # LATIN SMALL LETTER N +0x6F 0x006F # LATIN SMALL LETTER O +0x70 0x0070 # LATIN SMALL LETTER P +0x71 0x0071 # LATIN SMALL LETTER Q +0x72 0x0072 # LATIN SMALL LETTER R +0x73 0x0073 # LATIN SMALL LETTER S +0x74 0x0074 # LATIN SMALL LETTER T +0x75 0x0075 # LATIN SMALL LETTER U +0x76 0x0076 # LATIN SMALL LETTER V +0x77 0x0077 # LATIN SMALL LETTER W +0x78 0x0078 # LATIN SMALL LETTER X +0x79 0x0079 # LATIN SMALL LETTER Y +0x7A 0x007A # LATIN SMALL LETTER Z +0x7B 0x007B # LEFT CURLY BRACKET +0x7C 0x007C # VERTICAL LINE +0x7D 0x007D # RIGHT CURLY BRACKET +0x7E 0x007E # OVERLINE +0x7F 0x007F +0xA1 0xFF61 # HALFWIDTH IDEOGRAPHIC FULL STOP +0xA2 0xFF62 # HALFWIDTH LEFT CORNER BRACKET +0xA3 0xFF63 # HALFWIDTH RIGHT CORNER BRACKET +0xA4 0xFF64 # HALFWIDTH IDEOGRAPHIC COMMA +0xA5 0xFF65 # HALFWIDTH KATAKANA MIDDLE DOT +0xA6 0xFF66 # HALFWIDTH KATAKANA LETTER WO +0xA7 0xFF67 # HALFWIDTH KATAKANA LETTER SMALL A +0xA8 0xFF68 # HALFWIDTH KATAKANA LETTER SMALL I +0xA9 0xFF69 # HALFWIDTH KATAKANA LETTER SMALL U +0xAA 0xFF6A # HALFWIDTH KATAKANA LETTER SMALL E +0xAB 0xFF6B # HALFWIDTH KATAKANA LETTER SMALL O +0xAC 0xFF6C # HALFWIDTH KATAKANA LETTER SMALL YA +0xAD 0xFF6D # HALFWIDTH KATAKANA LETTER SMALL YU +0xAE 0xFF6E # HALFWIDTH KATAKANA LETTER SMALL YO +0xAF 0xFF6F # HALFWIDTH KATAKANA LETTER SMALL TU +0xB0 0xFF70 # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK +0xB1 0xFF71 # HALFWIDTH KATAKANA LETTER A +0xB2 0xFF72 # HALFWIDTH KATAKANA LETTER I +0xB3 0xFF73 # HALFWIDTH KATAKANA LETTER U +0xB4 0xFF74 # HALFWIDTH KATAKANA LETTER E +0xB5 0xFF75 # HALFWIDTH KATAKANA LETTER O +0xB6 0xFF76 # HALFWIDTH KATAKANA LETTER KA +0xB7 0xFF77 # HALFWIDTH KATAKANA LETTER KI +0xB8 0xFF78 # HALFWIDTH KATAKANA LETTER KU +0xB9 0xFF79 # HALFWIDTH KATAKANA LETTER KE +0xBA 0xFF7A # HALFWIDTH KATAKANA LETTER KO +0xBB 0xFF7B # HALFWIDTH KATAKANA LETTER SA +0xBC 0xFF7C # HALFWIDTH KATAKANA LETTER SI +0xBD 0xFF7D # HALFWIDTH KATAKANA LETTER SU +0xBE 0xFF7E # HALFWIDTH KATAKANA LETTER SE +0xBF 0xFF7F # HALFWIDTH KATAKANA LETTER SO +0xC0 0xFF80 # HALFWIDTH KATAKANA LETTER TA +0xC1 0xFF81 # HALFWIDTH KATAKANA LETTER TI +0xC2 0xFF82 # HALFWIDTH KATAKANA LETTER TU +0xC3 0xFF83 # HALFWIDTH KATAKANA LETTER TE +0xC4 0xFF84 # HALFWIDTH KATAKANA LETTER TO +0xC5 0xFF85 # HALFWIDTH KATAKANA LETTER NA +0xC6 0xFF86 # HALFWIDTH KATAKANA LETTER NI +0xC7 0xFF87 # HALFWIDTH KATAKANA LETTER NU +0xC8 0xFF88 # HALFWIDTH KATAKANA LETTER NE +0xC9 0xFF89 # HALFWIDTH KATAKANA LETTER NO +0xCA 0xFF8A # HALFWIDTH KATAKANA LETTER HA +0xCB 0xFF8B # HALFWIDTH KATAKANA LETTER HI +0xCC 0xFF8C # HALFWIDTH KATAKANA LETTER HU +0xCD 0xFF8D # HALFWIDTH KATAKANA LETTER HE +0xCE 0xFF8E # HALFWIDTH KATAKANA LETTER HO +0xCF 0xFF8F # HALFWIDTH KATAKANA LETTER MA +0xD0 0xFF90 # HALFWIDTH KATAKANA LETTER MI +0xD1 0xFF91 # HALFWIDTH KATAKANA LETTER MU +0xD2 0xFF92 # HALFWIDTH KATAKANA LETTER ME +0xD3 0xFF93 # HALFWIDTH KATAKANA LETTER MO +0xD4 0xFF94 # HALFWIDTH KATAKANA LETTER YA +0xD5 0xFF95 # HALFWIDTH KATAKANA LETTER YU +0xD6 0xFF96 # HALFWIDTH KATAKANA LETTER YO +0xD7 0xFF97 # HALFWIDTH KATAKANA LETTER RA +0xD8 0xFF98 # HALFWIDTH KATAKANA LETTER RI +0xD9 0xFF99 # HALFWIDTH KATAKANA LETTER RU +0xDA 0xFF9A # HALFWIDTH KATAKANA LETTER RE +0xDB 0xFF9B # HALFWIDTH KATAKANA LETTER RO +0xDC 0xFF9C # HALFWIDTH KATAKANA LETTER WA +0xDD 0xFF9D # HALFWIDTH KATAKANA LETTER N +0xDE 0xFF9E # HALFWIDTH KATAKANA VOICED SOUND MARK +0xDF 0xFF9F # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/JIS_X_0208.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/JIS_X_0208.map Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,6879 @@ +0x2121 0x3000 +0x2122 0x3001 +0x2123 0x3002 +0x2124 0xff0c +0x2125 0xff0e +0x2126 0x30fb +0x2127 0xff1a +0x2128 0xff1b +0x2129 0xff1f +0x212a 0xff01 +0x212b 0x309b +0x212c 0x309c +0x212d 0x00b4 +0x212e 0xff40 +0x212f 0x00a8 +0x2130 0xff3e +0x2131 0xffe3 +0x2132 0xff3f +0x2133 0x30fd +0x2134 0x30fe +0x2135 0x309d +0x2136 0x309e +0x2137 0x3003 +0x2138 0x4edd +0x2139 0x3005 +0x213a 0x3006 +0x213b 0x3007 +0x213c 0x30fc +0x213d 0x2014 +0x213e 0x2010 +0x213f 0xff0f +0x2140 0xff3c +0x2141 0x301c +0x2142 0x2016 +0x2143 0xff5c +0x2144 0x2026 +0x2145 0x2025 +0x2146 0x2018 +0x2147 0x2019 +0x2148 0x201c +0x2149 0x201d +0x214a 0xff08 +0x214b 0xff09 +0x214c 0x3014 +0x214d 0x3015 +0x214e 0xff3b +0x214f 0xff3d +0x2150 0xff5b +0x2151 0xff5d +0x2152 0x3008 +0x2153 0x3009 +0x2154 0x300a +0x2155 0x300b +0x2156 0x300c +0x2157 0x300d +0x2158 0x300e +0x2159 0x300f +0x215a 0x3010 +0x215b 0x3011 +0x215c 0xff0b +0x215d 0x2212 +0x215e 0x00b1 +0x215f 0x00d7 +0x2160 0x00f7 +0x2161 0xff1d +0x2162 0x2260 +0x2163 0xff1c +0x2164 0xff1e +0x2165 0x2266 +0x2166 0x2267 +0x2167 0x221e +0x2168 0x2234 +0x2169 0x2642 +0x216a 0x2640 +0x216b 0x00b0 +0x216c 0x2032 +0x216d 0x2033 +0x216e 0x2103 +0x216f 0xffe5 +0x2170 0xff04 +0x2171 0x00a2 +0x2172 0x00a3 +0x2173 0xff05 +0x2174 0xff03 +0x2175 0xff06 +0x2176 0xff0a +0x2177 0xff20 +0x2178 0x00a7 +0x2179 0x2606 +0x217a 0x2605 +0x217b 0x25cb +0x217c 0x25cf +0x217d 0x25ce +0x217e 0x25c7 +0x2221 0x25c6 +0x2222 0x25a1 +0x2223 0x25a0 +0x2224 0x25b3 +0x2225 0x25b2 +0x2226 0x25bd +0x2227 0x25bc +0x2228 0x203b +0x2229 0x3012 +0x222a 0x2192 +0x222b 0x2190 +0x222c 0x2191 +0x222d 0x2193 +0x222e 0x3013 +0x223a 0x2208 +0x223b 0x220b +0x223c 0x2286 +0x223d 0x2287 +0x223e 0x2282 +0x223f 0x2283 +0x2240 0x222a +0x2241 0x2229 +0x224a 0x2227 +0x224b 0x2228 +0x224c 0x00ac +0x224d 0x21d2 +0x224e 0x21d4 +0x224f 0x2200 +0x2250 0x2203 +0x225c 0x2220 +0x225d 0x22a5 +0x225e 0x2312 +0x225f 0x2202 +0x2260 0x2207 +0x2261 0x2261 +0x2262 0x2252 +0x2263 0x226a +0x2264 0x226b +0x2265 0x221a +0x2266 0x223d +0x2267 0x221d +0x2268 0x2235 +0x2269 0x222b +0x226a 0x222c +0x2272 0x212b +0x2273 0x2030 +0x2274 0x266f +0x2275 0x266d +0x2276 0x266a +0x2277 0x2020 +0x2278 0x2021 +0x2279 0x00b6 +0x227e 0x25ef +0x2330 0xff10 +0x2331 0xff11 +0x2332 0xff12 +0x2333 0xff13 +0x2334 0xff14 +0x2335 0xff15 +0x2336 0xff16 +0x2337 0xff17 +0x2338 0xff18 +0x2339 0xff19 +0x2341 0xff21 +0x2342 0xff22 +0x2343 0xff23 +0x2344 0xff24 +0x2345 0xff25 +0x2346 0xff26 +0x2347 0xff27 +0x2348 0xff28 +0x2349 0xff29 +0x234a 0xff2a +0x234b 0xff2b +0x234c 0xff2c +0x234d 0xff2d +0x234e 0xff2e +0x234f 0xff2f +0x2350 0xff30 +0x2351 0xff31 +0x2352 0xff32 +0x2353 0xff33 +0x2354 0xff34 +0x2355 0xff35 +0x2356 0xff36 +0x2357 0xff37 +0x2358 0xff38 +0x2359 0xff39 +0x235a 0xff3a +0x2361 0xff41 +0x2362 0xff42 +0x2363 0xff43 +0x2364 0xff44 +0x2365 0xff45 +0x2366 0xff46 +0x2367 0xff47 +0x2368 0xff48 +0x2369 0xff49 +0x236a 0xff4a +0x236b 0xff4b +0x236c 0xff4c +0x236d 0xff4d +0x236e 0xff4e +0x236f 0xff4f +0x2370 0xff50 +0x2371 0xff51 +0x2372 0xff52 +0x2373 0xff53 +0x2374 0xff54 +0x2375 0xff55 +0x2376 0xff56 +0x2377 0xff57 +0x2378 0xff58 +0x2379 0xff59 +0x237a 0xff5a +0x2421 0x3041 +0x2422 0x3042 +0x2423 0x3043 +0x2424 0x3044 +0x2425 0x3045 +0x2426 0x3046 +0x2427 0x3047 +0x2428 0x3048 +0x2429 0x3049 +0x242a 0x304a +0x242b 0x304b +0x242c 0x304c +0x242d 0x304d +0x242e 0x304e +0x242f 0x304f +0x2430 0x3050 +0x2431 0x3051 +0x2432 0x3052 +0x2433 0x3053 +0x2434 0x3054 +0x2435 0x3055 +0x2436 0x3056 +0x2437 0x3057 +0x2438 0x3058 +0x2439 0x3059 +0x243a 0x305a +0x243b 0x305b +0x243c 0x305c +0x243d 0x305d +0x243e 0x305e +0x243f 0x305f +0x2440 0x3060 +0x2441 0x3061 +0x2442 0x3062 +0x2443 0x3063 +0x2444 0x3064 +0x2445 0x3065 +0x2446 0x3066 +0x2447 0x3067 +0x2448 0x3068 +0x2449 0x3069 +0x244a 0x306a +0x244b 0x306b +0x244c 0x306c +0x244d 0x306d +0x244e 0x306e +0x244f 0x306f +0x2450 0x3070 +0x2451 0x3071 +0x2452 0x3072 +0x2453 0x3073 +0x2454 0x3074 +0x2455 0x3075 +0x2456 0x3076 +0x2457 0x3077 +0x2458 0x3078 +0x2459 0x3079 +0x245a 0x307a +0x245b 0x307b +0x245c 0x307c +0x245d 0x307d +0x245e 0x307e +0x245f 0x307f +0x2460 0x3080 +0x2461 0x3081 +0x2462 0x3082 +0x2463 0x3083 +0x2464 0x3084 +0x2465 0x3085 +0x2466 0x3086 +0x2467 0x3087 +0x2468 0x3088 +0x2469 0x3089 +0x246a 0x308a +0x246b 0x308b +0x246c 0x308c +0x246d 0x308d +0x246e 0x308e +0x246f 0x308f +0x2470 0x3090 +0x2471 0x3091 +0x2472 0x3092 +0x2473 0x3093 +0x2521 0x30a1 +0x2522 0x30a2 +0x2523 0x30a3 +0x2524 0x30a4 +0x2525 0x30a5 +0x2526 0x30a6 +0x2527 0x30a7 +0x2528 0x30a8 +0x2529 0x30a9 +0x252a 0x30aa +0x252b 0x30ab +0x252c 0x30ac +0x252d 0x30ad +0x252e 0x30ae +0x252f 0x30af +0x2530 0x30b0 +0x2531 0x30b1 +0x2532 0x30b2 +0x2533 0x30b3 +0x2534 0x30b4 +0x2535 0x30b5 +0x2536 0x30b6 +0x2537 0x30b7 +0x2538 0x30b8 +0x2539 0x30b9 +0x253a 0x30ba +0x253b 0x30bb +0x253c 0x30bc +0x253d 0x30bd +0x253e 0x30be +0x253f 0x30bf +0x2540 0x30c0 +0x2541 0x30c1 +0x2542 0x30c2 +0x2543 0x30c3 +0x2544 0x30c4 +0x2545 0x30c5 +0x2546 0x30c6 +0x2547 0x30c7 +0x2548 0x30c8 +0x2549 0x30c9 +0x254a 0x30ca +0x254b 0x30cb +0x254c 0x30cc +0x254d 0x30cd +0x254e 0x30ce +0x254f 0x30cf +0x2550 0x30d0 +0x2551 0x30d1 +0x2552 0x30d2 +0x2553 0x30d3 +0x2554 0x30d4 +0x2555 0x30d5 +0x2556 0x30d6 +0x2557 0x30d7 +0x2558 0x30d8 +0x2559 0x30d9 +0x255a 0x30da +0x255b 0x30db +0x255c 0x30dc +0x255d 0x30dd +0x255e 0x30de +0x255f 0x30df +0x2560 0x30e0 +0x2561 0x30e1 +0x2562 0x30e2 +0x2563 0x30e3 +0x2564 0x30e4 +0x2565 0x30e5 +0x2566 0x30e6 +0x2567 0x30e7 +0x2568 0x30e8 +0x2569 0x30e9 +0x256a 0x30ea +0x256b 0x30eb +0x256c 0x30ec +0x256d 0x30ed +0x256e 0x30ee +0x256f 0x30ef +0x2570 0x30f0 +0x2571 0x30f1 +0x2572 0x30f2 +0x2573 0x30f3 +0x2574 0x30f4 +0x2575 0x30f5 +0x2576 0x30f6 +0x2621 0x0391 +0x2622 0x0392 +0x2623 0x0393 +0x2624 0x0394 +0x2625 0x0395 +0x2626 0x0396 +0x2627 0x0397 +0x2628 0x0398 +0x2629 0x0399 +0x262a 0x039a +0x262b 0x039b +0x262c 0x039c +0x262d 0x039d +0x262e 0x039e +0x262f 0x039f +0x2630 0x03a0 +0x2631 0x03a1 +0x2632 0x03a3 +0x2633 0x03a4 +0x2634 0x03a5 +0x2635 0x03a6 +0x2636 0x03a7 +0x2637 0x03a8 +0x2638 0x03a9 +0x2641 0x03b1 +0x2642 0x03b2 +0x2643 0x03b3 +0x2644 0x03b4 +0x2645 0x03b5 +0x2646 0x03b6 +0x2647 0x03b7 +0x2648 0x03b8 +0x2649 0x03b9 +0x264a 0x03ba +0x264b 0x03bb +0x264c 0x03bc +0x264d 0x03bd +0x264e 0x03be +0x264f 0x03bf +0x2650 0x03c0 +0x2651 0x03c1 +0x2652 0x03c3 +0x2653 0x03c4 +0x2654 0x03c5 +0x2655 0x03c6 +0x2656 0x03c7 +0x2657 0x03c8 +0x2658 0x03c9 +0x2721 0x0410 +0x2722 0x0411 +0x2723 0x0412 +0x2724 0x0413 +0x2725 0x0414 +0x2726 0x0415 +0x2727 0x0401 +0x2728 0x0416 +0x2729 0x0417 +0x272a 0x0418 +0x272b 0x0419 +0x272c 0x041a +0x272d 0x041b +0x272e 0x041c +0x272f 0x041d +0x2730 0x041e +0x2731 0x041f +0x2732 0x0420 +0x2733 0x0421 +0x2734 0x0422 +0x2735 0x0423 +0x2736 0x0424 +0x2737 0x0425 +0x2738 0x0426 +0x2739 0x0427 +0x273a 0x0428 +0x273b 0x0429 +0x273c 0x042a +0x273d 0x042b +0x273e 0x042c +0x273f 0x042d +0x2740 0x042e +0x2741 0x042f +0x2751 0x0430 +0x2752 0x0431 +0x2753 0x0432 +0x2754 0x0433 +0x2755 0x0434 +0x2756 0x0435 +0x2757 0x0451 +0x2758 0x0436 +0x2759 0x0437 +0x275a 0x0438 +0x275b 0x0439 +0x275c 0x043a +0x275d 0x043b +0x275e 0x043c +0x275f 0x043d +0x2760 0x043e +0x2761 0x043f +0x2762 0x0440 +0x2763 0x0441 +0x2764 0x0442 +0x2765 0x0443 +0x2766 0x0444 +0x2767 0x0445 +0x2768 0x0446 +0x2769 0x0447 +0x276a 0x0448 +0x276b 0x0449 +0x276c 0x044a +0x276d 0x044b +0x276e 0x044c +0x276f 0x044d +0x2770 0x044e +0x2771 0x044f +0x2821 0x2500 +0x2822 0x2502 +0x2823 0x250c +0x2824 0x2510 +0x2825 0x2518 +0x2826 0x2514 +0x2827 0x251c +0x2828 0x252c +0x2829 0x2524 +0x282a 0x2534 +0x282b 0x253c +0x282c 0x2501 +0x282d 0x2503 +0x282e 0x250f +0x282f 0x2513 +0x2830 0x251b +0x2831 0x2517 +0x2832 0x2523 +0x2833 0x2533 +0x2834 0x252b +0x2835 0x253b +0x2836 0x254b +0x2837 0x2520 +0x2838 0x252f +0x2839 0x2528 +0x283a 0x2537 +0x283b 0x253f +0x283c 0x251d +0x283d 0x2530 +0x283e 0x2525 +0x283f 0x2538 +0x2840 0x2542 +0x3021 0x4e9c +0x3022 0x5516 +0x3023 0x5a03 +0x3024 0x963f +0x3025 0x54c0 +0x3026 0x611b +0x3027 0x6328 +0x3028 0x59f6 +0x3029 0x9022 +0x302a 0x8475 +0x302b 0x831c +0x302c 0x7a50 +0x302d 0x60aa +0x302e 0x63e1 +0x302f 0x6e25 +0x3030 0x65ed +0x3031 0x8466 +0x3032 0x82a6 +0x3033 0x9bf5 +0x3034 0x6893 +0x3035 0x5727 +0x3036 0x65a1 +0x3037 0x6271 +0x3038 0x5b9b +0x3039 0x59d0 +0x303a 0x867b +0x303b 0x98f4 +0x303c 0x7d62 +0x303d 0x7dbe +0x303e 0x9b8e +0x303f 0x6216 +0x3040 0x7c9f +0x3041 0x88b7 +0x3042 0x5b89 +0x3043 0x5eb5 +0x3044 0x6309 +0x3045 0x6697 +0x3046 0x6848 +0x3047 0x95c7 +0x3048 0x978d +0x3049 0x674f +0x304a 0x4ee5 +0x304b 0x4f0a +0x304c 0x4f4d +0x304d 0x4f9d +0x304e 0x5049 +0x304f 0x56f2 +0x3050 0x5937 +0x3051 0x59d4 +0x3052 0x5a01 +0x3053 0x5c09 +0x3054 0x60df +0x3055 0x610f +0x3056 0x6170 +0x3057 0x6613 +0x3058 0x6905 +0x3059 0x70ba +0x305a 0x754f +0x305b 0x7570 +0x305c 0x79fb +0x305d 0x7dad +0x305e 0x7def +0x305f 0x80c3 +0x3060 0x840e +0x3061 0x8863 +0x3062 0x8b02 +0x3063 0x9055 +0x3064 0x907a +0x3065 0x533b +0x3066 0x4e95 +0x3067 0x4ea5 +0x3068 0x57df +0x3069 0x80b2 +0x306a 0x90c1 +0x306b 0x78ef +0x306c 0x4e00 +0x306d 0x58f1 +0x306e 0x6ea2 +0x306f 0x9038 +0x3070 0x7a32 +0x3071 0x8328 +0x3072 0x828b +0x3073 0x9c2f +0x3074 0x5141 +0x3075 0x5370 +0x3076 0x54bd +0x3077 0x54e1 +0x3078 0x56e0 +0x3079 0x59fb +0x307a 0x5f15 +0x307b 0x98f2 +0x307c 0x6deb +0x307d 0x80e4 +0x307e 0x852d +0x3121 0x9662 +0x3122 0x9670 +0x3123 0x96a0 +0x3124 0x97fb +0x3125 0x540b +0x3126 0x53f3 +0x3127 0x5b87 +0x3128 0x70cf +0x3129 0x7fbd +0x312a 0x8fc2 +0x312b 0x96e8 +0x312c 0x536f +0x312d 0x9d5c +0x312e 0x7aba +0x312f 0x4e11 +0x3130 0x7893 +0x3131 0x81fc +0x3132 0x6e26 +0x3133 0x5618 +0x3134 0x5504 +0x3135 0x6b1d +0x3136 0x851a +0x3137 0x9c3b +0x3138 0x59e5 +0x3139 0x53a9 +0x313a 0x6d66 +0x313b 0x74dc +0x313c 0x958f +0x313d 0x5642 +0x313e 0x4e91 +0x313f 0x904b +0x3140 0x96f2 +0x3141 0x834f +0x3142 0x990c +0x3143 0x53e1 +0x3144 0x55b6 +0x3145 0x5b30 +0x3146 0x5f71 +0x3147 0x6620 +0x3148 0x66f3 +0x3149 0x6804 +0x314a 0x6c38 +0x314b 0x6cf3 +0x314c 0x6d29 +0x314d 0x745b +0x314e 0x76c8 +0x314f 0x7a4e +0x3150 0x9834 +0x3151 0x82f1 +0x3152 0x885b +0x3153 0x8a60 +0x3154 0x92ed +0x3155 0x6db2 +0x3156 0x75ab +0x3157 0x76ca +0x3158 0x99c5 +0x3159 0x60a6 +0x315a 0x8b01 +0x315b 0x8d8a +0x315c 0x95b2 +0x315d 0x698e +0x315e 0x53ad +0x315f 0x5186 +0x3160 0x5712 +0x3161 0x5830 +0x3162 0x5944 +0x3163 0x5bb4 +0x3164 0x5ef6 +0x3165 0x6028 +0x3166 0x63a9 +0x3167 0x63f4 +0x3168 0x6cbf +0x3169 0x6f14 +0x316a 0x708e +0x316b 0x7114 +0x316c 0x7159 +0x316d 0x71d5 +0x316e 0x733f +0x316f 0x7e01 +0x3170 0x8276 +0x3171 0x82d1 +0x3172 0x8597 +0x3173 0x9060 +0x3174 0x925b +0x3175 0x9d1b +0x3176 0x5869 +0x3177 0x65bc +0x3178 0x6c5a +0x3179 0x7525 +0x317a 0x51f9 +0x317b 0x592e +0x317c 0x5965 +0x317d 0x5f80 +0x317e 0x5fdc +0x3221 0x62bc +0x3222 0x65fa +0x3223 0x6a2a +0x3224 0x6b27 +0x3225 0x6bb4 +0x3226 0x738b +0x3227 0x7fc1 +0x3228 0x8956 +0x3229 0x9d2c +0x322a 0x9d0e +0x322b 0x9ec4 +0x322c 0x5ca1 +0x322d 0x6c96 +0x322e 0x837b +0x322f 0x5104 +0x3230 0x5c4b +0x3231 0x61b6 +0x3232 0x81c6 +0x3233 0x6876 +0x3234 0x7261 +0x3235 0x4e59 +0x3236 0x4ffa +0x3237 0x5378 +0x3238 0x6069 +0x3239 0x6e29 +0x323a 0x7a4f +0x323b 0x97f3 +0x323c 0x4e0b +0x323d 0x5316 +0x323e 0x4eee +0x323f 0x4f55 +0x3240 0x4f3d +0x3241 0x4fa1 +0x3242 0x4f73 +0x3243 0x52a0 +0x3244 0x53ef +0x3245 0x5609 +0x3246 0x590f +0x3247 0x5ac1 +0x3248 0x5bb6 +0x3249 0x5be1 +0x324a 0x79d1 +0x324b 0x6687 +0x324c 0x679c +0x324d 0x67b6 +0x324e 0x6b4c +0x324f 0x6cb3 +0x3250 0x706b +0x3251 0x73c2 +0x3252 0x798d +0x3253 0x79be +0x3254 0x7a3c +0x3255 0x7b87 +0x3256 0x82b1 +0x3257 0x82db +0x3258 0x8304 +0x3259 0x8377 +0x325a 0x83ef +0x325b 0x83d3 +0x325c 0x8766 +0x325d 0x8ab2 +0x325e 0x5629 +0x325f 0x8ca8 +0x3260 0x8fe6 +0x3261 0x904e +0x3262 0x971e +0x3263 0x868a +0x3264 0x4fc4 +0x3265 0x5ce8 +0x3266 0x6211 +0x3267 0x7259 +0x3268 0x753b +0x3269 0x81e5 +0x326a 0x82bd +0x326b 0x86fe +0x326c 0x8cc0 +0x326d 0x96c5 +0x326e 0x9913 +0x326f 0x99d5 +0x3270 0x4ecb +0x3271 0x4f1a +0x3272 0x89e3 +0x3273 0x56de +0x3274 0x584a +0x3275 0x58ca +0x3276 0x5efb +0x3277 0x5feb +0x3278 0x602a +0x3279 0x6094 +0x327a 0x6062 +0x327b 0x61d0 +0x327c 0x6212 +0x327d 0x62d0 +0x327e 0x6539 +0x3321 0x9b41 +0x3322 0x6666 +0x3323 0x68b0 +0x3324 0x6d77 +0x3325 0x7070 +0x3326 0x754c +0x3327 0x7686 +0x3328 0x7d75 +0x3329 0x82a5 +0x332a 0x87f9 +0x332b 0x958b +0x332c 0x968e +0x332d 0x8c9d +0x332e 0x51f1 +0x332f 0x52be +0x3330 0x5916 +0x3331 0x54b3 +0x3332 0x5bb3 +0x3333 0x5d16 +0x3334 0x6168 +0x3335 0x6982 +0x3336 0x6daf +0x3337 0x788d +0x3338 0x84cb +0x3339 0x8857 +0x333a 0x8a72 +0x333b 0x93a7 +0x333c 0x9ab8 +0x333d 0x6d6c +0x333e 0x99a8 +0x333f 0x86d9 +0x3340 0x57a3 +0x3341 0x67ff +0x3342 0x86ce +0x3343 0x920e +0x3344 0x5283 +0x3345 0x5687 +0x3346 0x5404 +0x3347 0x5ed3 +0x3348 0x62e1 +0x3349 0x64b9 +0x334a 0x683c +0x334b 0x6838 +0x334c 0x6bbb +0x334d 0x7372 +0x334e 0x78ba +0x334f 0x7a6b +0x3350 0x899a +0x3351 0x89d2 +0x3352 0x8d6b +0x3353 0x8f03 +0x3354 0x90ed +0x3355 0x95a3 +0x3356 0x9694 +0x3357 0x9769 +0x3358 0x5b66 +0x3359 0x5cb3 +0x335a 0x697d +0x335b 0x984d +0x335c 0x984e +0x335d 0x639b +0x335e 0x7b20 +0x335f 0x6a2b +0x3360 0x6a7f +0x3361 0x68b6 +0x3362 0x9c0d +0x3363 0x6f5f +0x3364 0x5272 +0x3365 0x559d +0x3366 0x6070 +0x3367 0x62ec +0x3368 0x6d3b +0x3369 0x6e07 +0x336a 0x6ed1 +0x336b 0x845b +0x336c 0x8910 +0x336d 0x8f44 +0x336e 0x4e14 +0x336f 0x9c39 +0x3370 0x53f6 +0x3371 0x691b +0x3372 0x6a3a +0x3373 0x9784 +0x3374 0x682a +0x3375 0x515c +0x3376 0x7ac3 +0x3377 0x84b2 +0x3378 0x91dc +0x3379 0x938c +0x337a 0x565b +0x337b 0x9d28 +0x337c 0x6822 +0x337d 0x8305 +0x337e 0x8431 +0x3421 0x7ca5 +0x3422 0x5208 +0x3423 0x82c5 +0x3424 0x74e6 +0x3425 0x4e7e +0x3426 0x4f83 +0x3427 0x51a0 +0x3428 0x5bd2 +0x3429 0x520a +0x342a 0x52d8 +0x342b 0x52e7 +0x342c 0x5dfb +0x342d 0x559a +0x342e 0x582a +0x342f 0x59e6 +0x3430 0x5b8c +0x3431 0x5b98 +0x3432 0x5bdb +0x3433 0x5e72 +0x3434 0x5e79 +0x3435 0x60a3 +0x3436 0x611f +0x3437 0x6163 +0x3438 0x61be +0x3439 0x63db +0x343a 0x6562 +0x343b 0x67d1 +0x343c 0x6853 +0x343d 0x68fa +0x343e 0x6b3e +0x343f 0x6b53 +0x3440 0x6c57 +0x3441 0x6f22 +0x3442 0x6f97 +0x3443 0x6f45 +0x3444 0x74b0 +0x3445 0x7518 +0x3446 0x76e3 +0x3447 0x770b +0x3448 0x7aff +0x3449 0x7ba1 +0x344a 0x7c21 +0x344b 0x7de9 +0x344c 0x7f36 +0x344d 0x7ff0 +0x344e 0x809d +0x344f 0x8266 +0x3450 0x839e +0x3451 0x89b3 +0x3452 0x8acc +0x3453 0x8cab +0x3454 0x9084 +0x3455 0x9451 +0x3456 0x9593 +0x3457 0x9591 +0x3458 0x95a2 +0x3459 0x9665 +0x345a 0x97d3 +0x345b 0x9928 +0x345c 0x8218 +0x345d 0x4e38 +0x345e 0x542b +0x345f 0x5cb8 +0x3460 0x5dcc +0x3461 0x73a9 +0x3462 0x764c +0x3463 0x773c +0x3464 0x5ca9 +0x3465 0x7feb +0x3466 0x8d0b +0x3467 0x96c1 +0x3468 0x9811 +0x3469 0x9854 +0x346a 0x9858 +0x346b 0x4f01 +0x346c 0x4f0e +0x346d 0x5371 +0x346e 0x559c +0x346f 0x5668 +0x3470 0x57fa +0x3471 0x5947 +0x3472 0x5b09 +0x3473 0x5bc4 +0x3474 0x5c90 +0x3475 0x5e0c +0x3476 0x5e7e +0x3477 0x5fcc +0x3478 0x63ee +0x3479 0x673a +0x347a 0x65d7 +0x347b 0x65e2 +0x347c 0x671f +0x347d 0x68cb +0x347e 0x68c4 +0x3521 0x6a5f +0x3522 0x5e30 +0x3523 0x6bc5 +0x3524 0x6c17 +0x3525 0x6c7d +0x3526 0x757f +0x3527 0x7948 +0x3528 0x5b63 +0x3529 0x7a00 +0x352a 0x7d00 +0x352b 0x5fbd +0x352c 0x898f +0x352d 0x8a18 +0x352e 0x8cb4 +0x352f 0x8d77 +0x3530 0x8ecc +0x3531 0x8f1d +0x3532 0x98e2 +0x3533 0x9a0e +0x3534 0x9b3c +0x3535 0x4e80 +0x3536 0x507d +0x3537 0x5100 +0x3538 0x5993 +0x3539 0x5b9c +0x353a 0x622f +0x353b 0x6280 +0x353c 0x64ec +0x353d 0x6b3a +0x353e 0x72a0 +0x353f 0x7591 +0x3540 0x7947 +0x3541 0x7fa9 +0x3542 0x87fb +0x3543 0x8abc +0x3544 0x8b70 +0x3545 0x63ac +0x3546 0x83ca +0x3547 0x97a0 +0x3548 0x5409 +0x3549 0x5403 +0x354a 0x55ab +0x354b 0x6854 +0x354c 0x6a58 +0x354d 0x8a70 +0x354e 0x7827 +0x354f 0x6775 +0x3550 0x9ecd +0x3551 0x5374 +0x3552 0x5ba2 +0x3553 0x811a +0x3554 0x8650 +0x3555 0x9006 +0x3556 0x4e18 +0x3557 0x4e45 +0x3558 0x4ec7 +0x3559 0x4f11 +0x355a 0x53ca +0x355b 0x5438 +0x355c 0x5bae +0x355d 0x5f13 +0x355e 0x6025 +0x355f 0x6551 +0x3560 0x673d +0x3561 0x6c42 +0x3562 0x6c72 +0x3563 0x6ce3 +0x3564 0x7078 +0x3565 0x7403 +0x3566 0x7a76 +0x3567 0x7aae +0x3568 0x7b08 +0x3569 0x7d1a +0x356a 0x7cfe +0x356b 0x7d66 +0x356c 0x65e7 +0x356d 0x725b +0x356e 0x53bb +0x356f 0x5c45 +0x3570 0x5de8 +0x3571 0x62d2 +0x3572 0x62e0 +0x3573 0x6319 +0x3574 0x6e20 +0x3575 0x865a +0x3576 0x8a31 +0x3577 0x8ddd +0x3578 0x92f8 +0x3579 0x6f01 +0x357a 0x79a6 +0x357b 0x9b5a +0x357c 0x4ea8 +0x357d 0x4eab +0x357e 0x4eac +0x3621 0x4f9b +0x3622 0x4fa0 +0x3623 0x50d1 +0x3624 0x5147 +0x3625 0x7af6 +0x3626 0x5171 +0x3627 0x51f6 +0x3628 0x5354 +0x3629 0x5321 +0x362a 0x537f +0x362b 0x53eb +0x362c 0x55ac +0x362d 0x5883 +0x362e 0x5ce1 +0x362f 0x5f37 +0x3630 0x5f4a +0x3631 0x602f +0x3632 0x6050 +0x3633 0x606d +0x3634 0x631f +0x3635 0x6559 +0x3636 0x6a4b +0x3637 0x6cc1 +0x3638 0x72c2 +0x3639 0x72ed +0x363a 0x77ef +0x363b 0x80f8 +0x363c 0x8105 +0x363d 0x8208 +0x363e 0x854e +0x363f 0x90f7 +0x3640 0x93e1 +0x3641 0x97ff +0x3642 0x9957 +0x3643 0x9a5a +0x3644 0x4ef0 +0x3645 0x51dd +0x3646 0x5c2d +0x3647 0x6681 +0x3648 0x696d +0x3649 0x5c40 +0x364a 0x66f2 +0x364b 0x6975 +0x364c 0x7389 +0x364d 0x6850 +0x364e 0x7c81 +0x364f 0x50c5 +0x3650 0x52e4 +0x3651 0x5747 +0x3652 0x5dfe +0x3653 0x9326 +0x3654 0x65a4 +0x3655 0x6b23 +0x3656 0x6b3d +0x3657 0x7434 +0x3658 0x7981 +0x3659 0x79bd +0x365a 0x7b4b +0x365b 0x7dca +0x365c 0x82b9 +0x365d 0x83cc +0x365e 0x887f +0x365f 0x895f +0x3660 0x8b39 +0x3661 0x8fd1 +0x3662 0x91d1 +0x3663 0x541f +0x3664 0x9280 +0x3665 0x4e5d +0x3666 0x5036 +0x3667 0x53e5 +0x3668 0x533a +0x3669 0x72d7 +0x366a 0x7396 +0x366b 0x77e9 +0x366c 0x82e6 +0x366d 0x8eaf +0x366e 0x99c6 +0x366f 0x99c8 +0x3670 0x99d2 +0x3671 0x5177 +0x3672 0x611a +0x3673 0x865e +0x3674 0x55b0 +0x3675 0x7a7a +0x3676 0x5076 +0x3677 0x5bd3 +0x3678 0x9047 +0x3679 0x9685 +0x367a 0x4e32 +0x367b 0x6adb +0x367c 0x91e7 +0x367d 0x5c51 +0x367e 0x5c48 +0x3721 0x6398 +0x3722 0x7a9f +0x3723 0x6c93 +0x3724 0x9774 +0x3725 0x8f61 +0x3726 0x7aaa +0x3727 0x718a +0x3728 0x9688 +0x3729 0x7c82 +0x372a 0x6817 +0x372b 0x7e70 +0x372c 0x6851 +0x372d 0x936c +0x372e 0x52f2 +0x372f 0x541b +0x3730 0x85ab +0x3731 0x8a13 +0x3732 0x7fa4 +0x3733 0x8ecd +0x3734 0x90e1 +0x3735 0x5366 +0x3736 0x8888 +0x3737 0x7941 +0x3738 0x4fc2 +0x3739 0x50be +0x373a 0x5211 +0x373b 0x5144 +0x373c 0x5553 +0x373d 0x572d +0x373e 0x73ea +0x373f 0x578b +0x3740 0x5951 +0x3741 0x5f62 +0x3742 0x5f84 +0x3743 0x6075 +0x3744 0x6176 +0x3745 0x6167 +0x3746 0x61a9 +0x3747 0x63b2 +0x3748 0x643a +0x3749 0x656c +0x374a 0x666f +0x374b 0x6842 +0x374c 0x6e13 +0x374d 0x7566 +0x374e 0x7a3d +0x374f 0x7cfb +0x3750 0x7d4c +0x3751 0x7d99 +0x3752 0x7e4b +0x3753 0x7f6b +0x3754 0x830e +0x3755 0x834a +0x3756 0x86cd +0x3757 0x8a08 +0x3758 0x8a63 +0x3759 0x8b66 +0x375a 0x8efd +0x375b 0x981a +0x375c 0x9d8f +0x375d 0x82b8 +0x375e 0x8fce +0x375f 0x9be8 +0x3760 0x5287 +0x3761 0x621f +0x3762 0x6483 +0x3763 0x6fc0 +0x3764 0x9699 +0x3765 0x6841 +0x3766 0x5091 +0x3767 0x6b20 +0x3768 0x6c7a +0x3769 0x6f54 +0x376a 0x7a74 +0x376b 0x7d50 +0x376c 0x8840 +0x376d 0x8a23 +0x376e 0x6708 +0x376f 0x4ef6 +0x3770 0x5039 +0x3771 0x5026 +0x3772 0x5065 +0x3773 0x517c +0x3774 0x5238 +0x3775 0x5263 +0x3776 0x55a7 +0x3777 0x570f +0x3778 0x5805 +0x3779 0x5acc +0x377a 0x5efa +0x377b 0x61b2 +0x377c 0x61f8 +0x377d 0x62f3 +0x377e 0x6372 +0x3821 0x691c +0x3822 0x6a29 +0x3823 0x727d +0x3824 0x72ac +0x3825 0x732e +0x3826 0x7814 +0x3827 0x786f +0x3828 0x7d79 +0x3829 0x770c +0x382a 0x80a9 +0x382b 0x898b +0x382c 0x8b19 +0x382d 0x8ce2 +0x382e 0x8ed2 +0x382f 0x9063 +0x3830 0x9375 +0x3831 0x967a +0x3832 0x9855 +0x3833 0x9a13 +0x3834 0x9e78 +0x3835 0x5143 +0x3836 0x539f +0x3837 0x53b3 +0x3838 0x5e7b +0x3839 0x5f26 +0x383a 0x6e1b +0x383b 0x6e90 +0x383c 0x7384 +0x383d 0x73fe +0x383e 0x7d43 +0x383f 0x8237 +0x3840 0x8a00 +0x3841 0x8afa +0x3842 0x9650 +0x3843 0x4e4e +0x3844 0x500b +0x3845 0x53e4 +0x3846 0x547c +0x3847 0x56fa +0x3848 0x59d1 +0x3849 0x5b64 +0x384a 0x5df1 +0x384b 0x5eab +0x384c 0x5f27 +0x384d 0x6238 +0x384e 0x6545 +0x384f 0x67af +0x3850 0x6e56 +0x3851 0x72d0 +0x3852 0x7cca +0x3853 0x88b4 +0x3854 0x80a1 +0x3855 0x80e1 +0x3856 0x83f0 +0x3857 0x864e +0x3858 0x8a87 +0x3859 0x8de8 +0x385a 0x9237 +0x385b 0x96c7 +0x385c 0x9867 +0x385d 0x9f13 +0x385e 0x4e94 +0x385f 0x4e92 +0x3860 0x4f0d +0x3861 0x5348 +0x3862 0x5449 +0x3863 0x543e +0x3864 0x5a2f +0x3865 0x5f8c +0x3866 0x5fa1 +0x3867 0x609f +0x3868 0x68a7 +0x3869 0x6a8e +0x386a 0x745a +0x386b 0x7881 +0x386c 0x8a9e +0x386d 0x8aa4 +0x386e 0x8b77 +0x386f 0x9190 +0x3870 0x4e5e +0x3871 0x9bc9 +0x3872 0x4ea4 +0x3873 0x4f7c +0x3874 0x4faf +0x3875 0x5019 +0x3876 0x5016 +0x3877 0x5149 +0x3878 0x516c +0x3879 0x529f +0x387a 0x52b9 +0x387b 0x52fe +0x387c 0x539a +0x387d 0x53e3 +0x387e 0x5411 +0x3921 0x540e +0x3922 0x5589 +0x3923 0x5751 +0x3924 0x57a2 +0x3925 0x597d +0x3926 0x5b54 +0x3927 0x5b5d +0x3928 0x5b8f +0x3929 0x5de5 +0x392a 0x5de7 +0x392b 0x5df7 +0x392c 0x5e78 +0x392d 0x5e83 +0x392e 0x5e9a +0x392f 0x5eb7 +0x3930 0x5f18 +0x3931 0x6052 +0x3932 0x614c +0x3933 0x6297 +0x3934 0x62d8 +0x3935 0x63a7 +0x3936 0x653b +0x3937 0x6602 +0x3938 0x6643 +0x3939 0x66f4 +0x393a 0x676d +0x393b 0x6821 +0x393c 0x6897 +0x393d 0x69cb +0x393e 0x6c5f +0x393f 0x6d2a +0x3940 0x6d69 +0x3941 0x6e2f +0x3942 0x6e9d +0x3943 0x7532 +0x3944 0x7687 +0x3945 0x786c +0x3946 0x7a3f +0x3947 0x7ce0 +0x3948 0x7d05 +0x3949 0x7d18 +0x394a 0x7d5e +0x394b 0x7db1 +0x394c 0x8015 +0x394d 0x8003 +0x394e 0x80af +0x394f 0x80b1 +0x3950 0x8154 +0x3951 0x818f +0x3952 0x822a +0x3953 0x8352 +0x3954 0x884c +0x3955 0x8861 +0x3956 0x8b1b +0x3957 0x8ca2 +0x3958 0x8cfc +0x3959 0x90ca +0x395a 0x9175 +0x395b 0x9271 +0x395c 0x783f +0x395d 0x92fc +0x395e 0x95a4 +0x395f 0x964d +0x3960 0x9805 +0x3961 0x9999 +0x3962 0x9ad8 +0x3963 0x9d3b +0x3964 0x525b +0x3965 0x52ab +0x3966 0x53f7 +0x3967 0x5408 +0x3968 0x58d5 +0x3969 0x62f7 +0x396a 0x6fe0 +0x396b 0x8c6a +0x396c 0x8f5f +0x396d 0x9eb9 +0x396e 0x514b +0x396f 0x523b +0x3970 0x544a +0x3971 0x56fd +0x3972 0x7a40 +0x3973 0x9177 +0x3974 0x9d60 +0x3975 0x9ed2 +0x3976 0x7344 +0x3977 0x6f09 +0x3978 0x8170 +0x3979 0x7511 +0x397a 0x5ffd +0x397b 0x60da +0x397c 0x9aa8 +0x397d 0x72db +0x397e 0x8fbc +0x3a21 0x6b64 +0x3a22 0x9803 +0x3a23 0x4eca +0x3a24 0x56f0 +0x3a25 0x5764 +0x3a26 0x58be +0x3a27 0x5a5a +0x3a28 0x6068 +0x3a29 0x61c7 +0x3a2a 0x660f +0x3a2b 0x6606 +0x3a2c 0x6839 +0x3a2d 0x68b1 +0x3a2e 0x6df7 +0x3a2f 0x75d5 +0x3a30 0x7d3a +0x3a31 0x826e +0x3a32 0x9b42 +0x3a33 0x4e9b +0x3a34 0x4f50 +0x3a35 0x53c9 +0x3a36 0x5506 +0x3a37 0x5d6f +0x3a38 0x5de6 +0x3a39 0x5dee +0x3a3a 0x67fb +0x3a3b 0x6c99 +0x3a3c 0x7473 +0x3a3d 0x7802 +0x3a3e 0x8a50 +0x3a3f 0x9396 +0x3a40 0x88df +0x3a41 0x5750 +0x3a42 0x5ea7 +0x3a43 0x632b +0x3a44 0x50b5 +0x3a45 0x50ac +0x3a46 0x518d +0x3a47 0x6700 +0x3a48 0x54c9 +0x3a49 0x585e +0x3a4a 0x59bb +0x3a4b 0x5bb0 +0x3a4c 0x5f69 +0x3a4d 0x624d +0x3a4e 0x63a1 +0x3a4f 0x683d +0x3a50 0x6b73 +0x3a51 0x6e08 +0x3a52 0x707d +0x3a53 0x91c7 +0x3a54 0x7280 +0x3a55 0x7815 +0x3a56 0x7826 +0x3a57 0x796d +0x3a58 0x658e +0x3a59 0x7d30 +0x3a5a 0x83dc +0x3a5b 0x88c1 +0x3a5c 0x8f09 +0x3a5d 0x969b +0x3a5e 0x5264 +0x3a5f 0x5728 +0x3a60 0x6750 +0x3a61 0x7f6a +0x3a62 0x8ca1 +0x3a63 0x51b4 +0x3a64 0x5742 +0x3a65 0x962a +0x3a66 0x583a +0x3a67 0x698a +0x3a68 0x80b4 +0x3a69 0x54b2 +0x3a6a 0x5d0e +0x3a6b 0x57fc +0x3a6c 0x7895 +0x3a6d 0x9dfa +0x3a6e 0x4f5c +0x3a6f 0x524a +0x3a70 0x548b +0x3a71 0x643e +0x3a72 0x6628 +0x3a73 0x6714 +0x3a74 0x67f5 +0x3a75 0x7a84 +0x3a76 0x7b56 +0x3a77 0x7d22 +0x3a78 0x932f +0x3a79 0x685c +0x3a7a 0x9bad +0x3a7b 0x7b39 +0x3a7c 0x5319 +0x3a7d 0x518a +0x3a7e 0x5237 +0x3b21 0x5bdf +0x3b22 0x62f6 +0x3b23 0x64ae +0x3b24 0x64e6 +0x3b25 0x672d +0x3b26 0x6bba +0x3b27 0x85a9 +0x3b28 0x96d1 +0x3b29 0x7690 +0x3b2a 0x9bd6 +0x3b2b 0x634c +0x3b2c 0x9306 +0x3b2d 0x9bab +0x3b2e 0x76bf +0x3b2f 0x6652 +0x3b30 0x4e09 +0x3b31 0x5098 +0x3b32 0x53c2 +0x3b33 0x5c71 +0x3b34 0x60e8 +0x3b35 0x6492 +0x3b36 0x6563 +0x3b37 0x685f +0x3b38 0x71e6 +0x3b39 0x73ca +0x3b3a 0x7523 +0x3b3b 0x7b97 +0x3b3c 0x7e82 +0x3b3d 0x8695 +0x3b3e 0x8b83 +0x3b3f 0x8cdb +0x3b40 0x9178 +0x3b41 0x9910 +0x3b42 0x65ac +0x3b43 0x66ab +0x3b44 0x6b8b +0x3b45 0x4ed5 +0x3b46 0x4ed4 +0x3b47 0x4f3a +0x3b48 0x4f7f +0x3b49 0x523a +0x3b4a 0x53f8 +0x3b4b 0x53f2 +0x3b4c 0x55e3 +0x3b4d 0x56db +0x3b4e 0x58eb +0x3b4f 0x59cb +0x3b50 0x59c9 +0x3b51 0x59ff +0x3b52 0x5b50 +0x3b53 0x5c4d +0x3b54 0x5e02 +0x3b55 0x5e2b +0x3b56 0x5fd7 +0x3b57 0x601d +0x3b58 0x6307 +0x3b59 0x652f +0x3b5a 0x5b5c +0x3b5b 0x65af +0x3b5c 0x65bd +0x3b5d 0x65e8 +0x3b5e 0x679d +0x3b5f 0x6b62 +0x3b60 0x6b7b +0x3b61 0x6c0f +0x3b62 0x7345 +0x3b63 0x7949 +0x3b64 0x79c1 +0x3b65 0x7cf8 +0x3b66 0x7d19 +0x3b67 0x7d2b +0x3b68 0x80a2 +0x3b69 0x8102 +0x3b6a 0x81f3 +0x3b6b 0x8996 +0x3b6c 0x8a5e +0x3b6d 0x8a69 +0x3b6e 0x8a66 +0x3b6f 0x8a8c +0x3b70 0x8aee +0x3b71 0x8cc7 +0x3b72 0x8cdc +0x3b73 0x96cc +0x3b74 0x98fc +0x3b75 0x6b6f +0x3b76 0x4e8b +0x3b77 0x4f3c +0x3b78 0x4f8d +0x3b79 0x5150 +0x3b7a 0x5b57 +0x3b7b 0x5bfa +0x3b7c 0x6148 +0x3b7d 0x6301 +0x3b7e 0x6642 +0x3c21 0x6b21 +0x3c22 0x6ecb +0x3c23 0x6cbb +0x3c24 0x723e +0x3c25 0x74bd +0x3c26 0x75d4 +0x3c27 0x78c1 +0x3c28 0x793a +0x3c29 0x800c +0x3c2a 0x8033 +0x3c2b 0x81ea +0x3c2c 0x8494 +0x3c2d 0x8f9e +0x3c2e 0x6c50 +0x3c2f 0x9e7f +0x3c30 0x5f0f +0x3c31 0x8b58 +0x3c32 0x9d2b +0x3c33 0x7afa +0x3c34 0x8ef8 +0x3c35 0x5b8d +0x3c36 0x96eb +0x3c37 0x4e03 +0x3c38 0x53f1 +0x3c39 0x57f7 +0x3c3a 0x5931 +0x3c3b 0x5ac9 +0x3c3c 0x5ba4 +0x3c3d 0x6089 +0x3c3e 0x6e7f +0x3c3f 0x6f06 +0x3c40 0x75be +0x3c41 0x8cea +0x3c42 0x5b9f +0x3c43 0x8500 +0x3c44 0x7be0 +0x3c45 0x5072 +0x3c46 0x67f4 +0x3c47 0x829d +0x3c48 0x5c61 +0x3c49 0x854a +0x3c4a 0x7e1e +0x3c4b 0x820e +0x3c4c 0x5199 +0x3c4d 0x5c04 +0x3c4e 0x6368 +0x3c4f 0x8d66 +0x3c50 0x659c +0x3c51 0x716e +0x3c52 0x793e +0x3c53 0x7d17 +0x3c54 0x8005 +0x3c55 0x8b1d +0x3c56 0x8eca +0x3c57 0x906e +0x3c58 0x86c7 +0x3c59 0x90aa +0x3c5a 0x501f +0x3c5b 0x52fa +0x3c5c 0x5c3a +0x3c5d 0x6753 +0x3c5e 0x707c +0x3c5f 0x7235 +0x3c60 0x914c +0x3c61 0x91c8 +0x3c62 0x932b +0x3c63 0x82e5 +0x3c64 0x5bc2 +0x3c65 0x5f31 +0x3c66 0x60f9 +0x3c67 0x4e3b +0x3c68 0x53d6 +0x3c69 0x5b88 +0x3c6a 0x624b +0x3c6b 0x6731 +0x3c6c 0x6b8a +0x3c6d 0x72e9 +0x3c6e 0x73e0 +0x3c6f 0x7a2e +0x3c70 0x816b +0x3c71 0x8da3 +0x3c72 0x9152 +0x3c73 0x9996 +0x3c74 0x5112 +0x3c75 0x53d7 +0x3c76 0x546a +0x3c77 0x5bff +0x3c78 0x6388 +0x3c79 0x6a39 +0x3c7a 0x7dac +0x3c7b 0x9700 +0x3c7c 0x56da +0x3c7d 0x53ce +0x3c7e 0x5468 +0x3d21 0x5b97 +0x3d22 0x5c31 +0x3d23 0x5dde +0x3d24 0x4fee +0x3d25 0x6101 +0x3d26 0x62fe +0x3d27 0x6d32 +0x3d28 0x79c0 +0x3d29 0x79cb +0x3d2a 0x7d42 +0x3d2b 0x7e4d +0x3d2c 0x7fd2 +0x3d2d 0x81ed +0x3d2e 0x821f +0x3d2f 0x8490 +0x3d30 0x8846 +0x3d31 0x8972 +0x3d32 0x8b90 +0x3d33 0x8e74 +0x3d34 0x8f2f +0x3d35 0x9031 +0x3d36 0x914b +0x3d37 0x916c +0x3d38 0x96c6 +0x3d39 0x919c +0x3d3a 0x4ec0 +0x3d3b 0x4f4f +0x3d3c 0x5145 +0x3d3d 0x5341 +0x3d3e 0x5f93 +0x3d3f 0x620e +0x3d40 0x67d4 +0x3d41 0x6c41 +0x3d42 0x6e0b +0x3d43 0x7363 +0x3d44 0x7e26 +0x3d45 0x91cd +0x3d46 0x9283 +0x3d47 0x53d4 +0x3d48 0x5919 +0x3d49 0x5bbf +0x3d4a 0x6dd1 +0x3d4b 0x795d +0x3d4c 0x7e2e +0x3d4d 0x7c9b +0x3d4e 0x587e +0x3d4f 0x719f +0x3d50 0x51fa +0x3d51 0x8853 +0x3d52 0x8ff0 +0x3d53 0x4fca +0x3d54 0x5cfb +0x3d55 0x6625 +0x3d56 0x77ac +0x3d57 0x7ae3 +0x3d58 0x821c +0x3d59 0x99ff +0x3d5a 0x51c6 +0x3d5b 0x5faa +0x3d5c 0x65ec +0x3d5d 0x696f +0x3d5e 0x6b89 +0x3d5f 0x6df3 +0x3d60 0x6e96 +0x3d61 0x6f64 +0x3d62 0x76fe +0x3d63 0x7d14 +0x3d64 0x5de1 +0x3d65 0x9075 +0x3d66 0x9187 +0x3d67 0x9806 +0x3d68 0x51e6 +0x3d69 0x521d +0x3d6a 0x6240 +0x3d6b 0x6691 +0x3d6c 0x66d9 +0x3d6d 0x6e1a +0x3d6e 0x5eb6 +0x3d6f 0x7dd2 +0x3d70 0x7f72 +0x3d71 0x66f8 +0x3d72 0x85af +0x3d73 0x85f7 +0x3d74 0x8af8 +0x3d75 0x52a9 +0x3d76 0x53d9 +0x3d77 0x5973 +0x3d78 0x5e8f +0x3d79 0x5f90 +0x3d7a 0x6055 +0x3d7b 0x92e4 +0x3d7c 0x9664 +0x3d7d 0x50b7 +0x3d7e 0x511f +0x3e21 0x52dd +0x3e22 0x5320 +0x3e23 0x5347 +0x3e24 0x53ec +0x3e25 0x54e8 +0x3e26 0x5546 +0x3e27 0x5531 +0x3e28 0x5617 +0x3e29 0x5968 +0x3e2a 0x59be +0x3e2b 0x5a3c +0x3e2c 0x5bb5 +0x3e2d 0x5c06 +0x3e2e 0x5c0f +0x3e2f 0x5c11 +0x3e30 0x5c1a +0x3e31 0x5e84 +0x3e32 0x5e8a +0x3e33 0x5ee0 +0x3e34 0x5f70 +0x3e35 0x627f +0x3e36 0x6284 +0x3e37 0x62db +0x3e38 0x638c +0x3e39 0x6377 +0x3e3a 0x6607 +0x3e3b 0x660c +0x3e3c 0x662d +0x3e3d 0x6676 +0x3e3e 0x677e +0x3e3f 0x68a2 +0x3e40 0x6a1f +0x3e41 0x6a35 +0x3e42 0x6cbc +0x3e43 0x6d88 +0x3e44 0x6e09 +0x3e45 0x6e58 +0x3e46 0x713c +0x3e47 0x7126 +0x3e48 0x7167 +0x3e49 0x75c7 +0x3e4a 0x7701 +0x3e4b 0x785d +0x3e4c 0x7901 +0x3e4d 0x7965 +0x3e4e 0x79f0 +0x3e4f 0x7ae0 +0x3e50 0x7b11 +0x3e51 0x7ca7 +0x3e52 0x7d39 +0x3e53 0x8096 +0x3e54 0x83d6 +0x3e55 0x848b +0x3e56 0x8549 +0x3e57 0x885d +0x3e58 0x88f3 +0x3e59 0x8a1f +0x3e5a 0x8a3c +0x3e5b 0x8a54 +0x3e5c 0x8a73 +0x3e5d 0x8c61 +0x3e5e 0x8cde +0x3e5f 0x91a4 +0x3e60 0x9266 +0x3e61 0x937e +0x3e62 0x9418 +0x3e63 0x969c +0x3e64 0x9798 +0x3e65 0x4e0a +0x3e66 0x4e08 +0x3e67 0x4e1e +0x3e68 0x4e57 +0x3e69 0x5197 +0x3e6a 0x5270 +0x3e6b 0x57ce +0x3e6c 0x5834 +0x3e6d 0x58cc +0x3e6e 0x5b22 +0x3e6f 0x5e38 +0x3e70 0x60c5 +0x3e71 0x64fe +0x3e72 0x6761 +0x3e73 0x6756 +0x3e74 0x6d44 +0x3e75 0x72b6 +0x3e76 0x7573 +0x3e77 0x7a63 +0x3e78 0x84b8 +0x3e79 0x8b72 +0x3e7a 0x91b8 +0x3e7b 0x9320 +0x3e7c 0x5631 +0x3e7d 0x57f4 +0x3e7e 0x98fe +0x3f21 0x62ed +0x3f22 0x690d +0x3f23 0x6b96 +0x3f24 0x71ed +0x3f25 0x7e54 +0x3f26 0x8077 +0x3f27 0x8272 +0x3f28 0x89e6 +0x3f29 0x98df +0x3f2a 0x8755 +0x3f2b 0x8fb1 +0x3f2c 0x5c3b +0x3f2d 0x4f38 +0x3f2e 0x4fe1 +0x3f2f 0x4fb5 +0x3f30 0x5507 +0x3f31 0x5a20 +0x3f32 0x5bdd +0x3f33 0x5be9 +0x3f34 0x5fc3 +0x3f35 0x614e +0x3f36 0x632f +0x3f37 0x65b0 +0x3f38 0x664b +0x3f39 0x68ee +0x3f3a 0x699b +0x3f3b 0x6d78 +0x3f3c 0x6df1 +0x3f3d 0x7533 +0x3f3e 0x75b9 +0x3f3f 0x771f +0x3f40 0x795e +0x3f41 0x79e6 +0x3f42 0x7d33 +0x3f43 0x81e3 +0x3f44 0x82af +0x3f45 0x85aa +0x3f46 0x89aa +0x3f47 0x8a3a +0x3f48 0x8eab +0x3f49 0x8f9b +0x3f4a 0x9032 +0x3f4b 0x91dd +0x3f4c 0x9707 +0x3f4d 0x4eba +0x3f4e 0x4ec1 +0x3f4f 0x5203 +0x3f50 0x5875 +0x3f51 0x58ec +0x3f52 0x5c0b +0x3f53 0x751a +0x3f54 0x5c3d +0x3f55 0x814e +0x3f56 0x8a0a +0x3f57 0x8fc5 +0x3f58 0x9663 +0x3f59 0x976d +0x3f5a 0x7b25 +0x3f5b 0x8acf +0x3f5c 0x9808 +0x3f5d 0x9162 +0x3f5e 0x56f3 +0x3f5f 0x53a8 +0x3f60 0x9017 +0x3f61 0x5439 +0x3f62 0x5782 +0x3f63 0x5e25 +0x3f64 0x63a8 +0x3f65 0x6c34 +0x3f66 0x708a +0x3f67 0x7761 +0x3f68 0x7c8b +0x3f69 0x7fe0 +0x3f6a 0x8870 +0x3f6b 0x9042 +0x3f6c 0x9154 +0x3f6d 0x9310 +0x3f6e 0x9318 +0x3f6f 0x968f +0x3f70 0x745e +0x3f71 0x9ac4 +0x3f72 0x5d07 +0x3f73 0x5d69 +0x3f74 0x6570 +0x3f75 0x67a2 +0x3f76 0x8da8 +0x3f77 0x96db +0x3f78 0x636e +0x3f79 0x6749 +0x3f7a 0x6919 +0x3f7b 0x83c5 +0x3f7c 0x9817 +0x3f7d 0x96c0 +0x3f7e 0x88fe +0x4021 0x6f84 +0x4022 0x647a +0x4023 0x5bf8 +0x4024 0x4e16 +0x4025 0x702c +0x4026 0x755d +0x4027 0x662f +0x4028 0x51c4 +0x4029 0x5236 +0x402a 0x52e2 +0x402b 0x59d3 +0x402c 0x5f81 +0x402d 0x6027 +0x402e 0x6210 +0x402f 0x653f +0x4030 0x6574 +0x4031 0x661f +0x4032 0x6674 +0x4033 0x68f2 +0x4034 0x6816 +0x4035 0x6b63 +0x4036 0x6e05 +0x4037 0x7272 +0x4038 0x751f +0x4039 0x76db +0x403a 0x7cbe +0x403b 0x8056 +0x403c 0x58f0 +0x403d 0x88fd +0x403e 0x897f +0x403f 0x8aa0 +0x4040 0x8a93 +0x4041 0x8acb +0x4042 0x901d +0x4043 0x9192 +0x4044 0x9752 +0x4045 0x9759 +0x4046 0x6589 +0x4047 0x7a0e +0x4048 0x8106 +0x4049 0x96bb +0x404a 0x5e2d +0x404b 0x60dc +0x404c 0x621a +0x404d 0x65a5 +0x404e 0x6614 +0x404f 0x6790 +0x4050 0x77f3 +0x4051 0x7a4d +0x4052 0x7c4d +0x4053 0x7e3e +0x4054 0x810a +0x4055 0x8cac +0x4056 0x8d64 +0x4057 0x8de1 +0x4058 0x8e5f +0x4059 0x78a9 +0x405a 0x5207 +0x405b 0x62d9 +0x405c 0x63a5 +0x405d 0x6442 +0x405e 0x6298 +0x405f 0x8a2d +0x4060 0x7a83 +0x4061 0x7bc0 +0x4062 0x8aac +0x4063 0x96ea +0x4064 0x7d76 +0x4065 0x820c +0x4066 0x8749 +0x4067 0x4ed9 +0x4068 0x5148 +0x4069 0x5343 +0x406a 0x5360 +0x406b 0x5ba3 +0x406c 0x5c02 +0x406d 0x5c16 +0x406e 0x5ddd +0x406f 0x6226 +0x4070 0x6247 +0x4071 0x64b0 +0x4072 0x6813 +0x4073 0x6834 +0x4074 0x6cc9 +0x4075 0x6d45 +0x4076 0x6d17 +0x4077 0x67d3 +0x4078 0x6f5c +0x4079 0x714e +0x407a 0x717d +0x407b 0x65cb +0x407c 0x7a7f +0x407d 0x7bad +0x407e 0x7dda +0x4121 0x7e4a +0x4122 0x7fa8 +0x4123 0x817a +0x4124 0x821b +0x4125 0x8239 +0x4126 0x85a6 +0x4127 0x8a6e +0x4128 0x8cce +0x4129 0x8df5 +0x412a 0x9078 +0x412b 0x9077 +0x412c 0x92ad +0x412d 0x9291 +0x412e 0x9583 +0x412f 0x9bae +0x4130 0x524d +0x4131 0x5584 +0x4132 0x6f38 +0x4133 0x7136 +0x4134 0x5168 +0x4135 0x7985 +0x4136 0x7e55 +0x4137 0x81b3 +0x4138 0x7cce +0x4139 0x564c +0x413a 0x5851 +0x413b 0x5ca8 +0x413c 0x63aa +0x413d 0x66fe +0x413e 0x66fd +0x413f 0x695a +0x4140 0x72d9 +0x4141 0x758f +0x4142 0x758e +0x4143 0x790e +0x4144 0x7956 +0x4145 0x79df +0x4146 0x7c97 +0x4147 0x7d20 +0x4148 0x7d44 +0x4149 0x8607 +0x414a 0x8a34 +0x414b 0x963b +0x414c 0x9061 +0x414d 0x9f20 +0x414e 0x50e7 +0x414f 0x5275 +0x4150 0x53cc +0x4151 0x53e2 +0x4152 0x5009 +0x4153 0x55aa +0x4154 0x58ee +0x4155 0x594f +0x4156 0x723d +0x4157 0x5b8b +0x4158 0x5c64 +0x4159 0x531d +0x415a 0x60e3 +0x415b 0x60f3 +0x415c 0x635c +0x415d 0x6383 +0x415e 0x633f +0x415f 0x63bb +0x4160 0x64cd +0x4161 0x65e9 +0x4162 0x66f9 +0x4163 0x5de3 +0x4164 0x69cd +0x4165 0x69fd +0x4166 0x6f15 +0x4167 0x71e5 +0x4168 0x4e89 +0x4169 0x75e9 +0x416a 0x76f8 +0x416b 0x7a93 +0x416c 0x7cdf +0x416d 0x7dcf +0x416e 0x7d9c +0x416f 0x8061 +0x4170 0x8349 +0x4171 0x8358 +0x4172 0x846c +0x4173 0x84bc +0x4174 0x85fb +0x4175 0x88c5 +0x4176 0x8d70 +0x4177 0x9001 +0x4178 0x906d +0x4179 0x9397 +0x417a 0x971c +0x417b 0x9a12 +0x417c 0x50cf +0x417d 0x5897 +0x417e 0x618e +0x4221 0x81d3 +0x4222 0x8535 +0x4223 0x8d08 +0x4224 0x9020 +0x4225 0x4fc3 +0x4226 0x5074 +0x4227 0x5247 +0x4228 0x5373 +0x4229 0x606f +0x422a 0x6349 +0x422b 0x675f +0x422c 0x6e2c +0x422d 0x8db3 +0x422e 0x901f +0x422f 0x4fd7 +0x4230 0x5c5e +0x4231 0x8cca +0x4232 0x65cf +0x4233 0x7d9a +0x4234 0x5352 +0x4235 0x8896 +0x4236 0x5176 +0x4237 0x63c3 +0x4238 0x5b58 +0x4239 0x5b6b +0x423a 0x5c0a +0x423b 0x640d +0x423c 0x6751 +0x423d 0x905c +0x423e 0x4ed6 +0x423f 0x591a +0x4240 0x592a +0x4241 0x6c70 +0x4242 0x8a51 +0x4243 0x553e +0x4244 0x5815 +0x4245 0x59a5 +0x4246 0x60f0 +0x4247 0x6253 +0x4248 0x67c1 +0x4249 0x8235 +0x424a 0x6955 +0x424b 0x9640 +0x424c 0x99c4 +0x424d 0x9a28 +0x424e 0x4f53 +0x424f 0x5806 +0x4250 0x5bfe +0x4251 0x8010 +0x4252 0x5cb1 +0x4253 0x5e2f +0x4254 0x5f85 +0x4255 0x6020 +0x4256 0x614b +0x4257 0x6234 +0x4258 0x66ff +0x4259 0x6cf0 +0x425a 0x6ede +0x425b 0x80ce +0x425c 0x817f +0x425d 0x82d4 +0x425e 0x888b +0x425f 0x8cb8 +0x4260 0x9000 +0x4261 0x902e +0x4262 0x968a +0x4263 0x9edb +0x4264 0x9bdb +0x4265 0x4ee3 +0x4266 0x53f0 +0x4267 0x5927 +0x4268 0x7b2c +0x4269 0x918d +0x426a 0x984c +0x426b 0x9df9 +0x426c 0x6edd +0x426d 0x7027 +0x426e 0x5353 +0x426f 0x5544 +0x4270 0x5b85 +0x4271 0x6258 +0x4272 0x629e +0x4273 0x62d3 +0x4274 0x6ca2 +0x4275 0x6fef +0x4276 0x7422 +0x4277 0x8a17 +0x4278 0x9438 +0x4279 0x6fc1 +0x427a 0x8afe +0x427b 0x8338 +0x427c 0x51e7 +0x427d 0x86f8 +0x427e 0x53ea +0x4321 0x53e9 +0x4322 0x4f46 +0x4323 0x9054 +0x4324 0x8fb0 +0x4325 0x596a +0x4326 0x8131 +0x4327 0x5dfd +0x4328 0x7aea +0x4329 0x8fbf +0x432a 0x68da +0x432b 0x8c37 +0x432c 0x72f8 +0x432d 0x9c48 +0x432e 0x6a3d +0x432f 0x8ab0 +0x4330 0x4e39 +0x4331 0x5358 +0x4332 0x5606 +0x4333 0x5766 +0x4334 0x62c5 +0x4335 0x63a2 +0x4336 0x65e6 +0x4337 0x6b4e +0x4338 0x6de1 +0x4339 0x6e5b +0x433a 0x70ad +0x433b 0x77ed +0x433c 0x7aef +0x433d 0x7baa +0x433e 0x7dbb +0x433f 0x803d +0x4340 0x80c6 +0x4341 0x86cb +0x4342 0x8a95 +0x4343 0x935b +0x4344 0x56e3 +0x4345 0x58c7 +0x4346 0x5f3e +0x4347 0x65ad +0x4348 0x6696 +0x4349 0x6a80 +0x434a 0x6bb5 +0x434b 0x7537 +0x434c 0x8ac7 +0x434d 0x5024 +0x434e 0x77e5 +0x434f 0x5730 +0x4350 0x5f1b +0x4351 0x6065 +0x4352 0x667a +0x4353 0x6c60 +0x4354 0x75f4 +0x4355 0x7a1a +0x4356 0x7f6e +0x4357 0x81f4 +0x4358 0x8718 +0x4359 0x9045 +0x435a 0x99b3 +0x435b 0x7bc9 +0x435c 0x755c +0x435d 0x7af9 +0x435e 0x7b51 +0x435f 0x84c4 +0x4360 0x9010 +0x4361 0x79e9 +0x4362 0x7a92 +0x4363 0x8336 +0x4364 0x5ae1 +0x4365 0x7740 +0x4366 0x4e2d +0x4367 0x4ef2 +0x4368 0x5b99 +0x4369 0x5fe0 +0x436a 0x62bd +0x436b 0x663c +0x436c 0x67f1 +0x436d 0x6ce8 +0x436e 0x866b +0x436f 0x8877 +0x4370 0x8a3b +0x4371 0x914e +0x4372 0x92f3 +0x4373 0x99d0 +0x4374 0x6a17 +0x4375 0x7026 +0x4376 0x732a +0x4377 0x82e7 +0x4378 0x8457 +0x4379 0x8caf +0x437a 0x4e01 +0x437b 0x5146 +0x437c 0x51cb +0x437d 0x558b +0x437e 0x5bf5 +0x4421 0x5e16 +0x4422 0x5e33 +0x4423 0x5e81 +0x4424 0x5f14 +0x4425 0x5f35 +0x4426 0x5f6b +0x4427 0x5fb4 +0x4428 0x61f2 +0x4429 0x6311 +0x442a 0x66a2 +0x442b 0x671d +0x442c 0x6f6e +0x442d 0x7252 +0x442e 0x753a +0x442f 0x773a +0x4430 0x8074 +0x4431 0x8139 +0x4432 0x8178 +0x4433 0x8776 +0x4434 0x8abf +0x4435 0x8adc +0x4436 0x8d85 +0x4437 0x8df3 +0x4438 0x929a +0x4439 0x9577 +0x443a 0x9802 +0x443b 0x9ce5 +0x443c 0x52c5 +0x443d 0x6357 +0x443e 0x76f4 +0x443f 0x6715 +0x4440 0x6c88 +0x4441 0x73cd +0x4442 0x8cc3 +0x4443 0x93ae +0x4444 0x9673 +0x4445 0x6d25 +0x4446 0x589c +0x4447 0x690e +0x4448 0x69cc +0x4449 0x8ffd +0x444a 0x939a +0x444b 0x75db +0x444c 0x901a +0x444d 0x585a +0x444e 0x6802 +0x444f 0x63b4 +0x4450 0x69fb +0x4451 0x4f43 +0x4452 0x6f2c +0x4453 0x67d8 +0x4454 0x8fbb +0x4455 0x8526 +0x4456 0x7db4 +0x4457 0x9354 +0x4458 0x693f +0x4459 0x6f70 +0x445a 0x576a +0x445b 0x58f7 +0x445c 0x5b2c +0x445d 0x7d2c +0x445e 0x722a +0x445f 0x540a +0x4460 0x91e3 +0x4461 0x9db4 +0x4462 0x4ead +0x4463 0x4f4e +0x4464 0x505c +0x4465 0x5075 +0x4466 0x5243 +0x4467 0x8c9e +0x4468 0x5448 +0x4469 0x5824 +0x446a 0x5b9a +0x446b 0x5e1d +0x446c 0x5e95 +0x446d 0x5ead +0x446e 0x5ef7 +0x446f 0x5f1f +0x4470 0x608c +0x4471 0x62b5 +0x4472 0x633a +0x4473 0x63d0 +0x4474 0x68af +0x4475 0x6c40 +0x4476 0x7887 +0x4477 0x798e +0x4478 0x7a0b +0x4479 0x7de0 +0x447a 0x8247 +0x447b 0x8a02 +0x447c 0x8ae6 +0x447d 0x8e44 +0x447e 0x9013 +0x4521 0x90b8 +0x4522 0x912d +0x4523 0x91d8 +0x4524 0x9f0e +0x4525 0x6ce5 +0x4526 0x6458 +0x4527 0x64e2 +0x4528 0x6575 +0x4529 0x6ef4 +0x452a 0x7684 +0x452b 0x7b1b +0x452c 0x9069 +0x452d 0x93d1 +0x452e 0x6eba +0x452f 0x54f2 +0x4530 0x5fb9 +0x4531 0x64a4 +0x4532 0x8f4d +0x4533 0x8fed +0x4534 0x9244 +0x4535 0x5178 +0x4536 0x586b +0x4537 0x5929 +0x4538 0x5c55 +0x4539 0x5e97 +0x453a 0x6dfb +0x453b 0x7e8f +0x453c 0x751c +0x453d 0x8cbc +0x453e 0x8ee2 +0x453f 0x985b +0x4540 0x70b9 +0x4541 0x4f1d +0x4542 0x6bbf +0x4543 0x6fb1 +0x4544 0x7530 +0x4545 0x96fb +0x4546 0x514e +0x4547 0x5410 +0x4548 0x5835 +0x4549 0x5857 +0x454a 0x59ac +0x454b 0x5c60 +0x454c 0x5f92 +0x454d 0x6597 +0x454e 0x675c +0x454f 0x6e21 +0x4550 0x767b +0x4551 0x83df +0x4552 0x8ced +0x4553 0x9014 +0x4554 0x90fd +0x4555 0x934d +0x4556 0x7825 +0x4557 0x783a +0x4558 0x52aa +0x4559 0x5ea6 +0x455a 0x571f +0x455b 0x5974 +0x455c 0x6012 +0x455d 0x5012 +0x455e 0x515a +0x455f 0x51ac +0x4560 0x51cd +0x4561 0x5200 +0x4562 0x5510 +0x4563 0x5854 +0x4564 0x5858 +0x4565 0x5957 +0x4566 0x5b95 +0x4567 0x5cf6 +0x4568 0x5d8b +0x4569 0x60bc +0x456a 0x6295 +0x456b 0x642d +0x456c 0x6771 +0x456d 0x6843 +0x456e 0x68bc +0x456f 0x68df +0x4570 0x76d7 +0x4571 0x6dd8 +0x4572 0x6e6f +0x4573 0x6d9b +0x4574 0x706f +0x4575 0x71c8 +0x4576 0x5f53 +0x4577 0x75d8 +0x4578 0x7977 +0x4579 0x7b49 +0x457a 0x7b54 +0x457b 0x7b52 +0x457c 0x7cd6 +0x457d 0x7d71 +0x457e 0x5230 +0x4621 0x8463 +0x4622 0x8569 +0x4623 0x85e4 +0x4624 0x8a0e +0x4625 0x8b04 +0x4626 0x8c46 +0x4627 0x8e0f +0x4628 0x9003 +0x4629 0x900f +0x462a 0x9419 +0x462b 0x9676 +0x462c 0x982d +0x462d 0x9a30 +0x462e 0x95d8 +0x462f 0x50cd +0x4630 0x52d5 +0x4631 0x540c +0x4632 0x5802 +0x4633 0x5c0e +0x4634 0x61a7 +0x4635 0x649e +0x4636 0x6d1e +0x4637 0x77b3 +0x4638 0x7ae5 +0x4639 0x80f4 +0x463a 0x8404 +0x463b 0x9053 +0x463c 0x9285 +0x463d 0x5ce0 +0x463e 0x9d07 +0x463f 0x533f +0x4640 0x5f97 +0x4641 0x5fb3 +0x4642 0x6d9c +0x4643 0x7279 +0x4644 0x7763 +0x4645 0x79bf +0x4646 0x7be4 +0x4647 0x6bd2 +0x4648 0x72ec +0x4649 0x8aad +0x464a 0x6803 +0x464b 0x6a61 +0x464c 0x51f8 +0x464d 0x7a81 +0x464e 0x6934 +0x464f 0x5c4a +0x4650 0x9cf6 +0x4651 0x82eb +0x4652 0x5bc5 +0x4653 0x9149 +0x4654 0x701e +0x4655 0x5678 +0x4656 0x5c6f +0x4657 0x60c7 +0x4658 0x6566 +0x4659 0x6c8c +0x465a 0x8c5a +0x465b 0x9041 +0x465c 0x9813 +0x465d 0x5451 +0x465e 0x66c7 +0x465f 0x920d +0x4660 0x5948 +0x4661 0x90a3 +0x4662 0x5185 +0x4663 0x4e4d +0x4664 0x51ea +0x4665 0x8599 +0x4666 0x8b0e +0x4667 0x7058 +0x4668 0x637a +0x4669 0x934b +0x466a 0x6962 +0x466b 0x99b4 +0x466c 0x7e04 +0x466d 0x7577 +0x466e 0x5357 +0x466f 0x6960 +0x4670 0x8edf +0x4671 0x96e3 +0x4672 0x6c5d +0x4673 0x4e8c +0x4674 0x5c3c +0x4675 0x5f10 +0x4676 0x8fe9 +0x4677 0x5302 +0x4678 0x8cd1 +0x4679 0x8089 +0x467a 0x8679 +0x467b 0x5eff +0x467c 0x65e5 +0x467d 0x4e73 +0x467e 0x5165 +0x4721 0x5982 +0x4722 0x5c3f +0x4723 0x97ee +0x4724 0x4efb +0x4725 0x598a +0x4726 0x5fcd +0x4727 0x8a8d +0x4728 0x6fe1 +0x4729 0x79b0 +0x472a 0x7962 +0x472b 0x5be7 +0x472c 0x8471 +0x472d 0x732b +0x472e 0x71b1 +0x472f 0x5e74 +0x4730 0x5ff5 +0x4731 0x637b +0x4732 0x649a +0x4733 0x71c3 +0x4734 0x7c98 +0x4735 0x4e43 +0x4736 0x5efc +0x4737 0x4e4b +0x4738 0x57dc +0x4739 0x56a2 +0x473a 0x60a9 +0x473b 0x6fc3 +0x473c 0x7d0d +0x473d 0x80fd +0x473e 0x8133 +0x473f 0x81bf +0x4740 0x8fb2 +0x4741 0x8997 +0x4742 0x86a4 +0x4743 0x5df4 +0x4744 0x628a +0x4745 0x64ad +0x4746 0x8987 +0x4747 0x6777 +0x4748 0x6ce2 +0x4749 0x6d3e +0x474a 0x7436 +0x474b 0x7834 +0x474c 0x5a46 +0x474d 0x7f75 +0x474e 0x82ad +0x474f 0x99ac +0x4750 0x4ff3 +0x4751 0x5ec3 +0x4752 0x62dd +0x4753 0x6392 +0x4754 0x6557 +0x4755 0x676f +0x4756 0x76c3 +0x4757 0x724c +0x4758 0x80cc +0x4759 0x80ba +0x475a 0x8f29 +0x475b 0x914d +0x475c 0x500d +0x475d 0x57f9 +0x475e 0x5a92 +0x475f 0x6885 +0x4760 0x6973 +0x4761 0x7164 +0x4762 0x72fd +0x4763 0x8cb7 +0x4764 0x58f2 +0x4765 0x8ce0 +0x4766 0x966a +0x4767 0x9019 +0x4768 0x877f +0x4769 0x79e4 +0x476a 0x77e7 +0x476b 0x8429 +0x476c 0x4f2f +0x476d 0x5265 +0x476e 0x535a +0x476f 0x62cd +0x4770 0x67cf +0x4771 0x6cca +0x4772 0x767d +0x4773 0x7b94 +0x4774 0x7c95 +0x4775 0x8236 +0x4776 0x8584 +0x4777 0x8feb +0x4778 0x66dd +0x4779 0x6f20 +0x477a 0x7206 +0x477b 0x7e1b +0x477c 0x83ab +0x477d 0x99c1 +0x477e 0x9ea6 +0x4821 0x51fd +0x4822 0x7bb1 +0x4823 0x7872 +0x4824 0x7bb8 +0x4825 0x8087 +0x4826 0x7b48 +0x4827 0x6ae8 +0x4828 0x5e61 +0x4829 0x808c +0x482a 0x7551 +0x482b 0x7560 +0x482c 0x516b +0x482d 0x9262 +0x482e 0x6e8c +0x482f 0x767a +0x4830 0x9197 +0x4831 0x9aea +0x4832 0x4f10 +0x4833 0x7f70 +0x4834 0x629c +0x4835 0x7b4f +0x4836 0x95a5 +0x4837 0x9ce9 +0x4838 0x567a +0x4839 0x5859 +0x483a 0x86e4 +0x483b 0x96bc +0x483c 0x4f34 +0x483d 0x5224 +0x483e 0x534a +0x483f 0x53cd +0x4840 0x53db +0x4841 0x5e06 +0x4842 0x642c +0x4843 0x6591 +0x4844 0x677f +0x4845 0x6c3e +0x4846 0x6c4e +0x4847 0x7248 +0x4848 0x72af +0x4849 0x73ed +0x484a 0x7554 +0x484b 0x7e41 +0x484c 0x822c +0x484d 0x85e9 +0x484e 0x8ca9 +0x484f 0x7bc4 +0x4850 0x91c6 +0x4851 0x7169 +0x4852 0x9812 +0x4853 0x98ef +0x4854 0x633d +0x4855 0x6669 +0x4856 0x756a +0x4857 0x76e4 +0x4858 0x78d0 +0x4859 0x8543 +0x485a 0x86ee +0x485b 0x532a +0x485c 0x5351 +0x485d 0x5426 +0x485e 0x5983 +0x485f 0x5e87 +0x4860 0x5f7c +0x4861 0x60b2 +0x4862 0x6249 +0x4863 0x6279 +0x4864 0x62ab +0x4865 0x6590 +0x4866 0x6bd4 +0x4867 0x6ccc +0x4868 0x75b2 +0x4869 0x76ae +0x486a 0x7891 +0x486b 0x79d8 +0x486c 0x7dcb +0x486d 0x7f77 +0x486e 0x80a5 +0x486f 0x88ab +0x4870 0x8ab9 +0x4871 0x8cbb +0x4872 0x907f +0x4873 0x975e +0x4874 0x98db +0x4875 0x6a0b +0x4876 0x7c38 +0x4877 0x5099 +0x4878 0x5c3e +0x4879 0x5fae +0x487a 0x6787 +0x487b 0x6bd8 +0x487c 0x7435 +0x487d 0x7709 +0x487e 0x7f8e +0x4921 0x9f3b +0x4922 0x67ca +0x4923 0x7a17 +0x4924 0x5339 +0x4925 0x758b +0x4926 0x9aed +0x4927 0x5f66 +0x4928 0x819d +0x4929 0x83f1 +0x492a 0x8098 +0x492b 0x5f3c +0x492c 0x5fc5 +0x492d 0x7562 +0x492e 0x7b46 +0x492f 0x903c +0x4930 0x6867 +0x4931 0x59eb +0x4932 0x5a9b +0x4933 0x7d10 +0x4934 0x767e +0x4935 0x8b2c +0x4936 0x4ff5 +0x4937 0x5f6a +0x4938 0x6a19 +0x4939 0x6c37 +0x493a 0x6f02 +0x493b 0x74e2 +0x493c 0x7968 +0x493d 0x8868 +0x493e 0x8a55 +0x493f 0x8c79 +0x4940 0x5edf +0x4941 0x63cf +0x4942 0x75c5 +0x4943 0x79d2 +0x4944 0x82d7 +0x4945 0x9328 +0x4946 0x92f2 +0x4947 0x849c +0x4948 0x86ed +0x4949 0x9c2d +0x494a 0x54c1 +0x494b 0x5f6c +0x494c 0x658c +0x494d 0x6d5c +0x494e 0x7015 +0x494f 0x8ca7 +0x4950 0x8cd3 +0x4951 0x983b +0x4952 0x654f +0x4953 0x74f6 +0x4954 0x4e0d +0x4955 0x4ed8 +0x4956 0x57e0 +0x4957 0x592b +0x4958 0x5a66 +0x4959 0x5bcc +0x495a 0x51a8 +0x495b 0x5e03 +0x495c 0x5e9c +0x495d 0x6016 +0x495e 0x6276 +0x495f 0x6577 +0x4960 0x65a7 +0x4961 0x666e +0x4962 0x6d6e +0x4963 0x7236 +0x4964 0x7b26 +0x4965 0x8150 +0x4966 0x819a +0x4967 0x8299 +0x4968 0x8b5c +0x4969 0x8ca0 +0x496a 0x8ce6 +0x496b 0x8d74 +0x496c 0x961c +0x496d 0x9644 +0x496e 0x4fae +0x496f 0x64ab +0x4970 0x6b66 +0x4971 0x821e +0x4972 0x8461 +0x4973 0x856a +0x4974 0x90e8 +0x4975 0x5c01 +0x4976 0x6953 +0x4977 0x98a8 +0x4978 0x847a +0x4979 0x8557 +0x497a 0x4f0f +0x497b 0x526f +0x497c 0x5fa9 +0x497d 0x5e45 +0x497e 0x670d +0x4a21 0x798f +0x4a22 0x8179 +0x4a23 0x8907 +0x4a24 0x8986 +0x4a25 0x6df5 +0x4a26 0x5f17 +0x4a27 0x6255 +0x4a28 0x6cb8 +0x4a29 0x4ecf +0x4a2a 0x7269 +0x4a2b 0x9b92 +0x4a2c 0x5206 +0x4a2d 0x543b +0x4a2e 0x5674 +0x4a2f 0x58b3 +0x4a30 0x61a4 +0x4a31 0x626e +0x4a32 0x711a +0x4a33 0x596e +0x4a34 0x7c89 +0x4a35 0x7cde +0x4a36 0x7d1b +0x4a37 0x96f0 +0x4a38 0x6587 +0x4a39 0x805e +0x4a3a 0x4e19 +0x4a3b 0x4f75 +0x4a3c 0x5175 +0x4a3d 0x5840 +0x4a3e 0x5e63 +0x4a3f 0x5e73 +0x4a40 0x5f0a +0x4a41 0x67c4 +0x4a42 0x4e26 +0x4a43 0x853d +0x4a44 0x9589 +0x4a45 0x965b +0x4a46 0x7c73 +0x4a47 0x9801 +0x4a48 0x50fb +0x4a49 0x58c1 +0x4a4a 0x7656 +0x4a4b 0x78a7 +0x4a4c 0x5225 +0x4a4d 0x77a5 +0x4a4e 0x8511 +0x4a4f 0x7b86 +0x4a50 0x504f +0x4a51 0x5909 +0x4a52 0x7247 +0x4a53 0x7bc7 +0x4a54 0x7de8 +0x4a55 0x8fba +0x4a56 0x8fd4 +0x4a57 0x904d +0x4a58 0x4fbf +0x4a59 0x52c9 +0x4a5a 0x5a29 +0x4a5b 0x5f01 +0x4a5c 0x97ad +0x4a5d 0x4fdd +0x4a5e 0x8217 +0x4a5f 0x92ea +0x4a60 0x5703 +0x4a61 0x6355 +0x4a62 0x6b69 +0x4a63 0x752b +0x4a64 0x88dc +0x4a65 0x8f14 +0x4a66 0x7a42 +0x4a67 0x52df +0x4a68 0x5893 +0x4a69 0x6155 +0x4a6a 0x620a +0x4a6b 0x66ae +0x4a6c 0x6bcd +0x4a6d 0x7c3f +0x4a6e 0x83e9 +0x4a6f 0x5023 +0x4a70 0x4ff8 +0x4a71 0x5305 +0x4a72 0x5446 +0x4a73 0x5831 +0x4a74 0x5949 +0x4a75 0x5b9d +0x4a76 0x5cf0 +0x4a77 0x5cef +0x4a78 0x5d29 +0x4a79 0x5e96 +0x4a7a 0x62b1 +0x4a7b 0x6367 +0x4a7c 0x653e +0x4a7d 0x65b9 +0x4a7e 0x670b +0x4b21 0x6cd5 +0x4b22 0x6ce1 +0x4b23 0x70f9 +0x4b24 0x7832 +0x4b25 0x7e2b +0x4b26 0x80de +0x4b27 0x82b3 +0x4b28 0x840c +0x4b29 0x84ec +0x4b2a 0x8702 +0x4b2b 0x8912 +0x4b2c 0x8a2a +0x4b2d 0x8c4a +0x4b2e 0x90a6 +0x4b2f 0x92d2 +0x4b30 0x98fd +0x4b31 0x9cf3 +0x4b32 0x9d6c +0x4b33 0x4e4f +0x4b34 0x4ea1 +0x4b35 0x508d +0x4b36 0x5256 +0x4b37 0x574a +0x4b38 0x59a8 +0x4b39 0x5e3d +0x4b3a 0x5fd8 +0x4b3b 0x5fd9 +0x4b3c 0x623f +0x4b3d 0x66b4 +0x4b3e 0x671b +0x4b3f 0x67d0 +0x4b40 0x68d2 +0x4b41 0x5192 +0x4b42 0x7d21 +0x4b43 0x80aa +0x4b44 0x81a8 +0x4b45 0x8b00 +0x4b46 0x8c8c +0x4b47 0x8cbf +0x4b48 0x927e +0x4b49 0x9632 +0x4b4a 0x5420 +0x4b4b 0x982c +0x4b4c 0x5317 +0x4b4d 0x50d5 +0x4b4e 0x535c +0x4b4f 0x58a8 +0x4b50 0x64b2 +0x4b51 0x6734 +0x4b52 0x7267 +0x4b53 0x7766 +0x4b54 0x7a46 +0x4b55 0x91e6 +0x4b56 0x52c3 +0x4b57 0x6ca1 +0x4b58 0x6b86 +0x4b59 0x5800 +0x4b5a 0x5e4c +0x4b5b 0x5954 +0x4b5c 0x672c +0x4b5d 0x7ffb +0x4b5e 0x51e1 +0x4b5f 0x76c6 +0x4b60 0x6469 +0x4b61 0x78e8 +0x4b62 0x9b54 +0x4b63 0x9ebb +0x4b64 0x57cb +0x4b65 0x59b9 +0x4b66 0x6627 +0x4b67 0x679a +0x4b68 0x6bce +0x4b69 0x54e9 +0x4b6a 0x69d9 +0x4b6b 0x5e55 +0x4b6c 0x819c +0x4b6d 0x6795 +0x4b6e 0x9baa +0x4b6f 0x67fe +0x4b70 0x9c52 +0x4b71 0x685d +0x4b72 0x4ea6 +0x4b73 0x4fe3 +0x4b74 0x53c8 +0x4b75 0x62b9 +0x4b76 0x672b +0x4b77 0x6cab +0x4b78 0x8fc4 +0x4b79 0x4fad +0x4b7a 0x7e6d +0x4b7b 0x9ebf +0x4b7c 0x4e07 +0x4b7d 0x6162 +0x4b7e 0x6e80 +0x4c21 0x6f2b +0x4c22 0x8513 +0x4c23 0x5473 +0x4c24 0x672a +0x4c25 0x9b45 +0x4c26 0x5df3 +0x4c27 0x7b95 +0x4c28 0x5cac +0x4c29 0x5bc6 +0x4c2a 0x871c +0x4c2b 0x6e4a +0x4c2c 0x84d1 +0x4c2d 0x7a14 +0x4c2e 0x8108 +0x4c2f 0x5999 +0x4c30 0x7c8d +0x4c31 0x6c11 +0x4c32 0x7720 +0x4c33 0x52d9 +0x4c34 0x5922 +0x4c35 0x7121 +0x4c36 0x725f +0x4c37 0x77db +0x4c38 0x9727 +0x4c39 0x9d61 +0x4c3a 0x690b +0x4c3b 0x5a7f +0x4c3c 0x5a18 +0x4c3d 0x51a5 +0x4c3e 0x540d +0x4c3f 0x547d +0x4c40 0x660e +0x4c41 0x76df +0x4c42 0x8ff7 +0x4c43 0x9298 +0x4c44 0x9cf4 +0x4c45 0x59ea +0x4c46 0x725d +0x4c47 0x6ec5 +0x4c48 0x514d +0x4c49 0x68c9 +0x4c4a 0x7dbf +0x4c4b 0x7dec +0x4c4c 0x9762 +0x4c4d 0x9eba +0x4c4e 0x6478 +0x4c4f 0x6a21 +0x4c50 0x8302 +0x4c51 0x5984 +0x4c52 0x5b5f +0x4c53 0x6bdb +0x4c54 0x731b +0x4c55 0x76f2 +0x4c56 0x7db2 +0x4c57 0x8017 +0x4c58 0x8499 +0x4c59 0x5132 +0x4c5a 0x6728 +0x4c5b 0x9ed9 +0x4c5c 0x76ee +0x4c5d 0x6762 +0x4c5e 0x52ff +0x4c5f 0x9905 +0x4c60 0x5c24 +0x4c61 0x623b +0x4c62 0x7c7e +0x4c63 0x8cb0 +0x4c64 0x554f +0x4c65 0x60b6 +0x4c66 0x7d0b +0x4c67 0x9580 +0x4c68 0x5301 +0x4c69 0x4e5f +0x4c6a 0x51b6 +0x4c6b 0x591c +0x4c6c 0x723a +0x4c6d 0x8036 +0x4c6e 0x91ce +0x4c6f 0x5f25 +0x4c70 0x77e2 +0x4c71 0x5384 +0x4c72 0x5f79 +0x4c73 0x7d04 +0x4c74 0x85ac +0x4c75 0x8a33 +0x4c76 0x8e8d +0x4c77 0x9756 +0x4c78 0x67f3 +0x4c79 0x85ae +0x4c7a 0x9453 +0x4c7b 0x6109 +0x4c7c 0x6108 +0x4c7d 0x6cb9 +0x4c7e 0x7652 +0x4d21 0x8aed +0x4d22 0x8f38 +0x4d23 0x552f +0x4d24 0x4f51 +0x4d25 0x512a +0x4d26 0x52c7 +0x4d27 0x53cb +0x4d28 0x5ba5 +0x4d29 0x5e7d +0x4d2a 0x60a0 +0x4d2b 0x6182 +0x4d2c 0x63d6 +0x4d2d 0x6709 +0x4d2e 0x67da +0x4d2f 0x6e67 +0x4d30 0x6d8c +0x4d31 0x7336 +0x4d32 0x7337 +0x4d33 0x7531 +0x4d34 0x7950 +0x4d35 0x88d5 +0x4d36 0x8a98 +0x4d37 0x904a +0x4d38 0x9091 +0x4d39 0x90f5 +0x4d3a 0x96c4 +0x4d3b 0x878d +0x4d3c 0x5915 +0x4d3d 0x4e88 +0x4d3e 0x4f59 +0x4d3f 0x4e0e +0x4d40 0x8a89 +0x4d41 0x8f3f +0x4d42 0x9810 +0x4d43 0x50ad +0x4d44 0x5e7c +0x4d45 0x5996 +0x4d46 0x5bb9 +0x4d47 0x5eb8 +0x4d48 0x63da +0x4d49 0x63fa +0x4d4a 0x64c1 +0x4d4b 0x66dc +0x4d4c 0x694a +0x4d4d 0x69d8 +0x4d4e 0x6d0b +0x4d4f 0x6eb6 +0x4d50 0x7194 +0x4d51 0x7528 +0x4d52 0x7aaf +0x4d53 0x7f8a +0x4d54 0x8000 +0x4d55 0x8449 +0x4d56 0x84c9 +0x4d57 0x8981 +0x4d58 0x8b21 +0x4d59 0x8e0a +0x4d5a 0x9065 +0x4d5b 0x967d +0x4d5c 0x990a +0x4d5d 0x617e +0x4d5e 0x6291 +0x4d5f 0x6b32 +0x4d60 0x6c83 +0x4d61 0x6d74 +0x4d62 0x7fcc +0x4d63 0x7ffc +0x4d64 0x6dc0 +0x4d65 0x7f85 +0x4d66 0x87ba +0x4d67 0x88f8 +0x4d68 0x6765 +0x4d69 0x83b1 +0x4d6a 0x983c +0x4d6b 0x96f7 +0x4d6c 0x6d1b +0x4d6d 0x7d61 +0x4d6e 0x843d +0x4d6f 0x916a +0x4d70 0x4e71 +0x4d71 0x5375 +0x4d72 0x5d50 +0x4d73 0x6b04 +0x4d74 0x6feb +0x4d75 0x85cd +0x4d76 0x862d +0x4d77 0x89a7 +0x4d78 0x5229 +0x4d79 0x540f +0x4d7a 0x5c65 +0x4d7b 0x674e +0x4d7c 0x68a8 +0x4d7d 0x7406 +0x4d7e 0x7483 +0x4e21 0x75e2 +0x4e22 0x88cf +0x4e23 0x88e1 +0x4e24 0x91cc +0x4e25 0x96e2 +0x4e26 0x9678 +0x4e27 0x5f8b +0x4e28 0x7387 +0x4e29 0x7acb +0x4e2a 0x844e +0x4e2b 0x63a0 +0x4e2c 0x7565 +0x4e2d 0x5289 +0x4e2e 0x6d41 +0x4e2f 0x6e9c +0x4e30 0x7409 +0x4e31 0x7559 +0x4e32 0x786b +0x4e33 0x7c92 +0x4e34 0x9686 +0x4e35 0x7adc +0x4e36 0x9f8d +0x4e37 0x4fb6 +0x4e38 0x616e +0x4e39 0x65c5 +0x4e3a 0x865c +0x4e3b 0x4e86 +0x4e3c 0x4eae +0x4e3d 0x50da +0x4e3e 0x4e21 +0x4e3f 0x51cc +0x4e40 0x5bee +0x4e41 0x6599 +0x4e42 0x6881 +0x4e43 0x6dbc +0x4e44 0x731f +0x4e45 0x7642 +0x4e46 0x77ad +0x4e47 0x7a1c +0x4e48 0x7ce7 +0x4e49 0x826f +0x4e4a 0x8ad2 +0x4e4b 0x907c +0x4e4c 0x91cf +0x4e4d 0x9675 +0x4e4e 0x9818 +0x4e4f 0x529b +0x4e50 0x7dd1 +0x4e51 0x502b +0x4e52 0x5398 +0x4e53 0x6797 +0x4e54 0x6dcb +0x4e55 0x71d0 +0x4e56 0x7433 +0x4e57 0x81e8 +0x4e58 0x8f2a +0x4e59 0x96a3 +0x4e5a 0x9c57 +0x4e5b 0x9e9f +0x4e5c 0x7460 +0x4e5d 0x5841 +0x4e5e 0x6d99 +0x4e5f 0x7d2f +0x4e60 0x985e +0x4e61 0x4ee4 +0x4e62 0x4f36 +0x4e63 0x4f8b +0x4e64 0x51b7 +0x4e65 0x52b1 +0x4e66 0x5dba +0x4e67 0x601c +0x4e68 0x73b2 +0x4e69 0x793c +0x4e6a 0x82d3 +0x4e6b 0x9234 +0x4e6c 0x96b7 +0x4e6d 0x96f6 +0x4e6e 0x970a +0x4e6f 0x9e97 +0x4e70 0x9f62 +0x4e71 0x66a6 +0x4e72 0x6b74 +0x4e73 0x5217 +0x4e74 0x52a3 +0x4e75 0x70c8 +0x4e76 0x88c2 +0x4e77 0x5ec9 +0x4e78 0x604b +0x4e79 0x6190 +0x4e7a 0x6f23 +0x4e7b 0x7149 +0x4e7c 0x7c3e +0x4e7d 0x7df4 +0x4e7e 0x806f +0x4f21 0x84ee +0x4f22 0x9023 +0x4f23 0x932c +0x4f24 0x5442 +0x4f25 0x9b6f +0x4f26 0x6ad3 +0x4f27 0x7089 +0x4f28 0x8cc2 +0x4f29 0x8def +0x4f2a 0x9732 +0x4f2b 0x52b4 +0x4f2c 0x5a41 +0x4f2d 0x5eca +0x4f2e 0x5f04 +0x4f2f 0x6717 +0x4f30 0x697c +0x4f31 0x6994 +0x4f32 0x6d6a +0x4f33 0x6f0f +0x4f34 0x7262 +0x4f35 0x72fc +0x4f36 0x7bed +0x4f37 0x8001 +0x4f38 0x807e +0x4f39 0x874b +0x4f3a 0x90ce +0x4f3b 0x516d +0x4f3c 0x9e93 +0x4f3d 0x7984 +0x4f3e 0x808b +0x4f3f 0x9332 +0x4f40 0x8ad6 +0x4f41 0x502d +0x4f42 0x548c +0x4f43 0x8a71 +0x4f44 0x6b6a +0x4f45 0x8cc4 +0x4f46 0x8107 +0x4f47 0x60d1 +0x4f48 0x67a0 +0x4f49 0x9df2 +0x4f4a 0x4e99 +0x4f4b 0x4e98 +0x4f4c 0x9c10 +0x4f4d 0x8a6b +0x4f4e 0x85c1 +0x4f4f 0x8568 +0x4f50 0x6900 +0x4f51 0x6e7e +0x4f52 0x7897 +0x4f53 0x8155 +0x5021 0x5f0c +0x5022 0x4e10 +0x5023 0x4e15 +0x5024 0x4e2a +0x5025 0x4e31 +0x5026 0x4e36 +0x5027 0x4e3c +0x5028 0x4e3f +0x5029 0x4e42 +0x502a 0x4e56 +0x502b 0x4e58 +0x502c 0x4e82 +0x502d 0x4e85 +0x502e 0x8c6b +0x502f 0x4e8a +0x5030 0x8212 +0x5031 0x5f0d +0x5032 0x4e8e +0x5033 0x4e9e +0x5034 0x4e9f +0x5035 0x4ea0 +0x5036 0x4ea2 +0x5037 0x4eb0 +0x5038 0x4eb3 +0x5039 0x4eb6 +0x503a 0x4ece +0x503b 0x4ecd +0x503c 0x4ec4 +0x503d 0x4ec6 +0x503e 0x4ec2 +0x503f 0x4ed7 +0x5040 0x4ede +0x5041 0x4eed +0x5042 0x4edf +0x5043 0x4ef7 +0x5044 0x4f09 +0x5045 0x4f5a +0x5046 0x4f30 +0x5047 0x4f5b +0x5048 0x4f5d +0x5049 0x4f57 +0x504a 0x4f47 +0x504b 0x4f76 +0x504c 0x4f88 +0x504d 0x4f8f +0x504e 0x4f98 +0x504f 0x4f7b +0x5050 0x4f69 +0x5051 0x4f70 +0x5052 0x4f91 +0x5053 0x4f6f +0x5054 0x4f86 +0x5055 0x4f96 +0x5056 0x5118 +0x5057 0x4fd4 +0x5058 0x4fdf +0x5059 0x4fce +0x505a 0x4fd8 +0x505b 0x4fdb +0x505c 0x4fd1 +0x505d 0x4fda +0x505e 0x4fd0 +0x505f 0x4fe4 +0x5060 0x4fe5 +0x5061 0x501a +0x5062 0x5028 +0x5063 0x5014 +0x5064 0x502a +0x5065 0x5025 +0x5066 0x5005 +0x5067 0x4f1c +0x5068 0x4ff6 +0x5069 0x5021 +0x506a 0x5029 +0x506b 0x502c +0x506c 0x4ffe +0x506d 0x4fef +0x506e 0x5011 +0x506f 0x5006 +0x5070 0x5043 +0x5071 0x5047 +0x5072 0x6703 +0x5073 0x5055 +0x5074 0x5050 +0x5075 0x5048 +0x5076 0x505a +0x5077 0x5056 +0x5078 0x506c +0x5079 0x5078 +0x507a 0x5080 +0x507b 0x509a +0x507c 0x5085 +0x507d 0x50b4 +0x507e 0x50b2 +0x5121 0x50c9 +0x5122 0x50ca +0x5123 0x50b3 +0x5124 0x50c2 +0x5125 0x50d6 +0x5126 0x50de +0x5127 0x50e5 +0x5128 0x50ed +0x5129 0x50e3 +0x512a 0x50ee +0x512b 0x50f9 +0x512c 0x50f5 +0x512d 0x5109 +0x512e 0x5101 +0x512f 0x5102 +0x5130 0x5116 +0x5131 0x5115 +0x5132 0x5114 +0x5133 0x511a +0x5134 0x5121 +0x5135 0x513a +0x5136 0x5137 +0x5137 0x513c +0x5138 0x513b +0x5139 0x513f +0x513a 0x5140 +0x513b 0x5152 +0x513c 0x514c +0x513d 0x5154 +0x513e 0x5162 +0x513f 0x7af8 +0x5140 0x5169 +0x5141 0x516a +0x5142 0x516e +0x5143 0x5180 +0x5144 0x5182 +0x5145 0x56d8 +0x5146 0x518c +0x5147 0x5189 +0x5148 0x518f +0x5149 0x5191 +0x514a 0x5193 +0x514b 0x5195 +0x514c 0x5196 +0x514d 0x51a4 +0x514e 0x51a6 +0x514f 0x51a2 +0x5150 0x51a9 +0x5151 0x51aa +0x5152 0x51ab +0x5153 0x51b3 +0x5154 0x51b1 +0x5155 0x51b2 +0x5156 0x51b0 +0x5157 0x51b5 +0x5158 0x51bd +0x5159 0x51c5 +0x515a 0x51c9 +0x515b 0x51db +0x515c 0x51e0 +0x515d 0x8655 +0x515e 0x51e9 +0x515f 0x51ed +0x5160 0x51f0 +0x5161 0x51f5 +0x5162 0x51fe +0x5163 0x5204 +0x5164 0x520b +0x5165 0x5214 +0x5166 0x520e +0x5167 0x5227 +0x5168 0x522a +0x5169 0x522e +0x516a 0x5233 +0x516b 0x5239 +0x516c 0x524f +0x516d 0x5244 +0x516e 0x524b +0x516f 0x524c +0x5170 0x525e +0x5171 0x5254 +0x5172 0x526a +0x5173 0x5274 +0x5174 0x5269 +0x5175 0x5273 +0x5176 0x527f +0x5177 0x527d +0x5178 0x528d +0x5179 0x5294 +0x517a 0x5292 +0x517b 0x5271 +0x517c 0x5288 +0x517d 0x5291 +0x517e 0x8fa8 +0x5221 0x8fa7 +0x5222 0x52ac +0x5223 0x52ad +0x5224 0x52bc +0x5225 0x52b5 +0x5226 0x52c1 +0x5227 0x52cd +0x5228 0x52d7 +0x5229 0x52de +0x522a 0x52e3 +0x522b 0x52e6 +0x522c 0x98ed +0x522d 0x52e0 +0x522e 0x52f3 +0x522f 0x52f5 +0x5230 0x52f8 +0x5231 0x52f9 +0x5232 0x5306 +0x5233 0x5308 +0x5234 0x7538 +0x5235 0x530d +0x5236 0x5310 +0x5237 0x530f +0x5238 0x5315 +0x5239 0x531a +0x523a 0x5323 +0x523b 0x532f +0x523c 0x5331 +0x523d 0x5333 +0x523e 0x5338 +0x523f 0x5340 +0x5240 0x5346 +0x5241 0x5345 +0x5242 0x4e17 +0x5243 0x5349 +0x5244 0x534d +0x5245 0x51d6 +0x5246 0x535e +0x5247 0x5369 +0x5248 0x536e +0x5249 0x5918 +0x524a 0x537b +0x524b 0x5377 +0x524c 0x5382 +0x524d 0x5396 +0x524e 0x53a0 +0x524f 0x53a6 +0x5250 0x53a5 +0x5251 0x53ae +0x5252 0x53b0 +0x5253 0x53b6 +0x5254 0x53c3 +0x5255 0x7c12 +0x5256 0x96d9 +0x5257 0x53df +0x5258 0x66fc +0x5259 0x71ee +0x525a 0x53ee +0x525b 0x53e8 +0x525c 0x53ed +0x525d 0x53fa +0x525e 0x5401 +0x525f 0x543d +0x5260 0x5440 +0x5261 0x542c +0x5262 0x542d +0x5263 0x543c +0x5264 0x542e +0x5265 0x5436 +0x5266 0x5429 +0x5267 0x541d +0x5268 0x544e +0x5269 0x548f +0x526a 0x5475 +0x526b 0x548e +0x526c 0x545f +0x526d 0x5471 +0x526e 0x5477 +0x526f 0x5470 +0x5270 0x5492 +0x5271 0x547b +0x5272 0x5480 +0x5273 0x5476 +0x5274 0x5484 +0x5275 0x5490 +0x5276 0x5486 +0x5277 0x54c7 +0x5278 0x54a2 +0x5279 0x54b8 +0x527a 0x54a5 +0x527b 0x54ac +0x527c 0x54c4 +0x527d 0x54c8 +0x527e 0x54a8 +0x5321 0x54ab +0x5322 0x54c2 +0x5323 0x54a4 +0x5324 0x54be +0x5325 0x54bc +0x5326 0x54d8 +0x5327 0x54e5 +0x5328 0x54e6 +0x5329 0x550f +0x532a 0x5514 +0x532b 0x54fd +0x532c 0x54ee +0x532d 0x54ed +0x532e 0x54fa +0x532f 0x54e2 +0x5330 0x5539 +0x5331 0x5540 +0x5332 0x5563 +0x5333 0x554c +0x5334 0x552e +0x5335 0x555c +0x5336 0x5545 +0x5337 0x5556 +0x5338 0x5557 +0x5339 0x5538 +0x533a 0x5533 +0x533b 0x555d +0x533c 0x5599 +0x533d 0x5580 +0x533e 0x54af +0x533f 0x558a +0x5340 0x559f +0x5341 0x557b +0x5342 0x557e +0x5343 0x5598 +0x5344 0x559e +0x5345 0x55ae +0x5346 0x557c +0x5347 0x5583 +0x5348 0x55a9 +0x5349 0x5587 +0x534a 0x55a8 +0x534b 0x55da +0x534c 0x55c5 +0x534d 0x55df +0x534e 0x55c4 +0x534f 0x55dc +0x5350 0x55e4 +0x5351 0x55d4 +0x5352 0x5614 +0x5353 0x55f7 +0x5354 0x5616 +0x5355 0x55fe +0x5356 0x55fd +0x5357 0x561b +0x5358 0x55f9 +0x5359 0x564e +0x535a 0x5650 +0x535b 0x71df +0x535c 0x5634 +0x535d 0x5636 +0x535e 0x5632 +0x535f 0x5638 +0x5360 0x566b +0x5361 0x5664 +0x5362 0x562f +0x5363 0x566c +0x5364 0x566a +0x5365 0x5686 +0x5366 0x5680 +0x5367 0x568a +0x5368 0x56a0 +0x5369 0x5694 +0x536a 0x568f +0x536b 0x56a5 +0x536c 0x56ae +0x536d 0x56b6 +0x536e 0x56b4 +0x536f 0x56c2 +0x5370 0x56bc +0x5371 0x56c1 +0x5372 0x56c3 +0x5373 0x56c0 +0x5374 0x56c8 +0x5375 0x56ce +0x5376 0x56d1 +0x5377 0x56d3 +0x5378 0x56d7 +0x5379 0x56ee +0x537a 0x56f9 +0x537b 0x5700 +0x537c 0x56ff +0x537d 0x5704 +0x537e 0x5709 +0x5421 0x5708 +0x5422 0x570b +0x5423 0x570d +0x5424 0x5713 +0x5425 0x5718 +0x5426 0x5716 +0x5427 0x55c7 +0x5428 0x571c +0x5429 0x5726 +0x542a 0x5737 +0x542b 0x5738 +0x542c 0x574e +0x542d 0x573b +0x542e 0x5740 +0x542f 0x574f +0x5430 0x5769 +0x5431 0x57c0 +0x5432 0x5788 +0x5433 0x5761 +0x5434 0x577f +0x5435 0x5789 +0x5436 0x5793 +0x5437 0x57a0 +0x5438 0x57b3 +0x5439 0x57a4 +0x543a 0x57aa +0x543b 0x57b0 +0x543c 0x57c3 +0x543d 0x57c6 +0x543e 0x57d4 +0x543f 0x57d2 +0x5440 0x57d3 +0x5441 0x580a +0x5442 0x57d6 +0x5443 0x57e3 +0x5444 0x580b +0x5445 0x5819 +0x5446 0x581d +0x5447 0x5872 +0x5448 0x5821 +0x5449 0x5862 +0x544a 0x584b +0x544b 0x5870 +0x544c 0x6bc0 +0x544d 0x5852 +0x544e 0x583d +0x544f 0x5879 +0x5450 0x5885 +0x5451 0x58b9 +0x5452 0x589f +0x5453 0x58ab +0x5454 0x58ba +0x5455 0x58de +0x5456 0x58bb +0x5457 0x58b8 +0x5458 0x58ae +0x5459 0x58c5 +0x545a 0x58d3 +0x545b 0x58d1 +0x545c 0x58d7 +0x545d 0x58d9 +0x545e 0x58d8 +0x545f 0x58e5 +0x5460 0x58dc +0x5461 0x58e4 +0x5462 0x58df +0x5463 0x58ef +0x5464 0x58fa +0x5465 0x58f9 +0x5466 0x58fb +0x5467 0x58fc +0x5468 0x58fd +0x5469 0x5902 +0x546a 0x590a +0x546b 0x5910 +0x546c 0x591b +0x546d 0x68a6 +0x546e 0x5925 +0x546f 0x592c +0x5470 0x592d +0x5471 0x5932 +0x5472 0x5938 +0x5473 0x593e +0x5474 0x7ad2 +0x5475 0x5955 +0x5476 0x5950 +0x5477 0x594e +0x5478 0x595a +0x5479 0x5958 +0x547a 0x5962 +0x547b 0x5960 +0x547c 0x5967 +0x547d 0x596c +0x547e 0x5969 +0x5521 0x5978 +0x5522 0x5981 +0x5523 0x599d +0x5524 0x4f5e +0x5525 0x4fab +0x5526 0x59a3 +0x5527 0x59b2 +0x5528 0x59c6 +0x5529 0x59e8 +0x552a 0x59dc +0x552b 0x598d +0x552c 0x59d9 +0x552d 0x59da +0x552e 0x5a25 +0x552f 0x5a1f +0x5530 0x5a11 +0x5531 0x5a1c +0x5532 0x5a09 +0x5533 0x5a1a +0x5534 0x5a40 +0x5535 0x5a6c +0x5536 0x5a49 +0x5537 0x5a35 +0x5538 0x5a36 +0x5539 0x5a62 +0x553a 0x5a6a +0x553b 0x5a9a +0x553c 0x5abc +0x553d 0x5abe +0x553e 0x5acb +0x553f 0x5ac2 +0x5540 0x5abd +0x5541 0x5ae3 +0x5542 0x5ad7 +0x5543 0x5ae6 +0x5544 0x5ae9 +0x5545 0x5ad6 +0x5546 0x5afa +0x5547 0x5afb +0x5548 0x5b0c +0x5549 0x5b0b +0x554a 0x5b16 +0x554b 0x5b32 +0x554c 0x5ad0 +0x554d 0x5b2a +0x554e 0x5b36 +0x554f 0x5b3e +0x5550 0x5b43 +0x5551 0x5b45 +0x5552 0x5b40 +0x5553 0x5b51 +0x5554 0x5b55 +0x5555 0x5b5a +0x5556 0x5b5b +0x5557 0x5b65 +0x5558 0x5b69 +0x5559 0x5b70 +0x555a 0x5b73 +0x555b 0x5b75 +0x555c 0x5b78 +0x555d 0x6588 +0x555e 0x5b7a +0x555f 0x5b80 +0x5560 0x5b83 +0x5561 0x5ba6 +0x5562 0x5bb8 +0x5563 0x5bc3 +0x5564 0x5bc7 +0x5565 0x5bc9 +0x5566 0x5bd4 +0x5567 0x5bd0 +0x5568 0x5be4 +0x5569 0x5be6 +0x556a 0x5be2 +0x556b 0x5bde +0x556c 0x5be5 +0x556d 0x5beb +0x556e 0x5bf0 +0x556f 0x5bf6 +0x5570 0x5bf3 +0x5571 0x5c05 +0x5572 0x5c07 +0x5573 0x5c08 +0x5574 0x5c0d +0x5575 0x5c13 +0x5576 0x5c20 +0x5577 0x5c22 +0x5578 0x5c28 +0x5579 0x5c38 +0x557a 0x5c39 +0x557b 0x5c41 +0x557c 0x5c46 +0x557d 0x5c4e +0x557e 0x5c53 +0x5621 0x5c50 +0x5622 0x5c4f +0x5623 0x5b71 +0x5624 0x5c6c +0x5625 0x5c6e +0x5626 0x4e62 +0x5627 0x5c76 +0x5628 0x5c79 +0x5629 0x5c8c +0x562a 0x5c91 +0x562b 0x5c94 +0x562c 0x599b +0x562d 0x5cab +0x562e 0x5cbb +0x562f 0x5cb6 +0x5630 0x5cbc +0x5631 0x5cb7 +0x5632 0x5cc5 +0x5633 0x5cbe +0x5634 0x5cc7 +0x5635 0x5cd9 +0x5636 0x5ce9 +0x5637 0x5cfd +0x5638 0x5cfa +0x5639 0x5ced +0x563a 0x5d8c +0x563b 0x5cea +0x563c 0x5d0b +0x563d 0x5d15 +0x563e 0x5d17 +0x563f 0x5d5c +0x5640 0x5d1f +0x5641 0x5d1b +0x5642 0x5d11 +0x5643 0x5d14 +0x5644 0x5d22 +0x5645 0x5d1a +0x5646 0x5d19 +0x5647 0x5d18 +0x5648 0x5d4c +0x5649 0x5d52 +0x564a 0x5d4e +0x564b 0x5d4b +0x564c 0x5d6c +0x564d 0x5d73 +0x564e 0x5d76 +0x564f 0x5d87 +0x5650 0x5d84 +0x5651 0x5d82 +0x5652 0x5da2 +0x5653 0x5d9d +0x5654 0x5dac +0x5655 0x5dae +0x5656 0x5dbd +0x5657 0x5d90 +0x5658 0x5db7 +0x5659 0x5dbc +0x565a 0x5dc9 +0x565b 0x5dcd +0x565c 0x5dd3 +0x565d 0x5dd2 +0x565e 0x5dd6 +0x565f 0x5ddb +0x5660 0x5deb +0x5661 0x5df2 +0x5662 0x5df5 +0x5663 0x5e0b +0x5664 0x5e1a +0x5665 0x5e19 +0x5666 0x5e11 +0x5667 0x5e1b +0x5668 0x5e36 +0x5669 0x5e37 +0x566a 0x5e44 +0x566b 0x5e43 +0x566c 0x5e40 +0x566d 0x5e4e +0x566e 0x5e57 +0x566f 0x5e54 +0x5670 0x5e5f +0x5671 0x5e62 +0x5672 0x5e64 +0x5673 0x5e47 +0x5674 0x5e75 +0x5675 0x5e76 +0x5676 0x5e7a +0x5677 0x9ebc +0x5678 0x5e7f +0x5679 0x5ea0 +0x567a 0x5ec1 +0x567b 0x5ec2 +0x567c 0x5ec8 +0x567d 0x5ed0 +0x567e 0x5ecf +0x5721 0x5ed6 +0x5722 0x5ee3 +0x5723 0x5edd +0x5724 0x5eda +0x5725 0x5edb +0x5726 0x5ee2 +0x5727 0x5ee1 +0x5728 0x5ee8 +0x5729 0x5ee9 +0x572a 0x5eec +0x572b 0x5ef1 +0x572c 0x5ef3 +0x572d 0x5ef0 +0x572e 0x5ef4 +0x572f 0x5ef8 +0x5730 0x5efe +0x5731 0x5f03 +0x5732 0x5f09 +0x5733 0x5f5d +0x5734 0x5f5c +0x5735 0x5f0b +0x5736 0x5f11 +0x5737 0x5f16 +0x5738 0x5f29 +0x5739 0x5f2d +0x573a 0x5f38 +0x573b 0x5f41 +0x573c 0x5f48 +0x573d 0x5f4c +0x573e 0x5f4e +0x573f 0x5f2f +0x5740 0x5f51 +0x5741 0x5f56 +0x5742 0x5f57 +0x5743 0x5f59 +0x5744 0x5f61 +0x5745 0x5f6d +0x5746 0x5f73 +0x5747 0x5f77 +0x5748 0x5f83 +0x5749 0x5f82 +0x574a 0x5f7f +0x574b 0x5f8a +0x574c 0x5f88 +0x574d 0x5f91 +0x574e 0x5f87 +0x574f 0x5f9e +0x5750 0x5f99 +0x5751 0x5f98 +0x5752 0x5fa0 +0x5753 0x5fa8 +0x5754 0x5fad +0x5755 0x5fbc +0x5756 0x5fd6 +0x5757 0x5ffb +0x5758 0x5fe4 +0x5759 0x5ff8 +0x575a 0x5ff1 +0x575b 0x5fdd +0x575c 0x60b3 +0x575d 0x5fff +0x575e 0x6021 +0x575f 0x6060 +0x5760 0x6019 +0x5761 0x6010 +0x5762 0x6029 +0x5763 0x600e +0x5764 0x6031 +0x5765 0x601b +0x5766 0x6015 +0x5767 0x602b +0x5768 0x6026 +0x5769 0x600f +0x576a 0x603a +0x576b 0x605a +0x576c 0x6041 +0x576d 0x606a +0x576e 0x6077 +0x576f 0x605f +0x5770 0x604a +0x5771 0x6046 +0x5772 0x604d +0x5773 0x6063 +0x5774 0x6043 +0x5775 0x6064 +0x5776 0x6042 +0x5777 0x606c +0x5778 0x606b +0x5779 0x6059 +0x577a 0x6081 +0x577b 0x608d +0x577c 0x60e7 +0x577d 0x6083 +0x577e 0x609a +0x5821 0x6084 +0x5822 0x609b +0x5823 0x6096 +0x5824 0x6097 +0x5825 0x6092 +0x5826 0x60a7 +0x5827 0x608b +0x5828 0x60e1 +0x5829 0x60b8 +0x582a 0x60e0 +0x582b 0x60d3 +0x582c 0x60b4 +0x582d 0x5ff0 +0x582e 0x60bd +0x582f 0x60c6 +0x5830 0x60b5 +0x5831 0x60d8 +0x5832 0x614d +0x5833 0x6115 +0x5834 0x6106 +0x5835 0x60f6 +0x5836 0x60f7 +0x5837 0x6100 +0x5838 0x60f4 +0x5839 0x60fa +0x583a 0x6103 +0x583b 0x6121 +0x583c 0x60fb +0x583d 0x60f1 +0x583e 0x610d +0x583f 0x610e +0x5840 0x6147 +0x5841 0x613e +0x5842 0x6128 +0x5843 0x6127 +0x5844 0x614a +0x5845 0x613f +0x5846 0x613c +0x5847 0x612c +0x5848 0x6134 +0x5849 0x613d +0x584a 0x6142 +0x584b 0x6144 +0x584c 0x6173 +0x584d 0x6177 +0x584e 0x6158 +0x584f 0x6159 +0x5850 0x615a +0x5851 0x616b +0x5852 0x6174 +0x5853 0x616f +0x5854 0x6165 +0x5855 0x6171 +0x5856 0x615f +0x5857 0x615d +0x5858 0x6153 +0x5859 0x6175 +0x585a 0x6199 +0x585b 0x6196 +0x585c 0x6187 +0x585d 0x61ac +0x585e 0x6194 +0x585f 0x619a +0x5860 0x618a +0x5861 0x6191 +0x5862 0x61ab +0x5863 0x61ae +0x5864 0x61cc +0x5865 0x61ca +0x5866 0x61c9 +0x5867 0x61f7 +0x5868 0x61c8 +0x5869 0x61c3 +0x586a 0x61c6 +0x586b 0x61ba +0x586c 0x61cb +0x586d 0x7f79 +0x586e 0x61cd +0x586f 0x61e6 +0x5870 0x61e3 +0x5871 0x61f6 +0x5872 0x61fa +0x5873 0x61f4 +0x5874 0x61ff +0x5875 0x61fd +0x5876 0x61fc +0x5877 0x61fe +0x5878 0x6200 +0x5879 0x6208 +0x587a 0x6209 +0x587b 0x620d +0x587c 0x620c +0x587d 0x6214 +0x587e 0x621b +0x5921 0x621e +0x5922 0x6221 +0x5923 0x622a +0x5924 0x622e +0x5925 0x6230 +0x5926 0x6232 +0x5927 0x6233 +0x5928 0x6241 +0x5929 0x624e +0x592a 0x625e +0x592b 0x6263 +0x592c 0x625b +0x592d 0x6260 +0x592e 0x6268 +0x592f 0x627c +0x5930 0x6282 +0x5931 0x6289 +0x5932 0x627e +0x5933 0x6292 +0x5934 0x6293 +0x5935 0x6296 +0x5936 0x62d4 +0x5937 0x6283 +0x5938 0x6294 +0x5939 0x62d7 +0x593a 0x62d1 +0x593b 0x62bb +0x593c 0x62cf +0x593d 0x62ff +0x593e 0x62c6 +0x593f 0x64d4 +0x5940 0x62c8 +0x5941 0x62dc +0x5942 0x62cc +0x5943 0x62ca +0x5944 0x62c2 +0x5945 0x62c7 +0x5946 0x629b +0x5947 0x62c9 +0x5948 0x630c +0x5949 0x62ee +0x594a 0x62f1 +0x594b 0x6327 +0x594c 0x6302 +0x594d 0x6308 +0x594e 0x62ef +0x594f 0x62f5 +0x5950 0x6350 +0x5951 0x633e +0x5952 0x634d +0x5953 0x641c +0x5954 0x634f +0x5955 0x6396 +0x5956 0x638e +0x5957 0x6380 +0x5958 0x63ab +0x5959 0x6376 +0x595a 0x63a3 +0x595b 0x638f +0x595c 0x6389 +0x595d 0x639f +0x595e 0x63b5 +0x595f 0x636b +0x5960 0x6369 +0x5961 0x63be +0x5962 0x63e9 +0x5963 0x63c0 +0x5964 0x63c6 +0x5965 0x63e3 +0x5966 0x63c9 +0x5967 0x63d2 +0x5968 0x63f6 +0x5969 0x63c4 +0x596a 0x6416 +0x596b 0x6434 +0x596c 0x6406 +0x596d 0x6413 +0x596e 0x6426 +0x596f 0x6436 +0x5970 0x651d +0x5971 0x6417 +0x5972 0x6428 +0x5973 0x640f +0x5974 0x6467 +0x5975 0x646f +0x5976 0x6476 +0x5977 0x644e +0x5978 0x652a +0x5979 0x6495 +0x597a 0x6493 +0x597b 0x64a5 +0x597c 0x64a9 +0x597d 0x6488 +0x597e 0x64bc +0x5a21 0x64da +0x5a22 0x64d2 +0x5a23 0x64c5 +0x5a24 0x64c7 +0x5a25 0x64bb +0x5a26 0x64d8 +0x5a27 0x64c2 +0x5a28 0x64f1 +0x5a29 0x64e7 +0x5a2a 0x8209 +0x5a2b 0x64e0 +0x5a2c 0x64e1 +0x5a2d 0x62ac +0x5a2e 0x64e3 +0x5a2f 0x64ef +0x5a30 0x652c +0x5a31 0x64f6 +0x5a32 0x64f4 +0x5a33 0x64f2 +0x5a34 0x64fa +0x5a35 0x6500 +0x5a36 0x64fd +0x5a37 0x6518 +0x5a38 0x651c +0x5a39 0x6505 +0x5a3a 0x6524 +0x5a3b 0x6523 +0x5a3c 0x652b +0x5a3d 0x6534 +0x5a3e 0x6535 +0x5a3f 0x6537 +0x5a40 0x6536 +0x5a41 0x6538 +0x5a42 0x754b +0x5a43 0x6548 +0x5a44 0x6556 +0x5a45 0x6555 +0x5a46 0x654d +0x5a47 0x6558 +0x5a48 0x655e +0x5a49 0x655d +0x5a4a 0x6572 +0x5a4b 0x6578 +0x5a4c 0x6582 +0x5a4d 0x6583 +0x5a4e 0x8b8a +0x5a4f 0x659b +0x5a50 0x659f +0x5a51 0x65ab +0x5a52 0x65b7 +0x5a53 0x65c3 +0x5a54 0x65c6 +0x5a55 0x65c1 +0x5a56 0x65c4 +0x5a57 0x65cc +0x5a58 0x65d2 +0x5a59 0x65db +0x5a5a 0x65d9 +0x5a5b 0x65e0 +0x5a5c 0x65e1 +0x5a5d 0x65f1 +0x5a5e 0x6772 +0x5a5f 0x660a +0x5a60 0x6603 +0x5a61 0x65fb +0x5a62 0x6773 +0x5a63 0x6635 +0x5a64 0x6636 +0x5a65 0x6634 +0x5a66 0x661c +0x5a67 0x664f +0x5a68 0x6644 +0x5a69 0x6649 +0x5a6a 0x6641 +0x5a6b 0x665e +0x5a6c 0x665d +0x5a6d 0x6664 +0x5a6e 0x6667 +0x5a6f 0x6668 +0x5a70 0x665f +0x5a71 0x6662 +0x5a72 0x6670 +0x5a73 0x6683 +0x5a74 0x6688 +0x5a75 0x668e +0x5a76 0x6689 +0x5a77 0x6684 +0x5a78 0x6698 +0x5a79 0x669d +0x5a7a 0x66c1 +0x5a7b 0x66b9 +0x5a7c 0x66c9 +0x5a7d 0x66be +0x5a7e 0x66bc +0x5b21 0x66c4 +0x5b22 0x66b8 +0x5b23 0x66d6 +0x5b24 0x66da +0x5b25 0x66e0 +0x5b26 0x663f +0x5b27 0x66e6 +0x5b28 0x66e9 +0x5b29 0x66f0 +0x5b2a 0x66f5 +0x5b2b 0x66f7 +0x5b2c 0x670f +0x5b2d 0x6716 +0x5b2e 0x671e +0x5b2f 0x6726 +0x5b30 0x6727 +0x5b31 0x9738 +0x5b32 0x672e +0x5b33 0x673f +0x5b34 0x6736 +0x5b35 0x6741 +0x5b36 0x6738 +0x5b37 0x6737 +0x5b38 0x6746 +0x5b39 0x675e +0x5b3a 0x6760 +0x5b3b 0x6759 +0x5b3c 0x6763 +0x5b3d 0x6764 +0x5b3e 0x6789 +0x5b3f 0x6770 +0x5b40 0x67a9 +0x5b41 0x677c +0x5b42 0x676a +0x5b43 0x678c +0x5b44 0x678b +0x5b45 0x67a6 +0x5b46 0x67a1 +0x5b47 0x6785 +0x5b48 0x67b7 +0x5b49 0x67ef +0x5b4a 0x67b4 +0x5b4b 0x67ec +0x5b4c 0x67b3 +0x5b4d 0x67e9 +0x5b4e 0x67b8 +0x5b4f 0x67e4 +0x5b50 0x67de +0x5b51 0x67dd +0x5b52 0x67e2 +0x5b53 0x67ee +0x5b54 0x67b9 +0x5b55 0x67ce +0x5b56 0x67c6 +0x5b57 0x67e7 +0x5b58 0x6a9c +0x5b59 0x681e +0x5b5a 0x6846 +0x5b5b 0x6829 +0x5b5c 0x6840 +0x5b5d 0x684d +0x5b5e 0x6832 +0x5b5f 0x684e +0x5b60 0x68b3 +0x5b61 0x682b +0x5b62 0x6859 +0x5b63 0x6863 +0x5b64 0x6877 +0x5b65 0x687f +0x5b66 0x689f +0x5b67 0x688f +0x5b68 0x68ad +0x5b69 0x6894 +0x5b6a 0x689d +0x5b6b 0x689b +0x5b6c 0x6883 +0x5b6d 0x6aae +0x5b6e 0x68b9 +0x5b6f 0x6874 +0x5b70 0x68b5 +0x5b71 0x68a0 +0x5b72 0x68ba +0x5b73 0x690f +0x5b74 0x688d +0x5b75 0x687e +0x5b76 0x6901 +0x5b77 0x68ca +0x5b78 0x6908 +0x5b79 0x68d8 +0x5b7a 0x6922 +0x5b7b 0x6926 +0x5b7c 0x68e1 +0x5b7d 0x690c +0x5b7e 0x68cd +0x5c21 0x68d4 +0x5c22 0x68e7 +0x5c23 0x68d5 +0x5c24 0x6936 +0x5c25 0x6912 +0x5c26 0x6904 +0x5c27 0x68d7 +0x5c28 0x68e3 +0x5c29 0x6925 +0x5c2a 0x68f9 +0x5c2b 0x68e0 +0x5c2c 0x68ef +0x5c2d 0x6928 +0x5c2e 0x692a +0x5c2f 0x691a +0x5c30 0x6923 +0x5c31 0x6921 +0x5c32 0x68c6 +0x5c33 0x6979 +0x5c34 0x6977 +0x5c35 0x695c +0x5c36 0x6978 +0x5c37 0x696b +0x5c38 0x6954 +0x5c39 0x697e +0x5c3a 0x696e +0x5c3b 0x6939 +0x5c3c 0x6974 +0x5c3d 0x693d +0x5c3e 0x6959 +0x5c3f 0x6930 +0x5c40 0x6961 +0x5c41 0x695e +0x5c42 0x695d +0x5c43 0x6981 +0x5c44 0x696a +0x5c45 0x69b2 +0x5c46 0x69ae +0x5c47 0x69d0 +0x5c48 0x69bf +0x5c49 0x69c1 +0x5c4a 0x69d3 +0x5c4b 0x69be +0x5c4c 0x69ce +0x5c4d 0x5be8 +0x5c4e 0x69ca +0x5c4f 0x69dd +0x5c50 0x69bb +0x5c51 0x69c3 +0x5c52 0x69a7 +0x5c53 0x6a2e +0x5c54 0x6991 +0x5c55 0x69a0 +0x5c56 0x699c +0x5c57 0x6995 +0x5c58 0x69b4 +0x5c59 0x69de +0x5c5a 0x69e8 +0x5c5b 0x6a02 +0x5c5c 0x6a1b +0x5c5d 0x69ff +0x5c5e 0x6b0a +0x5c5f 0x69f9 +0x5c60 0x69f2 +0x5c61 0x69e7 +0x5c62 0x6a05 +0x5c63 0x69b1 +0x5c64 0x6a1e +0x5c65 0x69ed +0x5c66 0x6a14 +0x5c67 0x69eb +0x5c68 0x6a0a +0x5c69 0x6a12 +0x5c6a 0x6ac1 +0x5c6b 0x6a23 +0x5c6c 0x6a13 +0x5c6d 0x6a44 +0x5c6e 0x6a0c +0x5c6f 0x6a72 +0x5c70 0x6a36 +0x5c71 0x6a78 +0x5c72 0x6a47 +0x5c73 0x6a62 +0x5c74 0x6a59 +0x5c75 0x6a66 +0x5c76 0x6a48 +0x5c77 0x6a38 +0x5c78 0x6a22 +0x5c79 0x6a90 +0x5c7a 0x6a8d +0x5c7b 0x6aa0 +0x5c7c 0x6a84 +0x5c7d 0x6aa2 +0x5c7e 0x6aa3 +0x5d21 0x6a97 +0x5d22 0x8617 +0x5d23 0x6abb +0x5d24 0x6ac3 +0x5d25 0x6ac2 +0x5d26 0x6ab8 +0x5d27 0x6ab3 +0x5d28 0x6aac +0x5d29 0x6ade +0x5d2a 0x6ad1 +0x5d2b 0x6adf +0x5d2c 0x6aaa +0x5d2d 0x6ada +0x5d2e 0x6aea +0x5d2f 0x6afb +0x5d30 0x6b05 +0x5d31 0x8616 +0x5d32 0x6afa +0x5d33 0x6b12 +0x5d34 0x6b16 +0x5d35 0x9b31 +0x5d36 0x6b1f +0x5d37 0x6b38 +0x5d38 0x6b37 +0x5d39 0x76dc +0x5d3a 0x6b39 +0x5d3b 0x98ee +0x5d3c 0x6b47 +0x5d3d 0x6b43 +0x5d3e 0x6b49 +0x5d3f 0x6b50 +0x5d40 0x6b59 +0x5d41 0x6b54 +0x5d42 0x6b5b +0x5d43 0x6b5f +0x5d44 0x6b61 +0x5d45 0x6b78 +0x5d46 0x6b79 +0x5d47 0x6b7f +0x5d48 0x6b80 +0x5d49 0x6b84 +0x5d4a 0x6b83 +0x5d4b 0x6b8d +0x5d4c 0x6b98 +0x5d4d 0x6b95 +0x5d4e 0x6b9e +0x5d4f 0x6ba4 +0x5d50 0x6baa +0x5d51 0x6bab +0x5d52 0x6baf +0x5d53 0x6bb2 +0x5d54 0x6bb1 +0x5d55 0x6bb3 +0x5d56 0x6bb7 +0x5d57 0x6bbc +0x5d58 0x6bc6 +0x5d59 0x6bcb +0x5d5a 0x6bd3 +0x5d5b 0x6bdf +0x5d5c 0x6bec +0x5d5d 0x6beb +0x5d5e 0x6bf3 +0x5d5f 0x6bef +0x5d60 0x9ebe +0x5d61 0x6c08 +0x5d62 0x6c13 +0x5d63 0x6c14 +0x5d64 0x6c1b +0x5d65 0x6c24 +0x5d66 0x6c23 +0x5d67 0x6c5e +0x5d68 0x6c55 +0x5d69 0x6c62 +0x5d6a 0x6c6a +0x5d6b 0x6c82 +0x5d6c 0x6c8d +0x5d6d 0x6c9a +0x5d6e 0x6c81 +0x5d6f 0x6c9b +0x5d70 0x6c7e +0x5d71 0x6c68 +0x5d72 0x6c73 +0x5d73 0x6c92 +0x5d74 0x6c90 +0x5d75 0x6cc4 +0x5d76 0x6cf1 +0x5d77 0x6cd3 +0x5d78 0x6cbd +0x5d79 0x6cd7 +0x5d7a 0x6cc5 +0x5d7b 0x6cdd +0x5d7c 0x6cae +0x5d7d 0x6cb1 +0x5d7e 0x6cbe +0x5e21 0x6cba +0x5e22 0x6cdb +0x5e23 0x6cef +0x5e24 0x6cd9 +0x5e25 0x6cea +0x5e26 0x6d1f +0x5e27 0x884d +0x5e28 0x6d36 +0x5e29 0x6d2b +0x5e2a 0x6d3d +0x5e2b 0x6d38 +0x5e2c 0x6d19 +0x5e2d 0x6d35 +0x5e2e 0x6d33 +0x5e2f 0x6d12 +0x5e30 0x6d0c +0x5e31 0x6d63 +0x5e32 0x6d93 +0x5e33 0x6d64 +0x5e34 0x6d5a +0x5e35 0x6d79 +0x5e36 0x6d59 +0x5e37 0x6d8e +0x5e38 0x6d95 +0x5e39 0x6fe4 +0x5e3a 0x6d85 +0x5e3b 0x6df9 +0x5e3c 0x6e15 +0x5e3d 0x6e0a +0x5e3e 0x6db5 +0x5e3f 0x6dc7 +0x5e40 0x6de6 +0x5e41 0x6db8 +0x5e42 0x6dc6 +0x5e43 0x6dec +0x5e44 0x6dde +0x5e45 0x6dcc +0x5e46 0x6de8 +0x5e47 0x6dd2 +0x5e48 0x6dc5 +0x5e49 0x6dfa +0x5e4a 0x6dd9 +0x5e4b 0x6de4 +0x5e4c 0x6dd5 +0x5e4d 0x6dea +0x5e4e 0x6dee +0x5e4f 0x6e2d +0x5e50 0x6e6e +0x5e51 0x6e2e +0x5e52 0x6e19 +0x5e53 0x6e72 +0x5e54 0x6e5f +0x5e55 0x6e3e +0x5e56 0x6e23 +0x5e57 0x6e6b +0x5e58 0x6e2b +0x5e59 0x6e76 +0x5e5a 0x6e4d +0x5e5b 0x6e1f +0x5e5c 0x6e43 +0x5e5d 0x6e3a +0x5e5e 0x6e4e +0x5e5f 0x6e24 +0x5e60 0x6eff +0x5e61 0x6e1d +0x5e62 0x6e38 +0x5e63 0x6e82 +0x5e64 0x6eaa +0x5e65 0x6e98 +0x5e66 0x6ec9 +0x5e67 0x6eb7 +0x5e68 0x6ed3 +0x5e69 0x6ebd +0x5e6a 0x6eaf +0x5e6b 0x6ec4 +0x5e6c 0x6eb2 +0x5e6d 0x6ed4 +0x5e6e 0x6ed5 +0x5e6f 0x6e8f +0x5e70 0x6ea5 +0x5e71 0x6ec2 +0x5e72 0x6e9f +0x5e73 0x6f41 +0x5e74 0x6f11 +0x5e75 0x704c +0x5e76 0x6eec +0x5e77 0x6ef8 +0x5e78 0x6efe +0x5e79 0x6f3f +0x5e7a 0x6ef2 +0x5e7b 0x6f31 +0x5e7c 0x6eef +0x5e7d 0x6f32 +0x5e7e 0x6ecc +0x5f21 0x6f3e +0x5f22 0x6f13 +0x5f23 0x6ef7 +0x5f24 0x6f86 +0x5f25 0x6f7a +0x5f26 0x6f78 +0x5f27 0x6f81 +0x5f28 0x6f80 +0x5f29 0x6f6f +0x5f2a 0x6f5b +0x5f2b 0x6ff3 +0x5f2c 0x6f6d +0x5f2d 0x6f82 +0x5f2e 0x6f7c +0x5f2f 0x6f58 +0x5f30 0x6f8e +0x5f31 0x6f91 +0x5f32 0x6fc2 +0x5f33 0x6f66 +0x5f34 0x6fb3 +0x5f35 0x6fa3 +0x5f36 0x6fa1 +0x5f37 0x6fa4 +0x5f38 0x6fb9 +0x5f39 0x6fc6 +0x5f3a 0x6faa +0x5f3b 0x6fdf +0x5f3c 0x6fd5 +0x5f3d 0x6fec +0x5f3e 0x6fd4 +0x5f3f 0x6fd8 +0x5f40 0x6ff1 +0x5f41 0x6fee +0x5f42 0x6fdb +0x5f43 0x7009 +0x5f44 0x700b +0x5f45 0x6ffa +0x5f46 0x7011 +0x5f47 0x7001 +0x5f48 0x700f +0x5f49 0x6ffe +0x5f4a 0x701b +0x5f4b 0x701a +0x5f4c 0x6f74 +0x5f4d 0x701d +0x5f4e 0x7018 +0x5f4f 0x701f +0x5f50 0x7030 +0x5f51 0x703e +0x5f52 0x7032 +0x5f53 0x7051 +0x5f54 0x7063 +0x5f55 0x7099 +0x5f56 0x7092 +0x5f57 0x70af +0x5f58 0x70f1 +0x5f59 0x70ac +0x5f5a 0x70b8 +0x5f5b 0x70b3 +0x5f5c 0x70ae +0x5f5d 0x70df +0x5f5e 0x70cb +0x5f5f 0x70dd +0x5f60 0x70d9 +0x5f61 0x7109 +0x5f62 0x70fd +0x5f63 0x711c +0x5f64 0x7119 +0x5f65 0x7165 +0x5f66 0x7155 +0x5f67 0x7188 +0x5f68 0x7166 +0x5f69 0x7162 +0x5f6a 0x714c +0x5f6b 0x7156 +0x5f6c 0x716c +0x5f6d 0x718f +0x5f6e 0x71fb +0x5f6f 0x7184 +0x5f70 0x7195 +0x5f71 0x71a8 +0x5f72 0x71ac +0x5f73 0x71d7 +0x5f74 0x71b9 +0x5f75 0x71be +0x5f76 0x71d2 +0x5f77 0x71c9 +0x5f78 0x71d4 +0x5f79 0x71ce +0x5f7a 0x71e0 +0x5f7b 0x71ec +0x5f7c 0x71e7 +0x5f7d 0x71f5 +0x5f7e 0x71fc +0x6021 0x71f9 +0x6022 0x71ff +0x6023 0x720d +0x6024 0x7210 +0x6025 0x721b +0x6026 0x7228 +0x6027 0x722d +0x6028 0x722c +0x6029 0x7230 +0x602a 0x7232 +0x602b 0x723b +0x602c 0x723c +0x602d 0x723f +0x602e 0x7240 +0x602f 0x7246 +0x6030 0x724b +0x6031 0x7258 +0x6032 0x7274 +0x6033 0x727e +0x6034 0x7282 +0x6035 0x7281 +0x6036 0x7287 +0x6037 0x7292 +0x6038 0x7296 +0x6039 0x72a2 +0x603a 0x72a7 +0x603b 0x72b9 +0x603c 0x72b2 +0x603d 0x72c3 +0x603e 0x72c6 +0x603f 0x72c4 +0x6040 0x72ce +0x6041 0x72d2 +0x6042 0x72e2 +0x6043 0x72e0 +0x6044 0x72e1 +0x6045 0x72f9 +0x6046 0x72f7 +0x6047 0x500f +0x6048 0x7317 +0x6049 0x730a +0x604a 0x731c +0x604b 0x7316 +0x604c 0x731d +0x604d 0x7334 +0x604e 0x732f +0x604f 0x7329 +0x6050 0x7325 +0x6051 0x733e +0x6052 0x734e +0x6053 0x734f +0x6054 0x9ed8 +0x6055 0x7357 +0x6056 0x736a +0x6057 0x7368 +0x6058 0x7370 +0x6059 0x7378 +0x605a 0x7375 +0x605b 0x737b +0x605c 0x737a +0x605d 0x73c8 +0x605e 0x73b3 +0x605f 0x73ce +0x6060 0x73bb +0x6061 0x73c0 +0x6062 0x73e5 +0x6063 0x73ee +0x6064 0x73de +0x6065 0x74a2 +0x6066 0x7405 +0x6067 0x746f +0x6068 0x7425 +0x6069 0x73f8 +0x606a 0x7432 +0x606b 0x743a +0x606c 0x7455 +0x606d 0x743f +0x606e 0x745f +0x606f 0x7459 +0x6070 0x7441 +0x6071 0x745c +0x6072 0x7469 +0x6073 0x7470 +0x6074 0x7463 +0x6075 0x746a +0x6076 0x7476 +0x6077 0x747e +0x6078 0x748b +0x6079 0x749e +0x607a 0x74a7 +0x607b 0x74ca +0x607c 0x74cf +0x607d 0x74d4 +0x607e 0x73f1 +0x6121 0x74e0 +0x6122 0x74e3 +0x6123 0x74e7 +0x6124 0x74e9 +0x6125 0x74ee +0x6126 0x74f2 +0x6127 0x74f0 +0x6128 0x74f1 +0x6129 0x74f8 +0x612a 0x74f7 +0x612b 0x7504 +0x612c 0x7503 +0x612d 0x7505 +0x612e 0x750c +0x612f 0x750e +0x6130 0x750d +0x6131 0x7515 +0x6132 0x7513 +0x6133 0x751e +0x6134 0x7526 +0x6135 0x752c +0x6136 0x753c +0x6137 0x7544 +0x6138 0x754d +0x6139 0x754a +0x613a 0x7549 +0x613b 0x755b +0x613c 0x7546 +0x613d 0x755a +0x613e 0x7569 +0x613f 0x7564 +0x6140 0x7567 +0x6141 0x756b +0x6142 0x756d +0x6143 0x7578 +0x6144 0x7576 +0x6145 0x7586 +0x6146 0x7587 +0x6147 0x7574 +0x6148 0x758a +0x6149 0x7589 +0x614a 0x7582 +0x614b 0x7594 +0x614c 0x759a +0x614d 0x759d +0x614e 0x75a5 +0x614f 0x75a3 +0x6150 0x75c2 +0x6151 0x75b3 +0x6152 0x75c3 +0x6153 0x75b5 +0x6154 0x75bd +0x6155 0x75b8 +0x6156 0x75bc +0x6157 0x75b1 +0x6158 0x75cd +0x6159 0x75ca +0x615a 0x75d2 +0x615b 0x75d9 +0x615c 0x75e3 +0x615d 0x75de +0x615e 0x75fe +0x615f 0x75ff +0x6160 0x75fc +0x6161 0x7601 +0x6162 0x75f0 +0x6163 0x75fa +0x6164 0x75f2 +0x6165 0x75f3 +0x6166 0x760b +0x6167 0x760d +0x6168 0x7609 +0x6169 0x761f +0x616a 0x7627 +0x616b 0x7620 +0x616c 0x7621 +0x616d 0x7622 +0x616e 0x7624 +0x616f 0x7634 +0x6170 0x7630 +0x6171 0x763b +0x6172 0x7647 +0x6173 0x7648 +0x6174 0x7646 +0x6175 0x765c +0x6176 0x7658 +0x6177 0x7661 +0x6178 0x7662 +0x6179 0x7668 +0x617a 0x7669 +0x617b 0x766a +0x617c 0x7667 +0x617d 0x766c +0x617e 0x7670 +0x6221 0x7672 +0x6222 0x7676 +0x6223 0x7678 +0x6224 0x767c +0x6225 0x7680 +0x6226 0x7683 +0x6227 0x7688 +0x6228 0x768b +0x6229 0x768e +0x622a 0x7696 +0x622b 0x7693 +0x622c 0x7699 +0x622d 0x769a +0x622e 0x76b0 +0x622f 0x76b4 +0x6230 0x76b8 +0x6231 0x76b9 +0x6232 0x76ba +0x6233 0x76c2 +0x6234 0x76cd +0x6235 0x76d6 +0x6236 0x76d2 +0x6237 0x76de +0x6238 0x76e1 +0x6239 0x76e5 +0x623a 0x76e7 +0x623b 0x76ea +0x623c 0x862f +0x623d 0x76fb +0x623e 0x7708 +0x623f 0x7707 +0x6240 0x7704 +0x6241 0x7729 +0x6242 0x7724 +0x6243 0x771e +0x6244 0x7725 +0x6245 0x7726 +0x6246 0x771b +0x6247 0x7737 +0x6248 0x7738 +0x6249 0x7747 +0x624a 0x775a +0x624b 0x7768 +0x624c 0x776b +0x624d 0x775b +0x624e 0x7765 +0x624f 0x777f +0x6250 0x777e +0x6251 0x7779 +0x6252 0x778e +0x6253 0x778b +0x6254 0x7791 +0x6255 0x77a0 +0x6256 0x779e +0x6257 0x77b0 +0x6258 0x77b6 +0x6259 0x77b9 +0x625a 0x77bf +0x625b 0x77bc +0x625c 0x77bd +0x625d 0x77bb +0x625e 0x77c7 +0x625f 0x77cd +0x6260 0x77d7 +0x6261 0x77da +0x6262 0x77dc +0x6263 0x77e3 +0x6264 0x77ee +0x6265 0x77fc +0x6266 0x780c +0x6267 0x7812 +0x6268 0x7926 +0x6269 0x7820 +0x626a 0x792a +0x626b 0x7845 +0x626c 0x788e +0x626d 0x7874 +0x626e 0x7886 +0x626f 0x787c +0x6270 0x789a +0x6271 0x788c +0x6272 0x78a3 +0x6273 0x78b5 +0x6274 0x78aa +0x6275 0x78af +0x6276 0x78d1 +0x6277 0x78c6 +0x6278 0x78cb +0x6279 0x78d4 +0x627a 0x78be +0x627b 0x78bc +0x627c 0x78c5 +0x627d 0x78ca +0x627e 0x78ec +0x6321 0x78e7 +0x6322 0x78da +0x6323 0x78fd +0x6324 0x78f4 +0x6325 0x7907 +0x6326 0x7912 +0x6327 0x7911 +0x6328 0x7919 +0x6329 0x792c +0x632a 0x792b +0x632b 0x7940 +0x632c 0x7960 +0x632d 0x7957 +0x632e 0x795f +0x632f 0x795a +0x6330 0x7955 +0x6331 0x7953 +0x6332 0x797a +0x6333 0x797f +0x6334 0x798a +0x6335 0x799d +0x6336 0x79a7 +0x6337 0x9f4b +0x6338 0x79aa +0x6339 0x79ae +0x633a 0x79b3 +0x633b 0x79b9 +0x633c 0x79ba +0x633d 0x79c9 +0x633e 0x79d5 +0x633f 0x79e7 +0x6340 0x79ec +0x6341 0x79e1 +0x6342 0x79e3 +0x6343 0x7a08 +0x6344 0x7a0d +0x6345 0x7a18 +0x6346 0x7a19 +0x6347 0x7a20 +0x6348 0x7a1f +0x6349 0x7980 +0x634a 0x7a31 +0x634b 0x7a3b +0x634c 0x7a3e +0x634d 0x7a37 +0x634e 0x7a43 +0x634f 0x7a57 +0x6350 0x7a49 +0x6351 0x7a61 +0x6352 0x7a62 +0x6353 0x7a69 +0x6354 0x9f9d +0x6355 0x7a70 +0x6356 0x7a79 +0x6357 0x7a7d +0x6358 0x7a88 +0x6359 0x7a97 +0x635a 0x7a95 +0x635b 0x7a98 +0x635c 0x7a96 +0x635d 0x7aa9 +0x635e 0x7ac8 +0x635f 0x7ab0 +0x6360 0x7ab6 +0x6361 0x7ac5 +0x6362 0x7ac4 +0x6363 0x7abf +0x6364 0x9083 +0x6365 0x7ac7 +0x6366 0x7aca +0x6367 0x7acd +0x6368 0x7acf +0x6369 0x7ad5 +0x636a 0x7ad3 +0x636b 0x7ad9 +0x636c 0x7ada +0x636d 0x7add +0x636e 0x7ae1 +0x636f 0x7ae2 +0x6370 0x7ae6 +0x6371 0x7aed +0x6372 0x7af0 +0x6373 0x7b02 +0x6374 0x7b0f +0x6375 0x7b0a +0x6376 0x7b06 +0x6377 0x7b33 +0x6378 0x7b18 +0x6379 0x7b19 +0x637a 0x7b1e +0x637b 0x7b35 +0x637c 0x7b28 +0x637d 0x7b36 +0x637e 0x7b50 +0x6421 0x7b7a +0x6422 0x7b04 +0x6423 0x7b4d +0x6424 0x7b0b +0x6425 0x7b4c +0x6426 0x7b45 +0x6427 0x7b75 +0x6428 0x7b65 +0x6429 0x7b74 +0x642a 0x7b67 +0x642b 0x7b70 +0x642c 0x7b71 +0x642d 0x7b6c +0x642e 0x7b6e +0x642f 0x7b9d +0x6430 0x7b98 +0x6431 0x7b9f +0x6432 0x7b8d +0x6433 0x7b9c +0x6434 0x7b9a +0x6435 0x7b8b +0x6436 0x7b92 +0x6437 0x7b8f +0x6438 0x7b5d +0x6439 0x7b99 +0x643a 0x7bcb +0x643b 0x7bc1 +0x643c 0x7bcc +0x643d 0x7bcf +0x643e 0x7bb4 +0x643f 0x7bc6 +0x6440 0x7bdd +0x6441 0x7be9 +0x6442 0x7c11 +0x6443 0x7c14 +0x6444 0x7be6 +0x6445 0x7be5 +0x6446 0x7c60 +0x6447 0x7c00 +0x6448 0x7c07 +0x6449 0x7c13 +0x644a 0x7bf3 +0x644b 0x7bf7 +0x644c 0x7c17 +0x644d 0x7c0d +0x644e 0x7bf6 +0x644f 0x7c23 +0x6450 0x7c27 +0x6451 0x7c2a +0x6452 0x7c1f +0x6453 0x7c37 +0x6454 0x7c2b +0x6455 0x7c3d +0x6456 0x7c4c +0x6457 0x7c43 +0x6458 0x7c54 +0x6459 0x7c4f +0x645a 0x7c40 +0x645b 0x7c50 +0x645c 0x7c58 +0x645d 0x7c5f +0x645e 0x7c64 +0x645f 0x7c56 +0x6460 0x7c65 +0x6461 0x7c6c +0x6462 0x7c75 +0x6463 0x7c83 +0x6464 0x7c90 +0x6465 0x7ca4 +0x6466 0x7cad +0x6467 0x7ca2 +0x6468 0x7cab +0x6469 0x7ca1 +0x646a 0x7ca8 +0x646b 0x7cb3 +0x646c 0x7cb2 +0x646d 0x7cb1 +0x646e 0x7cae +0x646f 0x7cb9 +0x6470 0x7cbd +0x6471 0x7cc0 +0x6472 0x7cc5 +0x6473 0x7cc2 +0x6474 0x7cd8 +0x6475 0x7cd2 +0x6476 0x7cdc +0x6477 0x7ce2 +0x6478 0x9b3b +0x6479 0x7cef +0x647a 0x7cf2 +0x647b 0x7cf4 +0x647c 0x7cf6 +0x647d 0x7cfa +0x647e 0x7d06 +0x6521 0x7d02 +0x6522 0x7d1c +0x6523 0x7d15 +0x6524 0x7d0a +0x6525 0x7d45 +0x6526 0x7d4b +0x6527 0x7d2e +0x6528 0x7d32 +0x6529 0x7d3f +0x652a 0x7d35 +0x652b 0x7d46 +0x652c 0x7d73 +0x652d 0x7d56 +0x652e 0x7d4e +0x652f 0x7d72 +0x6530 0x7d68 +0x6531 0x7d6e +0x6532 0x7d4f +0x6533 0x7d63 +0x6534 0x7d93 +0x6535 0x7d89 +0x6536 0x7d5b +0x6537 0x7d8f +0x6538 0x7d7d +0x6539 0x7d9b +0x653a 0x7dba +0x653b 0x7dae +0x653c 0x7da3 +0x653d 0x7db5 +0x653e 0x7dc7 +0x653f 0x7dbd +0x6540 0x7dab +0x6541 0x7e3d +0x6542 0x7da2 +0x6543 0x7daf +0x6544 0x7ddc +0x6545 0x7db8 +0x6546 0x7d9f +0x6547 0x7db0 +0x6548 0x7dd8 +0x6549 0x7ddd +0x654a 0x7de4 +0x654b 0x7dde +0x654c 0x7dfb +0x654d 0x7df2 +0x654e 0x7de1 +0x654f 0x7e05 +0x6550 0x7e0a +0x6551 0x7e23 +0x6552 0x7e21 +0x6553 0x7e12 +0x6554 0x7e31 +0x6555 0x7e1f +0x6556 0x7e09 +0x6557 0x7e0b +0x6558 0x7e22 +0x6559 0x7e46 +0x655a 0x7e66 +0x655b 0x7e3b +0x655c 0x7e35 +0x655d 0x7e39 +0x655e 0x7e43 +0x655f 0x7e37 +0x6560 0x7e32 +0x6561 0x7e3a +0x6562 0x7e67 +0x6563 0x7e5d +0x6564 0x7e56 +0x6565 0x7e5e +0x6566 0x7e59 +0x6567 0x7e5a +0x6568 0x7e79 +0x6569 0x7e6a +0x656a 0x7e69 +0x656b 0x7e7c +0x656c 0x7e7b +0x656d 0x7e83 +0x656e 0x7dd5 +0x656f 0x7e7d +0x6570 0x8fae +0x6571 0x7e7f +0x6572 0x7e88 +0x6573 0x7e89 +0x6574 0x7e8c +0x6575 0x7e92 +0x6576 0x7e90 +0x6577 0x7e93 +0x6578 0x7e94 +0x6579 0x7e96 +0x657a 0x7e8e +0x657b 0x7e9b +0x657c 0x7e9c +0x657d 0x7f38 +0x657e 0x7f3a +0x6621 0x7f45 +0x6622 0x7f4c +0x6623 0x7f4d +0x6624 0x7f4e +0x6625 0x7f50 +0x6626 0x7f51 +0x6627 0x7f55 +0x6628 0x7f54 +0x6629 0x7f58 +0x662a 0x7f5f +0x662b 0x7f60 +0x662c 0x7f68 +0x662d 0x7f69 +0x662e 0x7f67 +0x662f 0x7f78 +0x6630 0x7f82 +0x6631 0x7f86 +0x6632 0x7f83 +0x6633 0x7f88 +0x6634 0x7f87 +0x6635 0x7f8c +0x6636 0x7f94 +0x6637 0x7f9e +0x6638 0x7f9d +0x6639 0x7f9a +0x663a 0x7fa3 +0x663b 0x7faf +0x663c 0x7fb2 +0x663d 0x7fb9 +0x663e 0x7fae +0x663f 0x7fb6 +0x6640 0x7fb8 +0x6641 0x8b71 +0x6642 0x7fc5 +0x6643 0x7fc6 +0x6644 0x7fca +0x6645 0x7fd5 +0x6646 0x7fd4 +0x6647 0x7fe1 +0x6648 0x7fe6 +0x6649 0x7fe9 +0x664a 0x7ff3 +0x664b 0x7ff9 +0x664c 0x98dc +0x664d 0x8006 +0x664e 0x8004 +0x664f 0x800b +0x6650 0x8012 +0x6651 0x8018 +0x6652 0x8019 +0x6653 0x801c +0x6654 0x8021 +0x6655 0x8028 +0x6656 0x803f +0x6657 0x803b +0x6658 0x804a +0x6659 0x8046 +0x665a 0x8052 +0x665b 0x8058 +0x665c 0x805a +0x665d 0x805f +0x665e 0x8062 +0x665f 0x8068 +0x6660 0x8073 +0x6661 0x8072 +0x6662 0x8070 +0x6663 0x8076 +0x6664 0x8079 +0x6665 0x807d +0x6666 0x807f +0x6667 0x8084 +0x6668 0x8086 +0x6669 0x8085 +0x666a 0x809b +0x666b 0x8093 +0x666c 0x809a +0x666d 0x80ad +0x666e 0x5190 +0x666f 0x80ac +0x6670 0x80db +0x6671 0x80e5 +0x6672 0x80d9 +0x6673 0x80dd +0x6674 0x80c4 +0x6675 0x80da +0x6676 0x80d6 +0x6677 0x8109 +0x6678 0x80ef +0x6679 0x80f1 +0x667a 0x811b +0x667b 0x8129 +0x667c 0x8123 +0x667d 0x812f +0x667e 0x814b +0x6721 0x968b +0x6722 0x8146 +0x6723 0x813e +0x6724 0x8153 +0x6725 0x8151 +0x6726 0x80fc +0x6727 0x8171 +0x6728 0x816e +0x6729 0x8165 +0x672a 0x8166 +0x672b 0x8174 +0x672c 0x8183 +0x672d 0x8188 +0x672e 0x818a +0x672f 0x8180 +0x6730 0x8182 +0x6731 0x81a0 +0x6732 0x8195 +0x6733 0x81a4 +0x6734 0x81a3 +0x6735 0x815f +0x6736 0x8193 +0x6737 0x81a9 +0x6738 0x81b0 +0x6739 0x81b5 +0x673a 0x81be +0x673b 0x81b8 +0x673c 0x81bd +0x673d 0x81c0 +0x673e 0x81c2 +0x673f 0x81ba +0x6740 0x81c9 +0x6741 0x81cd +0x6742 0x81d1 +0x6743 0x81d9 +0x6744 0x81d8 +0x6745 0x81c8 +0x6746 0x81da +0x6747 0x81df +0x6748 0x81e0 +0x6749 0x81e7 +0x674a 0x81fa +0x674b 0x81fb +0x674c 0x81fe +0x674d 0x8201 +0x674e 0x8202 +0x674f 0x8205 +0x6750 0x8207 +0x6751 0x820a +0x6752 0x820d +0x6753 0x8210 +0x6754 0x8216 +0x6755 0x8229 +0x6756 0x822b +0x6757 0x8238 +0x6758 0x8233 +0x6759 0x8240 +0x675a 0x8259 +0x675b 0x8258 +0x675c 0x825d +0x675d 0x825a +0x675e 0x825f +0x675f 0x8264 +0x6760 0x8262 +0x6761 0x8268 +0x6762 0x826a +0x6763 0x826b +0x6764 0x822e +0x6765 0x8271 +0x6766 0x8277 +0x6767 0x8278 +0x6768 0x827e +0x6769 0x828d +0x676a 0x8292 +0x676b 0x82ab +0x676c 0x829f +0x676d 0x82bb +0x676e 0x82ac +0x676f 0x82e1 +0x6770 0x82e3 +0x6771 0x82df +0x6772 0x82d2 +0x6773 0x82f4 +0x6774 0x82f3 +0x6775 0x82fa +0x6776 0x8393 +0x6777 0x8303 +0x6778 0x82fb +0x6779 0x82f9 +0x677a 0x82de +0x677b 0x8306 +0x677c 0x82dc +0x677d 0x8309 +0x677e 0x82d9 +0x6821 0x8335 +0x6822 0x8334 +0x6823 0x8316 +0x6824 0x8332 +0x6825 0x8331 +0x6826 0x8340 +0x6827 0x8339 +0x6828 0x8350 +0x6829 0x8345 +0x682a 0x832f +0x682b 0x832b +0x682c 0x8317 +0x682d 0x8318 +0x682e 0x8385 +0x682f 0x839a +0x6830 0x83aa +0x6831 0x839f +0x6832 0x83a2 +0x6833 0x8396 +0x6834 0x8323 +0x6835 0x838e +0x6836 0x8387 +0x6837 0x838a +0x6838 0x837c +0x6839 0x83b5 +0x683a 0x8373 +0x683b 0x8375 +0x683c 0x83a0 +0x683d 0x8389 +0x683e 0x83a8 +0x683f 0x83f4 +0x6840 0x8413 +0x6841 0x83eb +0x6842 0x83ce +0x6843 0x83fd +0x6844 0x8403 +0x6845 0x83d8 +0x6846 0x840b +0x6847 0x83c1 +0x6848 0x83f7 +0x6849 0x8407 +0x684a 0x83e0 +0x684b 0x83f2 +0x684c 0x840d +0x684d 0x8422 +0x684e 0x8420 +0x684f 0x83bd +0x6850 0x8438 +0x6851 0x8506 +0x6852 0x83fb +0x6853 0x846d +0x6854 0x842a +0x6855 0x843c +0x6856 0x855a +0x6857 0x8484 +0x6858 0x8477 +0x6859 0x846b +0x685a 0x84ad +0x685b 0x846e +0x685c 0x8482 +0x685d 0x8469 +0x685e 0x8446 +0x685f 0x842c +0x6860 0x846f +0x6861 0x8479 +0x6862 0x8435 +0x6863 0x84ca +0x6864 0x8462 +0x6865 0x84b9 +0x6866 0x84bf +0x6867 0x849f +0x6868 0x84d9 +0x6869 0x84cd +0x686a 0x84bb +0x686b 0x84da +0x686c 0x84d0 +0x686d 0x84c1 +0x686e 0x84c6 +0x686f 0x84d6 +0x6870 0x84a1 +0x6871 0x8521 +0x6872 0x84ff +0x6873 0x84f4 +0x6874 0x8517 +0x6875 0x8518 +0x6876 0x852c +0x6877 0x851f +0x6878 0x8515 +0x6879 0x8514 +0x687a 0x84fc +0x687b 0x8540 +0x687c 0x8563 +0x687d 0x8558 +0x687e 0x8548 +0x6921 0x8541 +0x6922 0x8602 +0x6923 0x854b +0x6924 0x8555 +0x6925 0x8580 +0x6926 0x85a4 +0x6927 0x8588 +0x6928 0x8591 +0x6929 0x858a +0x692a 0x85a8 +0x692b 0x856d +0x692c 0x8594 +0x692d 0x859b +0x692e 0x85ea +0x692f 0x8587 +0x6930 0x859c +0x6931 0x8577 +0x6932 0x857e +0x6933 0x8590 +0x6934 0x85c9 +0x6935 0x85ba +0x6936 0x85cf +0x6937 0x85b9 +0x6938 0x85d0 +0x6939 0x85d5 +0x693a 0x85dd +0x693b 0x85e5 +0x693c 0x85dc +0x693d 0x85f9 +0x693e 0x860a +0x693f 0x8613 +0x6940 0x860b +0x6941 0x85fe +0x6942 0x85fa +0x6943 0x8606 +0x6944 0x8622 +0x6945 0x861a +0x6946 0x8630 +0x6947 0x863f +0x6948 0x864d +0x6949 0x4e55 +0x694a 0x8654 +0x694b 0x865f +0x694c 0x8667 +0x694d 0x8671 +0x694e 0x8693 +0x694f 0x86a3 +0x6950 0x86a9 +0x6951 0x86aa +0x6952 0x868b +0x6953 0x868c +0x6954 0x86b6 +0x6955 0x86af +0x6956 0x86c4 +0x6957 0x86c6 +0x6958 0x86b0 +0x6959 0x86c9 +0x695a 0x8823 +0x695b 0x86ab +0x695c 0x86d4 +0x695d 0x86de +0x695e 0x86e9 +0x695f 0x86ec +0x6960 0x86df +0x6961 0x86db +0x6962 0x86ef +0x6963 0x8712 +0x6964 0x8706 +0x6965 0x8708 +0x6966 0x8700 +0x6967 0x8703 +0x6968 0x86fb +0x6969 0x8711 +0x696a 0x8709 +0x696b 0x870d +0x696c 0x86f9 +0x696d 0x870a +0x696e 0x8734 +0x696f 0x873f +0x6970 0x8737 +0x6971 0x873b +0x6972 0x8725 +0x6973 0x8729 +0x6974 0x871a +0x6975 0x8760 +0x6976 0x875f +0x6977 0x8778 +0x6978 0x874c +0x6979 0x874e +0x697a 0x8774 +0x697b 0x8757 +0x697c 0x8768 +0x697d 0x876e +0x697e 0x8759 +0x6a21 0x8753 +0x6a22 0x8763 +0x6a23 0x876a +0x6a24 0x8805 +0x6a25 0x87a2 +0x6a26 0x879f +0x6a27 0x8782 +0x6a28 0x87af +0x6a29 0x87cb +0x6a2a 0x87bd +0x6a2b 0x87c0 +0x6a2c 0x87d0 +0x6a2d 0x96d6 +0x6a2e 0x87ab +0x6a2f 0x87c4 +0x6a30 0x87b3 +0x6a31 0x87c7 +0x6a32 0x87c6 +0x6a33 0x87bb +0x6a34 0x87ef +0x6a35 0x87f2 +0x6a36 0x87e0 +0x6a37 0x880f +0x6a38 0x880d +0x6a39 0x87fe +0x6a3a 0x87f6 +0x6a3b 0x87f7 +0x6a3c 0x880e +0x6a3d 0x87d2 +0x6a3e 0x8811 +0x6a3f 0x8816 +0x6a40 0x8815 +0x6a41 0x8822 +0x6a42 0x8821 +0x6a43 0x8831 +0x6a44 0x8836 +0x6a45 0x8839 +0x6a46 0x8827 +0x6a47 0x883b +0x6a48 0x8844 +0x6a49 0x8842 +0x6a4a 0x8852 +0x6a4b 0x8859 +0x6a4c 0x885e +0x6a4d 0x8862 +0x6a4e 0x886b +0x6a4f 0x8881 +0x6a50 0x887e +0x6a51 0x889e +0x6a52 0x8875 +0x6a53 0x887d +0x6a54 0x88b5 +0x6a55 0x8872 +0x6a56 0x8882 +0x6a57 0x8897 +0x6a58 0x8892 +0x6a59 0x88ae +0x6a5a 0x8899 +0x6a5b 0x88a2 +0x6a5c 0x888d +0x6a5d 0x88a4 +0x6a5e 0x88b0 +0x6a5f 0x88bf +0x6a60 0x88b1 +0x6a61 0x88c3 +0x6a62 0x88c4 +0x6a63 0x88d4 +0x6a64 0x88d8 +0x6a65 0x88d9 +0x6a66 0x88dd +0x6a67 0x88f9 +0x6a68 0x8902 +0x6a69 0x88fc +0x6a6a 0x88f4 +0x6a6b 0x88e8 +0x6a6c 0x88f2 +0x6a6d 0x8904 +0x6a6e 0x890c +0x6a6f 0x890a +0x6a70 0x8913 +0x6a71 0x8943 +0x6a72 0x891e +0x6a73 0x8925 +0x6a74 0x892a +0x6a75 0x892b +0x6a76 0x8941 +0x6a77 0x8944 +0x6a78 0x893b +0x6a79 0x8936 +0x6a7a 0x8938 +0x6a7b 0x894c +0x6a7c 0x891d +0x6a7d 0x8960 +0x6a7e 0x895e +0x6b21 0x8966 +0x6b22 0x8964 +0x6b23 0x896d +0x6b24 0x896a +0x6b25 0x896f +0x6b26 0x8974 +0x6b27 0x8977 +0x6b28 0x897e +0x6b29 0x8983 +0x6b2a 0x8988 +0x6b2b 0x898a +0x6b2c 0x8993 +0x6b2d 0x8998 +0x6b2e 0x89a1 +0x6b2f 0x89a9 +0x6b30 0x89a6 +0x6b31 0x89ac +0x6b32 0x89af +0x6b33 0x89b2 +0x6b34 0x89ba +0x6b35 0x89bd +0x6b36 0x89bf +0x6b37 0x89c0 +0x6b38 0x89da +0x6b39 0x89dc +0x6b3a 0x89dd +0x6b3b 0x89e7 +0x6b3c 0x89f4 +0x6b3d 0x89f8 +0x6b3e 0x8a03 +0x6b3f 0x8a16 +0x6b40 0x8a10 +0x6b41 0x8a0c +0x6b42 0x8a1b +0x6b43 0x8a1d +0x6b44 0x8a25 +0x6b45 0x8a36 +0x6b46 0x8a41 +0x6b47 0x8a5b +0x6b48 0x8a52 +0x6b49 0x8a46 +0x6b4a 0x8a48 +0x6b4b 0x8a7c +0x6b4c 0x8a6d +0x6b4d 0x8a6c +0x6b4e 0x8a62 +0x6b4f 0x8a85 +0x6b50 0x8a82 +0x6b51 0x8a84 +0x6b52 0x8aa8 +0x6b53 0x8aa1 +0x6b54 0x8a91 +0x6b55 0x8aa5 +0x6b56 0x8aa6 +0x6b57 0x8a9a +0x6b58 0x8aa3 +0x6b59 0x8ac4 +0x6b5a 0x8acd +0x6b5b 0x8ac2 +0x6b5c 0x8ada +0x6b5d 0x8aeb +0x6b5e 0x8af3 +0x6b5f 0x8ae7 +0x6b60 0x8ae4 +0x6b61 0x8af1 +0x6b62 0x8b14 +0x6b63 0x8ae0 +0x6b64 0x8ae2 +0x6b65 0x8af7 +0x6b66 0x8ade +0x6b67 0x8adb +0x6b68 0x8b0c +0x6b69 0x8b07 +0x6b6a 0x8b1a +0x6b6b 0x8ae1 +0x6b6c 0x8b16 +0x6b6d 0x8b10 +0x6b6e 0x8b17 +0x6b6f 0x8b20 +0x6b70 0x8b33 +0x6b71 0x97ab +0x6b72 0x8b26 +0x6b73 0x8b2b +0x6b74 0x8b3e +0x6b75 0x8b28 +0x6b76 0x8b41 +0x6b77 0x8b4c +0x6b78 0x8b4f +0x6b79 0x8b4e +0x6b7a 0x8b49 +0x6b7b 0x8b56 +0x6b7c 0x8b5b +0x6b7d 0x8b5a +0x6b7e 0x8b6b +0x6c21 0x8b5f +0x6c22 0x8b6c +0x6c23 0x8b6f +0x6c24 0x8b74 +0x6c25 0x8b7d +0x6c26 0x8b80 +0x6c27 0x8b8c +0x6c28 0x8b8e +0x6c29 0x8b92 +0x6c2a 0x8b93 +0x6c2b 0x8b96 +0x6c2c 0x8b99 +0x6c2d 0x8b9a +0x6c2e 0x8c3a +0x6c2f 0x8c41 +0x6c30 0x8c3f +0x6c31 0x8c48 +0x6c32 0x8c4c +0x6c33 0x8c4e +0x6c34 0x8c50 +0x6c35 0x8c55 +0x6c36 0x8c62 +0x6c37 0x8c6c +0x6c38 0x8c78 +0x6c39 0x8c7a +0x6c3a 0x8c82 +0x6c3b 0x8c89 +0x6c3c 0x8c85 +0x6c3d 0x8c8a +0x6c3e 0x8c8d +0x6c3f 0x8c8e +0x6c40 0x8c94 +0x6c41 0x8c7c +0x6c42 0x8c98 +0x6c43 0x621d +0x6c44 0x8cad +0x6c45 0x8caa +0x6c46 0x8cbd +0x6c47 0x8cb2 +0x6c48 0x8cb3 +0x6c49 0x8cae +0x6c4a 0x8cb6 +0x6c4b 0x8cc8 +0x6c4c 0x8cc1 +0x6c4d 0x8ce4 +0x6c4e 0x8ce3 +0x6c4f 0x8cda +0x6c50 0x8cfd +0x6c51 0x8cfa +0x6c52 0x8cfb +0x6c53 0x8d04 +0x6c54 0x8d05 +0x6c55 0x8d0a +0x6c56 0x8d07 +0x6c57 0x8d0f +0x6c58 0x8d0d +0x6c59 0x8d10 +0x6c5a 0x9f4e +0x6c5b 0x8d13 +0x6c5c 0x8ccd +0x6c5d 0x8d14 +0x6c5e 0x8d16 +0x6c5f 0x8d67 +0x6c60 0x8d6d +0x6c61 0x8d71 +0x6c62 0x8d73 +0x6c63 0x8d81 +0x6c64 0x8d99 +0x6c65 0x8dc2 +0x6c66 0x8dbe +0x6c67 0x8dba +0x6c68 0x8dcf +0x6c69 0x8dda +0x6c6a 0x8dd6 +0x6c6b 0x8dcc +0x6c6c 0x8ddb +0x6c6d 0x8dcb +0x6c6e 0x8dea +0x6c6f 0x8deb +0x6c70 0x8ddf +0x6c71 0x8de3 +0x6c72 0x8dfc +0x6c73 0x8e08 +0x6c74 0x8e09 +0x6c75 0x8dff +0x6c76 0x8e1d +0x6c77 0x8e1e +0x6c78 0x8e10 +0x6c79 0x8e1f +0x6c7a 0x8e42 +0x6c7b 0x8e35 +0x6c7c 0x8e30 +0x6c7d 0x8e34 +0x6c7e 0x8e4a +0x6d21 0x8e47 +0x6d22 0x8e49 +0x6d23 0x8e4c +0x6d24 0x8e50 +0x6d25 0x8e48 +0x6d26 0x8e59 +0x6d27 0x8e64 +0x6d28 0x8e60 +0x6d29 0x8e2a +0x6d2a 0x8e63 +0x6d2b 0x8e55 +0x6d2c 0x8e76 +0x6d2d 0x8e72 +0x6d2e 0x8e7c +0x6d2f 0x8e81 +0x6d30 0x8e87 +0x6d31 0x8e85 +0x6d32 0x8e84 +0x6d33 0x8e8b +0x6d34 0x8e8a +0x6d35 0x8e93 +0x6d36 0x8e91 +0x6d37 0x8e94 +0x6d38 0x8e99 +0x6d39 0x8eaa +0x6d3a 0x8ea1 +0x6d3b 0x8eac +0x6d3c 0x8eb0 +0x6d3d 0x8ec6 +0x6d3e 0x8eb1 +0x6d3f 0x8ebe +0x6d40 0x8ec5 +0x6d41 0x8ec8 +0x6d42 0x8ecb +0x6d43 0x8edb +0x6d44 0x8ee3 +0x6d45 0x8efc +0x6d46 0x8efb +0x6d47 0x8eeb +0x6d48 0x8efe +0x6d49 0x8f0a +0x6d4a 0x8f05 +0x6d4b 0x8f15 +0x6d4c 0x8f12 +0x6d4d 0x8f19 +0x6d4e 0x8f13 +0x6d4f 0x8f1c +0x6d50 0x8f1f +0x6d51 0x8f1b +0x6d52 0x8f0c +0x6d53 0x8f26 +0x6d54 0x8f33 +0x6d55 0x8f3b +0x6d56 0x8f39 +0x6d57 0x8f45 +0x6d58 0x8f42 +0x6d59 0x8f3e +0x6d5a 0x8f4c +0x6d5b 0x8f49 +0x6d5c 0x8f46 +0x6d5d 0x8f4e +0x6d5e 0x8f57 +0x6d5f 0x8f5c +0x6d60 0x8f62 +0x6d61 0x8f63 +0x6d62 0x8f64 +0x6d63 0x8f9c +0x6d64 0x8f9f +0x6d65 0x8fa3 +0x6d66 0x8fad +0x6d67 0x8faf +0x6d68 0x8fb7 +0x6d69 0x8fda +0x6d6a 0x8fe5 +0x6d6b 0x8fe2 +0x6d6c 0x8fea +0x6d6d 0x8fef +0x6d6e 0x9087 +0x6d6f 0x8ff4 +0x6d70 0x9005 +0x6d71 0x8ff9 +0x6d72 0x8ffa +0x6d73 0x9011 +0x6d74 0x9015 +0x6d75 0x9021 +0x6d76 0x900d +0x6d77 0x901e +0x6d78 0x9016 +0x6d79 0x900b +0x6d7a 0x9027 +0x6d7b 0x9036 +0x6d7c 0x9035 +0x6d7d 0x9039 +0x6d7e 0x8ff8 +0x6e21 0x904f +0x6e22 0x9050 +0x6e23 0x9051 +0x6e24 0x9052 +0x6e25 0x900e +0x6e26 0x9049 +0x6e27 0x903e +0x6e28 0x9056 +0x6e29 0x9058 +0x6e2a 0x905e +0x6e2b 0x9068 +0x6e2c 0x906f +0x6e2d 0x9076 +0x6e2e 0x96a8 +0x6e2f 0x9072 +0x6e30 0x9082 +0x6e31 0x907d +0x6e32 0x9081 +0x6e33 0x9080 +0x6e34 0x908a +0x6e35 0x9089 +0x6e36 0x908f +0x6e37 0x90a8 +0x6e38 0x90af +0x6e39 0x90b1 +0x6e3a 0x90b5 +0x6e3b 0x90e2 +0x6e3c 0x90e4 +0x6e3d 0x6248 +0x6e3e 0x90db +0x6e3f 0x9102 +0x6e40 0x9112 +0x6e41 0x9119 +0x6e42 0x9132 +0x6e43 0x9130 +0x6e44 0x914a +0x6e45 0x9156 +0x6e46 0x9158 +0x6e47 0x9163 +0x6e48 0x9165 +0x6e49 0x9169 +0x6e4a 0x9173 +0x6e4b 0x9172 +0x6e4c 0x918b +0x6e4d 0x9189 +0x6e4e 0x9182 +0x6e4f 0x91a2 +0x6e50 0x91ab +0x6e51 0x91af +0x6e52 0x91aa +0x6e53 0x91b5 +0x6e54 0x91b4 +0x6e55 0x91ba +0x6e56 0x91c0 +0x6e57 0x91c1 +0x6e58 0x91c9 +0x6e59 0x91cb +0x6e5a 0x91d0 +0x6e5b 0x91d6 +0x6e5c 0x91df +0x6e5d 0x91e1 +0x6e5e 0x91db +0x6e5f 0x91fc +0x6e60 0x91f5 +0x6e61 0x91f6 +0x6e62 0x921e +0x6e63 0x91ff +0x6e64 0x9214 +0x6e65 0x922c +0x6e66 0x9215 +0x6e67 0x9211 +0x6e68 0x925e +0x6e69 0x9257 +0x6e6a 0x9245 +0x6e6b 0x9249 +0x6e6c 0x9264 +0x6e6d 0x9248 +0x6e6e 0x9295 +0x6e6f 0x923f +0x6e70 0x924b +0x6e71 0x9250 +0x6e72 0x929c +0x6e73 0x9296 +0x6e74 0x9293 +0x6e75 0x929b +0x6e76 0x925a +0x6e77 0x92cf +0x6e78 0x92b9 +0x6e79 0x92b7 +0x6e7a 0x92e9 +0x6e7b 0x930f +0x6e7c 0x92fa +0x6e7d 0x9344 +0x6e7e 0x932e +0x6f21 0x9319 +0x6f22 0x9322 +0x6f23 0x931a +0x6f24 0x9323 +0x6f25 0x933a +0x6f26 0x9335 +0x6f27 0x933b +0x6f28 0x935c +0x6f29 0x9360 +0x6f2a 0x937c +0x6f2b 0x936e +0x6f2c 0x9356 +0x6f2d 0x93b0 +0x6f2e 0x93ac +0x6f2f 0x93ad +0x6f30 0x9394 +0x6f31 0x93b9 +0x6f32 0x93d6 +0x6f33 0x93d7 +0x6f34 0x93e8 +0x6f35 0x93e5 +0x6f36 0x93d8 +0x6f37 0x93c3 +0x6f38 0x93dd +0x6f39 0x93d0 +0x6f3a 0x93c8 +0x6f3b 0x93e4 +0x6f3c 0x941a +0x6f3d 0x9414 +0x6f3e 0x9413 +0x6f3f 0x9403 +0x6f40 0x9407 +0x6f41 0x9410 +0x6f42 0x9436 +0x6f43 0x942b +0x6f44 0x9435 +0x6f45 0x9421 +0x6f46 0x943a +0x6f47 0x9441 +0x6f48 0x9452 +0x6f49 0x9444 +0x6f4a 0x945b +0x6f4b 0x9460 +0x6f4c 0x9462 +0x6f4d 0x945e +0x6f4e 0x946a +0x6f4f 0x9229 +0x6f50 0x9470 +0x6f51 0x9475 +0x6f52 0x9477 +0x6f53 0x947d +0x6f54 0x945a +0x6f55 0x947c +0x6f56 0x947e +0x6f57 0x9481 +0x6f58 0x947f +0x6f59 0x9582 +0x6f5a 0x9587 +0x6f5b 0x958a +0x6f5c 0x9594 +0x6f5d 0x9596 +0x6f5e 0x9598 +0x6f5f 0x9599 +0x6f60 0x95a0 +0x6f61 0x95a8 +0x6f62 0x95a7 +0x6f63 0x95ad +0x6f64 0x95bc +0x6f65 0x95bb +0x6f66 0x95b9 +0x6f67 0x95be +0x6f68 0x95ca +0x6f69 0x6ff6 +0x6f6a 0x95c3 +0x6f6b 0x95cd +0x6f6c 0x95cc +0x6f6d 0x95d5 +0x6f6e 0x95d4 +0x6f6f 0x95d6 +0x6f70 0x95dc +0x6f71 0x95e1 +0x6f72 0x95e5 +0x6f73 0x95e2 +0x6f74 0x9621 +0x6f75 0x9628 +0x6f76 0x962e +0x6f77 0x962f +0x6f78 0x9642 +0x6f79 0x964c +0x6f7a 0x964f +0x6f7b 0x964b +0x6f7c 0x9677 +0x6f7d 0x965c +0x6f7e 0x965e +0x7021 0x965d +0x7022 0x965f +0x7023 0x9666 +0x7024 0x9672 +0x7025 0x966c +0x7026 0x968d +0x7027 0x9698 +0x7028 0x9695 +0x7029 0x9697 +0x702a 0x96aa +0x702b 0x96a7 +0x702c 0x96b1 +0x702d 0x96b2 +0x702e 0x96b0 +0x702f 0x96b4 +0x7030 0x96b6 +0x7031 0x96b8 +0x7032 0x96b9 +0x7033 0x96ce +0x7034 0x96cb +0x7035 0x96c9 +0x7036 0x96cd +0x7037 0x894d +0x7038 0x96dc +0x7039 0x970d +0x703a 0x96d5 +0x703b 0x96f9 +0x703c 0x9704 +0x703d 0x9706 +0x703e 0x9708 +0x703f 0x9713 +0x7040 0x970e +0x7041 0x9711 +0x7042 0x970f +0x7043 0x9716 +0x7044 0x9719 +0x7045 0x9724 +0x7046 0x972a +0x7047 0x9730 +0x7048 0x9739 +0x7049 0x973d +0x704a 0x973e +0x704b 0x9744 +0x704c 0x9746 +0x704d 0x9748 +0x704e 0x9742 +0x704f 0x9749 +0x7050 0x975c +0x7051 0x9760 +0x7052 0x9764 +0x7053 0x9766 +0x7054 0x9768 +0x7055 0x52d2 +0x7056 0x976b +0x7057 0x9771 +0x7058 0x9779 +0x7059 0x9785 +0x705a 0x977c +0x705b 0x9781 +0x705c 0x977a +0x705d 0x9786 +0x705e 0x978b +0x705f 0x978f +0x7060 0x9790 +0x7061 0x979c +0x7062 0x97a8 +0x7063 0x97a6 +0x7064 0x97a3 +0x7065 0x97b3 +0x7066 0x97b4 +0x7067 0x97c3 +0x7068 0x97c6 +0x7069 0x97c8 +0x706a 0x97cb +0x706b 0x97dc +0x706c 0x97ed +0x706d 0x9f4f +0x706e 0x97f2 +0x706f 0x7adf +0x7070 0x97f6 +0x7071 0x97f5 +0x7072 0x980f +0x7073 0x980c +0x7074 0x9838 +0x7075 0x9824 +0x7076 0x9821 +0x7077 0x9837 +0x7078 0x983d +0x7079 0x9846 +0x707a 0x984f +0x707b 0x984b +0x707c 0x986b +0x707d 0x986f +0x707e 0x9870 +0x7121 0x9871 +0x7122 0x9874 +0x7123 0x9873 +0x7124 0x98aa +0x7125 0x98af +0x7126 0x98b1 +0x7127 0x98b6 +0x7128 0x98c4 +0x7129 0x98c3 +0x712a 0x98c6 +0x712b 0x98e9 +0x712c 0x98eb +0x712d 0x9903 +0x712e 0x9909 +0x712f 0x9912 +0x7130 0x9914 +0x7131 0x9918 +0x7132 0x9921 +0x7133 0x991d +0x7134 0x991e +0x7135 0x9924 +0x7136 0x9920 +0x7137 0x992c +0x7138 0x992e +0x7139 0x993d +0x713a 0x993e +0x713b 0x9942 +0x713c 0x9949 +0x713d 0x9945 +0x713e 0x9950 +0x713f 0x994b +0x7140 0x9951 +0x7141 0x9952 +0x7142 0x994c +0x7143 0x9955 +0x7144 0x9997 +0x7145 0x9998 +0x7146 0x99a5 +0x7147 0x99ad +0x7148 0x99ae +0x7149 0x99bc +0x714a 0x99df +0x714b 0x99db +0x714c 0x99dd +0x714d 0x99d8 +0x714e 0x99d1 +0x714f 0x99ed +0x7150 0x99ee +0x7151 0x99f1 +0x7152 0x99f2 +0x7153 0x99fb +0x7154 0x99f8 +0x7155 0x9a01 +0x7156 0x9a0f +0x7157 0x9a05 +0x7158 0x99e2 +0x7159 0x9a19 +0x715a 0x9a2b +0x715b 0x9a37 +0x715c 0x9a45 +0x715d 0x9a42 +0x715e 0x9a40 +0x715f 0x9a43 +0x7160 0x9a3e +0x7161 0x9a55 +0x7162 0x9a4d +0x7163 0x9a5b +0x7164 0x9a57 +0x7165 0x9a5f +0x7166 0x9a62 +0x7167 0x9a65 +0x7168 0x9a64 +0x7169 0x9a69 +0x716a 0x9a6b +0x716b 0x9a6a +0x716c 0x9aad +0x716d 0x9ab0 +0x716e 0x9abc +0x716f 0x9ac0 +0x7170 0x9acf +0x7171 0x9ad1 +0x7172 0x9ad3 +0x7173 0x9ad4 +0x7174 0x9ade +0x7175 0x9adf +0x7176 0x9ae2 +0x7177 0x9ae3 +0x7178 0x9ae6 +0x7179 0x9aef +0x717a 0x9aeb +0x717b 0x9aee +0x717c 0x9af4 +0x717d 0x9af1 +0x717e 0x9af7 +0x7221 0x9afb +0x7222 0x9b06 +0x7223 0x9b18 +0x7224 0x9b1a +0x7225 0x9b1f +0x7226 0x9b22 +0x7227 0x9b23 +0x7228 0x9b25 +0x7229 0x9b27 +0x722a 0x9b28 +0x722b 0x9b29 +0x722c 0x9b2a +0x722d 0x9b2e +0x722e 0x9b2f +0x722f 0x9b32 +0x7230 0x9b44 +0x7231 0x9b43 +0x7232 0x9b4f +0x7233 0x9b4d +0x7234 0x9b4e +0x7235 0x9b51 +0x7236 0x9b58 +0x7237 0x9b74 +0x7238 0x9b93 +0x7239 0x9b83 +0x723a 0x9b91 +0x723b 0x9b96 +0x723c 0x9b97 +0x723d 0x9b9f +0x723e 0x9ba0 +0x723f 0x9ba8 +0x7240 0x9bb4 +0x7241 0x9bc0 +0x7242 0x9bca +0x7243 0x9bb9 +0x7244 0x9bc6 +0x7245 0x9bcf +0x7246 0x9bd1 +0x7247 0x9bd2 +0x7248 0x9be3 +0x7249 0x9be2 +0x724a 0x9be4 +0x724b 0x9bd4 +0x724c 0x9be1 +0x724d 0x9c3a +0x724e 0x9bf2 +0x724f 0x9bf1 +0x7250 0x9bf0 +0x7251 0x9c15 +0x7252 0x9c14 +0x7253 0x9c09 +0x7254 0x9c13 +0x7255 0x9c0c +0x7256 0x9c06 +0x7257 0x9c08 +0x7258 0x9c12 +0x7259 0x9c0a +0x725a 0x9c04 +0x725b 0x9c2e +0x725c 0x9c1b +0x725d 0x9c25 +0x725e 0x9c24 +0x725f 0x9c21 +0x7260 0x9c30 +0x7261 0x9c47 +0x7262 0x9c32 +0x7263 0x9c46 +0x7264 0x9c3e +0x7265 0x9c5a +0x7266 0x9c60 +0x7267 0x9c67 +0x7268 0x9c76 +0x7269 0x9c78 +0x726a 0x9ce7 +0x726b 0x9cec +0x726c 0x9cf0 +0x726d 0x9d09 +0x726e 0x9d08 +0x726f 0x9ceb +0x7270 0x9d03 +0x7271 0x9d06 +0x7272 0x9d2a +0x7273 0x9d26 +0x7274 0x9daf +0x7275 0x9d23 +0x7276 0x9d1f +0x7277 0x9d44 +0x7278 0x9d15 +0x7279 0x9d12 +0x727a 0x9d41 +0x727b 0x9d3f +0x727c 0x9d3e +0x727d 0x9d46 +0x727e 0x9d48 +0x7321 0x9d5d +0x7322 0x9d5e +0x7323 0x9d64 +0x7324 0x9d51 +0x7325 0x9d50 +0x7326 0x9d59 +0x7327 0x9d72 +0x7328 0x9d89 +0x7329 0x9d87 +0x732a 0x9dab +0x732b 0x9d6f +0x732c 0x9d7a +0x732d 0x9d9a +0x732e 0x9da4 +0x732f 0x9da9 +0x7330 0x9db2 +0x7331 0x9dc4 +0x7332 0x9dc1 +0x7333 0x9dbb +0x7334 0x9db8 +0x7335 0x9dba +0x7336 0x9dc6 +0x7337 0x9dcf +0x7338 0x9dc2 +0x7339 0x9dd9 +0x733a 0x9dd3 +0x733b 0x9df8 +0x733c 0x9de6 +0x733d 0x9ded +0x733e 0x9def +0x733f 0x9dfd +0x7340 0x9e1a +0x7341 0x9e1b +0x7342 0x9e1e +0x7343 0x9e75 +0x7344 0x9e79 +0x7345 0x9e7d +0x7346 0x9e81 +0x7347 0x9e88 +0x7348 0x9e8b +0x7349 0x9e8c +0x734a 0x9e92 +0x734b 0x9e95 +0x734c 0x9e91 +0x734d 0x9e9d +0x734e 0x9ea5 +0x734f 0x9ea9 +0x7350 0x9eb8 +0x7351 0x9eaa +0x7352 0x9ead +0x7353 0x9761 +0x7354 0x9ecc +0x7355 0x9ece +0x7356 0x9ecf +0x7357 0x9ed0 +0x7358 0x9ed4 +0x7359 0x9edc +0x735a 0x9ede +0x735b 0x9edd +0x735c 0x9ee0 +0x735d 0x9ee5 +0x735e 0x9ee8 +0x735f 0x9eef +0x7360 0x9ef4 +0x7361 0x9ef6 +0x7362 0x9ef7 +0x7363 0x9ef9 +0x7364 0x9efb +0x7365 0x9efc +0x7366 0x9efd +0x7367 0x9f07 +0x7368 0x9f08 +0x7369 0x76b7 +0x736a 0x9f15 +0x736b 0x9f21 +0x736c 0x9f2c +0x736d 0x9f3e +0x736e 0x9f4a +0x736f 0x9f52 +0x7370 0x9f54 +0x7371 0x9f63 +0x7372 0x9f5f +0x7373 0x9f60 +0x7374 0x9f61 +0x7375 0x9f66 +0x7376 0x9f67 +0x7377 0x9f6c +0x7378 0x9f6a +0x7379 0x9f77 +0x737a 0x9f72 +0x737b 0x9f76 +0x737c 0x9f95 +0x737d 0x9f9c +0x737e 0x9fa0 +0x7421 0x582f +0x7422 0x69c7 +0x7423 0x9059 +0x7424 0x7464 +0x7425 0x51dc +0x7426 0x7199 diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/JIS_X_0208_MS5022X.c2b --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/JIS_X_0208_MS5022X.c2b Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,73 @@ +# +# The diff of JIS_X_0208_MS5022X_Decoder and +# JIS_X_0208_MS5022X_Encoder +# +0x215d 0xff0d +0x2142 0x2225 +0x2123 0xff61 +0x2156 0xff62 +0x2157 0xff63 +0x2122 0xff64 +0x2126 0xff65 +0x2572 0xff66 +0x2521 0xff67 +0x2523 0xff68 +0x2525 0xff69 +0x2527 0xff6a +0x2529 0xff6b +0x2563 0xff6c +0x2565 0xff6d +0x2567 0xff6e +0x2543 0xff6f +0x213c 0xff70 +0x2522 0xff71 +0x2524 0xff72 +0x2526 0xff73 +0x2528 0xff74 +0x252a 0xff75 +0x252b 0xff76 +0x252d 0xff77 +0x252f 0xff78 +0x2531 0xff79 +0x2533 0xff7a +0x2535 0xff7b +0x2537 0xff7c +0x2539 0xff7d +0x253b 0xff7e +0x253d 0xff7f +0x253f 0xff80 +0x2541 0xff81 +0x2544 0xff82 +0x2546 0xff83 +0x2548 0xff84 +0x254a 0xff85 +0x254b 0xff86 +0x254c 0xff87 +0x254d 0xff88 +0x254e 0xff89 +0x254f 0xff8a +0x2552 0xff8b +0x2555 0xff8c +0x2558 0xff8d +0x255b 0xff8e +0x255e 0xff8f +0x255f 0xff90 +0x2560 0xff91 +0x2561 0xff92 +0x2562 0xff93 +0x2564 0xff94 +0x2566 0xff95 +0x2568 0xff96 +0x2569 0xff97 +0x256a 0xff98 +0x256b 0xff99 +0x256c 0xff9a +0x256d 0xff9b +0x256f 0xff9c +0x2573 0xff9d +0x212b 0xff9e +0x212c 0xff9f +0x2171 0xffe0 +0x2172 0xffe1 +0x224c 0xffe2 + diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/JIS_X_0208_MS5022X.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/JIS_X_0208_MS5022X.map Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,7893 @@ +0x2121 0x3000 +0x2122 0x3001 +0x2123 0x3002 +0x2124 0xff0c +0x2125 0xff0e +0x2126 0x30fb +0x2127 0xff1a +0x2128 0xff1b +0x2129 0xff1f +0x212a 0xff01 +0x212b 0x309b +0x212c 0x309c +0x212d 0x00b4 +0x212e 0xff40 +0x212f 0x00a8 +0x2130 0xff3e +0x2131 0xffe3 +0x2132 0xff3f +0x2133 0x30fd +0x2134 0x30fe +0x2135 0x309d +0x2136 0x309e +0x2137 0x3003 +0x2138 0x4edd +0x2139 0x3005 +0x213a 0x3006 +0x213b 0x3007 +0x213c 0x30fc +0x213d 0x2015 +0x213e 0x2010 +0x213f 0xff0f +0x2140 0xff3c +0x2141 0x301c +0x2142 0x2016 +0x2143 0xff5c +0x2144 0x2026 +0x2145 0x2025 +0x2146 0x2018 +0x2147 0x2019 +0x2148 0x201c +0x2149 0x201d +0x214a 0xff08 +0x214b 0xff09 +0x214c 0x3014 +0x214d 0x3015 +0x214e 0xff3b +0x214f 0xff3d +0x2150 0xff5b +0x2151 0xff5d +0x2152 0x3008 +0x2153 0x3009 +0x2154 0x300a +0x2155 0x300b +0x2156 0x300c +0x2157 0x300d +0x2158 0x300e +0x2159 0x300f +0x215a 0x3010 +0x215b 0x3011 +0x215c 0xff0b +0x215d 0x2212 +0x215e 0x00b1 +0x215f 0x00d7 +0x2160 0x00f7 +0x2161 0xff1d +0x2162 0x2260 +0x2163 0xff1c +0x2164 0xff1e +0x2165 0x2266 +0x2166 0x2267 +0x2167 0x221e +0x2168 0x2234 +0x2169 0x2642 +0x216a 0x2640 +0x216b 0x00b0 +0x216c 0x2032 +0x216d 0x2033 +0x216e 0x2103 +0x216f 0xffe5 +0x2170 0xff04 +0x2171 0x00a2 +0x2172 0x00a3 +0x2173 0xff05 +0x2174 0xff03 +0x2175 0xff06 +0x2176 0xff0a +0x2177 0xff20 +0x2178 0x00a7 +0x2179 0x2606 +0x217a 0x2605 +0x217b 0x25cb +0x217c 0x25cf +0x217d 0x25ce +0x217e 0x25c7 +0x2221 0x25c6 +0x2222 0x25a1 +0x2223 0x25a0 +0x2224 0x25b3 +0x2225 0x25b2 +0x2226 0x25bd +0x2227 0x25bc +0x2228 0x203b +0x2229 0x3012 +0x222a 0x2192 +0x222b 0x2190 +0x222c 0x2191 +0x222d 0x2193 +0x222e 0x3013 +0x223a 0x2208 +0x223b 0x220b +0x223c 0x2286 +0x223d 0x2287 +0x223e 0x2282 +0x223f 0x2283 +0x2240 0x222a +0x2241 0x2229 +0x224a 0x2227 +0x224b 0x2228 +0x224c 0x00ac +0x224d 0x21d2 +0x224e 0x21d4 +0x224f 0x2200 +0x2250 0x2203 +0x225c 0x2220 +0x225d 0x22a5 +0x225e 0x2312 +0x225f 0x2202 +0x2260 0x2207 +0x2261 0x2261 +0x2262 0x2252 +0x2263 0x226a +0x2264 0x226b +0x2265 0x221a +0x2266 0x223d +0x2267 0x221d +0x2268 0x2235 +0x2269 0x222b +0x226a 0x222c +0x2272 0x212b +0x2273 0x2030 +0x2274 0x266f +0x2275 0x266d +0x2276 0x266a +0x2277 0x2020 +0x2278 0x2021 +0x2279 0x00b6 +0x227e 0x25ef +0x2330 0xff10 +0x2331 0xff11 +0x2332 0xff12 +0x2333 0xff13 +0x2334 0xff14 +0x2335 0xff15 +0x2336 0xff16 +0x2337 0xff17 +0x2338 0xff18 +0x2339 0xff19 +0x2341 0xff21 +0x2342 0xff22 +0x2343 0xff23 +0x2344 0xff24 +0x2345 0xff25 +0x2346 0xff26 +0x2347 0xff27 +0x2348 0xff28 +0x2349 0xff29 +0x234a 0xff2a +0x234b 0xff2b +0x234c 0xff2c +0x234d 0xff2d +0x234e 0xff2e +0x234f 0xff2f +0x2350 0xff30 +0x2351 0xff31 +0x2352 0xff32 +0x2353 0xff33 +0x2354 0xff34 +0x2355 0xff35 +0x2356 0xff36 +0x2357 0xff37 +0x2358 0xff38 +0x2359 0xff39 +0x235a 0xff3a +0x2361 0xff41 +0x2362 0xff42 +0x2363 0xff43 +0x2364 0xff44 +0x2365 0xff45 +0x2366 0xff46 +0x2367 0xff47 +0x2368 0xff48 +0x2369 0xff49 +0x236a 0xff4a +0x236b 0xff4b +0x236c 0xff4c +0x236d 0xff4d +0x236e 0xff4e +0x236f 0xff4f +0x2370 0xff50 +0x2371 0xff51 +0x2372 0xff52 +0x2373 0xff53 +0x2374 0xff54 +0x2375 0xff55 +0x2376 0xff56 +0x2377 0xff57 +0x2378 0xff58 +0x2379 0xff59 +0x237a 0xff5a +0x2421 0x3041 +0x2422 0x3042 +0x2423 0x3043 +0x2424 0x3044 +0x2425 0x3045 +0x2426 0x3046 +0x2427 0x3047 +0x2428 0x3048 +0x2429 0x3049 +0x242a 0x304a +0x242b 0x304b +0x242c 0x304c +0x242d 0x304d +0x242e 0x304e +0x242f 0x304f +0x2430 0x3050 +0x2431 0x3051 +0x2432 0x3052 +0x2433 0x3053 +0x2434 0x3054 +0x2435 0x3055 +0x2436 0x3056 +0x2437 0x3057 +0x2438 0x3058 +0x2439 0x3059 +0x243a 0x305a +0x243b 0x305b +0x243c 0x305c +0x243d 0x305d +0x243e 0x305e +0x243f 0x305f +0x2440 0x3060 +0x2441 0x3061 +0x2442 0x3062 +0x2443 0x3063 +0x2444 0x3064 +0x2445 0x3065 +0x2446 0x3066 +0x2447 0x3067 +0x2448 0x3068 +0x2449 0x3069 +0x244a 0x306a +0x244b 0x306b +0x244c 0x306c +0x244d 0x306d +0x244e 0x306e +0x244f 0x306f +0x2450 0x3070 +0x2451 0x3071 +0x2452 0x3072 +0x2453 0x3073 +0x2454 0x3074 +0x2455 0x3075 +0x2456 0x3076 +0x2457 0x3077 +0x2458 0x3078 +0x2459 0x3079 +0x245a 0x307a +0x245b 0x307b +0x245c 0x307c +0x245d 0x307d +0x245e 0x307e +0x245f 0x307f +0x2460 0x3080 +0x2461 0x3081 +0x2462 0x3082 +0x2463 0x3083 +0x2464 0x3084 +0x2465 0x3085 +0x2466 0x3086 +0x2467 0x3087 +0x2468 0x3088 +0x2469 0x3089 +0x246a 0x308a +0x246b 0x308b +0x246c 0x308c +0x246d 0x308d +0x246e 0x308e +0x246f 0x308f +0x2470 0x3090 +0x2471 0x3091 +0x2472 0x3092 +0x2473 0x3093 +0x2521 0x30a1 +0x2522 0x30a2 +0x2523 0x30a3 +0x2524 0x30a4 +0x2525 0x30a5 +0x2526 0x30a6 +0x2527 0x30a7 +0x2528 0x30a8 +0x2529 0x30a9 +0x252a 0x30aa +0x252b 0x30ab +0x252c 0x30ac +0x252d 0x30ad +0x252e 0x30ae +0x252f 0x30af +0x2530 0x30b0 +0x2531 0x30b1 +0x2532 0x30b2 +0x2533 0x30b3 +0x2534 0x30b4 +0x2535 0x30b5 +0x2536 0x30b6 +0x2537 0x30b7 +0x2538 0x30b8 +0x2539 0x30b9 +0x253a 0x30ba +0x253b 0x30bb +0x253c 0x30bc +0x253d 0x30bd +0x253e 0x30be +0x253f 0x30bf +0x2540 0x30c0 +0x2541 0x30c1 +0x2542 0x30c2 +0x2543 0x30c3 +0x2544 0x30c4 +0x2545 0x30c5 +0x2546 0x30c6 +0x2547 0x30c7 +0x2548 0x30c8 +0x2549 0x30c9 +0x254a 0x30ca +0x254b 0x30cb +0x254c 0x30cc +0x254d 0x30cd +0x254e 0x30ce +0x254f 0x30cf +0x2550 0x30d0 +0x2551 0x30d1 +0x2552 0x30d2 +0x2553 0x30d3 +0x2554 0x30d4 +0x2555 0x30d5 +0x2556 0x30d6 +0x2557 0x30d7 +0x2558 0x30d8 +0x2559 0x30d9 +0x255a 0x30da +0x255b 0x30db +0x255c 0x30dc +0x255d 0x30dd +0x255e 0x30de +0x255f 0x30df +0x2560 0x30e0 +0x2561 0x30e1 +0x2562 0x30e2 +0x2563 0x30e3 +0x2564 0x30e4 +0x2565 0x30e5 +0x2566 0x30e6 +0x2567 0x30e7 +0x2568 0x30e8 +0x2569 0x30e9 +0x256a 0x30ea +0x256b 0x30eb +0x256c 0x30ec +0x256d 0x30ed +0x256e 0x30ee +0x256f 0x30ef +0x2570 0x30f0 +0x2571 0x30f1 +0x2572 0x30f2 +0x2573 0x30f3 +0x2574 0x30f4 +0x2575 0x30f5 +0x2576 0x30f6 +0x2621 0x0391 +0x2622 0x0392 +0x2623 0x0393 +0x2624 0x0394 +0x2625 0x0395 +0x2626 0x0396 +0x2627 0x0397 +0x2628 0x0398 +0x2629 0x0399 +0x262a 0x039a +0x262b 0x039b +0x262c 0x039c +0x262d 0x039d +0x262e 0x039e +0x262f 0x039f +0x2630 0x03a0 +0x2631 0x03a1 +0x2632 0x03a3 +0x2633 0x03a4 +0x2634 0x03a5 +0x2635 0x03a6 +0x2636 0x03a7 +0x2637 0x03a8 +0x2638 0x03a9 +0x2641 0x03b1 +0x2642 0x03b2 +0x2643 0x03b3 +0x2644 0x03b4 +0x2645 0x03b5 +0x2646 0x03b6 +0x2647 0x03b7 +0x2648 0x03b8 +0x2649 0x03b9 +0x264a 0x03ba +0x264b 0x03bb +0x264c 0x03bc +0x264d 0x03bd +0x264e 0x03be +0x264f 0x03bf +0x2650 0x03c0 +0x2651 0x03c1 +0x2652 0x03c3 +0x2653 0x03c4 +0x2654 0x03c5 +0x2655 0x03c6 +0x2656 0x03c7 +0x2657 0x03c8 +0x2658 0x03c9 +0x2721 0x0410 +0x2722 0x0411 +0x2723 0x0412 +0x2724 0x0413 +0x2725 0x0414 +0x2726 0x0415 +0x2727 0x0401 +0x2728 0x0416 +0x2729 0x0417 +0x272a 0x0418 +0x272b 0x0419 +0x272c 0x041a +0x272d 0x041b +0x272e 0x041c +0x272f 0x041d +0x2730 0x041e +0x2731 0x041f +0x2732 0x0420 +0x2733 0x0421 +0x2734 0x0422 +0x2735 0x0423 +0x2736 0x0424 +0x2737 0x0425 +0x2738 0x0426 +0x2739 0x0427 +0x273a 0x0428 +0x273b 0x0429 +0x273c 0x042a +0x273d 0x042b +0x273e 0x042c +0x273f 0x042d +0x2740 0x042e +0x2741 0x042f +0x2751 0x0430 +0x2752 0x0431 +0x2753 0x0432 +0x2754 0x0433 +0x2755 0x0434 +0x2756 0x0435 +0x2757 0x0451 +0x2758 0x0436 +0x2759 0x0437 +0x275a 0x0438 +0x275b 0x0439 +0x275c 0x043a +0x275d 0x043b +0x275e 0x043c +0x275f 0x043d +0x2760 0x043e +0x2761 0x043f +0x2762 0x0440 +0x2763 0x0441 +0x2764 0x0442 +0x2765 0x0443 +0x2766 0x0444 +0x2767 0x0445 +0x2768 0x0446 +0x2769 0x0447 +0x276a 0x0448 +0x276b 0x0449 +0x276c 0x044a +0x276d 0x044b +0x276e 0x044c +0x276f 0x044d +0x2770 0x044e +0x2771 0x044f +0x2821 0x2500 +0x2822 0x2502 +0x2823 0x250c +0x2824 0x2510 +0x2825 0x2518 +0x2826 0x2514 +0x2827 0x251c +0x2828 0x252c +0x2829 0x2524 +0x282a 0x2534 +0x282b 0x253c +0x282c 0x2501 +0x282d 0x2503 +0x282e 0x250f +0x282f 0x2513 +0x2830 0x251b +0x2831 0x2517 +0x2832 0x2523 +0x2833 0x2533 +0x2834 0x252b +0x2835 0x253b +0x2836 0x254b +0x2837 0x2520 +0x2838 0x252f +0x2839 0x2528 +0x283a 0x2537 +0x283b 0x253f +0x283c 0x251d +0x283d 0x2530 +0x283e 0x2525 +0x283f 0x2538 +0x2840 0x2542 +0x2d21 0x2460 +0x2d22 0x2461 +0x2d23 0x2462 +0x2d24 0x2463 +0x2d25 0x2464 +0x2d26 0x2465 +0x2d27 0x2466 +0x2d28 0x2467 +0x2d29 0x2468 +0x2d2a 0x2469 +0x2d2b 0x246a +0x2d2c 0x246b +0x2d2d 0x246c +0x2d2e 0x246d +0x2d2f 0x246e +0x2d30 0x246f +0x2d31 0x2470 +0x2d32 0x2471 +0x2d33 0x2472 +0x2d34 0x2473 +0x2d35 0x2160 +0x2d36 0x2161 +0x2d37 0x2162 +0x2d38 0x2163 +0x2d39 0x2164 +0x2d3a 0x2165 +0x2d3b 0x2166 +0x2d3c 0x2167 +0x2d3d 0x2168 +0x2d3e 0x2169 +0x2d40 0x3349 +0x2d41 0x3314 +0x2d42 0x3322 +0x2d43 0x334d +0x2d44 0x3318 +0x2d45 0x3327 +0x2d46 0x3303 +0x2d47 0x3336 +0x2d48 0x3351 +0x2d49 0x3357 +0x2d4a 0x330d +0x2d4b 0x3326 +0x2d4c 0x3323 +0x2d4d 0x332b +0x2d4e 0x334a +0x2d4f 0x333b +0x2d50 0x339c +0x2d51 0x339d +0x2d52 0x339e +0x2d53 0x338e +0x2d54 0x338f +0x2d55 0x33c4 +0x2d56 0x33a1 +0x2d5f 0x337b +0x2d60 0x301e +0x2d61 0x301f +0x2d62 0x2116 +0x2d63 0x33cd +0x2d64 0x2121 +0x2d65 0x32a4 +0x2d66 0x32a5 +0x2d67 0x32a6 +0x2d68 0x32a7 +0x2d69 0x32a8 +0x2d6a 0x3231 +0x2d6b 0x3232 +0x2d6c 0x3239 +0x2d6d 0x337e +0x2d6e 0x337d +0x2d6f 0x337c +0x2d73 0x222e +0x2d74 0x2211 +0x2d78 0x221f +0x2d79 0x22bf +0x3021 0x4e9c +0x3022 0x5516 +0x3023 0x5a03 +0x3024 0x963f +0x3025 0x54c0 +0x3026 0x611b +0x3027 0x6328 +0x3028 0x59f6 +0x3029 0x9022 +0x302a 0x8475 +0x302b 0x831c +0x302c 0x7a50 +0x302d 0x60aa +0x302e 0x63e1 +0x302f 0x6e25 +0x3030 0x65ed +0x3031 0x8466 +0x3032 0x82a6 +0x3033 0x9bf5 +0x3034 0x6893 +0x3035 0x5727 +0x3036 0x65a1 +0x3037 0x6271 +0x3038 0x5b9b +0x3039 0x59d0 +0x303a 0x867b +0x303b 0x98f4 +0x303c 0x7d62 +0x303d 0x7dbe +0x303e 0x9b8e +0x303f 0x6216 +0x3040 0x7c9f +0x3041 0x88b7 +0x3042 0x5b89 +0x3043 0x5eb5 +0x3044 0x6309 +0x3045 0x6697 +0x3046 0x6848 +0x3047 0x95c7 +0x3048 0x978d +0x3049 0x674f +0x304a 0x4ee5 +0x304b 0x4f0a +0x304c 0x4f4d +0x304d 0x4f9d +0x304e 0x5049 +0x304f 0x56f2 +0x3050 0x5937 +0x3051 0x59d4 +0x3052 0x5a01 +0x3053 0x5c09 +0x3054 0x60df +0x3055 0x610f +0x3056 0x6170 +0x3057 0x6613 +0x3058 0x6905 +0x3059 0x70ba +0x305a 0x754f +0x305b 0x7570 +0x305c 0x79fb +0x305d 0x7dad +0x305e 0x7def +0x305f 0x80c3 +0x3060 0x840e +0x3061 0x8863 +0x3062 0x8b02 +0x3063 0x9055 +0x3064 0x907a +0x3065 0x533b +0x3066 0x4e95 +0x3067 0x4ea5 +0x3068 0x57df +0x3069 0x80b2 +0x306a 0x90c1 +0x306b 0x78ef +0x306c 0x4e00 +0x306d 0x58f1 +0x306e 0x6ea2 +0x306f 0x9038 +0x3070 0x7a32 +0x3071 0x8328 +0x3072 0x828b +0x3073 0x9c2f +0x3074 0x5141 +0x3075 0x5370 +0x3076 0x54bd +0x3077 0x54e1 +0x3078 0x56e0 +0x3079 0x59fb +0x307a 0x5f15 +0x307b 0x98f2 +0x307c 0x6deb +0x307d 0x80e4 +0x307e 0x852d +0x3121 0x9662 +0x3122 0x9670 +0x3123 0x96a0 +0x3124 0x97fb +0x3125 0x540b +0x3126 0x53f3 +0x3127 0x5b87 +0x3128 0x70cf +0x3129 0x7fbd +0x312a 0x8fc2 +0x312b 0x96e8 +0x312c 0x536f +0x312d 0x9d5c +0x312e 0x7aba +0x312f 0x4e11 +0x3130 0x7893 +0x3131 0x81fc +0x3132 0x6e26 +0x3133 0x5618 +0x3134 0x5504 +0x3135 0x6b1d +0x3136 0x851a +0x3137 0x9c3b +0x3138 0x59e5 +0x3139 0x53a9 +0x313a 0x6d66 +0x313b 0x74dc +0x313c 0x958f +0x313d 0x5642 +0x313e 0x4e91 +0x313f 0x904b +0x3140 0x96f2 +0x3141 0x834f +0x3142 0x990c +0x3143 0x53e1 +0x3144 0x55b6 +0x3145 0x5b30 +0x3146 0x5f71 +0x3147 0x6620 +0x3148 0x66f3 +0x3149 0x6804 +0x314a 0x6c38 +0x314b 0x6cf3 +0x314c 0x6d29 +0x314d 0x745b +0x314e 0x76c8 +0x314f 0x7a4e +0x3150 0x9834 +0x3151 0x82f1 +0x3152 0x885b +0x3153 0x8a60 +0x3154 0x92ed +0x3155 0x6db2 +0x3156 0x75ab +0x3157 0x76ca +0x3158 0x99c5 +0x3159 0x60a6 +0x315a 0x8b01 +0x315b 0x8d8a +0x315c 0x95b2 +0x315d 0x698e +0x315e 0x53ad +0x315f 0x5186 +0x3160 0x5712 +0x3161 0x5830 +0x3162 0x5944 +0x3163 0x5bb4 +0x3164 0x5ef6 +0x3165 0x6028 +0x3166 0x63a9 +0x3167 0x63f4 +0x3168 0x6cbf +0x3169 0x6f14 +0x316a 0x708e +0x316b 0x7114 +0x316c 0x7159 +0x316d 0x71d5 +0x316e 0x733f +0x316f 0x7e01 +0x3170 0x8276 +0x3171 0x82d1 +0x3172 0x8597 +0x3173 0x9060 +0x3174 0x925b +0x3175 0x9d1b +0x3176 0x5869 +0x3177 0x65bc +0x3178 0x6c5a +0x3179 0x7525 +0x317a 0x51f9 +0x317b 0x592e +0x317c 0x5965 +0x317d 0x5f80 +0x317e 0x5fdc +0x3221 0x62bc +0x3222 0x65fa +0x3223 0x6a2a +0x3224 0x6b27 +0x3225 0x6bb4 +0x3226 0x738b +0x3227 0x7fc1 +0x3228 0x8956 +0x3229 0x9d2c +0x322a 0x9d0e +0x322b 0x9ec4 +0x322c 0x5ca1 +0x322d 0x6c96 +0x322e 0x837b +0x322f 0x5104 +0x3230 0x5c4b +0x3231 0x61b6 +0x3232 0x81c6 +0x3233 0x6876 +0x3234 0x7261 +0x3235 0x4e59 +0x3236 0x4ffa +0x3237 0x5378 +0x3238 0x6069 +0x3239 0x6e29 +0x323a 0x7a4f +0x323b 0x97f3 +0x323c 0x4e0b +0x323d 0x5316 +0x323e 0x4eee +0x323f 0x4f55 +0x3240 0x4f3d +0x3241 0x4fa1 +0x3242 0x4f73 +0x3243 0x52a0 +0x3244 0x53ef +0x3245 0x5609 +0x3246 0x590f +0x3247 0x5ac1 +0x3248 0x5bb6 +0x3249 0x5be1 +0x324a 0x79d1 +0x324b 0x6687 +0x324c 0x679c +0x324d 0x67b6 +0x324e 0x6b4c +0x324f 0x6cb3 +0x3250 0x706b +0x3251 0x73c2 +0x3252 0x798d +0x3253 0x79be +0x3254 0x7a3c +0x3255 0x7b87 +0x3256 0x82b1 +0x3257 0x82db +0x3258 0x8304 +0x3259 0x8377 +0x325a 0x83ef +0x325b 0x83d3 +0x325c 0x8766 +0x325d 0x8ab2 +0x325e 0x5629 +0x325f 0x8ca8 +0x3260 0x8fe6 +0x3261 0x904e +0x3262 0x971e +0x3263 0x868a +0x3264 0x4fc4 +0x3265 0x5ce8 +0x3266 0x6211 +0x3267 0x7259 +0x3268 0x753b +0x3269 0x81e5 +0x326a 0x82bd +0x326b 0x86fe +0x326c 0x8cc0 +0x326d 0x96c5 +0x326e 0x9913 +0x326f 0x99d5 +0x3270 0x4ecb +0x3271 0x4f1a +0x3272 0x89e3 +0x3273 0x56de +0x3274 0x584a +0x3275 0x58ca +0x3276 0x5efb +0x3277 0x5feb +0x3278 0x602a +0x3279 0x6094 +0x327a 0x6062 +0x327b 0x61d0 +0x327c 0x6212 +0x327d 0x62d0 +0x327e 0x6539 +0x3321 0x9b41 +0x3322 0x6666 +0x3323 0x68b0 +0x3324 0x6d77 +0x3325 0x7070 +0x3326 0x754c +0x3327 0x7686 +0x3328 0x7d75 +0x3329 0x82a5 +0x332a 0x87f9 +0x332b 0x958b +0x332c 0x968e +0x332d 0x8c9d +0x332e 0x51f1 +0x332f 0x52be +0x3330 0x5916 +0x3331 0x54b3 +0x3332 0x5bb3 +0x3333 0x5d16 +0x3334 0x6168 +0x3335 0x6982 +0x3336 0x6daf +0x3337 0x788d +0x3338 0x84cb +0x3339 0x8857 +0x333a 0x8a72 +0x333b 0x93a7 +0x333c 0x9ab8 +0x333d 0x6d6c +0x333e 0x99a8 +0x333f 0x86d9 +0x3340 0x57a3 +0x3341 0x67ff +0x3342 0x86ce +0x3343 0x920e +0x3344 0x5283 +0x3345 0x5687 +0x3346 0x5404 +0x3347 0x5ed3 +0x3348 0x62e1 +0x3349 0x64b9 +0x334a 0x683c +0x334b 0x6838 +0x334c 0x6bbb +0x334d 0x7372 +0x334e 0x78ba +0x334f 0x7a6b +0x3350 0x899a +0x3351 0x89d2 +0x3352 0x8d6b +0x3353 0x8f03 +0x3354 0x90ed +0x3355 0x95a3 +0x3356 0x9694 +0x3357 0x9769 +0x3358 0x5b66 +0x3359 0x5cb3 +0x335a 0x697d +0x335b 0x984d +0x335c 0x984e +0x335d 0x639b +0x335e 0x7b20 +0x335f 0x6a2b +0x3360 0x6a7f +0x3361 0x68b6 +0x3362 0x9c0d +0x3363 0x6f5f +0x3364 0x5272 +0x3365 0x559d +0x3366 0x6070 +0x3367 0x62ec +0x3368 0x6d3b +0x3369 0x6e07 +0x336a 0x6ed1 +0x336b 0x845b +0x336c 0x8910 +0x336d 0x8f44 +0x336e 0x4e14 +0x336f 0x9c39 +0x3370 0x53f6 +0x3371 0x691b +0x3372 0x6a3a +0x3373 0x9784 +0x3374 0x682a +0x3375 0x515c +0x3376 0x7ac3 +0x3377 0x84b2 +0x3378 0x91dc +0x3379 0x938c +0x337a 0x565b +0x337b 0x9d28 +0x337c 0x6822 +0x337d 0x8305 +0x337e 0x8431 +0x3421 0x7ca5 +0x3422 0x5208 +0x3423 0x82c5 +0x3424 0x74e6 +0x3425 0x4e7e +0x3426 0x4f83 +0x3427 0x51a0 +0x3428 0x5bd2 +0x3429 0x520a +0x342a 0x52d8 +0x342b 0x52e7 +0x342c 0x5dfb +0x342d 0x559a +0x342e 0x582a +0x342f 0x59e6 +0x3430 0x5b8c +0x3431 0x5b98 +0x3432 0x5bdb +0x3433 0x5e72 +0x3434 0x5e79 +0x3435 0x60a3 +0x3436 0x611f +0x3437 0x6163 +0x3438 0x61be +0x3439 0x63db +0x343a 0x6562 +0x343b 0x67d1 +0x343c 0x6853 +0x343d 0x68fa +0x343e 0x6b3e +0x343f 0x6b53 +0x3440 0x6c57 +0x3441 0x6f22 +0x3442 0x6f97 +0x3443 0x6f45 +0x3444 0x74b0 +0x3445 0x7518 +0x3446 0x76e3 +0x3447 0x770b +0x3448 0x7aff +0x3449 0x7ba1 +0x344a 0x7c21 +0x344b 0x7de9 +0x344c 0x7f36 +0x344d 0x7ff0 +0x344e 0x809d +0x344f 0x8266 +0x3450 0x839e +0x3451 0x89b3 +0x3452 0x8acc +0x3453 0x8cab +0x3454 0x9084 +0x3455 0x9451 +0x3456 0x9593 +0x3457 0x9591 +0x3458 0x95a2 +0x3459 0x9665 +0x345a 0x97d3 +0x345b 0x9928 +0x345c 0x8218 +0x345d 0x4e38 +0x345e 0x542b +0x345f 0x5cb8 +0x3460 0x5dcc +0x3461 0x73a9 +0x3462 0x764c +0x3463 0x773c +0x3464 0x5ca9 +0x3465 0x7feb +0x3466 0x8d0b +0x3467 0x96c1 +0x3468 0x9811 +0x3469 0x9854 +0x346a 0x9858 +0x346b 0x4f01 +0x346c 0x4f0e +0x346d 0x5371 +0x346e 0x559c +0x346f 0x5668 +0x3470 0x57fa +0x3471 0x5947 +0x3472 0x5b09 +0x3473 0x5bc4 +0x3474 0x5c90 +0x3475 0x5e0c +0x3476 0x5e7e +0x3477 0x5fcc +0x3478 0x63ee +0x3479 0x673a +0x347a 0x65d7 +0x347b 0x65e2 +0x347c 0x671f +0x347d 0x68cb +0x347e 0x68c4 +0x3521 0x6a5f +0x3522 0x5e30 +0x3523 0x6bc5 +0x3524 0x6c17 +0x3525 0x6c7d +0x3526 0x757f +0x3527 0x7948 +0x3528 0x5b63 +0x3529 0x7a00 +0x352a 0x7d00 +0x352b 0x5fbd +0x352c 0x898f +0x352d 0x8a18 +0x352e 0x8cb4 +0x352f 0x8d77 +0x3530 0x8ecc +0x3531 0x8f1d +0x3532 0x98e2 +0x3533 0x9a0e +0x3534 0x9b3c +0x3535 0x4e80 +0x3536 0x507d +0x3537 0x5100 +0x3538 0x5993 +0x3539 0x5b9c +0x353a 0x622f +0x353b 0x6280 +0x353c 0x64ec +0x353d 0x6b3a +0x353e 0x72a0 +0x353f 0x7591 +0x3540 0x7947 +0x3541 0x7fa9 +0x3542 0x87fb +0x3543 0x8abc +0x3544 0x8b70 +0x3545 0x63ac +0x3546 0x83ca +0x3547 0x97a0 +0x3548 0x5409 +0x3549 0x5403 +0x354a 0x55ab +0x354b 0x6854 +0x354c 0x6a58 +0x354d 0x8a70 +0x354e 0x7827 +0x354f 0x6775 +0x3550 0x9ecd +0x3551 0x5374 +0x3552 0x5ba2 +0x3553 0x811a +0x3554 0x8650 +0x3555 0x9006 +0x3556 0x4e18 +0x3557 0x4e45 +0x3558 0x4ec7 +0x3559 0x4f11 +0x355a 0x53ca +0x355b 0x5438 +0x355c 0x5bae +0x355d 0x5f13 +0x355e 0x6025 +0x355f 0x6551 +0x3560 0x673d +0x3561 0x6c42 +0x3562 0x6c72 +0x3563 0x6ce3 +0x3564 0x7078 +0x3565 0x7403 +0x3566 0x7a76 +0x3567 0x7aae +0x3568 0x7b08 +0x3569 0x7d1a +0x356a 0x7cfe +0x356b 0x7d66 +0x356c 0x65e7 +0x356d 0x725b +0x356e 0x53bb +0x356f 0x5c45 +0x3570 0x5de8 +0x3571 0x62d2 +0x3572 0x62e0 +0x3573 0x6319 +0x3574 0x6e20 +0x3575 0x865a +0x3576 0x8a31 +0x3577 0x8ddd +0x3578 0x92f8 +0x3579 0x6f01 +0x357a 0x79a6 +0x357b 0x9b5a +0x357c 0x4ea8 +0x357d 0x4eab +0x357e 0x4eac +0x3621 0x4f9b +0x3622 0x4fa0 +0x3623 0x50d1 +0x3624 0x5147 +0x3625 0x7af6 +0x3626 0x5171 +0x3627 0x51f6 +0x3628 0x5354 +0x3629 0x5321 +0x362a 0x537f +0x362b 0x53eb +0x362c 0x55ac +0x362d 0x5883 +0x362e 0x5ce1 +0x362f 0x5f37 +0x3630 0x5f4a +0x3631 0x602f +0x3632 0x6050 +0x3633 0x606d +0x3634 0x631f +0x3635 0x6559 +0x3636 0x6a4b +0x3637 0x6cc1 +0x3638 0x72c2 +0x3639 0x72ed +0x363a 0x77ef +0x363b 0x80f8 +0x363c 0x8105 +0x363d 0x8208 +0x363e 0x854e +0x363f 0x90f7 +0x3640 0x93e1 +0x3641 0x97ff +0x3642 0x9957 +0x3643 0x9a5a +0x3644 0x4ef0 +0x3645 0x51dd +0x3646 0x5c2d +0x3647 0x6681 +0x3648 0x696d +0x3649 0x5c40 +0x364a 0x66f2 +0x364b 0x6975 +0x364c 0x7389 +0x364d 0x6850 +0x364e 0x7c81 +0x364f 0x50c5 +0x3650 0x52e4 +0x3651 0x5747 +0x3652 0x5dfe +0x3653 0x9326 +0x3654 0x65a4 +0x3655 0x6b23 +0x3656 0x6b3d +0x3657 0x7434 +0x3658 0x7981 +0x3659 0x79bd +0x365a 0x7b4b +0x365b 0x7dca +0x365c 0x82b9 +0x365d 0x83cc +0x365e 0x887f +0x365f 0x895f +0x3660 0x8b39 +0x3661 0x8fd1 +0x3662 0x91d1 +0x3663 0x541f +0x3664 0x9280 +0x3665 0x4e5d +0x3666 0x5036 +0x3667 0x53e5 +0x3668 0x533a +0x3669 0x72d7 +0x366a 0x7396 +0x366b 0x77e9 +0x366c 0x82e6 +0x366d 0x8eaf +0x366e 0x99c6 +0x366f 0x99c8 +0x3670 0x99d2 +0x3671 0x5177 +0x3672 0x611a +0x3673 0x865e +0x3674 0x55b0 +0x3675 0x7a7a +0x3676 0x5076 +0x3677 0x5bd3 +0x3678 0x9047 +0x3679 0x9685 +0x367a 0x4e32 +0x367b 0x6adb +0x367c 0x91e7 +0x367d 0x5c51 +0x367e 0x5c48 +0x3721 0x6398 +0x3722 0x7a9f +0x3723 0x6c93 +0x3724 0x9774 +0x3725 0x8f61 +0x3726 0x7aaa +0x3727 0x718a +0x3728 0x9688 +0x3729 0x7c82 +0x372a 0x6817 +0x372b 0x7e70 +0x372c 0x6851 +0x372d 0x936c +0x372e 0x52f2 +0x372f 0x541b +0x3730 0x85ab +0x3731 0x8a13 +0x3732 0x7fa4 +0x3733 0x8ecd +0x3734 0x90e1 +0x3735 0x5366 +0x3736 0x8888 +0x3737 0x7941 +0x3738 0x4fc2 +0x3739 0x50be +0x373a 0x5211 +0x373b 0x5144 +0x373c 0x5553 +0x373d 0x572d +0x373e 0x73ea +0x373f 0x578b +0x3740 0x5951 +0x3741 0x5f62 +0x3742 0x5f84 +0x3743 0x6075 +0x3744 0x6176 +0x3745 0x6167 +0x3746 0x61a9 +0x3747 0x63b2 +0x3748 0x643a +0x3749 0x656c +0x374a 0x666f +0x374b 0x6842 +0x374c 0x6e13 +0x374d 0x7566 +0x374e 0x7a3d +0x374f 0x7cfb +0x3750 0x7d4c +0x3751 0x7d99 +0x3752 0x7e4b +0x3753 0x7f6b +0x3754 0x830e +0x3755 0x834a +0x3756 0x86cd +0x3757 0x8a08 +0x3758 0x8a63 +0x3759 0x8b66 +0x375a 0x8efd +0x375b 0x981a +0x375c 0x9d8f +0x375d 0x82b8 +0x375e 0x8fce +0x375f 0x9be8 +0x3760 0x5287 +0x3761 0x621f +0x3762 0x6483 +0x3763 0x6fc0 +0x3764 0x9699 +0x3765 0x6841 +0x3766 0x5091 +0x3767 0x6b20 +0x3768 0x6c7a +0x3769 0x6f54 +0x376a 0x7a74 +0x376b 0x7d50 +0x376c 0x8840 +0x376d 0x8a23 +0x376e 0x6708 +0x376f 0x4ef6 +0x3770 0x5039 +0x3771 0x5026 +0x3772 0x5065 +0x3773 0x517c +0x3774 0x5238 +0x3775 0x5263 +0x3776 0x55a7 +0x3777 0x570f +0x3778 0x5805 +0x3779 0x5acc +0x377a 0x5efa +0x377b 0x61b2 +0x377c 0x61f8 +0x377d 0x62f3 +0x377e 0x6372 +0x3821 0x691c +0x3822 0x6a29 +0x3823 0x727d +0x3824 0x72ac +0x3825 0x732e +0x3826 0x7814 +0x3827 0x786f +0x3828 0x7d79 +0x3829 0x770c +0x382a 0x80a9 +0x382b 0x898b +0x382c 0x8b19 +0x382d 0x8ce2 +0x382e 0x8ed2 +0x382f 0x9063 +0x3830 0x9375 +0x3831 0x967a +0x3832 0x9855 +0x3833 0x9a13 +0x3834 0x9e78 +0x3835 0x5143 +0x3836 0x539f +0x3837 0x53b3 +0x3838 0x5e7b +0x3839 0x5f26 +0x383a 0x6e1b +0x383b 0x6e90 +0x383c 0x7384 +0x383d 0x73fe +0x383e 0x7d43 +0x383f 0x8237 +0x3840 0x8a00 +0x3841 0x8afa +0x3842 0x9650 +0x3843 0x4e4e +0x3844 0x500b +0x3845 0x53e4 +0x3846 0x547c +0x3847 0x56fa +0x3848 0x59d1 +0x3849 0x5b64 +0x384a 0x5df1 +0x384b 0x5eab +0x384c 0x5f27 +0x384d 0x6238 +0x384e 0x6545 +0x384f 0x67af +0x3850 0x6e56 +0x3851 0x72d0 +0x3852 0x7cca +0x3853 0x88b4 +0x3854 0x80a1 +0x3855 0x80e1 +0x3856 0x83f0 +0x3857 0x864e +0x3858 0x8a87 +0x3859 0x8de8 +0x385a 0x9237 +0x385b 0x96c7 +0x385c 0x9867 +0x385d 0x9f13 +0x385e 0x4e94 +0x385f 0x4e92 +0x3860 0x4f0d +0x3861 0x5348 +0x3862 0x5449 +0x3863 0x543e +0x3864 0x5a2f +0x3865 0x5f8c +0x3866 0x5fa1 +0x3867 0x609f +0x3868 0x68a7 +0x3869 0x6a8e +0x386a 0x745a +0x386b 0x7881 +0x386c 0x8a9e +0x386d 0x8aa4 +0x386e 0x8b77 +0x386f 0x9190 +0x3870 0x4e5e +0x3871 0x9bc9 +0x3872 0x4ea4 +0x3873 0x4f7c +0x3874 0x4faf +0x3875 0x5019 +0x3876 0x5016 +0x3877 0x5149 +0x3878 0x516c +0x3879 0x529f +0x387a 0x52b9 +0x387b 0x52fe +0x387c 0x539a +0x387d 0x53e3 +0x387e 0x5411 +0x3921 0x540e +0x3922 0x5589 +0x3923 0x5751 +0x3924 0x57a2 +0x3925 0x597d +0x3926 0x5b54 +0x3927 0x5b5d +0x3928 0x5b8f +0x3929 0x5de5 +0x392a 0x5de7 +0x392b 0x5df7 +0x392c 0x5e78 +0x392d 0x5e83 +0x392e 0x5e9a +0x392f 0x5eb7 +0x3930 0x5f18 +0x3931 0x6052 +0x3932 0x614c +0x3933 0x6297 +0x3934 0x62d8 +0x3935 0x63a7 +0x3936 0x653b +0x3937 0x6602 +0x3938 0x6643 +0x3939 0x66f4 +0x393a 0x676d +0x393b 0x6821 +0x393c 0x6897 +0x393d 0x69cb +0x393e 0x6c5f +0x393f 0x6d2a +0x3940 0x6d69 +0x3941 0x6e2f +0x3942 0x6e9d +0x3943 0x7532 +0x3944 0x7687 +0x3945 0x786c +0x3946 0x7a3f +0x3947 0x7ce0 +0x3948 0x7d05 +0x3949 0x7d18 +0x394a 0x7d5e +0x394b 0x7db1 +0x394c 0x8015 +0x394d 0x8003 +0x394e 0x80af +0x394f 0x80b1 +0x3950 0x8154 +0x3951 0x818f +0x3952 0x822a +0x3953 0x8352 +0x3954 0x884c +0x3955 0x8861 +0x3956 0x8b1b +0x3957 0x8ca2 +0x3958 0x8cfc +0x3959 0x90ca +0x395a 0x9175 +0x395b 0x9271 +0x395c 0x783f +0x395d 0x92fc +0x395e 0x95a4 +0x395f 0x964d +0x3960 0x9805 +0x3961 0x9999 +0x3962 0x9ad8 +0x3963 0x9d3b +0x3964 0x525b +0x3965 0x52ab +0x3966 0x53f7 +0x3967 0x5408 +0x3968 0x58d5 +0x3969 0x62f7 +0x396a 0x6fe0 +0x396b 0x8c6a +0x396c 0x8f5f +0x396d 0x9eb9 +0x396e 0x514b +0x396f 0x523b +0x3970 0x544a +0x3971 0x56fd +0x3972 0x7a40 +0x3973 0x9177 +0x3974 0x9d60 +0x3975 0x9ed2 +0x3976 0x7344 +0x3977 0x6f09 +0x3978 0x8170 +0x3979 0x7511 +0x397a 0x5ffd +0x397b 0x60da +0x397c 0x9aa8 +0x397d 0x72db +0x397e 0x8fbc +0x3a21 0x6b64 +0x3a22 0x9803 +0x3a23 0x4eca +0x3a24 0x56f0 +0x3a25 0x5764 +0x3a26 0x58be +0x3a27 0x5a5a +0x3a28 0x6068 +0x3a29 0x61c7 +0x3a2a 0x660f +0x3a2b 0x6606 +0x3a2c 0x6839 +0x3a2d 0x68b1 +0x3a2e 0x6df7 +0x3a2f 0x75d5 +0x3a30 0x7d3a +0x3a31 0x826e +0x3a32 0x9b42 +0x3a33 0x4e9b +0x3a34 0x4f50 +0x3a35 0x53c9 +0x3a36 0x5506 +0x3a37 0x5d6f +0x3a38 0x5de6 +0x3a39 0x5dee +0x3a3a 0x67fb +0x3a3b 0x6c99 +0x3a3c 0x7473 +0x3a3d 0x7802 +0x3a3e 0x8a50 +0x3a3f 0x9396 +0x3a40 0x88df +0x3a41 0x5750 +0x3a42 0x5ea7 +0x3a43 0x632b +0x3a44 0x50b5 +0x3a45 0x50ac +0x3a46 0x518d +0x3a47 0x6700 +0x3a48 0x54c9 +0x3a49 0x585e +0x3a4a 0x59bb +0x3a4b 0x5bb0 +0x3a4c 0x5f69 +0x3a4d 0x624d +0x3a4e 0x63a1 +0x3a4f 0x683d +0x3a50 0x6b73 +0x3a51 0x6e08 +0x3a52 0x707d +0x3a53 0x91c7 +0x3a54 0x7280 +0x3a55 0x7815 +0x3a56 0x7826 +0x3a57 0x796d +0x3a58 0x658e +0x3a59 0x7d30 +0x3a5a 0x83dc +0x3a5b 0x88c1 +0x3a5c 0x8f09 +0x3a5d 0x969b +0x3a5e 0x5264 +0x3a5f 0x5728 +0x3a60 0x6750 +0x3a61 0x7f6a +0x3a62 0x8ca1 +0x3a63 0x51b4 +0x3a64 0x5742 +0x3a65 0x962a +0x3a66 0x583a +0x3a67 0x698a +0x3a68 0x80b4 +0x3a69 0x54b2 +0x3a6a 0x5d0e +0x3a6b 0x57fc +0x3a6c 0x7895 +0x3a6d 0x9dfa +0x3a6e 0x4f5c +0x3a6f 0x524a +0x3a70 0x548b +0x3a71 0x643e +0x3a72 0x6628 +0x3a73 0x6714 +0x3a74 0x67f5 +0x3a75 0x7a84 +0x3a76 0x7b56 +0x3a77 0x7d22 +0x3a78 0x932f +0x3a79 0x685c +0x3a7a 0x9bad +0x3a7b 0x7b39 +0x3a7c 0x5319 +0x3a7d 0x518a +0x3a7e 0x5237 +0x3b21 0x5bdf +0x3b22 0x62f6 +0x3b23 0x64ae +0x3b24 0x64e6 +0x3b25 0x672d +0x3b26 0x6bba +0x3b27 0x85a9 +0x3b28 0x96d1 +0x3b29 0x7690 +0x3b2a 0x9bd6 +0x3b2b 0x634c +0x3b2c 0x9306 +0x3b2d 0x9bab +0x3b2e 0x76bf +0x3b2f 0x6652 +0x3b30 0x4e09 +0x3b31 0x5098 +0x3b32 0x53c2 +0x3b33 0x5c71 +0x3b34 0x60e8 +0x3b35 0x6492 +0x3b36 0x6563 +0x3b37 0x685f +0x3b38 0x71e6 +0x3b39 0x73ca +0x3b3a 0x7523 +0x3b3b 0x7b97 +0x3b3c 0x7e82 +0x3b3d 0x8695 +0x3b3e 0x8b83 +0x3b3f 0x8cdb +0x3b40 0x9178 +0x3b41 0x9910 +0x3b42 0x65ac +0x3b43 0x66ab +0x3b44 0x6b8b +0x3b45 0x4ed5 +0x3b46 0x4ed4 +0x3b47 0x4f3a +0x3b48 0x4f7f +0x3b49 0x523a +0x3b4a 0x53f8 +0x3b4b 0x53f2 +0x3b4c 0x55e3 +0x3b4d 0x56db +0x3b4e 0x58eb +0x3b4f 0x59cb +0x3b50 0x59c9 +0x3b51 0x59ff +0x3b52 0x5b50 +0x3b53 0x5c4d +0x3b54 0x5e02 +0x3b55 0x5e2b +0x3b56 0x5fd7 +0x3b57 0x601d +0x3b58 0x6307 +0x3b59 0x652f +0x3b5a 0x5b5c +0x3b5b 0x65af +0x3b5c 0x65bd +0x3b5d 0x65e8 +0x3b5e 0x679d +0x3b5f 0x6b62 +0x3b60 0x6b7b +0x3b61 0x6c0f +0x3b62 0x7345 +0x3b63 0x7949 +0x3b64 0x79c1 +0x3b65 0x7cf8 +0x3b66 0x7d19 +0x3b67 0x7d2b +0x3b68 0x80a2 +0x3b69 0x8102 +0x3b6a 0x81f3 +0x3b6b 0x8996 +0x3b6c 0x8a5e +0x3b6d 0x8a69 +0x3b6e 0x8a66 +0x3b6f 0x8a8c +0x3b70 0x8aee +0x3b71 0x8cc7 +0x3b72 0x8cdc +0x3b73 0x96cc +0x3b74 0x98fc +0x3b75 0x6b6f +0x3b76 0x4e8b +0x3b77 0x4f3c +0x3b78 0x4f8d +0x3b79 0x5150 +0x3b7a 0x5b57 +0x3b7b 0x5bfa +0x3b7c 0x6148 +0x3b7d 0x6301 +0x3b7e 0x6642 +0x3c21 0x6b21 +0x3c22 0x6ecb +0x3c23 0x6cbb +0x3c24 0x723e +0x3c25 0x74bd +0x3c26 0x75d4 +0x3c27 0x78c1 +0x3c28 0x793a +0x3c29 0x800c +0x3c2a 0x8033 +0x3c2b 0x81ea +0x3c2c 0x8494 +0x3c2d 0x8f9e +0x3c2e 0x6c50 +0x3c2f 0x9e7f +0x3c30 0x5f0f +0x3c31 0x8b58 +0x3c32 0x9d2b +0x3c33 0x7afa +0x3c34 0x8ef8 +0x3c35 0x5b8d +0x3c36 0x96eb +0x3c37 0x4e03 +0x3c38 0x53f1 +0x3c39 0x57f7 +0x3c3a 0x5931 +0x3c3b 0x5ac9 +0x3c3c 0x5ba4 +0x3c3d 0x6089 +0x3c3e 0x6e7f +0x3c3f 0x6f06 +0x3c40 0x75be +0x3c41 0x8cea +0x3c42 0x5b9f +0x3c43 0x8500 +0x3c44 0x7be0 +0x3c45 0x5072 +0x3c46 0x67f4 +0x3c47 0x829d +0x3c48 0x5c61 +0x3c49 0x854a +0x3c4a 0x7e1e +0x3c4b 0x820e +0x3c4c 0x5199 +0x3c4d 0x5c04 +0x3c4e 0x6368 +0x3c4f 0x8d66 +0x3c50 0x659c +0x3c51 0x716e +0x3c52 0x793e +0x3c53 0x7d17 +0x3c54 0x8005 +0x3c55 0x8b1d +0x3c56 0x8eca +0x3c57 0x906e +0x3c58 0x86c7 +0x3c59 0x90aa +0x3c5a 0x501f +0x3c5b 0x52fa +0x3c5c 0x5c3a +0x3c5d 0x6753 +0x3c5e 0x707c +0x3c5f 0x7235 +0x3c60 0x914c +0x3c61 0x91c8 +0x3c62 0x932b +0x3c63 0x82e5 +0x3c64 0x5bc2 +0x3c65 0x5f31 +0x3c66 0x60f9 +0x3c67 0x4e3b +0x3c68 0x53d6 +0x3c69 0x5b88 +0x3c6a 0x624b +0x3c6b 0x6731 +0x3c6c 0x6b8a +0x3c6d 0x72e9 +0x3c6e 0x73e0 +0x3c6f 0x7a2e +0x3c70 0x816b +0x3c71 0x8da3 +0x3c72 0x9152 +0x3c73 0x9996 +0x3c74 0x5112 +0x3c75 0x53d7 +0x3c76 0x546a +0x3c77 0x5bff +0x3c78 0x6388 +0x3c79 0x6a39 +0x3c7a 0x7dac +0x3c7b 0x9700 +0x3c7c 0x56da +0x3c7d 0x53ce +0x3c7e 0x5468 +0x3d21 0x5b97 +0x3d22 0x5c31 +0x3d23 0x5dde +0x3d24 0x4fee +0x3d25 0x6101 +0x3d26 0x62fe +0x3d27 0x6d32 +0x3d28 0x79c0 +0x3d29 0x79cb +0x3d2a 0x7d42 +0x3d2b 0x7e4d +0x3d2c 0x7fd2 +0x3d2d 0x81ed +0x3d2e 0x821f +0x3d2f 0x8490 +0x3d30 0x8846 +0x3d31 0x8972 +0x3d32 0x8b90 +0x3d33 0x8e74 +0x3d34 0x8f2f +0x3d35 0x9031 +0x3d36 0x914b +0x3d37 0x916c +0x3d38 0x96c6 +0x3d39 0x919c +0x3d3a 0x4ec0 +0x3d3b 0x4f4f +0x3d3c 0x5145 +0x3d3d 0x5341 +0x3d3e 0x5f93 +0x3d3f 0x620e +0x3d40 0x67d4 +0x3d41 0x6c41 +0x3d42 0x6e0b +0x3d43 0x7363 +0x3d44 0x7e26 +0x3d45 0x91cd +0x3d46 0x9283 +0x3d47 0x53d4 +0x3d48 0x5919 +0x3d49 0x5bbf +0x3d4a 0x6dd1 +0x3d4b 0x795d +0x3d4c 0x7e2e +0x3d4d 0x7c9b +0x3d4e 0x587e +0x3d4f 0x719f +0x3d50 0x51fa +0x3d51 0x8853 +0x3d52 0x8ff0 +0x3d53 0x4fca +0x3d54 0x5cfb +0x3d55 0x6625 +0x3d56 0x77ac +0x3d57 0x7ae3 +0x3d58 0x821c +0x3d59 0x99ff +0x3d5a 0x51c6 +0x3d5b 0x5faa +0x3d5c 0x65ec +0x3d5d 0x696f +0x3d5e 0x6b89 +0x3d5f 0x6df3 +0x3d60 0x6e96 +0x3d61 0x6f64 +0x3d62 0x76fe +0x3d63 0x7d14 +0x3d64 0x5de1 +0x3d65 0x9075 +0x3d66 0x9187 +0x3d67 0x9806 +0x3d68 0x51e6 +0x3d69 0x521d +0x3d6a 0x6240 +0x3d6b 0x6691 +0x3d6c 0x66d9 +0x3d6d 0x6e1a +0x3d6e 0x5eb6 +0x3d6f 0x7dd2 +0x3d70 0x7f72 +0x3d71 0x66f8 +0x3d72 0x85af +0x3d73 0x85f7 +0x3d74 0x8af8 +0x3d75 0x52a9 +0x3d76 0x53d9 +0x3d77 0x5973 +0x3d78 0x5e8f +0x3d79 0x5f90 +0x3d7a 0x6055 +0x3d7b 0x92e4 +0x3d7c 0x9664 +0x3d7d 0x50b7 +0x3d7e 0x511f +0x3e21 0x52dd +0x3e22 0x5320 +0x3e23 0x5347 +0x3e24 0x53ec +0x3e25 0x54e8 +0x3e26 0x5546 +0x3e27 0x5531 +0x3e28 0x5617 +0x3e29 0x5968 +0x3e2a 0x59be +0x3e2b 0x5a3c +0x3e2c 0x5bb5 +0x3e2d 0x5c06 +0x3e2e 0x5c0f +0x3e2f 0x5c11 +0x3e30 0x5c1a +0x3e31 0x5e84 +0x3e32 0x5e8a +0x3e33 0x5ee0 +0x3e34 0x5f70 +0x3e35 0x627f +0x3e36 0x6284 +0x3e37 0x62db +0x3e38 0x638c +0x3e39 0x6377 +0x3e3a 0x6607 +0x3e3b 0x660c +0x3e3c 0x662d +0x3e3d 0x6676 +0x3e3e 0x677e +0x3e3f 0x68a2 +0x3e40 0x6a1f +0x3e41 0x6a35 +0x3e42 0x6cbc +0x3e43 0x6d88 +0x3e44 0x6e09 +0x3e45 0x6e58 +0x3e46 0x713c +0x3e47 0x7126 +0x3e48 0x7167 +0x3e49 0x75c7 +0x3e4a 0x7701 +0x3e4b 0x785d +0x3e4c 0x7901 +0x3e4d 0x7965 +0x3e4e 0x79f0 +0x3e4f 0x7ae0 +0x3e50 0x7b11 +0x3e51 0x7ca7 +0x3e52 0x7d39 +0x3e53 0x8096 +0x3e54 0x83d6 +0x3e55 0x848b +0x3e56 0x8549 +0x3e57 0x885d +0x3e58 0x88f3 +0x3e59 0x8a1f +0x3e5a 0x8a3c +0x3e5b 0x8a54 +0x3e5c 0x8a73 +0x3e5d 0x8c61 +0x3e5e 0x8cde +0x3e5f 0x91a4 +0x3e60 0x9266 +0x3e61 0x937e +0x3e62 0x9418 +0x3e63 0x969c +0x3e64 0x9798 +0x3e65 0x4e0a +0x3e66 0x4e08 +0x3e67 0x4e1e +0x3e68 0x4e57 +0x3e69 0x5197 +0x3e6a 0x5270 +0x3e6b 0x57ce +0x3e6c 0x5834 +0x3e6d 0x58cc +0x3e6e 0x5b22 +0x3e6f 0x5e38 +0x3e70 0x60c5 +0x3e71 0x64fe +0x3e72 0x6761 +0x3e73 0x6756 +0x3e74 0x6d44 +0x3e75 0x72b6 +0x3e76 0x7573 +0x3e77 0x7a63 +0x3e78 0x84b8 +0x3e79 0x8b72 +0x3e7a 0x91b8 +0x3e7b 0x9320 +0x3e7c 0x5631 +0x3e7d 0x57f4 +0x3e7e 0x98fe +0x3f21 0x62ed +0x3f22 0x690d +0x3f23 0x6b96 +0x3f24 0x71ed +0x3f25 0x7e54 +0x3f26 0x8077 +0x3f27 0x8272 +0x3f28 0x89e6 +0x3f29 0x98df +0x3f2a 0x8755 +0x3f2b 0x8fb1 +0x3f2c 0x5c3b +0x3f2d 0x4f38 +0x3f2e 0x4fe1 +0x3f2f 0x4fb5 +0x3f30 0x5507 +0x3f31 0x5a20 +0x3f32 0x5bdd +0x3f33 0x5be9 +0x3f34 0x5fc3 +0x3f35 0x614e +0x3f36 0x632f +0x3f37 0x65b0 +0x3f38 0x664b +0x3f39 0x68ee +0x3f3a 0x699b +0x3f3b 0x6d78 +0x3f3c 0x6df1 +0x3f3d 0x7533 +0x3f3e 0x75b9 +0x3f3f 0x771f +0x3f40 0x795e +0x3f41 0x79e6 +0x3f42 0x7d33 +0x3f43 0x81e3 +0x3f44 0x82af +0x3f45 0x85aa +0x3f46 0x89aa +0x3f47 0x8a3a +0x3f48 0x8eab +0x3f49 0x8f9b +0x3f4a 0x9032 +0x3f4b 0x91dd +0x3f4c 0x9707 +0x3f4d 0x4eba +0x3f4e 0x4ec1 +0x3f4f 0x5203 +0x3f50 0x5875 +0x3f51 0x58ec +0x3f52 0x5c0b +0x3f53 0x751a +0x3f54 0x5c3d +0x3f55 0x814e +0x3f56 0x8a0a +0x3f57 0x8fc5 +0x3f58 0x9663 +0x3f59 0x976d +0x3f5a 0x7b25 +0x3f5b 0x8acf +0x3f5c 0x9808 +0x3f5d 0x9162 +0x3f5e 0x56f3 +0x3f5f 0x53a8 +0x3f60 0x9017 +0x3f61 0x5439 +0x3f62 0x5782 +0x3f63 0x5e25 +0x3f64 0x63a8 +0x3f65 0x6c34 +0x3f66 0x708a +0x3f67 0x7761 +0x3f68 0x7c8b +0x3f69 0x7fe0 +0x3f6a 0x8870 +0x3f6b 0x9042 +0x3f6c 0x9154 +0x3f6d 0x9310 +0x3f6e 0x9318 +0x3f6f 0x968f +0x3f70 0x745e +0x3f71 0x9ac4 +0x3f72 0x5d07 +0x3f73 0x5d69 +0x3f74 0x6570 +0x3f75 0x67a2 +0x3f76 0x8da8 +0x3f77 0x96db +0x3f78 0x636e +0x3f79 0x6749 +0x3f7a 0x6919 +0x3f7b 0x83c5 +0x3f7c 0x9817 +0x3f7d 0x96c0 +0x3f7e 0x88fe +0x4021 0x6f84 +0x4022 0x647a +0x4023 0x5bf8 +0x4024 0x4e16 +0x4025 0x702c +0x4026 0x755d +0x4027 0x662f +0x4028 0x51c4 +0x4029 0x5236 +0x402a 0x52e2 +0x402b 0x59d3 +0x402c 0x5f81 +0x402d 0x6027 +0x402e 0x6210 +0x402f 0x653f +0x4030 0x6574 +0x4031 0x661f +0x4032 0x6674 +0x4033 0x68f2 +0x4034 0x6816 +0x4035 0x6b63 +0x4036 0x6e05 +0x4037 0x7272 +0x4038 0x751f +0x4039 0x76db +0x403a 0x7cbe +0x403b 0x8056 +0x403c 0x58f0 +0x403d 0x88fd +0x403e 0x897f +0x403f 0x8aa0 +0x4040 0x8a93 +0x4041 0x8acb +0x4042 0x901d +0x4043 0x9192 +0x4044 0x9752 +0x4045 0x9759 +0x4046 0x6589 +0x4047 0x7a0e +0x4048 0x8106 +0x4049 0x96bb +0x404a 0x5e2d +0x404b 0x60dc +0x404c 0x621a +0x404d 0x65a5 +0x404e 0x6614 +0x404f 0x6790 +0x4050 0x77f3 +0x4051 0x7a4d +0x4052 0x7c4d +0x4053 0x7e3e +0x4054 0x810a +0x4055 0x8cac +0x4056 0x8d64 +0x4057 0x8de1 +0x4058 0x8e5f +0x4059 0x78a9 +0x405a 0x5207 +0x405b 0x62d9 +0x405c 0x63a5 +0x405d 0x6442 +0x405e 0x6298 +0x405f 0x8a2d +0x4060 0x7a83 +0x4061 0x7bc0 +0x4062 0x8aac +0x4063 0x96ea +0x4064 0x7d76 +0x4065 0x820c +0x4066 0x8749 +0x4067 0x4ed9 +0x4068 0x5148 +0x4069 0x5343 +0x406a 0x5360 +0x406b 0x5ba3 +0x406c 0x5c02 +0x406d 0x5c16 +0x406e 0x5ddd +0x406f 0x6226 +0x4070 0x6247 +0x4071 0x64b0 +0x4072 0x6813 +0x4073 0x6834 +0x4074 0x6cc9 +0x4075 0x6d45 +0x4076 0x6d17 +0x4077 0x67d3 +0x4078 0x6f5c +0x4079 0x714e +0x407a 0x717d +0x407b 0x65cb +0x407c 0x7a7f +0x407d 0x7bad +0x407e 0x7dda +0x4121 0x7e4a +0x4122 0x7fa8 +0x4123 0x817a +0x4124 0x821b +0x4125 0x8239 +0x4126 0x85a6 +0x4127 0x8a6e +0x4128 0x8cce +0x4129 0x8df5 +0x412a 0x9078 +0x412b 0x9077 +0x412c 0x92ad +0x412d 0x9291 +0x412e 0x9583 +0x412f 0x9bae +0x4130 0x524d +0x4131 0x5584 +0x4132 0x6f38 +0x4133 0x7136 +0x4134 0x5168 +0x4135 0x7985 +0x4136 0x7e55 +0x4137 0x81b3 +0x4138 0x7cce +0x4139 0x564c +0x413a 0x5851 +0x413b 0x5ca8 +0x413c 0x63aa +0x413d 0x66fe +0x413e 0x66fd +0x413f 0x695a +0x4140 0x72d9 +0x4141 0x758f +0x4142 0x758e +0x4143 0x790e +0x4144 0x7956 +0x4145 0x79df +0x4146 0x7c97 +0x4147 0x7d20 +0x4148 0x7d44 +0x4149 0x8607 +0x414a 0x8a34 +0x414b 0x963b +0x414c 0x9061 +0x414d 0x9f20 +0x414e 0x50e7 +0x414f 0x5275 +0x4150 0x53cc +0x4151 0x53e2 +0x4152 0x5009 +0x4153 0x55aa +0x4154 0x58ee +0x4155 0x594f +0x4156 0x723d +0x4157 0x5b8b +0x4158 0x5c64 +0x4159 0x531d +0x415a 0x60e3 +0x415b 0x60f3 +0x415c 0x635c +0x415d 0x6383 +0x415e 0x633f +0x415f 0x63bb +0x4160 0x64cd +0x4161 0x65e9 +0x4162 0x66f9 +0x4163 0x5de3 +0x4164 0x69cd +0x4165 0x69fd +0x4166 0x6f15 +0x4167 0x71e5 +0x4168 0x4e89 +0x4169 0x75e9 +0x416a 0x76f8 +0x416b 0x7a93 +0x416c 0x7cdf +0x416d 0x7dcf +0x416e 0x7d9c +0x416f 0x8061 +0x4170 0x8349 +0x4171 0x8358 +0x4172 0x846c +0x4173 0x84bc +0x4174 0x85fb +0x4175 0x88c5 +0x4176 0x8d70 +0x4177 0x9001 +0x4178 0x906d +0x4179 0x9397 +0x417a 0x971c +0x417b 0x9a12 +0x417c 0x50cf +0x417d 0x5897 +0x417e 0x618e +0x4221 0x81d3 +0x4222 0x8535 +0x4223 0x8d08 +0x4224 0x9020 +0x4225 0x4fc3 +0x4226 0x5074 +0x4227 0x5247 +0x4228 0x5373 +0x4229 0x606f +0x422a 0x6349 +0x422b 0x675f +0x422c 0x6e2c +0x422d 0x8db3 +0x422e 0x901f +0x422f 0x4fd7 +0x4230 0x5c5e +0x4231 0x8cca +0x4232 0x65cf +0x4233 0x7d9a +0x4234 0x5352 +0x4235 0x8896 +0x4236 0x5176 +0x4237 0x63c3 +0x4238 0x5b58 +0x4239 0x5b6b +0x423a 0x5c0a +0x423b 0x640d +0x423c 0x6751 +0x423d 0x905c +0x423e 0x4ed6 +0x423f 0x591a +0x4240 0x592a +0x4241 0x6c70 +0x4242 0x8a51 +0x4243 0x553e +0x4244 0x5815 +0x4245 0x59a5 +0x4246 0x60f0 +0x4247 0x6253 +0x4248 0x67c1 +0x4249 0x8235 +0x424a 0x6955 +0x424b 0x9640 +0x424c 0x99c4 +0x424d 0x9a28 +0x424e 0x4f53 +0x424f 0x5806 +0x4250 0x5bfe +0x4251 0x8010 +0x4252 0x5cb1 +0x4253 0x5e2f +0x4254 0x5f85 +0x4255 0x6020 +0x4256 0x614b +0x4257 0x6234 +0x4258 0x66ff +0x4259 0x6cf0 +0x425a 0x6ede +0x425b 0x80ce +0x425c 0x817f +0x425d 0x82d4 +0x425e 0x888b +0x425f 0x8cb8 +0x4260 0x9000 +0x4261 0x902e +0x4262 0x968a +0x4263 0x9edb +0x4264 0x9bdb +0x4265 0x4ee3 +0x4266 0x53f0 +0x4267 0x5927 +0x4268 0x7b2c +0x4269 0x918d +0x426a 0x984c +0x426b 0x9df9 +0x426c 0x6edd +0x426d 0x7027 +0x426e 0x5353 +0x426f 0x5544 +0x4270 0x5b85 +0x4271 0x6258 +0x4272 0x629e +0x4273 0x62d3 +0x4274 0x6ca2 +0x4275 0x6fef +0x4276 0x7422 +0x4277 0x8a17 +0x4278 0x9438 +0x4279 0x6fc1 +0x427a 0x8afe +0x427b 0x8338 +0x427c 0x51e7 +0x427d 0x86f8 +0x427e 0x53ea +0x4321 0x53e9 +0x4322 0x4f46 +0x4323 0x9054 +0x4324 0x8fb0 +0x4325 0x596a +0x4326 0x8131 +0x4327 0x5dfd +0x4328 0x7aea +0x4329 0x8fbf +0x432a 0x68da +0x432b 0x8c37 +0x432c 0x72f8 +0x432d 0x9c48 +0x432e 0x6a3d +0x432f 0x8ab0 +0x4330 0x4e39 +0x4331 0x5358 +0x4332 0x5606 +0x4333 0x5766 +0x4334 0x62c5 +0x4335 0x63a2 +0x4336 0x65e6 +0x4337 0x6b4e +0x4338 0x6de1 +0x4339 0x6e5b +0x433a 0x70ad +0x433b 0x77ed +0x433c 0x7aef +0x433d 0x7baa +0x433e 0x7dbb +0x433f 0x803d +0x4340 0x80c6 +0x4341 0x86cb +0x4342 0x8a95 +0x4343 0x935b +0x4344 0x56e3 +0x4345 0x58c7 +0x4346 0x5f3e +0x4347 0x65ad +0x4348 0x6696 +0x4349 0x6a80 +0x434a 0x6bb5 +0x434b 0x7537 +0x434c 0x8ac7 +0x434d 0x5024 +0x434e 0x77e5 +0x434f 0x5730 +0x4350 0x5f1b +0x4351 0x6065 +0x4352 0x667a +0x4353 0x6c60 +0x4354 0x75f4 +0x4355 0x7a1a +0x4356 0x7f6e +0x4357 0x81f4 +0x4358 0x8718 +0x4359 0x9045 +0x435a 0x99b3 +0x435b 0x7bc9 +0x435c 0x755c +0x435d 0x7af9 +0x435e 0x7b51 +0x435f 0x84c4 +0x4360 0x9010 +0x4361 0x79e9 +0x4362 0x7a92 +0x4363 0x8336 +0x4364 0x5ae1 +0x4365 0x7740 +0x4366 0x4e2d +0x4367 0x4ef2 +0x4368 0x5b99 +0x4369 0x5fe0 +0x436a 0x62bd +0x436b 0x663c +0x436c 0x67f1 +0x436d 0x6ce8 +0x436e 0x866b +0x436f 0x8877 +0x4370 0x8a3b +0x4371 0x914e +0x4372 0x92f3 +0x4373 0x99d0 +0x4374 0x6a17 +0x4375 0x7026 +0x4376 0x732a +0x4377 0x82e7 +0x4378 0x8457 +0x4379 0x8caf +0x437a 0x4e01 +0x437b 0x5146 +0x437c 0x51cb +0x437d 0x558b +0x437e 0x5bf5 +0x4421 0x5e16 +0x4422 0x5e33 +0x4423 0x5e81 +0x4424 0x5f14 +0x4425 0x5f35 +0x4426 0x5f6b +0x4427 0x5fb4 +0x4428 0x61f2 +0x4429 0x6311 +0x442a 0x66a2 +0x442b 0x671d +0x442c 0x6f6e +0x442d 0x7252 +0x442e 0x753a +0x442f 0x773a +0x4430 0x8074 +0x4431 0x8139 +0x4432 0x8178 +0x4433 0x8776 +0x4434 0x8abf +0x4435 0x8adc +0x4436 0x8d85 +0x4437 0x8df3 +0x4438 0x929a +0x4439 0x9577 +0x443a 0x9802 +0x443b 0x9ce5 +0x443c 0x52c5 +0x443d 0x6357 +0x443e 0x76f4 +0x443f 0x6715 +0x4440 0x6c88 +0x4441 0x73cd +0x4442 0x8cc3 +0x4443 0x93ae +0x4444 0x9673 +0x4445 0x6d25 +0x4446 0x589c +0x4447 0x690e +0x4448 0x69cc +0x4449 0x8ffd +0x444a 0x939a +0x444b 0x75db +0x444c 0x901a +0x444d 0x585a +0x444e 0x6802 +0x444f 0x63b4 +0x4450 0x69fb +0x4451 0x4f43 +0x4452 0x6f2c +0x4453 0x67d8 +0x4454 0x8fbb +0x4455 0x8526 +0x4456 0x7db4 +0x4457 0x9354 +0x4458 0x693f +0x4459 0x6f70 +0x445a 0x576a +0x445b 0x58f7 +0x445c 0x5b2c +0x445d 0x7d2c +0x445e 0x722a +0x445f 0x540a +0x4460 0x91e3 +0x4461 0x9db4 +0x4462 0x4ead +0x4463 0x4f4e +0x4464 0x505c +0x4465 0x5075 +0x4466 0x5243 +0x4467 0x8c9e +0x4468 0x5448 +0x4469 0x5824 +0x446a 0x5b9a +0x446b 0x5e1d +0x446c 0x5e95 +0x446d 0x5ead +0x446e 0x5ef7 +0x446f 0x5f1f +0x4470 0x608c +0x4471 0x62b5 +0x4472 0x633a +0x4473 0x63d0 +0x4474 0x68af +0x4475 0x6c40 +0x4476 0x7887 +0x4477 0x798e +0x4478 0x7a0b +0x4479 0x7de0 +0x447a 0x8247 +0x447b 0x8a02 +0x447c 0x8ae6 +0x447d 0x8e44 +0x447e 0x9013 +0x4521 0x90b8 +0x4522 0x912d +0x4523 0x91d8 +0x4524 0x9f0e +0x4525 0x6ce5 +0x4526 0x6458 +0x4527 0x64e2 +0x4528 0x6575 +0x4529 0x6ef4 +0x452a 0x7684 +0x452b 0x7b1b +0x452c 0x9069 +0x452d 0x93d1 +0x452e 0x6eba +0x452f 0x54f2 +0x4530 0x5fb9 +0x4531 0x64a4 +0x4532 0x8f4d +0x4533 0x8fed +0x4534 0x9244 +0x4535 0x5178 +0x4536 0x586b +0x4537 0x5929 +0x4538 0x5c55 +0x4539 0x5e97 +0x453a 0x6dfb +0x453b 0x7e8f +0x453c 0x751c +0x453d 0x8cbc +0x453e 0x8ee2 +0x453f 0x985b +0x4540 0x70b9 +0x4541 0x4f1d +0x4542 0x6bbf +0x4543 0x6fb1 +0x4544 0x7530 +0x4545 0x96fb +0x4546 0x514e +0x4547 0x5410 +0x4548 0x5835 +0x4549 0x5857 +0x454a 0x59ac +0x454b 0x5c60 +0x454c 0x5f92 +0x454d 0x6597 +0x454e 0x675c +0x454f 0x6e21 +0x4550 0x767b +0x4551 0x83df +0x4552 0x8ced +0x4553 0x9014 +0x4554 0x90fd +0x4555 0x934d +0x4556 0x7825 +0x4557 0x783a +0x4558 0x52aa +0x4559 0x5ea6 +0x455a 0x571f +0x455b 0x5974 +0x455c 0x6012 +0x455d 0x5012 +0x455e 0x515a +0x455f 0x51ac +0x4560 0x51cd +0x4561 0x5200 +0x4562 0x5510 +0x4563 0x5854 +0x4564 0x5858 +0x4565 0x5957 +0x4566 0x5b95 +0x4567 0x5cf6 +0x4568 0x5d8b +0x4569 0x60bc +0x456a 0x6295 +0x456b 0x642d +0x456c 0x6771 +0x456d 0x6843 +0x456e 0x68bc +0x456f 0x68df +0x4570 0x76d7 +0x4571 0x6dd8 +0x4572 0x6e6f +0x4573 0x6d9b +0x4574 0x706f +0x4575 0x71c8 +0x4576 0x5f53 +0x4577 0x75d8 +0x4578 0x7977 +0x4579 0x7b49 +0x457a 0x7b54 +0x457b 0x7b52 +0x457c 0x7cd6 +0x457d 0x7d71 +0x457e 0x5230 +0x4621 0x8463 +0x4622 0x8569 +0x4623 0x85e4 +0x4624 0x8a0e +0x4625 0x8b04 +0x4626 0x8c46 +0x4627 0x8e0f +0x4628 0x9003 +0x4629 0x900f +0x462a 0x9419 +0x462b 0x9676 +0x462c 0x982d +0x462d 0x9a30 +0x462e 0x95d8 +0x462f 0x50cd +0x4630 0x52d5 +0x4631 0x540c +0x4632 0x5802 +0x4633 0x5c0e +0x4634 0x61a7 +0x4635 0x649e +0x4636 0x6d1e +0x4637 0x77b3 +0x4638 0x7ae5 +0x4639 0x80f4 +0x463a 0x8404 +0x463b 0x9053 +0x463c 0x9285 +0x463d 0x5ce0 +0x463e 0x9d07 +0x463f 0x533f +0x4640 0x5f97 +0x4641 0x5fb3 +0x4642 0x6d9c +0x4643 0x7279 +0x4644 0x7763 +0x4645 0x79bf +0x4646 0x7be4 +0x4647 0x6bd2 +0x4648 0x72ec +0x4649 0x8aad +0x464a 0x6803 +0x464b 0x6a61 +0x464c 0x51f8 +0x464d 0x7a81 +0x464e 0x6934 +0x464f 0x5c4a +0x4650 0x9cf6 +0x4651 0x82eb +0x4652 0x5bc5 +0x4653 0x9149 +0x4654 0x701e +0x4655 0x5678 +0x4656 0x5c6f +0x4657 0x60c7 +0x4658 0x6566 +0x4659 0x6c8c +0x465a 0x8c5a +0x465b 0x9041 +0x465c 0x9813 +0x465d 0x5451 +0x465e 0x66c7 +0x465f 0x920d +0x4660 0x5948 +0x4661 0x90a3 +0x4662 0x5185 +0x4663 0x4e4d +0x4664 0x51ea +0x4665 0x8599 +0x4666 0x8b0e +0x4667 0x7058 +0x4668 0x637a +0x4669 0x934b +0x466a 0x6962 +0x466b 0x99b4 +0x466c 0x7e04 +0x466d 0x7577 +0x466e 0x5357 +0x466f 0x6960 +0x4670 0x8edf +0x4671 0x96e3 +0x4672 0x6c5d +0x4673 0x4e8c +0x4674 0x5c3c +0x4675 0x5f10 +0x4676 0x8fe9 +0x4677 0x5302 +0x4678 0x8cd1 +0x4679 0x8089 +0x467a 0x8679 +0x467b 0x5eff +0x467c 0x65e5 +0x467d 0x4e73 +0x467e 0x5165 +0x4721 0x5982 +0x4722 0x5c3f +0x4723 0x97ee +0x4724 0x4efb +0x4725 0x598a +0x4726 0x5fcd +0x4727 0x8a8d +0x4728 0x6fe1 +0x4729 0x79b0 +0x472a 0x7962 +0x472b 0x5be7 +0x472c 0x8471 +0x472d 0x732b +0x472e 0x71b1 +0x472f 0x5e74 +0x4730 0x5ff5 +0x4731 0x637b +0x4732 0x649a +0x4733 0x71c3 +0x4734 0x7c98 +0x4735 0x4e43 +0x4736 0x5efc +0x4737 0x4e4b +0x4738 0x57dc +0x4739 0x56a2 +0x473a 0x60a9 +0x473b 0x6fc3 +0x473c 0x7d0d +0x473d 0x80fd +0x473e 0x8133 +0x473f 0x81bf +0x4740 0x8fb2 +0x4741 0x8997 +0x4742 0x86a4 +0x4743 0x5df4 +0x4744 0x628a +0x4745 0x64ad +0x4746 0x8987 +0x4747 0x6777 +0x4748 0x6ce2 +0x4749 0x6d3e +0x474a 0x7436 +0x474b 0x7834 +0x474c 0x5a46 +0x474d 0x7f75 +0x474e 0x82ad +0x474f 0x99ac +0x4750 0x4ff3 +0x4751 0x5ec3 +0x4752 0x62dd +0x4753 0x6392 +0x4754 0x6557 +0x4755 0x676f +0x4756 0x76c3 +0x4757 0x724c +0x4758 0x80cc +0x4759 0x80ba +0x475a 0x8f29 +0x475b 0x914d +0x475c 0x500d +0x475d 0x57f9 +0x475e 0x5a92 +0x475f 0x6885 +0x4760 0x6973 +0x4761 0x7164 +0x4762 0x72fd +0x4763 0x8cb7 +0x4764 0x58f2 +0x4765 0x8ce0 +0x4766 0x966a +0x4767 0x9019 +0x4768 0x877f +0x4769 0x79e4 +0x476a 0x77e7 +0x476b 0x8429 +0x476c 0x4f2f +0x476d 0x5265 +0x476e 0x535a +0x476f 0x62cd +0x4770 0x67cf +0x4771 0x6cca +0x4772 0x767d +0x4773 0x7b94 +0x4774 0x7c95 +0x4775 0x8236 +0x4776 0x8584 +0x4777 0x8feb +0x4778 0x66dd +0x4779 0x6f20 +0x477a 0x7206 +0x477b 0x7e1b +0x477c 0x83ab +0x477d 0x99c1 +0x477e 0x9ea6 +0x4821 0x51fd +0x4822 0x7bb1 +0x4823 0x7872 +0x4824 0x7bb8 +0x4825 0x8087 +0x4826 0x7b48 +0x4827 0x6ae8 +0x4828 0x5e61 +0x4829 0x808c +0x482a 0x7551 +0x482b 0x7560 +0x482c 0x516b +0x482d 0x9262 +0x482e 0x6e8c +0x482f 0x767a +0x4830 0x9197 +0x4831 0x9aea +0x4832 0x4f10 +0x4833 0x7f70 +0x4834 0x629c +0x4835 0x7b4f +0x4836 0x95a5 +0x4837 0x9ce9 +0x4838 0x567a +0x4839 0x5859 +0x483a 0x86e4 +0x483b 0x96bc +0x483c 0x4f34 +0x483d 0x5224 +0x483e 0x534a +0x483f 0x53cd +0x4840 0x53db +0x4841 0x5e06 +0x4842 0x642c +0x4843 0x6591 +0x4844 0x677f +0x4845 0x6c3e +0x4846 0x6c4e +0x4847 0x7248 +0x4848 0x72af +0x4849 0x73ed +0x484a 0x7554 +0x484b 0x7e41 +0x484c 0x822c +0x484d 0x85e9 +0x484e 0x8ca9 +0x484f 0x7bc4 +0x4850 0x91c6 +0x4851 0x7169 +0x4852 0x9812 +0x4853 0x98ef +0x4854 0x633d +0x4855 0x6669 +0x4856 0x756a +0x4857 0x76e4 +0x4858 0x78d0 +0x4859 0x8543 +0x485a 0x86ee +0x485b 0x532a +0x485c 0x5351 +0x485d 0x5426 +0x485e 0x5983 +0x485f 0x5e87 +0x4860 0x5f7c +0x4861 0x60b2 +0x4862 0x6249 +0x4863 0x6279 +0x4864 0x62ab +0x4865 0x6590 +0x4866 0x6bd4 +0x4867 0x6ccc +0x4868 0x75b2 +0x4869 0x76ae +0x486a 0x7891 +0x486b 0x79d8 +0x486c 0x7dcb +0x486d 0x7f77 +0x486e 0x80a5 +0x486f 0x88ab +0x4870 0x8ab9 +0x4871 0x8cbb +0x4872 0x907f +0x4873 0x975e +0x4874 0x98db +0x4875 0x6a0b +0x4876 0x7c38 +0x4877 0x5099 +0x4878 0x5c3e +0x4879 0x5fae +0x487a 0x6787 +0x487b 0x6bd8 +0x487c 0x7435 +0x487d 0x7709 +0x487e 0x7f8e +0x4921 0x9f3b +0x4922 0x67ca +0x4923 0x7a17 +0x4924 0x5339 +0x4925 0x758b +0x4926 0x9aed +0x4927 0x5f66 +0x4928 0x819d +0x4929 0x83f1 +0x492a 0x8098 +0x492b 0x5f3c +0x492c 0x5fc5 +0x492d 0x7562 +0x492e 0x7b46 +0x492f 0x903c +0x4930 0x6867 +0x4931 0x59eb +0x4932 0x5a9b +0x4933 0x7d10 +0x4934 0x767e +0x4935 0x8b2c +0x4936 0x4ff5 +0x4937 0x5f6a +0x4938 0x6a19 +0x4939 0x6c37 +0x493a 0x6f02 +0x493b 0x74e2 +0x493c 0x7968 +0x493d 0x8868 +0x493e 0x8a55 +0x493f 0x8c79 +0x4940 0x5edf +0x4941 0x63cf +0x4942 0x75c5 +0x4943 0x79d2 +0x4944 0x82d7 +0x4945 0x9328 +0x4946 0x92f2 +0x4947 0x849c +0x4948 0x86ed +0x4949 0x9c2d +0x494a 0x54c1 +0x494b 0x5f6c +0x494c 0x658c +0x494d 0x6d5c +0x494e 0x7015 +0x494f 0x8ca7 +0x4950 0x8cd3 +0x4951 0x983b +0x4952 0x654f +0x4953 0x74f6 +0x4954 0x4e0d +0x4955 0x4ed8 +0x4956 0x57e0 +0x4957 0x592b +0x4958 0x5a66 +0x4959 0x5bcc +0x495a 0x51a8 +0x495b 0x5e03 +0x495c 0x5e9c +0x495d 0x6016 +0x495e 0x6276 +0x495f 0x6577 +0x4960 0x65a7 +0x4961 0x666e +0x4962 0x6d6e +0x4963 0x7236 +0x4964 0x7b26 +0x4965 0x8150 +0x4966 0x819a +0x4967 0x8299 +0x4968 0x8b5c +0x4969 0x8ca0 +0x496a 0x8ce6 +0x496b 0x8d74 +0x496c 0x961c +0x496d 0x9644 +0x496e 0x4fae +0x496f 0x64ab +0x4970 0x6b66 +0x4971 0x821e +0x4972 0x8461 +0x4973 0x856a +0x4974 0x90e8 +0x4975 0x5c01 +0x4976 0x6953 +0x4977 0x98a8 +0x4978 0x847a +0x4979 0x8557 +0x497a 0x4f0f +0x497b 0x526f +0x497c 0x5fa9 +0x497d 0x5e45 +0x497e 0x670d +0x4a21 0x798f +0x4a22 0x8179 +0x4a23 0x8907 +0x4a24 0x8986 +0x4a25 0x6df5 +0x4a26 0x5f17 +0x4a27 0x6255 +0x4a28 0x6cb8 +0x4a29 0x4ecf +0x4a2a 0x7269 +0x4a2b 0x9b92 +0x4a2c 0x5206 +0x4a2d 0x543b +0x4a2e 0x5674 +0x4a2f 0x58b3 +0x4a30 0x61a4 +0x4a31 0x626e +0x4a32 0x711a +0x4a33 0x596e +0x4a34 0x7c89 +0x4a35 0x7cde +0x4a36 0x7d1b +0x4a37 0x96f0 +0x4a38 0x6587 +0x4a39 0x805e +0x4a3a 0x4e19 +0x4a3b 0x4f75 +0x4a3c 0x5175 +0x4a3d 0x5840 +0x4a3e 0x5e63 +0x4a3f 0x5e73 +0x4a40 0x5f0a +0x4a41 0x67c4 +0x4a42 0x4e26 +0x4a43 0x853d +0x4a44 0x9589 +0x4a45 0x965b +0x4a46 0x7c73 +0x4a47 0x9801 +0x4a48 0x50fb +0x4a49 0x58c1 +0x4a4a 0x7656 +0x4a4b 0x78a7 +0x4a4c 0x5225 +0x4a4d 0x77a5 +0x4a4e 0x8511 +0x4a4f 0x7b86 +0x4a50 0x504f +0x4a51 0x5909 +0x4a52 0x7247 +0x4a53 0x7bc7 +0x4a54 0x7de8 +0x4a55 0x8fba +0x4a56 0x8fd4 +0x4a57 0x904d +0x4a58 0x4fbf +0x4a59 0x52c9 +0x4a5a 0x5a29 +0x4a5b 0x5f01 +0x4a5c 0x97ad +0x4a5d 0x4fdd +0x4a5e 0x8217 +0x4a5f 0x92ea +0x4a60 0x5703 +0x4a61 0x6355 +0x4a62 0x6b69 +0x4a63 0x752b +0x4a64 0x88dc +0x4a65 0x8f14 +0x4a66 0x7a42 +0x4a67 0x52df +0x4a68 0x5893 +0x4a69 0x6155 +0x4a6a 0x620a +0x4a6b 0x66ae +0x4a6c 0x6bcd +0x4a6d 0x7c3f +0x4a6e 0x83e9 +0x4a6f 0x5023 +0x4a70 0x4ff8 +0x4a71 0x5305 +0x4a72 0x5446 +0x4a73 0x5831 +0x4a74 0x5949 +0x4a75 0x5b9d +0x4a76 0x5cf0 +0x4a77 0x5cef +0x4a78 0x5d29 +0x4a79 0x5e96 +0x4a7a 0x62b1 +0x4a7b 0x6367 +0x4a7c 0x653e +0x4a7d 0x65b9 +0x4a7e 0x670b +0x4b21 0x6cd5 +0x4b22 0x6ce1 +0x4b23 0x70f9 +0x4b24 0x7832 +0x4b25 0x7e2b +0x4b26 0x80de +0x4b27 0x82b3 +0x4b28 0x840c +0x4b29 0x84ec +0x4b2a 0x8702 +0x4b2b 0x8912 +0x4b2c 0x8a2a +0x4b2d 0x8c4a +0x4b2e 0x90a6 +0x4b2f 0x92d2 +0x4b30 0x98fd +0x4b31 0x9cf3 +0x4b32 0x9d6c +0x4b33 0x4e4f +0x4b34 0x4ea1 +0x4b35 0x508d +0x4b36 0x5256 +0x4b37 0x574a +0x4b38 0x59a8 +0x4b39 0x5e3d +0x4b3a 0x5fd8 +0x4b3b 0x5fd9 +0x4b3c 0x623f +0x4b3d 0x66b4 +0x4b3e 0x671b +0x4b3f 0x67d0 +0x4b40 0x68d2 +0x4b41 0x5192 +0x4b42 0x7d21 +0x4b43 0x80aa +0x4b44 0x81a8 +0x4b45 0x8b00 +0x4b46 0x8c8c +0x4b47 0x8cbf +0x4b48 0x927e +0x4b49 0x9632 +0x4b4a 0x5420 +0x4b4b 0x982c +0x4b4c 0x5317 +0x4b4d 0x50d5 +0x4b4e 0x535c +0x4b4f 0x58a8 +0x4b50 0x64b2 +0x4b51 0x6734 +0x4b52 0x7267 +0x4b53 0x7766 +0x4b54 0x7a46 +0x4b55 0x91e6 +0x4b56 0x52c3 +0x4b57 0x6ca1 +0x4b58 0x6b86 +0x4b59 0x5800 +0x4b5a 0x5e4c +0x4b5b 0x5954 +0x4b5c 0x672c +0x4b5d 0x7ffb +0x4b5e 0x51e1 +0x4b5f 0x76c6 +0x4b60 0x6469 +0x4b61 0x78e8 +0x4b62 0x9b54 +0x4b63 0x9ebb +0x4b64 0x57cb +0x4b65 0x59b9 +0x4b66 0x6627 +0x4b67 0x679a +0x4b68 0x6bce +0x4b69 0x54e9 +0x4b6a 0x69d9 +0x4b6b 0x5e55 +0x4b6c 0x819c +0x4b6d 0x6795 +0x4b6e 0x9baa +0x4b6f 0x67fe +0x4b70 0x9c52 +0x4b71 0x685d +0x4b72 0x4ea6 +0x4b73 0x4fe3 +0x4b74 0x53c8 +0x4b75 0x62b9 +0x4b76 0x672b +0x4b77 0x6cab +0x4b78 0x8fc4 +0x4b79 0x4fad +0x4b7a 0x7e6d +0x4b7b 0x9ebf +0x4b7c 0x4e07 +0x4b7d 0x6162 +0x4b7e 0x6e80 +0x4c21 0x6f2b +0x4c22 0x8513 +0x4c23 0x5473 +0x4c24 0x672a +0x4c25 0x9b45 +0x4c26 0x5df3 +0x4c27 0x7b95 +0x4c28 0x5cac +0x4c29 0x5bc6 +0x4c2a 0x871c +0x4c2b 0x6e4a +0x4c2c 0x84d1 +0x4c2d 0x7a14 +0x4c2e 0x8108 +0x4c2f 0x5999 +0x4c30 0x7c8d +0x4c31 0x6c11 +0x4c32 0x7720 +0x4c33 0x52d9 +0x4c34 0x5922 +0x4c35 0x7121 +0x4c36 0x725f +0x4c37 0x77db +0x4c38 0x9727 +0x4c39 0x9d61 +0x4c3a 0x690b +0x4c3b 0x5a7f +0x4c3c 0x5a18 +0x4c3d 0x51a5 +0x4c3e 0x540d +0x4c3f 0x547d +0x4c40 0x660e +0x4c41 0x76df +0x4c42 0x8ff7 +0x4c43 0x9298 +0x4c44 0x9cf4 +0x4c45 0x59ea +0x4c46 0x725d +0x4c47 0x6ec5 +0x4c48 0x514d +0x4c49 0x68c9 +0x4c4a 0x7dbf +0x4c4b 0x7dec +0x4c4c 0x9762 +0x4c4d 0x9eba +0x4c4e 0x6478 +0x4c4f 0x6a21 +0x4c50 0x8302 +0x4c51 0x5984 +0x4c52 0x5b5f +0x4c53 0x6bdb +0x4c54 0x731b +0x4c55 0x76f2 +0x4c56 0x7db2 +0x4c57 0x8017 +0x4c58 0x8499 +0x4c59 0x5132 +0x4c5a 0x6728 +0x4c5b 0x9ed9 +0x4c5c 0x76ee +0x4c5d 0x6762 +0x4c5e 0x52ff +0x4c5f 0x9905 +0x4c60 0x5c24 +0x4c61 0x623b +0x4c62 0x7c7e +0x4c63 0x8cb0 +0x4c64 0x554f +0x4c65 0x60b6 +0x4c66 0x7d0b +0x4c67 0x9580 +0x4c68 0x5301 +0x4c69 0x4e5f +0x4c6a 0x51b6 +0x4c6b 0x591c +0x4c6c 0x723a +0x4c6d 0x8036 +0x4c6e 0x91ce +0x4c6f 0x5f25 +0x4c70 0x77e2 +0x4c71 0x5384 +0x4c72 0x5f79 +0x4c73 0x7d04 +0x4c74 0x85ac +0x4c75 0x8a33 +0x4c76 0x8e8d +0x4c77 0x9756 +0x4c78 0x67f3 +0x4c79 0x85ae +0x4c7a 0x9453 +0x4c7b 0x6109 +0x4c7c 0x6108 +0x4c7d 0x6cb9 +0x4c7e 0x7652 +0x4d21 0x8aed +0x4d22 0x8f38 +0x4d23 0x552f +0x4d24 0x4f51 +0x4d25 0x512a +0x4d26 0x52c7 +0x4d27 0x53cb +0x4d28 0x5ba5 +0x4d29 0x5e7d +0x4d2a 0x60a0 +0x4d2b 0x6182 +0x4d2c 0x63d6 +0x4d2d 0x6709 +0x4d2e 0x67da +0x4d2f 0x6e67 +0x4d30 0x6d8c +0x4d31 0x7336 +0x4d32 0x7337 +0x4d33 0x7531 +0x4d34 0x7950 +0x4d35 0x88d5 +0x4d36 0x8a98 +0x4d37 0x904a +0x4d38 0x9091 +0x4d39 0x90f5 +0x4d3a 0x96c4 +0x4d3b 0x878d +0x4d3c 0x5915 +0x4d3d 0x4e88 +0x4d3e 0x4f59 +0x4d3f 0x4e0e +0x4d40 0x8a89 +0x4d41 0x8f3f +0x4d42 0x9810 +0x4d43 0x50ad +0x4d44 0x5e7c +0x4d45 0x5996 +0x4d46 0x5bb9 +0x4d47 0x5eb8 +0x4d48 0x63da +0x4d49 0x63fa +0x4d4a 0x64c1 +0x4d4b 0x66dc +0x4d4c 0x694a +0x4d4d 0x69d8 +0x4d4e 0x6d0b +0x4d4f 0x6eb6 +0x4d50 0x7194 +0x4d51 0x7528 +0x4d52 0x7aaf +0x4d53 0x7f8a +0x4d54 0x8000 +0x4d55 0x8449 +0x4d56 0x84c9 +0x4d57 0x8981 +0x4d58 0x8b21 +0x4d59 0x8e0a +0x4d5a 0x9065 +0x4d5b 0x967d +0x4d5c 0x990a +0x4d5d 0x617e +0x4d5e 0x6291 +0x4d5f 0x6b32 +0x4d60 0x6c83 +0x4d61 0x6d74 +0x4d62 0x7fcc +0x4d63 0x7ffc +0x4d64 0x6dc0 +0x4d65 0x7f85 +0x4d66 0x87ba +0x4d67 0x88f8 +0x4d68 0x6765 +0x4d69 0x83b1 +0x4d6a 0x983c +0x4d6b 0x96f7 +0x4d6c 0x6d1b +0x4d6d 0x7d61 +0x4d6e 0x843d +0x4d6f 0x916a +0x4d70 0x4e71 +0x4d71 0x5375 +0x4d72 0x5d50 +0x4d73 0x6b04 +0x4d74 0x6feb +0x4d75 0x85cd +0x4d76 0x862d +0x4d77 0x89a7 +0x4d78 0x5229 +0x4d79 0x540f +0x4d7a 0x5c65 +0x4d7b 0x674e +0x4d7c 0x68a8 +0x4d7d 0x7406 +0x4d7e 0x7483 +0x4e21 0x75e2 +0x4e22 0x88cf +0x4e23 0x88e1 +0x4e24 0x91cc +0x4e25 0x96e2 +0x4e26 0x9678 +0x4e27 0x5f8b +0x4e28 0x7387 +0x4e29 0x7acb +0x4e2a 0x844e +0x4e2b 0x63a0 +0x4e2c 0x7565 +0x4e2d 0x5289 +0x4e2e 0x6d41 +0x4e2f 0x6e9c +0x4e30 0x7409 +0x4e31 0x7559 +0x4e32 0x786b +0x4e33 0x7c92 +0x4e34 0x9686 +0x4e35 0x7adc +0x4e36 0x9f8d +0x4e37 0x4fb6 +0x4e38 0x616e +0x4e39 0x65c5 +0x4e3a 0x865c +0x4e3b 0x4e86 +0x4e3c 0x4eae +0x4e3d 0x50da +0x4e3e 0x4e21 +0x4e3f 0x51cc +0x4e40 0x5bee +0x4e41 0x6599 +0x4e42 0x6881 +0x4e43 0x6dbc +0x4e44 0x731f +0x4e45 0x7642 +0x4e46 0x77ad +0x4e47 0x7a1c +0x4e48 0x7ce7 +0x4e49 0x826f +0x4e4a 0x8ad2 +0x4e4b 0x907c +0x4e4c 0x91cf +0x4e4d 0x9675 +0x4e4e 0x9818 +0x4e4f 0x529b +0x4e50 0x7dd1 +0x4e51 0x502b +0x4e52 0x5398 +0x4e53 0x6797 +0x4e54 0x6dcb +0x4e55 0x71d0 +0x4e56 0x7433 +0x4e57 0x81e8 +0x4e58 0x8f2a +0x4e59 0x96a3 +0x4e5a 0x9c57 +0x4e5b 0x9e9f +0x4e5c 0x7460 +0x4e5d 0x5841 +0x4e5e 0x6d99 +0x4e5f 0x7d2f +0x4e60 0x985e +0x4e61 0x4ee4 +0x4e62 0x4f36 +0x4e63 0x4f8b +0x4e64 0x51b7 +0x4e65 0x52b1 +0x4e66 0x5dba +0x4e67 0x601c +0x4e68 0x73b2 +0x4e69 0x793c +0x4e6a 0x82d3 +0x4e6b 0x9234 +0x4e6c 0x96b7 +0x4e6d 0x96f6 +0x4e6e 0x970a +0x4e6f 0x9e97 +0x4e70 0x9f62 +0x4e71 0x66a6 +0x4e72 0x6b74 +0x4e73 0x5217 +0x4e74 0x52a3 +0x4e75 0x70c8 +0x4e76 0x88c2 +0x4e77 0x5ec9 +0x4e78 0x604b +0x4e79 0x6190 +0x4e7a 0x6f23 +0x4e7b 0x7149 +0x4e7c 0x7c3e +0x4e7d 0x7df4 +0x4e7e 0x806f +0x4f21 0x84ee +0x4f22 0x9023 +0x4f23 0x932c +0x4f24 0x5442 +0x4f25 0x9b6f +0x4f26 0x6ad3 +0x4f27 0x7089 +0x4f28 0x8cc2 +0x4f29 0x8def +0x4f2a 0x9732 +0x4f2b 0x52b4 +0x4f2c 0x5a41 +0x4f2d 0x5eca +0x4f2e 0x5f04 +0x4f2f 0x6717 +0x4f30 0x697c +0x4f31 0x6994 +0x4f32 0x6d6a +0x4f33 0x6f0f +0x4f34 0x7262 +0x4f35 0x72fc +0x4f36 0x7bed +0x4f37 0x8001 +0x4f38 0x807e +0x4f39 0x874b +0x4f3a 0x90ce +0x4f3b 0x516d +0x4f3c 0x9e93 +0x4f3d 0x7984 +0x4f3e 0x808b +0x4f3f 0x9332 +0x4f40 0x8ad6 +0x4f41 0x502d +0x4f42 0x548c +0x4f43 0x8a71 +0x4f44 0x6b6a +0x4f45 0x8cc4 +0x4f46 0x8107 +0x4f47 0x60d1 +0x4f48 0x67a0 +0x4f49 0x9df2 +0x4f4a 0x4e99 +0x4f4b 0x4e98 +0x4f4c 0x9c10 +0x4f4d 0x8a6b +0x4f4e 0x85c1 +0x4f4f 0x8568 +0x4f50 0x6900 +0x4f51 0x6e7e +0x4f52 0x7897 +0x4f53 0x8155 +0x5021 0x5f0c +0x5022 0x4e10 +0x5023 0x4e15 +0x5024 0x4e2a +0x5025 0x4e31 +0x5026 0x4e36 +0x5027 0x4e3c +0x5028 0x4e3f +0x5029 0x4e42 +0x502a 0x4e56 +0x502b 0x4e58 +0x502c 0x4e82 +0x502d 0x4e85 +0x502e 0x8c6b +0x502f 0x4e8a +0x5030 0x8212 +0x5031 0x5f0d +0x5032 0x4e8e +0x5033 0x4e9e +0x5034 0x4e9f +0x5035 0x4ea0 +0x5036 0x4ea2 +0x5037 0x4eb0 +0x5038 0x4eb3 +0x5039 0x4eb6 +0x503a 0x4ece +0x503b 0x4ecd +0x503c 0x4ec4 +0x503d 0x4ec6 +0x503e 0x4ec2 +0x503f 0x4ed7 +0x5040 0x4ede +0x5041 0x4eed +0x5042 0x4edf +0x5043 0x4ef7 +0x5044 0x4f09 +0x5045 0x4f5a +0x5046 0x4f30 +0x5047 0x4f5b +0x5048 0x4f5d +0x5049 0x4f57 +0x504a 0x4f47 +0x504b 0x4f76 +0x504c 0x4f88 +0x504d 0x4f8f +0x504e 0x4f98 +0x504f 0x4f7b +0x5050 0x4f69 +0x5051 0x4f70 +0x5052 0x4f91 +0x5053 0x4f6f +0x5054 0x4f86 +0x5055 0x4f96 +0x5056 0x5118 +0x5057 0x4fd4 +0x5058 0x4fdf +0x5059 0x4fce +0x505a 0x4fd8 +0x505b 0x4fdb +0x505c 0x4fd1 +0x505d 0x4fda +0x505e 0x4fd0 +0x505f 0x4fe4 +0x5060 0x4fe5 +0x5061 0x501a +0x5062 0x5028 +0x5063 0x5014 +0x5064 0x502a +0x5065 0x5025 +0x5066 0x5005 +0x5067 0x4f1c +0x5068 0x4ff6 +0x5069 0x5021 +0x506a 0x5029 +0x506b 0x502c +0x506c 0x4ffe +0x506d 0x4fef +0x506e 0x5011 +0x506f 0x5006 +0x5070 0x5043 +0x5071 0x5047 +0x5072 0x6703 +0x5073 0x5055 +0x5074 0x5050 +0x5075 0x5048 +0x5076 0x505a +0x5077 0x5056 +0x5078 0x506c +0x5079 0x5078 +0x507a 0x5080 +0x507b 0x509a +0x507c 0x5085 +0x507d 0x50b4 +0x507e 0x50b2 +0x5121 0x50c9 +0x5122 0x50ca +0x5123 0x50b3 +0x5124 0x50c2 +0x5125 0x50d6 +0x5126 0x50de +0x5127 0x50e5 +0x5128 0x50ed +0x5129 0x50e3 +0x512a 0x50ee +0x512b 0x50f9 +0x512c 0x50f5 +0x512d 0x5109 +0x512e 0x5101 +0x512f 0x5102 +0x5130 0x5116 +0x5131 0x5115 +0x5132 0x5114 +0x5133 0x511a +0x5134 0x5121 +0x5135 0x513a +0x5136 0x5137 +0x5137 0x513c +0x5138 0x513b +0x5139 0x513f +0x513a 0x5140 +0x513b 0x5152 +0x513c 0x514c +0x513d 0x5154 +0x513e 0x5162 +0x513f 0x7af8 +0x5140 0x5169 +0x5141 0x516a +0x5142 0x516e +0x5143 0x5180 +0x5144 0x5182 +0x5145 0x56d8 +0x5146 0x518c +0x5147 0x5189 +0x5148 0x518f +0x5149 0x5191 +0x514a 0x5193 +0x514b 0x5195 +0x514c 0x5196 +0x514d 0x51a4 +0x514e 0x51a6 +0x514f 0x51a2 +0x5150 0x51a9 +0x5151 0x51aa +0x5152 0x51ab +0x5153 0x51b3 +0x5154 0x51b1 +0x5155 0x51b2 +0x5156 0x51b0 +0x5157 0x51b5 +0x5158 0x51bd +0x5159 0x51c5 +0x515a 0x51c9 +0x515b 0x51db +0x515c 0x51e0 +0x515d 0x8655 +0x515e 0x51e9 +0x515f 0x51ed +0x5160 0x51f0 +0x5161 0x51f5 +0x5162 0x51fe +0x5163 0x5204 +0x5164 0x520b +0x5165 0x5214 +0x5166 0x520e +0x5167 0x5227 +0x5168 0x522a +0x5169 0x522e +0x516a 0x5233 +0x516b 0x5239 +0x516c 0x524f +0x516d 0x5244 +0x516e 0x524b +0x516f 0x524c +0x5170 0x525e +0x5171 0x5254 +0x5172 0x526a +0x5173 0x5274 +0x5174 0x5269 +0x5175 0x5273 +0x5176 0x527f +0x5177 0x527d +0x5178 0x528d +0x5179 0x5294 +0x517a 0x5292 +0x517b 0x5271 +0x517c 0x5288 +0x517d 0x5291 +0x517e 0x8fa8 +0x5221 0x8fa7 +0x5222 0x52ac +0x5223 0x52ad +0x5224 0x52bc +0x5225 0x52b5 +0x5226 0x52c1 +0x5227 0x52cd +0x5228 0x52d7 +0x5229 0x52de +0x522a 0x52e3 +0x522b 0x52e6 +0x522c 0x98ed +0x522d 0x52e0 +0x522e 0x52f3 +0x522f 0x52f5 +0x5230 0x52f8 +0x5231 0x52f9 +0x5232 0x5306 +0x5233 0x5308 +0x5234 0x7538 +0x5235 0x530d +0x5236 0x5310 +0x5237 0x530f +0x5238 0x5315 +0x5239 0x531a +0x523a 0x5323 +0x523b 0x532f +0x523c 0x5331 +0x523d 0x5333 +0x523e 0x5338 +0x523f 0x5340 +0x5240 0x5346 +0x5241 0x5345 +0x5242 0x4e17 +0x5243 0x5349 +0x5244 0x534d +0x5245 0x51d6 +0x5246 0x535e +0x5247 0x5369 +0x5248 0x536e +0x5249 0x5918 +0x524a 0x537b +0x524b 0x5377 +0x524c 0x5382 +0x524d 0x5396 +0x524e 0x53a0 +0x524f 0x53a6 +0x5250 0x53a5 +0x5251 0x53ae +0x5252 0x53b0 +0x5253 0x53b6 +0x5254 0x53c3 +0x5255 0x7c12 +0x5256 0x96d9 +0x5257 0x53df +0x5258 0x66fc +0x5259 0x71ee +0x525a 0x53ee +0x525b 0x53e8 +0x525c 0x53ed +0x525d 0x53fa +0x525e 0x5401 +0x525f 0x543d +0x5260 0x5440 +0x5261 0x542c +0x5262 0x542d +0x5263 0x543c +0x5264 0x542e +0x5265 0x5436 +0x5266 0x5429 +0x5267 0x541d +0x5268 0x544e +0x5269 0x548f +0x526a 0x5475 +0x526b 0x548e +0x526c 0x545f +0x526d 0x5471 +0x526e 0x5477 +0x526f 0x5470 +0x5270 0x5492 +0x5271 0x547b +0x5272 0x5480 +0x5273 0x5476 +0x5274 0x5484 +0x5275 0x5490 +0x5276 0x5486 +0x5277 0x54c7 +0x5278 0x54a2 +0x5279 0x54b8 +0x527a 0x54a5 +0x527b 0x54ac +0x527c 0x54c4 +0x527d 0x54c8 +0x527e 0x54a8 +0x5321 0x54ab +0x5322 0x54c2 +0x5323 0x54a4 +0x5324 0x54be +0x5325 0x54bc +0x5326 0x54d8 +0x5327 0x54e5 +0x5328 0x54e6 +0x5329 0x550f +0x532a 0x5514 +0x532b 0x54fd +0x532c 0x54ee +0x532d 0x54ed +0x532e 0x54fa +0x532f 0x54e2 +0x5330 0x5539 +0x5331 0x5540 +0x5332 0x5563 +0x5333 0x554c +0x5334 0x552e +0x5335 0x555c +0x5336 0x5545 +0x5337 0x5556 +0x5338 0x5557 +0x5339 0x5538 +0x533a 0x5533 +0x533b 0x555d +0x533c 0x5599 +0x533d 0x5580 +0x533e 0x54af +0x533f 0x558a +0x5340 0x559f +0x5341 0x557b +0x5342 0x557e +0x5343 0x5598 +0x5344 0x559e +0x5345 0x55ae +0x5346 0x557c +0x5347 0x5583 +0x5348 0x55a9 +0x5349 0x5587 +0x534a 0x55a8 +0x534b 0x55da +0x534c 0x55c5 +0x534d 0x55df +0x534e 0x55c4 +0x534f 0x55dc +0x5350 0x55e4 +0x5351 0x55d4 +0x5352 0x5614 +0x5353 0x55f7 +0x5354 0x5616 +0x5355 0x55fe +0x5356 0x55fd +0x5357 0x561b +0x5358 0x55f9 +0x5359 0x564e +0x535a 0x5650 +0x535b 0x71df +0x535c 0x5634 +0x535d 0x5636 +0x535e 0x5632 +0x535f 0x5638 +0x5360 0x566b +0x5361 0x5664 +0x5362 0x562f +0x5363 0x566c +0x5364 0x566a +0x5365 0x5686 +0x5366 0x5680 +0x5367 0x568a +0x5368 0x56a0 +0x5369 0x5694 +0x536a 0x568f +0x536b 0x56a5 +0x536c 0x56ae +0x536d 0x56b6 +0x536e 0x56b4 +0x536f 0x56c2 +0x5370 0x56bc +0x5371 0x56c1 +0x5372 0x56c3 +0x5373 0x56c0 +0x5374 0x56c8 +0x5375 0x56ce +0x5376 0x56d1 +0x5377 0x56d3 +0x5378 0x56d7 +0x5379 0x56ee +0x537a 0x56f9 +0x537b 0x5700 +0x537c 0x56ff +0x537d 0x5704 +0x537e 0x5709 +0x5421 0x5708 +0x5422 0x570b +0x5423 0x570d +0x5424 0x5713 +0x5425 0x5718 +0x5426 0x5716 +0x5427 0x55c7 +0x5428 0x571c +0x5429 0x5726 +0x542a 0x5737 +0x542b 0x5738 +0x542c 0x574e +0x542d 0x573b +0x542e 0x5740 +0x542f 0x574f +0x5430 0x5769 +0x5431 0x57c0 +0x5432 0x5788 +0x5433 0x5761 +0x5434 0x577f +0x5435 0x5789 +0x5436 0x5793 +0x5437 0x57a0 +0x5438 0x57b3 +0x5439 0x57a4 +0x543a 0x57aa +0x543b 0x57b0 +0x543c 0x57c3 +0x543d 0x57c6 +0x543e 0x57d4 +0x543f 0x57d2 +0x5440 0x57d3 +0x5441 0x580a +0x5442 0x57d6 +0x5443 0x57e3 +0x5444 0x580b +0x5445 0x5819 +0x5446 0x581d +0x5447 0x5872 +0x5448 0x5821 +0x5449 0x5862 +0x544a 0x584b +0x544b 0x5870 +0x544c 0x6bc0 +0x544d 0x5852 +0x544e 0x583d +0x544f 0x5879 +0x5450 0x5885 +0x5451 0x58b9 +0x5452 0x589f +0x5453 0x58ab +0x5454 0x58ba +0x5455 0x58de +0x5456 0x58bb +0x5457 0x58b8 +0x5458 0x58ae +0x5459 0x58c5 +0x545a 0x58d3 +0x545b 0x58d1 +0x545c 0x58d7 +0x545d 0x58d9 +0x545e 0x58d8 +0x545f 0x58e5 +0x5460 0x58dc +0x5461 0x58e4 +0x5462 0x58df +0x5463 0x58ef +0x5464 0x58fa +0x5465 0x58f9 +0x5466 0x58fb +0x5467 0x58fc +0x5468 0x58fd +0x5469 0x5902 +0x546a 0x590a +0x546b 0x5910 +0x546c 0x591b +0x546d 0x68a6 +0x546e 0x5925 +0x546f 0x592c +0x5470 0x592d +0x5471 0x5932 +0x5472 0x5938 +0x5473 0x593e +0x5474 0x7ad2 +0x5475 0x5955 +0x5476 0x5950 +0x5477 0x594e +0x5478 0x595a +0x5479 0x5958 +0x547a 0x5962 +0x547b 0x5960 +0x547c 0x5967 +0x547d 0x596c +0x547e 0x5969 +0x5521 0x5978 +0x5522 0x5981 +0x5523 0x599d +0x5524 0x4f5e +0x5525 0x4fab +0x5526 0x59a3 +0x5527 0x59b2 +0x5528 0x59c6 +0x5529 0x59e8 +0x552a 0x59dc +0x552b 0x598d +0x552c 0x59d9 +0x552d 0x59da +0x552e 0x5a25 +0x552f 0x5a1f +0x5530 0x5a11 +0x5531 0x5a1c +0x5532 0x5a09 +0x5533 0x5a1a +0x5534 0x5a40 +0x5535 0x5a6c +0x5536 0x5a49 +0x5537 0x5a35 +0x5538 0x5a36 +0x5539 0x5a62 +0x553a 0x5a6a +0x553b 0x5a9a +0x553c 0x5abc +0x553d 0x5abe +0x553e 0x5acb +0x553f 0x5ac2 +0x5540 0x5abd +0x5541 0x5ae3 +0x5542 0x5ad7 +0x5543 0x5ae6 +0x5544 0x5ae9 +0x5545 0x5ad6 +0x5546 0x5afa +0x5547 0x5afb +0x5548 0x5b0c +0x5549 0x5b0b +0x554a 0x5b16 +0x554b 0x5b32 +0x554c 0x5ad0 +0x554d 0x5b2a +0x554e 0x5b36 +0x554f 0x5b3e +0x5550 0x5b43 +0x5551 0x5b45 +0x5552 0x5b40 +0x5553 0x5b51 +0x5554 0x5b55 +0x5555 0x5b5a +0x5556 0x5b5b +0x5557 0x5b65 +0x5558 0x5b69 +0x5559 0x5b70 +0x555a 0x5b73 +0x555b 0x5b75 +0x555c 0x5b78 +0x555d 0x6588 +0x555e 0x5b7a +0x555f 0x5b80 +0x5560 0x5b83 +0x5561 0x5ba6 +0x5562 0x5bb8 +0x5563 0x5bc3 +0x5564 0x5bc7 +0x5565 0x5bc9 +0x5566 0x5bd4 +0x5567 0x5bd0 +0x5568 0x5be4 +0x5569 0x5be6 +0x556a 0x5be2 +0x556b 0x5bde +0x556c 0x5be5 +0x556d 0x5beb +0x556e 0x5bf0 +0x556f 0x5bf6 +0x5570 0x5bf3 +0x5571 0x5c05 +0x5572 0x5c07 +0x5573 0x5c08 +0x5574 0x5c0d +0x5575 0x5c13 +0x5576 0x5c20 +0x5577 0x5c22 +0x5578 0x5c28 +0x5579 0x5c38 +0x557a 0x5c39 +0x557b 0x5c41 +0x557c 0x5c46 +0x557d 0x5c4e +0x557e 0x5c53 +0x5621 0x5c50 +0x5622 0x5c4f +0x5623 0x5b71 +0x5624 0x5c6c +0x5625 0x5c6e +0x5626 0x4e62 +0x5627 0x5c76 +0x5628 0x5c79 +0x5629 0x5c8c +0x562a 0x5c91 +0x562b 0x5c94 +0x562c 0x599b +0x562d 0x5cab +0x562e 0x5cbb +0x562f 0x5cb6 +0x5630 0x5cbc +0x5631 0x5cb7 +0x5632 0x5cc5 +0x5633 0x5cbe +0x5634 0x5cc7 +0x5635 0x5cd9 +0x5636 0x5ce9 +0x5637 0x5cfd +0x5638 0x5cfa +0x5639 0x5ced +0x563a 0x5d8c +0x563b 0x5cea +0x563c 0x5d0b +0x563d 0x5d15 +0x563e 0x5d17 +0x563f 0x5d5c +0x5640 0x5d1f +0x5641 0x5d1b +0x5642 0x5d11 +0x5643 0x5d14 +0x5644 0x5d22 +0x5645 0x5d1a +0x5646 0x5d19 +0x5647 0x5d18 +0x5648 0x5d4c +0x5649 0x5d52 +0x564a 0x5d4e +0x564b 0x5d4b +0x564c 0x5d6c +0x564d 0x5d73 +0x564e 0x5d76 +0x564f 0x5d87 +0x5650 0x5d84 +0x5651 0x5d82 +0x5652 0x5da2 +0x5653 0x5d9d +0x5654 0x5dac +0x5655 0x5dae +0x5656 0x5dbd +0x5657 0x5d90 +0x5658 0x5db7 +0x5659 0x5dbc +0x565a 0x5dc9 +0x565b 0x5dcd +0x565c 0x5dd3 +0x565d 0x5dd2 +0x565e 0x5dd6 +0x565f 0x5ddb +0x5660 0x5deb +0x5661 0x5df2 +0x5662 0x5df5 +0x5663 0x5e0b +0x5664 0x5e1a +0x5665 0x5e19 +0x5666 0x5e11 +0x5667 0x5e1b +0x5668 0x5e36 +0x5669 0x5e37 +0x566a 0x5e44 +0x566b 0x5e43 +0x566c 0x5e40 +0x566d 0x5e4e +0x566e 0x5e57 +0x566f 0x5e54 +0x5670 0x5e5f +0x5671 0x5e62 +0x5672 0x5e64 +0x5673 0x5e47 +0x5674 0x5e75 +0x5675 0x5e76 +0x5676 0x5e7a +0x5677 0x9ebc +0x5678 0x5e7f +0x5679 0x5ea0 +0x567a 0x5ec1 +0x567b 0x5ec2 +0x567c 0x5ec8 +0x567d 0x5ed0 +0x567e 0x5ecf +0x5721 0x5ed6 +0x5722 0x5ee3 +0x5723 0x5edd +0x5724 0x5eda +0x5725 0x5edb +0x5726 0x5ee2 +0x5727 0x5ee1 +0x5728 0x5ee8 +0x5729 0x5ee9 +0x572a 0x5eec +0x572b 0x5ef1 +0x572c 0x5ef3 +0x572d 0x5ef0 +0x572e 0x5ef4 +0x572f 0x5ef8 +0x5730 0x5efe +0x5731 0x5f03 +0x5732 0x5f09 +0x5733 0x5f5d +0x5734 0x5f5c +0x5735 0x5f0b +0x5736 0x5f11 +0x5737 0x5f16 +0x5738 0x5f29 +0x5739 0x5f2d +0x573a 0x5f38 +0x573b 0x5f41 +0x573c 0x5f48 +0x573d 0x5f4c +0x573e 0x5f4e +0x573f 0x5f2f +0x5740 0x5f51 +0x5741 0x5f56 +0x5742 0x5f57 +0x5743 0x5f59 +0x5744 0x5f61 +0x5745 0x5f6d +0x5746 0x5f73 +0x5747 0x5f77 +0x5748 0x5f83 +0x5749 0x5f82 +0x574a 0x5f7f +0x574b 0x5f8a +0x574c 0x5f88 +0x574d 0x5f91 +0x574e 0x5f87 +0x574f 0x5f9e +0x5750 0x5f99 +0x5751 0x5f98 +0x5752 0x5fa0 +0x5753 0x5fa8 +0x5754 0x5fad +0x5755 0x5fbc +0x5756 0x5fd6 +0x5757 0x5ffb +0x5758 0x5fe4 +0x5759 0x5ff8 +0x575a 0x5ff1 +0x575b 0x5fdd +0x575c 0x60b3 +0x575d 0x5fff +0x575e 0x6021 +0x575f 0x6060 +0x5760 0x6019 +0x5761 0x6010 +0x5762 0x6029 +0x5763 0x600e +0x5764 0x6031 +0x5765 0x601b +0x5766 0x6015 +0x5767 0x602b +0x5768 0x6026 +0x5769 0x600f +0x576a 0x603a +0x576b 0x605a +0x576c 0x6041 +0x576d 0x606a +0x576e 0x6077 +0x576f 0x605f +0x5770 0x604a +0x5771 0x6046 +0x5772 0x604d +0x5773 0x6063 +0x5774 0x6043 +0x5775 0x6064 +0x5776 0x6042 +0x5777 0x606c +0x5778 0x606b +0x5779 0x6059 +0x577a 0x6081 +0x577b 0x608d +0x577c 0x60e7 +0x577d 0x6083 +0x577e 0x609a +0x5821 0x6084 +0x5822 0x609b +0x5823 0x6096 +0x5824 0x6097 +0x5825 0x6092 +0x5826 0x60a7 +0x5827 0x608b +0x5828 0x60e1 +0x5829 0x60b8 +0x582a 0x60e0 +0x582b 0x60d3 +0x582c 0x60b4 +0x582d 0x5ff0 +0x582e 0x60bd +0x582f 0x60c6 +0x5830 0x60b5 +0x5831 0x60d8 +0x5832 0x614d +0x5833 0x6115 +0x5834 0x6106 +0x5835 0x60f6 +0x5836 0x60f7 +0x5837 0x6100 +0x5838 0x60f4 +0x5839 0x60fa +0x583a 0x6103 +0x583b 0x6121 +0x583c 0x60fb +0x583d 0x60f1 +0x583e 0x610d +0x583f 0x610e +0x5840 0x6147 +0x5841 0x613e +0x5842 0x6128 +0x5843 0x6127 +0x5844 0x614a +0x5845 0x613f +0x5846 0x613c +0x5847 0x612c +0x5848 0x6134 +0x5849 0x613d +0x584a 0x6142 +0x584b 0x6144 +0x584c 0x6173 +0x584d 0x6177 +0x584e 0x6158 +0x584f 0x6159 +0x5850 0x615a +0x5851 0x616b +0x5852 0x6174 +0x5853 0x616f +0x5854 0x6165 +0x5855 0x6171 +0x5856 0x615f +0x5857 0x615d +0x5858 0x6153 +0x5859 0x6175 +0x585a 0x6199 +0x585b 0x6196 +0x585c 0x6187 +0x585d 0x61ac +0x585e 0x6194 +0x585f 0x619a +0x5860 0x618a +0x5861 0x6191 +0x5862 0x61ab +0x5863 0x61ae +0x5864 0x61cc +0x5865 0x61ca +0x5866 0x61c9 +0x5867 0x61f7 +0x5868 0x61c8 +0x5869 0x61c3 +0x586a 0x61c6 +0x586b 0x61ba +0x586c 0x61cb +0x586d 0x7f79 +0x586e 0x61cd +0x586f 0x61e6 +0x5870 0x61e3 +0x5871 0x61f6 +0x5872 0x61fa +0x5873 0x61f4 +0x5874 0x61ff +0x5875 0x61fd +0x5876 0x61fc +0x5877 0x61fe +0x5878 0x6200 +0x5879 0x6208 +0x587a 0x6209 +0x587b 0x620d +0x587c 0x620c +0x587d 0x6214 +0x587e 0x621b +0x5921 0x621e +0x5922 0x6221 +0x5923 0x622a +0x5924 0x622e +0x5925 0x6230 +0x5926 0x6232 +0x5927 0x6233 +0x5928 0x6241 +0x5929 0x624e +0x592a 0x625e +0x592b 0x6263 +0x592c 0x625b +0x592d 0x6260 +0x592e 0x6268 +0x592f 0x627c +0x5930 0x6282 +0x5931 0x6289 +0x5932 0x627e +0x5933 0x6292 +0x5934 0x6293 +0x5935 0x6296 +0x5936 0x62d4 +0x5937 0x6283 +0x5938 0x6294 +0x5939 0x62d7 +0x593a 0x62d1 +0x593b 0x62bb +0x593c 0x62cf +0x593d 0x62ff +0x593e 0x62c6 +0x593f 0x64d4 +0x5940 0x62c8 +0x5941 0x62dc +0x5942 0x62cc +0x5943 0x62ca +0x5944 0x62c2 +0x5945 0x62c7 +0x5946 0x629b +0x5947 0x62c9 +0x5948 0x630c +0x5949 0x62ee +0x594a 0x62f1 +0x594b 0x6327 +0x594c 0x6302 +0x594d 0x6308 +0x594e 0x62ef +0x594f 0x62f5 +0x5950 0x6350 +0x5951 0x633e +0x5952 0x634d +0x5953 0x641c +0x5954 0x634f +0x5955 0x6396 +0x5956 0x638e +0x5957 0x6380 +0x5958 0x63ab +0x5959 0x6376 +0x595a 0x63a3 +0x595b 0x638f +0x595c 0x6389 +0x595d 0x639f +0x595e 0x63b5 +0x595f 0x636b +0x5960 0x6369 +0x5961 0x63be +0x5962 0x63e9 +0x5963 0x63c0 +0x5964 0x63c6 +0x5965 0x63e3 +0x5966 0x63c9 +0x5967 0x63d2 +0x5968 0x63f6 +0x5969 0x63c4 +0x596a 0x6416 +0x596b 0x6434 +0x596c 0x6406 +0x596d 0x6413 +0x596e 0x6426 +0x596f 0x6436 +0x5970 0x651d +0x5971 0x6417 +0x5972 0x6428 +0x5973 0x640f +0x5974 0x6467 +0x5975 0x646f +0x5976 0x6476 +0x5977 0x644e +0x5978 0x652a +0x5979 0x6495 +0x597a 0x6493 +0x597b 0x64a5 +0x597c 0x64a9 +0x597d 0x6488 +0x597e 0x64bc +0x5a21 0x64da +0x5a22 0x64d2 +0x5a23 0x64c5 +0x5a24 0x64c7 +0x5a25 0x64bb +0x5a26 0x64d8 +0x5a27 0x64c2 +0x5a28 0x64f1 +0x5a29 0x64e7 +0x5a2a 0x8209 +0x5a2b 0x64e0 +0x5a2c 0x64e1 +0x5a2d 0x62ac +0x5a2e 0x64e3 +0x5a2f 0x64ef +0x5a30 0x652c +0x5a31 0x64f6 +0x5a32 0x64f4 +0x5a33 0x64f2 +0x5a34 0x64fa +0x5a35 0x6500 +0x5a36 0x64fd +0x5a37 0x6518 +0x5a38 0x651c +0x5a39 0x6505 +0x5a3a 0x6524 +0x5a3b 0x6523 +0x5a3c 0x652b +0x5a3d 0x6534 +0x5a3e 0x6535 +0x5a3f 0x6537 +0x5a40 0x6536 +0x5a41 0x6538 +0x5a42 0x754b +0x5a43 0x6548 +0x5a44 0x6556 +0x5a45 0x6555 +0x5a46 0x654d +0x5a47 0x6558 +0x5a48 0x655e +0x5a49 0x655d +0x5a4a 0x6572 +0x5a4b 0x6578 +0x5a4c 0x6582 +0x5a4d 0x6583 +0x5a4e 0x8b8a +0x5a4f 0x659b +0x5a50 0x659f +0x5a51 0x65ab +0x5a52 0x65b7 +0x5a53 0x65c3 +0x5a54 0x65c6 +0x5a55 0x65c1 +0x5a56 0x65c4 +0x5a57 0x65cc +0x5a58 0x65d2 +0x5a59 0x65db +0x5a5a 0x65d9 +0x5a5b 0x65e0 +0x5a5c 0x65e1 +0x5a5d 0x65f1 +0x5a5e 0x6772 +0x5a5f 0x660a +0x5a60 0x6603 +0x5a61 0x65fb +0x5a62 0x6773 +0x5a63 0x6635 +0x5a64 0x6636 +0x5a65 0x6634 +0x5a66 0x661c +0x5a67 0x664f +0x5a68 0x6644 +0x5a69 0x6649 +0x5a6a 0x6641 +0x5a6b 0x665e +0x5a6c 0x665d +0x5a6d 0x6664 +0x5a6e 0x6667 +0x5a6f 0x6668 +0x5a70 0x665f +0x5a71 0x6662 +0x5a72 0x6670 +0x5a73 0x6683 +0x5a74 0x6688 +0x5a75 0x668e +0x5a76 0x6689 +0x5a77 0x6684 +0x5a78 0x6698 +0x5a79 0x669d +0x5a7a 0x66c1 +0x5a7b 0x66b9 +0x5a7c 0x66c9 +0x5a7d 0x66be +0x5a7e 0x66bc +0x5b21 0x66c4 +0x5b22 0x66b8 +0x5b23 0x66d6 +0x5b24 0x66da +0x5b25 0x66e0 +0x5b26 0x663f +0x5b27 0x66e6 +0x5b28 0x66e9 +0x5b29 0x66f0 +0x5b2a 0x66f5 +0x5b2b 0x66f7 +0x5b2c 0x670f +0x5b2d 0x6716 +0x5b2e 0x671e +0x5b2f 0x6726 +0x5b30 0x6727 +0x5b31 0x9738 +0x5b32 0x672e +0x5b33 0x673f +0x5b34 0x6736 +0x5b35 0x6741 +0x5b36 0x6738 +0x5b37 0x6737 +0x5b38 0x6746 +0x5b39 0x675e +0x5b3a 0x6760 +0x5b3b 0x6759 +0x5b3c 0x6763 +0x5b3d 0x6764 +0x5b3e 0x6789 +0x5b3f 0x6770 +0x5b40 0x67a9 +0x5b41 0x677c +0x5b42 0x676a +0x5b43 0x678c +0x5b44 0x678b +0x5b45 0x67a6 +0x5b46 0x67a1 +0x5b47 0x6785 +0x5b48 0x67b7 +0x5b49 0x67ef +0x5b4a 0x67b4 +0x5b4b 0x67ec +0x5b4c 0x67b3 +0x5b4d 0x67e9 +0x5b4e 0x67b8 +0x5b4f 0x67e4 +0x5b50 0x67de +0x5b51 0x67dd +0x5b52 0x67e2 +0x5b53 0x67ee +0x5b54 0x67b9 +0x5b55 0x67ce +0x5b56 0x67c6 +0x5b57 0x67e7 +0x5b58 0x6a9c +0x5b59 0x681e +0x5b5a 0x6846 +0x5b5b 0x6829 +0x5b5c 0x6840 +0x5b5d 0x684d +0x5b5e 0x6832 +0x5b5f 0x684e +0x5b60 0x68b3 +0x5b61 0x682b +0x5b62 0x6859 +0x5b63 0x6863 +0x5b64 0x6877 +0x5b65 0x687f +0x5b66 0x689f +0x5b67 0x688f +0x5b68 0x68ad +0x5b69 0x6894 +0x5b6a 0x689d +0x5b6b 0x689b +0x5b6c 0x6883 +0x5b6d 0x6aae +0x5b6e 0x68b9 +0x5b6f 0x6874 +0x5b70 0x68b5 +0x5b71 0x68a0 +0x5b72 0x68ba +0x5b73 0x690f +0x5b74 0x688d +0x5b75 0x687e +0x5b76 0x6901 +0x5b77 0x68ca +0x5b78 0x6908 +0x5b79 0x68d8 +0x5b7a 0x6922 +0x5b7b 0x6926 +0x5b7c 0x68e1 +0x5b7d 0x690c +0x5b7e 0x68cd +0x5c21 0x68d4 +0x5c22 0x68e7 +0x5c23 0x68d5 +0x5c24 0x6936 +0x5c25 0x6912 +0x5c26 0x6904 +0x5c27 0x68d7 +0x5c28 0x68e3 +0x5c29 0x6925 +0x5c2a 0x68f9 +0x5c2b 0x68e0 +0x5c2c 0x68ef +0x5c2d 0x6928 +0x5c2e 0x692a +0x5c2f 0x691a +0x5c30 0x6923 +0x5c31 0x6921 +0x5c32 0x68c6 +0x5c33 0x6979 +0x5c34 0x6977 +0x5c35 0x695c +0x5c36 0x6978 +0x5c37 0x696b +0x5c38 0x6954 +0x5c39 0x697e +0x5c3a 0x696e +0x5c3b 0x6939 +0x5c3c 0x6974 +0x5c3d 0x693d +0x5c3e 0x6959 +0x5c3f 0x6930 +0x5c40 0x6961 +0x5c41 0x695e +0x5c42 0x695d +0x5c43 0x6981 +0x5c44 0x696a +0x5c45 0x69b2 +0x5c46 0x69ae +0x5c47 0x69d0 +0x5c48 0x69bf +0x5c49 0x69c1 +0x5c4a 0x69d3 +0x5c4b 0x69be +0x5c4c 0x69ce +0x5c4d 0x5be8 +0x5c4e 0x69ca +0x5c4f 0x69dd +0x5c50 0x69bb +0x5c51 0x69c3 +0x5c52 0x69a7 +0x5c53 0x6a2e +0x5c54 0x6991 +0x5c55 0x69a0 +0x5c56 0x699c +0x5c57 0x6995 +0x5c58 0x69b4 +0x5c59 0x69de +0x5c5a 0x69e8 +0x5c5b 0x6a02 +0x5c5c 0x6a1b +0x5c5d 0x69ff +0x5c5e 0x6b0a +0x5c5f 0x69f9 +0x5c60 0x69f2 +0x5c61 0x69e7 +0x5c62 0x6a05 +0x5c63 0x69b1 +0x5c64 0x6a1e +0x5c65 0x69ed +0x5c66 0x6a14 +0x5c67 0x69eb +0x5c68 0x6a0a +0x5c69 0x6a12 +0x5c6a 0x6ac1 +0x5c6b 0x6a23 +0x5c6c 0x6a13 +0x5c6d 0x6a44 +0x5c6e 0x6a0c +0x5c6f 0x6a72 +0x5c70 0x6a36 +0x5c71 0x6a78 +0x5c72 0x6a47 +0x5c73 0x6a62 +0x5c74 0x6a59 +0x5c75 0x6a66 +0x5c76 0x6a48 +0x5c77 0x6a38 +0x5c78 0x6a22 +0x5c79 0x6a90 +0x5c7a 0x6a8d +0x5c7b 0x6aa0 +0x5c7c 0x6a84 +0x5c7d 0x6aa2 +0x5c7e 0x6aa3 +0x5d21 0x6a97 +0x5d22 0x8617 +0x5d23 0x6abb +0x5d24 0x6ac3 +0x5d25 0x6ac2 +0x5d26 0x6ab8 +0x5d27 0x6ab3 +0x5d28 0x6aac +0x5d29 0x6ade +0x5d2a 0x6ad1 +0x5d2b 0x6adf +0x5d2c 0x6aaa +0x5d2d 0x6ada +0x5d2e 0x6aea +0x5d2f 0x6afb +0x5d30 0x6b05 +0x5d31 0x8616 +0x5d32 0x6afa +0x5d33 0x6b12 +0x5d34 0x6b16 +0x5d35 0x9b31 +0x5d36 0x6b1f +0x5d37 0x6b38 +0x5d38 0x6b37 +0x5d39 0x76dc +0x5d3a 0x6b39 +0x5d3b 0x98ee +0x5d3c 0x6b47 +0x5d3d 0x6b43 +0x5d3e 0x6b49 +0x5d3f 0x6b50 +0x5d40 0x6b59 +0x5d41 0x6b54 +0x5d42 0x6b5b +0x5d43 0x6b5f +0x5d44 0x6b61 +0x5d45 0x6b78 +0x5d46 0x6b79 +0x5d47 0x6b7f +0x5d48 0x6b80 +0x5d49 0x6b84 +0x5d4a 0x6b83 +0x5d4b 0x6b8d +0x5d4c 0x6b98 +0x5d4d 0x6b95 +0x5d4e 0x6b9e +0x5d4f 0x6ba4 +0x5d50 0x6baa +0x5d51 0x6bab +0x5d52 0x6baf +0x5d53 0x6bb2 +0x5d54 0x6bb1 +0x5d55 0x6bb3 +0x5d56 0x6bb7 +0x5d57 0x6bbc +0x5d58 0x6bc6 +0x5d59 0x6bcb +0x5d5a 0x6bd3 +0x5d5b 0x6bdf +0x5d5c 0x6bec +0x5d5d 0x6beb +0x5d5e 0x6bf3 +0x5d5f 0x6bef +0x5d60 0x9ebe +0x5d61 0x6c08 +0x5d62 0x6c13 +0x5d63 0x6c14 +0x5d64 0x6c1b +0x5d65 0x6c24 +0x5d66 0x6c23 +0x5d67 0x6c5e +0x5d68 0x6c55 +0x5d69 0x6c62 +0x5d6a 0x6c6a +0x5d6b 0x6c82 +0x5d6c 0x6c8d +0x5d6d 0x6c9a +0x5d6e 0x6c81 +0x5d6f 0x6c9b +0x5d70 0x6c7e +0x5d71 0x6c68 +0x5d72 0x6c73 +0x5d73 0x6c92 +0x5d74 0x6c90 +0x5d75 0x6cc4 +0x5d76 0x6cf1 +0x5d77 0x6cd3 +0x5d78 0x6cbd +0x5d79 0x6cd7 +0x5d7a 0x6cc5 +0x5d7b 0x6cdd +0x5d7c 0x6cae +0x5d7d 0x6cb1 +0x5d7e 0x6cbe +0x5e21 0x6cba +0x5e22 0x6cdb +0x5e23 0x6cef +0x5e24 0x6cd9 +0x5e25 0x6cea +0x5e26 0x6d1f +0x5e27 0x884d +0x5e28 0x6d36 +0x5e29 0x6d2b +0x5e2a 0x6d3d +0x5e2b 0x6d38 +0x5e2c 0x6d19 +0x5e2d 0x6d35 +0x5e2e 0x6d33 +0x5e2f 0x6d12 +0x5e30 0x6d0c +0x5e31 0x6d63 +0x5e32 0x6d93 +0x5e33 0x6d64 +0x5e34 0x6d5a +0x5e35 0x6d79 +0x5e36 0x6d59 +0x5e37 0x6d8e +0x5e38 0x6d95 +0x5e39 0x6fe4 +0x5e3a 0x6d85 +0x5e3b 0x6df9 +0x5e3c 0x6e15 +0x5e3d 0x6e0a +0x5e3e 0x6db5 +0x5e3f 0x6dc7 +0x5e40 0x6de6 +0x5e41 0x6db8 +0x5e42 0x6dc6 +0x5e43 0x6dec +0x5e44 0x6dde +0x5e45 0x6dcc +0x5e46 0x6de8 +0x5e47 0x6dd2 +0x5e48 0x6dc5 +0x5e49 0x6dfa +0x5e4a 0x6dd9 +0x5e4b 0x6de4 +0x5e4c 0x6dd5 +0x5e4d 0x6dea +0x5e4e 0x6dee +0x5e4f 0x6e2d +0x5e50 0x6e6e +0x5e51 0x6e2e +0x5e52 0x6e19 +0x5e53 0x6e72 +0x5e54 0x6e5f +0x5e55 0x6e3e +0x5e56 0x6e23 +0x5e57 0x6e6b +0x5e58 0x6e2b +0x5e59 0x6e76 +0x5e5a 0x6e4d +0x5e5b 0x6e1f +0x5e5c 0x6e43 +0x5e5d 0x6e3a +0x5e5e 0x6e4e +0x5e5f 0x6e24 +0x5e60 0x6eff +0x5e61 0x6e1d +0x5e62 0x6e38 +0x5e63 0x6e82 +0x5e64 0x6eaa +0x5e65 0x6e98 +0x5e66 0x6ec9 +0x5e67 0x6eb7 +0x5e68 0x6ed3 +0x5e69 0x6ebd +0x5e6a 0x6eaf +0x5e6b 0x6ec4 +0x5e6c 0x6eb2 +0x5e6d 0x6ed4 +0x5e6e 0x6ed5 +0x5e6f 0x6e8f +0x5e70 0x6ea5 +0x5e71 0x6ec2 +0x5e72 0x6e9f +0x5e73 0x6f41 +0x5e74 0x6f11 +0x5e75 0x704c +0x5e76 0x6eec +0x5e77 0x6ef8 +0x5e78 0x6efe +0x5e79 0x6f3f +0x5e7a 0x6ef2 +0x5e7b 0x6f31 +0x5e7c 0x6eef +0x5e7d 0x6f32 +0x5e7e 0x6ecc +0x5f21 0x6f3e +0x5f22 0x6f13 +0x5f23 0x6ef7 +0x5f24 0x6f86 +0x5f25 0x6f7a +0x5f26 0x6f78 +0x5f27 0x6f81 +0x5f28 0x6f80 +0x5f29 0x6f6f +0x5f2a 0x6f5b +0x5f2b 0x6ff3 +0x5f2c 0x6f6d +0x5f2d 0x6f82 +0x5f2e 0x6f7c +0x5f2f 0x6f58 +0x5f30 0x6f8e +0x5f31 0x6f91 +0x5f32 0x6fc2 +0x5f33 0x6f66 +0x5f34 0x6fb3 +0x5f35 0x6fa3 +0x5f36 0x6fa1 +0x5f37 0x6fa4 +0x5f38 0x6fb9 +0x5f39 0x6fc6 +0x5f3a 0x6faa +0x5f3b 0x6fdf +0x5f3c 0x6fd5 +0x5f3d 0x6fec +0x5f3e 0x6fd4 +0x5f3f 0x6fd8 +0x5f40 0x6ff1 +0x5f41 0x6fee +0x5f42 0x6fdb +0x5f43 0x7009 +0x5f44 0x700b +0x5f45 0x6ffa +0x5f46 0x7011 +0x5f47 0x7001 +0x5f48 0x700f +0x5f49 0x6ffe +0x5f4a 0x701b +0x5f4b 0x701a +0x5f4c 0x6f74 +0x5f4d 0x701d +0x5f4e 0x7018 +0x5f4f 0x701f +0x5f50 0x7030 +0x5f51 0x703e +0x5f52 0x7032 +0x5f53 0x7051 +0x5f54 0x7063 +0x5f55 0x7099 +0x5f56 0x7092 +0x5f57 0x70af +0x5f58 0x70f1 +0x5f59 0x70ac +0x5f5a 0x70b8 +0x5f5b 0x70b3 +0x5f5c 0x70ae +0x5f5d 0x70df +0x5f5e 0x70cb +0x5f5f 0x70dd +0x5f60 0x70d9 +0x5f61 0x7109 +0x5f62 0x70fd +0x5f63 0x711c +0x5f64 0x7119 +0x5f65 0x7165 +0x5f66 0x7155 +0x5f67 0x7188 +0x5f68 0x7166 +0x5f69 0x7162 +0x5f6a 0x714c +0x5f6b 0x7156 +0x5f6c 0x716c +0x5f6d 0x718f +0x5f6e 0x71fb +0x5f6f 0x7184 +0x5f70 0x7195 +0x5f71 0x71a8 +0x5f72 0x71ac +0x5f73 0x71d7 +0x5f74 0x71b9 +0x5f75 0x71be +0x5f76 0x71d2 +0x5f77 0x71c9 +0x5f78 0x71d4 +0x5f79 0x71ce +0x5f7a 0x71e0 +0x5f7b 0x71ec +0x5f7c 0x71e7 +0x5f7d 0x71f5 +0x5f7e 0x71fc +0x6021 0x71f9 +0x6022 0x71ff +0x6023 0x720d +0x6024 0x7210 +0x6025 0x721b +0x6026 0x7228 +0x6027 0x722d +0x6028 0x722c +0x6029 0x7230 +0x602a 0x7232 +0x602b 0x723b +0x602c 0x723c +0x602d 0x723f +0x602e 0x7240 +0x602f 0x7246 +0x6030 0x724b +0x6031 0x7258 +0x6032 0x7274 +0x6033 0x727e +0x6034 0x7282 +0x6035 0x7281 +0x6036 0x7287 +0x6037 0x7292 +0x6038 0x7296 +0x6039 0x72a2 +0x603a 0x72a7 +0x603b 0x72b9 +0x603c 0x72b2 +0x603d 0x72c3 +0x603e 0x72c6 +0x603f 0x72c4 +0x6040 0x72ce +0x6041 0x72d2 +0x6042 0x72e2 +0x6043 0x72e0 +0x6044 0x72e1 +0x6045 0x72f9 +0x6046 0x72f7 +0x6047 0x500f +0x6048 0x7317 +0x6049 0x730a +0x604a 0x731c +0x604b 0x7316 +0x604c 0x731d +0x604d 0x7334 +0x604e 0x732f +0x604f 0x7329 +0x6050 0x7325 +0x6051 0x733e +0x6052 0x734e +0x6053 0x734f +0x6054 0x9ed8 +0x6055 0x7357 +0x6056 0x736a +0x6057 0x7368 +0x6058 0x7370 +0x6059 0x7378 +0x605a 0x7375 +0x605b 0x737b +0x605c 0x737a +0x605d 0x73c8 +0x605e 0x73b3 +0x605f 0x73ce +0x6060 0x73bb +0x6061 0x73c0 +0x6062 0x73e5 +0x6063 0x73ee +0x6064 0x73de +0x6065 0x74a2 +0x6066 0x7405 +0x6067 0x746f +0x6068 0x7425 +0x6069 0x73f8 +0x606a 0x7432 +0x606b 0x743a +0x606c 0x7455 +0x606d 0x743f +0x606e 0x745f +0x606f 0x7459 +0x6070 0x7441 +0x6071 0x745c +0x6072 0x7469 +0x6073 0x7470 +0x6074 0x7463 +0x6075 0x746a +0x6076 0x7476 +0x6077 0x747e +0x6078 0x748b +0x6079 0x749e +0x607a 0x74a7 +0x607b 0x74ca +0x607c 0x74cf +0x607d 0x74d4 +0x607e 0x73f1 +0x6121 0x74e0 +0x6122 0x74e3 +0x6123 0x74e7 +0x6124 0x74e9 +0x6125 0x74ee +0x6126 0x74f2 +0x6127 0x74f0 +0x6128 0x74f1 +0x6129 0x74f8 +0x612a 0x74f7 +0x612b 0x7504 +0x612c 0x7503 +0x612d 0x7505 +0x612e 0x750c +0x612f 0x750e +0x6130 0x750d +0x6131 0x7515 +0x6132 0x7513 +0x6133 0x751e +0x6134 0x7526 +0x6135 0x752c +0x6136 0x753c +0x6137 0x7544 +0x6138 0x754d +0x6139 0x754a +0x613a 0x7549 +0x613b 0x755b +0x613c 0x7546 +0x613d 0x755a +0x613e 0x7569 +0x613f 0x7564 +0x6140 0x7567 +0x6141 0x756b +0x6142 0x756d +0x6143 0x7578 +0x6144 0x7576 +0x6145 0x7586 +0x6146 0x7587 +0x6147 0x7574 +0x6148 0x758a +0x6149 0x7589 +0x614a 0x7582 +0x614b 0x7594 +0x614c 0x759a +0x614d 0x759d +0x614e 0x75a5 +0x614f 0x75a3 +0x6150 0x75c2 +0x6151 0x75b3 +0x6152 0x75c3 +0x6153 0x75b5 +0x6154 0x75bd +0x6155 0x75b8 +0x6156 0x75bc +0x6157 0x75b1 +0x6158 0x75cd +0x6159 0x75ca +0x615a 0x75d2 +0x615b 0x75d9 +0x615c 0x75e3 +0x615d 0x75de +0x615e 0x75fe +0x615f 0x75ff +0x6160 0x75fc +0x6161 0x7601 +0x6162 0x75f0 +0x6163 0x75fa +0x6164 0x75f2 +0x6165 0x75f3 +0x6166 0x760b +0x6167 0x760d +0x6168 0x7609 +0x6169 0x761f +0x616a 0x7627 +0x616b 0x7620 +0x616c 0x7621 +0x616d 0x7622 +0x616e 0x7624 +0x616f 0x7634 +0x6170 0x7630 +0x6171 0x763b +0x6172 0x7647 +0x6173 0x7648 +0x6174 0x7646 +0x6175 0x765c +0x6176 0x7658 +0x6177 0x7661 +0x6178 0x7662 +0x6179 0x7668 +0x617a 0x7669 +0x617b 0x766a +0x617c 0x7667 +0x617d 0x766c +0x617e 0x7670 +0x6221 0x7672 +0x6222 0x7676 +0x6223 0x7678 +0x6224 0x767c +0x6225 0x7680 +0x6226 0x7683 +0x6227 0x7688 +0x6228 0x768b +0x6229 0x768e +0x622a 0x7696 +0x622b 0x7693 +0x622c 0x7699 +0x622d 0x769a +0x622e 0x76b0 +0x622f 0x76b4 +0x6230 0x76b8 +0x6231 0x76b9 +0x6232 0x76ba +0x6233 0x76c2 +0x6234 0x76cd +0x6235 0x76d6 +0x6236 0x76d2 +0x6237 0x76de +0x6238 0x76e1 +0x6239 0x76e5 +0x623a 0x76e7 +0x623b 0x76ea +0x623c 0x862f +0x623d 0x76fb +0x623e 0x7708 +0x623f 0x7707 +0x6240 0x7704 +0x6241 0x7729 +0x6242 0x7724 +0x6243 0x771e +0x6244 0x7725 +0x6245 0x7726 +0x6246 0x771b +0x6247 0x7737 +0x6248 0x7738 +0x6249 0x7747 +0x624a 0x775a +0x624b 0x7768 +0x624c 0x776b +0x624d 0x775b +0x624e 0x7765 +0x624f 0x777f +0x6250 0x777e +0x6251 0x7779 +0x6252 0x778e +0x6253 0x778b +0x6254 0x7791 +0x6255 0x77a0 +0x6256 0x779e +0x6257 0x77b0 +0x6258 0x77b6 +0x6259 0x77b9 +0x625a 0x77bf +0x625b 0x77bc +0x625c 0x77bd +0x625d 0x77bb +0x625e 0x77c7 +0x625f 0x77cd +0x6260 0x77d7 +0x6261 0x77da +0x6262 0x77dc +0x6263 0x77e3 +0x6264 0x77ee +0x6265 0x77fc +0x6266 0x780c +0x6267 0x7812 +0x6268 0x7926 +0x6269 0x7820 +0x626a 0x792a +0x626b 0x7845 +0x626c 0x788e +0x626d 0x7874 +0x626e 0x7886 +0x626f 0x787c +0x6270 0x789a +0x6271 0x788c +0x6272 0x78a3 +0x6273 0x78b5 +0x6274 0x78aa +0x6275 0x78af +0x6276 0x78d1 +0x6277 0x78c6 +0x6278 0x78cb +0x6279 0x78d4 +0x627a 0x78be +0x627b 0x78bc +0x627c 0x78c5 +0x627d 0x78ca +0x627e 0x78ec +0x6321 0x78e7 +0x6322 0x78da +0x6323 0x78fd +0x6324 0x78f4 +0x6325 0x7907 +0x6326 0x7912 +0x6327 0x7911 +0x6328 0x7919 +0x6329 0x792c +0x632a 0x792b +0x632b 0x7940 +0x632c 0x7960 +0x632d 0x7957 +0x632e 0x795f +0x632f 0x795a +0x6330 0x7955 +0x6331 0x7953 +0x6332 0x797a +0x6333 0x797f +0x6334 0x798a +0x6335 0x799d +0x6336 0x79a7 +0x6337 0x9f4b +0x6338 0x79aa +0x6339 0x79ae +0x633a 0x79b3 +0x633b 0x79b9 +0x633c 0x79ba +0x633d 0x79c9 +0x633e 0x79d5 +0x633f 0x79e7 +0x6340 0x79ec +0x6341 0x79e1 +0x6342 0x79e3 +0x6343 0x7a08 +0x6344 0x7a0d +0x6345 0x7a18 +0x6346 0x7a19 +0x6347 0x7a20 +0x6348 0x7a1f +0x6349 0x7980 +0x634a 0x7a31 +0x634b 0x7a3b +0x634c 0x7a3e +0x634d 0x7a37 +0x634e 0x7a43 +0x634f 0x7a57 +0x6350 0x7a49 +0x6351 0x7a61 +0x6352 0x7a62 +0x6353 0x7a69 +0x6354 0x9f9d +0x6355 0x7a70 +0x6356 0x7a79 +0x6357 0x7a7d +0x6358 0x7a88 +0x6359 0x7a97 +0x635a 0x7a95 +0x635b 0x7a98 +0x635c 0x7a96 +0x635d 0x7aa9 +0x635e 0x7ac8 +0x635f 0x7ab0 +0x6360 0x7ab6 +0x6361 0x7ac5 +0x6362 0x7ac4 +0x6363 0x7abf +0x6364 0x9083 +0x6365 0x7ac7 +0x6366 0x7aca +0x6367 0x7acd +0x6368 0x7acf +0x6369 0x7ad5 +0x636a 0x7ad3 +0x636b 0x7ad9 +0x636c 0x7ada +0x636d 0x7add +0x636e 0x7ae1 +0x636f 0x7ae2 +0x6370 0x7ae6 +0x6371 0x7aed +0x6372 0x7af0 +0x6373 0x7b02 +0x6374 0x7b0f +0x6375 0x7b0a +0x6376 0x7b06 +0x6377 0x7b33 +0x6378 0x7b18 +0x6379 0x7b19 +0x637a 0x7b1e +0x637b 0x7b35 +0x637c 0x7b28 +0x637d 0x7b36 +0x637e 0x7b50 +0x6421 0x7b7a +0x6422 0x7b04 +0x6423 0x7b4d +0x6424 0x7b0b +0x6425 0x7b4c +0x6426 0x7b45 +0x6427 0x7b75 +0x6428 0x7b65 +0x6429 0x7b74 +0x642a 0x7b67 +0x642b 0x7b70 +0x642c 0x7b71 +0x642d 0x7b6c +0x642e 0x7b6e +0x642f 0x7b9d +0x6430 0x7b98 +0x6431 0x7b9f +0x6432 0x7b8d +0x6433 0x7b9c +0x6434 0x7b9a +0x6435 0x7b8b +0x6436 0x7b92 +0x6437 0x7b8f +0x6438 0x7b5d +0x6439 0x7b99 +0x643a 0x7bcb +0x643b 0x7bc1 +0x643c 0x7bcc +0x643d 0x7bcf +0x643e 0x7bb4 +0x643f 0x7bc6 +0x6440 0x7bdd +0x6441 0x7be9 +0x6442 0x7c11 +0x6443 0x7c14 +0x6444 0x7be6 +0x6445 0x7be5 +0x6446 0x7c60 +0x6447 0x7c00 +0x6448 0x7c07 +0x6449 0x7c13 +0x644a 0x7bf3 +0x644b 0x7bf7 +0x644c 0x7c17 +0x644d 0x7c0d +0x644e 0x7bf6 +0x644f 0x7c23 +0x6450 0x7c27 +0x6451 0x7c2a +0x6452 0x7c1f +0x6453 0x7c37 +0x6454 0x7c2b +0x6455 0x7c3d +0x6456 0x7c4c +0x6457 0x7c43 +0x6458 0x7c54 +0x6459 0x7c4f +0x645a 0x7c40 +0x645b 0x7c50 +0x645c 0x7c58 +0x645d 0x7c5f +0x645e 0x7c64 +0x645f 0x7c56 +0x6460 0x7c65 +0x6461 0x7c6c +0x6462 0x7c75 +0x6463 0x7c83 +0x6464 0x7c90 +0x6465 0x7ca4 +0x6466 0x7cad +0x6467 0x7ca2 +0x6468 0x7cab +0x6469 0x7ca1 +0x646a 0x7ca8 +0x646b 0x7cb3 +0x646c 0x7cb2 +0x646d 0x7cb1 +0x646e 0x7cae +0x646f 0x7cb9 +0x6470 0x7cbd +0x6471 0x7cc0 +0x6472 0x7cc5 +0x6473 0x7cc2 +0x6474 0x7cd8 +0x6475 0x7cd2 +0x6476 0x7cdc +0x6477 0x7ce2 +0x6478 0x9b3b +0x6479 0x7cef +0x647a 0x7cf2 +0x647b 0x7cf4 +0x647c 0x7cf6 +0x647d 0x7cfa +0x647e 0x7d06 +0x6521 0x7d02 +0x6522 0x7d1c +0x6523 0x7d15 +0x6524 0x7d0a +0x6525 0x7d45 +0x6526 0x7d4b +0x6527 0x7d2e +0x6528 0x7d32 +0x6529 0x7d3f +0x652a 0x7d35 +0x652b 0x7d46 +0x652c 0x7d73 +0x652d 0x7d56 +0x652e 0x7d4e +0x652f 0x7d72 +0x6530 0x7d68 +0x6531 0x7d6e +0x6532 0x7d4f +0x6533 0x7d63 +0x6534 0x7d93 +0x6535 0x7d89 +0x6536 0x7d5b +0x6537 0x7d8f +0x6538 0x7d7d +0x6539 0x7d9b +0x653a 0x7dba +0x653b 0x7dae +0x653c 0x7da3 +0x653d 0x7db5 +0x653e 0x7dc7 +0x653f 0x7dbd +0x6540 0x7dab +0x6541 0x7e3d +0x6542 0x7da2 +0x6543 0x7daf +0x6544 0x7ddc +0x6545 0x7db8 +0x6546 0x7d9f +0x6547 0x7db0 +0x6548 0x7dd8 +0x6549 0x7ddd +0x654a 0x7de4 +0x654b 0x7dde +0x654c 0x7dfb +0x654d 0x7df2 +0x654e 0x7de1 +0x654f 0x7e05 +0x6550 0x7e0a +0x6551 0x7e23 +0x6552 0x7e21 +0x6553 0x7e12 +0x6554 0x7e31 +0x6555 0x7e1f +0x6556 0x7e09 +0x6557 0x7e0b +0x6558 0x7e22 +0x6559 0x7e46 +0x655a 0x7e66 +0x655b 0x7e3b +0x655c 0x7e35 +0x655d 0x7e39 +0x655e 0x7e43 +0x655f 0x7e37 +0x6560 0x7e32 +0x6561 0x7e3a +0x6562 0x7e67 +0x6563 0x7e5d +0x6564 0x7e56 +0x6565 0x7e5e +0x6566 0x7e59 +0x6567 0x7e5a +0x6568 0x7e79 +0x6569 0x7e6a +0x656a 0x7e69 +0x656b 0x7e7c +0x656c 0x7e7b +0x656d 0x7e83 +0x656e 0x7dd5 +0x656f 0x7e7d +0x6570 0x8fae +0x6571 0x7e7f +0x6572 0x7e88 +0x6573 0x7e89 +0x6574 0x7e8c +0x6575 0x7e92 +0x6576 0x7e90 +0x6577 0x7e93 +0x6578 0x7e94 +0x6579 0x7e96 +0x657a 0x7e8e +0x657b 0x7e9b +0x657c 0x7e9c +0x657d 0x7f38 +0x657e 0x7f3a +0x6621 0x7f45 +0x6622 0x7f4c +0x6623 0x7f4d +0x6624 0x7f4e +0x6625 0x7f50 +0x6626 0x7f51 +0x6627 0x7f55 +0x6628 0x7f54 +0x6629 0x7f58 +0x662a 0x7f5f +0x662b 0x7f60 +0x662c 0x7f68 +0x662d 0x7f69 +0x662e 0x7f67 +0x662f 0x7f78 +0x6630 0x7f82 +0x6631 0x7f86 +0x6632 0x7f83 +0x6633 0x7f88 +0x6634 0x7f87 +0x6635 0x7f8c +0x6636 0x7f94 +0x6637 0x7f9e +0x6638 0x7f9d +0x6639 0x7f9a +0x663a 0x7fa3 +0x663b 0x7faf +0x663c 0x7fb2 +0x663d 0x7fb9 +0x663e 0x7fae +0x663f 0x7fb6 +0x6640 0x7fb8 +0x6641 0x8b71 +0x6642 0x7fc5 +0x6643 0x7fc6 +0x6644 0x7fca +0x6645 0x7fd5 +0x6646 0x7fd4 +0x6647 0x7fe1 +0x6648 0x7fe6 +0x6649 0x7fe9 +0x664a 0x7ff3 +0x664b 0x7ff9 +0x664c 0x98dc +0x664d 0x8006 +0x664e 0x8004 +0x664f 0x800b +0x6650 0x8012 +0x6651 0x8018 +0x6652 0x8019 +0x6653 0x801c +0x6654 0x8021 +0x6655 0x8028 +0x6656 0x803f +0x6657 0x803b +0x6658 0x804a +0x6659 0x8046 +0x665a 0x8052 +0x665b 0x8058 +0x665c 0x805a +0x665d 0x805f +0x665e 0x8062 +0x665f 0x8068 +0x6660 0x8073 +0x6661 0x8072 +0x6662 0x8070 +0x6663 0x8076 +0x6664 0x8079 +0x6665 0x807d +0x6666 0x807f +0x6667 0x8084 +0x6668 0x8086 +0x6669 0x8085 +0x666a 0x809b +0x666b 0x8093 +0x666c 0x809a +0x666d 0x80ad +0x666e 0x5190 +0x666f 0x80ac +0x6670 0x80db +0x6671 0x80e5 +0x6672 0x80d9 +0x6673 0x80dd +0x6674 0x80c4 +0x6675 0x80da +0x6676 0x80d6 +0x6677 0x8109 +0x6678 0x80ef +0x6679 0x80f1 +0x667a 0x811b +0x667b 0x8129 +0x667c 0x8123 +0x667d 0x812f +0x667e 0x814b +0x6721 0x968b +0x6722 0x8146 +0x6723 0x813e +0x6724 0x8153 +0x6725 0x8151 +0x6726 0x80fc +0x6727 0x8171 +0x6728 0x816e +0x6729 0x8165 +0x672a 0x8166 +0x672b 0x8174 +0x672c 0x8183 +0x672d 0x8188 +0x672e 0x818a +0x672f 0x8180 +0x6730 0x8182 +0x6731 0x81a0 +0x6732 0x8195 +0x6733 0x81a4 +0x6734 0x81a3 +0x6735 0x815f +0x6736 0x8193 +0x6737 0x81a9 +0x6738 0x81b0 +0x6739 0x81b5 +0x673a 0x81be +0x673b 0x81b8 +0x673c 0x81bd +0x673d 0x81c0 +0x673e 0x81c2 +0x673f 0x81ba +0x6740 0x81c9 +0x6741 0x81cd +0x6742 0x81d1 +0x6743 0x81d9 +0x6744 0x81d8 +0x6745 0x81c8 +0x6746 0x81da +0x6747 0x81df +0x6748 0x81e0 +0x6749 0x81e7 +0x674a 0x81fa +0x674b 0x81fb +0x674c 0x81fe +0x674d 0x8201 +0x674e 0x8202 +0x674f 0x8205 +0x6750 0x8207 +0x6751 0x820a +0x6752 0x820d +0x6753 0x8210 +0x6754 0x8216 +0x6755 0x8229 +0x6756 0x822b +0x6757 0x8238 +0x6758 0x8233 +0x6759 0x8240 +0x675a 0x8259 +0x675b 0x8258 +0x675c 0x825d +0x675d 0x825a +0x675e 0x825f +0x675f 0x8264 +0x6760 0x8262 +0x6761 0x8268 +0x6762 0x826a +0x6763 0x826b +0x6764 0x822e +0x6765 0x8271 +0x6766 0x8277 +0x6767 0x8278 +0x6768 0x827e +0x6769 0x828d +0x676a 0x8292 +0x676b 0x82ab +0x676c 0x829f +0x676d 0x82bb +0x676e 0x82ac +0x676f 0x82e1 +0x6770 0x82e3 +0x6771 0x82df +0x6772 0x82d2 +0x6773 0x82f4 +0x6774 0x82f3 +0x6775 0x82fa +0x6776 0x8393 +0x6777 0x8303 +0x6778 0x82fb +0x6779 0x82f9 +0x677a 0x82de +0x677b 0x8306 +0x677c 0x82dc +0x677d 0x8309 +0x677e 0x82d9 +0x6821 0x8335 +0x6822 0x8334 +0x6823 0x8316 +0x6824 0x8332 +0x6825 0x8331 +0x6826 0x8340 +0x6827 0x8339 +0x6828 0x8350 +0x6829 0x8345 +0x682a 0x832f +0x682b 0x832b +0x682c 0x8317 +0x682d 0x8318 +0x682e 0x8385 +0x682f 0x839a +0x6830 0x83aa +0x6831 0x839f +0x6832 0x83a2 +0x6833 0x8396 +0x6834 0x8323 +0x6835 0x838e +0x6836 0x8387 +0x6837 0x838a +0x6838 0x837c +0x6839 0x83b5 +0x683a 0x8373 +0x683b 0x8375 +0x683c 0x83a0 +0x683d 0x8389 +0x683e 0x83a8 +0x683f 0x83f4 +0x6840 0x8413 +0x6841 0x83eb +0x6842 0x83ce +0x6843 0x83fd +0x6844 0x8403 +0x6845 0x83d8 +0x6846 0x840b +0x6847 0x83c1 +0x6848 0x83f7 +0x6849 0x8407 +0x684a 0x83e0 +0x684b 0x83f2 +0x684c 0x840d +0x684d 0x8422 +0x684e 0x8420 +0x684f 0x83bd +0x6850 0x8438 +0x6851 0x8506 +0x6852 0x83fb +0x6853 0x846d +0x6854 0x842a +0x6855 0x843c +0x6856 0x855a +0x6857 0x8484 +0x6858 0x8477 +0x6859 0x846b +0x685a 0x84ad +0x685b 0x846e +0x685c 0x8482 +0x685d 0x8469 +0x685e 0x8446 +0x685f 0x842c +0x6860 0x846f +0x6861 0x8479 +0x6862 0x8435 +0x6863 0x84ca +0x6864 0x8462 +0x6865 0x84b9 +0x6866 0x84bf +0x6867 0x849f +0x6868 0x84d9 +0x6869 0x84cd +0x686a 0x84bb +0x686b 0x84da +0x686c 0x84d0 +0x686d 0x84c1 +0x686e 0x84c6 +0x686f 0x84d6 +0x6870 0x84a1 +0x6871 0x8521 +0x6872 0x84ff +0x6873 0x84f4 +0x6874 0x8517 +0x6875 0x8518 +0x6876 0x852c +0x6877 0x851f +0x6878 0x8515 +0x6879 0x8514 +0x687a 0x84fc +0x687b 0x8540 +0x687c 0x8563 +0x687d 0x8558 +0x687e 0x8548 +0x6921 0x8541 +0x6922 0x8602 +0x6923 0x854b +0x6924 0x8555 +0x6925 0x8580 +0x6926 0x85a4 +0x6927 0x8588 +0x6928 0x8591 +0x6929 0x858a +0x692a 0x85a8 +0x692b 0x856d +0x692c 0x8594 +0x692d 0x859b +0x692e 0x85ea +0x692f 0x8587 +0x6930 0x859c +0x6931 0x8577 +0x6932 0x857e +0x6933 0x8590 +0x6934 0x85c9 +0x6935 0x85ba +0x6936 0x85cf +0x6937 0x85b9 +0x6938 0x85d0 +0x6939 0x85d5 +0x693a 0x85dd +0x693b 0x85e5 +0x693c 0x85dc +0x693d 0x85f9 +0x693e 0x860a +0x693f 0x8613 +0x6940 0x860b +0x6941 0x85fe +0x6942 0x85fa +0x6943 0x8606 +0x6944 0x8622 +0x6945 0x861a +0x6946 0x8630 +0x6947 0x863f +0x6948 0x864d +0x6949 0x4e55 +0x694a 0x8654 +0x694b 0x865f +0x694c 0x8667 +0x694d 0x8671 +0x694e 0x8693 +0x694f 0x86a3 +0x6950 0x86a9 +0x6951 0x86aa +0x6952 0x868b +0x6953 0x868c +0x6954 0x86b6 +0x6955 0x86af +0x6956 0x86c4 +0x6957 0x86c6 +0x6958 0x86b0 +0x6959 0x86c9 +0x695a 0x8823 +0x695b 0x86ab +0x695c 0x86d4 +0x695d 0x86de +0x695e 0x86e9 +0x695f 0x86ec +0x6960 0x86df +0x6961 0x86db +0x6962 0x86ef +0x6963 0x8712 +0x6964 0x8706 +0x6965 0x8708 +0x6966 0x8700 +0x6967 0x8703 +0x6968 0x86fb +0x6969 0x8711 +0x696a 0x8709 +0x696b 0x870d +0x696c 0x86f9 +0x696d 0x870a +0x696e 0x8734 +0x696f 0x873f +0x6970 0x8737 +0x6971 0x873b +0x6972 0x8725 +0x6973 0x8729 +0x6974 0x871a +0x6975 0x8760 +0x6976 0x875f +0x6977 0x8778 +0x6978 0x874c +0x6979 0x874e +0x697a 0x8774 +0x697b 0x8757 +0x697c 0x8768 +0x697d 0x876e +0x697e 0x8759 +0x6a21 0x8753 +0x6a22 0x8763 +0x6a23 0x876a +0x6a24 0x8805 +0x6a25 0x87a2 +0x6a26 0x879f +0x6a27 0x8782 +0x6a28 0x87af +0x6a29 0x87cb +0x6a2a 0x87bd +0x6a2b 0x87c0 +0x6a2c 0x87d0 +0x6a2d 0x96d6 +0x6a2e 0x87ab +0x6a2f 0x87c4 +0x6a30 0x87b3 +0x6a31 0x87c7 +0x6a32 0x87c6 +0x6a33 0x87bb +0x6a34 0x87ef +0x6a35 0x87f2 +0x6a36 0x87e0 +0x6a37 0x880f +0x6a38 0x880d +0x6a39 0x87fe +0x6a3a 0x87f6 +0x6a3b 0x87f7 +0x6a3c 0x880e +0x6a3d 0x87d2 +0x6a3e 0x8811 +0x6a3f 0x8816 +0x6a40 0x8815 +0x6a41 0x8822 +0x6a42 0x8821 +0x6a43 0x8831 +0x6a44 0x8836 +0x6a45 0x8839 +0x6a46 0x8827 +0x6a47 0x883b +0x6a48 0x8844 +0x6a49 0x8842 +0x6a4a 0x8852 +0x6a4b 0x8859 +0x6a4c 0x885e +0x6a4d 0x8862 +0x6a4e 0x886b +0x6a4f 0x8881 +0x6a50 0x887e +0x6a51 0x889e +0x6a52 0x8875 +0x6a53 0x887d +0x6a54 0x88b5 +0x6a55 0x8872 +0x6a56 0x8882 +0x6a57 0x8897 +0x6a58 0x8892 +0x6a59 0x88ae +0x6a5a 0x8899 +0x6a5b 0x88a2 +0x6a5c 0x888d +0x6a5d 0x88a4 +0x6a5e 0x88b0 +0x6a5f 0x88bf +0x6a60 0x88b1 +0x6a61 0x88c3 +0x6a62 0x88c4 +0x6a63 0x88d4 +0x6a64 0x88d8 +0x6a65 0x88d9 +0x6a66 0x88dd +0x6a67 0x88f9 +0x6a68 0x8902 +0x6a69 0x88fc +0x6a6a 0x88f4 +0x6a6b 0x88e8 +0x6a6c 0x88f2 +0x6a6d 0x8904 +0x6a6e 0x890c +0x6a6f 0x890a +0x6a70 0x8913 +0x6a71 0x8943 +0x6a72 0x891e +0x6a73 0x8925 +0x6a74 0x892a +0x6a75 0x892b +0x6a76 0x8941 +0x6a77 0x8944 +0x6a78 0x893b +0x6a79 0x8936 +0x6a7a 0x8938 +0x6a7b 0x894c +0x6a7c 0x891d +0x6a7d 0x8960 +0x6a7e 0x895e +0x6b21 0x8966 +0x6b22 0x8964 +0x6b23 0x896d +0x6b24 0x896a +0x6b25 0x896f +0x6b26 0x8974 +0x6b27 0x8977 +0x6b28 0x897e +0x6b29 0x8983 +0x6b2a 0x8988 +0x6b2b 0x898a +0x6b2c 0x8993 +0x6b2d 0x8998 +0x6b2e 0x89a1 +0x6b2f 0x89a9 +0x6b30 0x89a6 +0x6b31 0x89ac +0x6b32 0x89af +0x6b33 0x89b2 +0x6b34 0x89ba +0x6b35 0x89bd +0x6b36 0x89bf +0x6b37 0x89c0 +0x6b38 0x89da +0x6b39 0x89dc +0x6b3a 0x89dd +0x6b3b 0x89e7 +0x6b3c 0x89f4 +0x6b3d 0x89f8 +0x6b3e 0x8a03 +0x6b3f 0x8a16 +0x6b40 0x8a10 +0x6b41 0x8a0c +0x6b42 0x8a1b +0x6b43 0x8a1d +0x6b44 0x8a25 +0x6b45 0x8a36 +0x6b46 0x8a41 +0x6b47 0x8a5b +0x6b48 0x8a52 +0x6b49 0x8a46 +0x6b4a 0x8a48 +0x6b4b 0x8a7c +0x6b4c 0x8a6d +0x6b4d 0x8a6c +0x6b4e 0x8a62 +0x6b4f 0x8a85 +0x6b50 0x8a82 +0x6b51 0x8a84 +0x6b52 0x8aa8 +0x6b53 0x8aa1 +0x6b54 0x8a91 +0x6b55 0x8aa5 +0x6b56 0x8aa6 +0x6b57 0x8a9a +0x6b58 0x8aa3 +0x6b59 0x8ac4 +0x6b5a 0x8acd +0x6b5b 0x8ac2 +0x6b5c 0x8ada +0x6b5d 0x8aeb +0x6b5e 0x8af3 +0x6b5f 0x8ae7 +0x6b60 0x8ae4 +0x6b61 0x8af1 +0x6b62 0x8b14 +0x6b63 0x8ae0 +0x6b64 0x8ae2 +0x6b65 0x8af7 +0x6b66 0x8ade +0x6b67 0x8adb +0x6b68 0x8b0c +0x6b69 0x8b07 +0x6b6a 0x8b1a +0x6b6b 0x8ae1 +0x6b6c 0x8b16 +0x6b6d 0x8b10 +0x6b6e 0x8b17 +0x6b6f 0x8b20 +0x6b70 0x8b33 +0x6b71 0x97ab +0x6b72 0x8b26 +0x6b73 0x8b2b +0x6b74 0x8b3e +0x6b75 0x8b28 +0x6b76 0x8b41 +0x6b77 0x8b4c +0x6b78 0x8b4f +0x6b79 0x8b4e +0x6b7a 0x8b49 +0x6b7b 0x8b56 +0x6b7c 0x8b5b +0x6b7d 0x8b5a +0x6b7e 0x8b6b +0x6c21 0x8b5f +0x6c22 0x8b6c +0x6c23 0x8b6f +0x6c24 0x8b74 +0x6c25 0x8b7d +0x6c26 0x8b80 +0x6c27 0x8b8c +0x6c28 0x8b8e +0x6c29 0x8b92 +0x6c2a 0x8b93 +0x6c2b 0x8b96 +0x6c2c 0x8b99 +0x6c2d 0x8b9a +0x6c2e 0x8c3a +0x6c2f 0x8c41 +0x6c30 0x8c3f +0x6c31 0x8c48 +0x6c32 0x8c4c +0x6c33 0x8c4e +0x6c34 0x8c50 +0x6c35 0x8c55 +0x6c36 0x8c62 +0x6c37 0x8c6c +0x6c38 0x8c78 +0x6c39 0x8c7a +0x6c3a 0x8c82 +0x6c3b 0x8c89 +0x6c3c 0x8c85 +0x6c3d 0x8c8a +0x6c3e 0x8c8d +0x6c3f 0x8c8e +0x6c40 0x8c94 +0x6c41 0x8c7c +0x6c42 0x8c98 +0x6c43 0x621d +0x6c44 0x8cad +0x6c45 0x8caa +0x6c46 0x8cbd +0x6c47 0x8cb2 +0x6c48 0x8cb3 +0x6c49 0x8cae +0x6c4a 0x8cb6 +0x6c4b 0x8cc8 +0x6c4c 0x8cc1 +0x6c4d 0x8ce4 +0x6c4e 0x8ce3 +0x6c4f 0x8cda +0x6c50 0x8cfd +0x6c51 0x8cfa +0x6c52 0x8cfb +0x6c53 0x8d04 +0x6c54 0x8d05 +0x6c55 0x8d0a +0x6c56 0x8d07 +0x6c57 0x8d0f +0x6c58 0x8d0d +0x6c59 0x8d10 +0x6c5a 0x9f4e +0x6c5b 0x8d13 +0x6c5c 0x8ccd +0x6c5d 0x8d14 +0x6c5e 0x8d16 +0x6c5f 0x8d67 +0x6c60 0x8d6d +0x6c61 0x8d71 +0x6c62 0x8d73 +0x6c63 0x8d81 +0x6c64 0x8d99 +0x6c65 0x8dc2 +0x6c66 0x8dbe +0x6c67 0x8dba +0x6c68 0x8dcf +0x6c69 0x8dda +0x6c6a 0x8dd6 +0x6c6b 0x8dcc +0x6c6c 0x8ddb +0x6c6d 0x8dcb +0x6c6e 0x8dea +0x6c6f 0x8deb +0x6c70 0x8ddf +0x6c71 0x8de3 +0x6c72 0x8dfc +0x6c73 0x8e08 +0x6c74 0x8e09 +0x6c75 0x8dff +0x6c76 0x8e1d +0x6c77 0x8e1e +0x6c78 0x8e10 +0x6c79 0x8e1f +0x6c7a 0x8e42 +0x6c7b 0x8e35 +0x6c7c 0x8e30 +0x6c7d 0x8e34 +0x6c7e 0x8e4a +0x6d21 0x8e47 +0x6d22 0x8e49 +0x6d23 0x8e4c +0x6d24 0x8e50 +0x6d25 0x8e48 +0x6d26 0x8e59 +0x6d27 0x8e64 +0x6d28 0x8e60 +0x6d29 0x8e2a +0x6d2a 0x8e63 +0x6d2b 0x8e55 +0x6d2c 0x8e76 +0x6d2d 0x8e72 +0x6d2e 0x8e7c +0x6d2f 0x8e81 +0x6d30 0x8e87 +0x6d31 0x8e85 +0x6d32 0x8e84 +0x6d33 0x8e8b +0x6d34 0x8e8a +0x6d35 0x8e93 +0x6d36 0x8e91 +0x6d37 0x8e94 +0x6d38 0x8e99 +0x6d39 0x8eaa +0x6d3a 0x8ea1 +0x6d3b 0x8eac +0x6d3c 0x8eb0 +0x6d3d 0x8ec6 +0x6d3e 0x8eb1 +0x6d3f 0x8ebe +0x6d40 0x8ec5 +0x6d41 0x8ec8 +0x6d42 0x8ecb +0x6d43 0x8edb +0x6d44 0x8ee3 +0x6d45 0x8efc +0x6d46 0x8efb +0x6d47 0x8eeb +0x6d48 0x8efe +0x6d49 0x8f0a +0x6d4a 0x8f05 +0x6d4b 0x8f15 +0x6d4c 0x8f12 +0x6d4d 0x8f19 +0x6d4e 0x8f13 +0x6d4f 0x8f1c +0x6d50 0x8f1f +0x6d51 0x8f1b +0x6d52 0x8f0c +0x6d53 0x8f26 +0x6d54 0x8f33 +0x6d55 0x8f3b +0x6d56 0x8f39 +0x6d57 0x8f45 +0x6d58 0x8f42 +0x6d59 0x8f3e +0x6d5a 0x8f4c +0x6d5b 0x8f49 +0x6d5c 0x8f46 +0x6d5d 0x8f4e +0x6d5e 0x8f57 +0x6d5f 0x8f5c +0x6d60 0x8f62 +0x6d61 0x8f63 +0x6d62 0x8f64 +0x6d63 0x8f9c +0x6d64 0x8f9f +0x6d65 0x8fa3 +0x6d66 0x8fad +0x6d67 0x8faf +0x6d68 0x8fb7 +0x6d69 0x8fda +0x6d6a 0x8fe5 +0x6d6b 0x8fe2 +0x6d6c 0x8fea +0x6d6d 0x8fef +0x6d6e 0x9087 +0x6d6f 0x8ff4 +0x6d70 0x9005 +0x6d71 0x8ff9 +0x6d72 0x8ffa +0x6d73 0x9011 +0x6d74 0x9015 +0x6d75 0x9021 +0x6d76 0x900d +0x6d77 0x901e +0x6d78 0x9016 +0x6d79 0x900b +0x6d7a 0x9027 +0x6d7b 0x9036 +0x6d7c 0x9035 +0x6d7d 0x9039 +0x6d7e 0x8ff8 +0x6e21 0x904f +0x6e22 0x9050 +0x6e23 0x9051 +0x6e24 0x9052 +0x6e25 0x900e +0x6e26 0x9049 +0x6e27 0x903e +0x6e28 0x9056 +0x6e29 0x9058 +0x6e2a 0x905e +0x6e2b 0x9068 +0x6e2c 0x906f +0x6e2d 0x9076 +0x6e2e 0x96a8 +0x6e2f 0x9072 +0x6e30 0x9082 +0x6e31 0x907d +0x6e32 0x9081 +0x6e33 0x9080 +0x6e34 0x908a +0x6e35 0x9089 +0x6e36 0x908f +0x6e37 0x90a8 +0x6e38 0x90af +0x6e39 0x90b1 +0x6e3a 0x90b5 +0x6e3b 0x90e2 +0x6e3c 0x90e4 +0x6e3d 0x6248 +0x6e3e 0x90db +0x6e3f 0x9102 +0x6e40 0x9112 +0x6e41 0x9119 +0x6e42 0x9132 +0x6e43 0x9130 +0x6e44 0x914a +0x6e45 0x9156 +0x6e46 0x9158 +0x6e47 0x9163 +0x6e48 0x9165 +0x6e49 0x9169 +0x6e4a 0x9173 +0x6e4b 0x9172 +0x6e4c 0x918b +0x6e4d 0x9189 +0x6e4e 0x9182 +0x6e4f 0x91a2 +0x6e50 0x91ab +0x6e51 0x91af +0x6e52 0x91aa +0x6e53 0x91b5 +0x6e54 0x91b4 +0x6e55 0x91ba +0x6e56 0x91c0 +0x6e57 0x91c1 +0x6e58 0x91c9 +0x6e59 0x91cb +0x6e5a 0x91d0 +0x6e5b 0x91d6 +0x6e5c 0x91df +0x6e5d 0x91e1 +0x6e5e 0x91db +0x6e5f 0x91fc +0x6e60 0x91f5 +0x6e61 0x91f6 +0x6e62 0x921e +0x6e63 0x91ff +0x6e64 0x9214 +0x6e65 0x922c +0x6e66 0x9215 +0x6e67 0x9211 +0x6e68 0x925e +0x6e69 0x9257 +0x6e6a 0x9245 +0x6e6b 0x9249 +0x6e6c 0x9264 +0x6e6d 0x9248 +0x6e6e 0x9295 +0x6e6f 0x923f +0x6e70 0x924b +0x6e71 0x9250 +0x6e72 0x929c +0x6e73 0x9296 +0x6e74 0x9293 +0x6e75 0x929b +0x6e76 0x925a +0x6e77 0x92cf +0x6e78 0x92b9 +0x6e79 0x92b7 +0x6e7a 0x92e9 +0x6e7b 0x930f +0x6e7c 0x92fa +0x6e7d 0x9344 +0x6e7e 0x932e +0x6f21 0x9319 +0x6f22 0x9322 +0x6f23 0x931a +0x6f24 0x9323 +0x6f25 0x933a +0x6f26 0x9335 +0x6f27 0x933b +0x6f28 0x935c +0x6f29 0x9360 +0x6f2a 0x937c +0x6f2b 0x936e +0x6f2c 0x9356 +0x6f2d 0x93b0 +0x6f2e 0x93ac +0x6f2f 0x93ad +0x6f30 0x9394 +0x6f31 0x93b9 +0x6f32 0x93d6 +0x6f33 0x93d7 +0x6f34 0x93e8 +0x6f35 0x93e5 +0x6f36 0x93d8 +0x6f37 0x93c3 +0x6f38 0x93dd +0x6f39 0x93d0 +0x6f3a 0x93c8 +0x6f3b 0x93e4 +0x6f3c 0x941a +0x6f3d 0x9414 +0x6f3e 0x9413 +0x6f3f 0x9403 +0x6f40 0x9407 +0x6f41 0x9410 +0x6f42 0x9436 +0x6f43 0x942b +0x6f44 0x9435 +0x6f45 0x9421 +0x6f46 0x943a +0x6f47 0x9441 +0x6f48 0x9452 +0x6f49 0x9444 +0x6f4a 0x945b +0x6f4b 0x9460 +0x6f4c 0x9462 +0x6f4d 0x945e +0x6f4e 0x946a +0x6f4f 0x9229 +0x6f50 0x9470 +0x6f51 0x9475 +0x6f52 0x9477 +0x6f53 0x947d +0x6f54 0x945a +0x6f55 0x947c +0x6f56 0x947e +0x6f57 0x9481 +0x6f58 0x947f +0x6f59 0x9582 +0x6f5a 0x9587 +0x6f5b 0x958a +0x6f5c 0x9594 +0x6f5d 0x9596 +0x6f5e 0x9598 +0x6f5f 0x9599 +0x6f60 0x95a0 +0x6f61 0x95a8 +0x6f62 0x95a7 +0x6f63 0x95ad +0x6f64 0x95bc +0x6f65 0x95bb +0x6f66 0x95b9 +0x6f67 0x95be +0x6f68 0x95ca +0x6f69 0x6ff6 +0x6f6a 0x95c3 +0x6f6b 0x95cd +0x6f6c 0x95cc +0x6f6d 0x95d5 +0x6f6e 0x95d4 +0x6f6f 0x95d6 +0x6f70 0x95dc +0x6f71 0x95e1 +0x6f72 0x95e5 +0x6f73 0x95e2 +0x6f74 0x9621 +0x6f75 0x9628 +0x6f76 0x962e +0x6f77 0x962f +0x6f78 0x9642 +0x6f79 0x964c +0x6f7a 0x964f +0x6f7b 0x964b +0x6f7c 0x9677 +0x6f7d 0x965c +0x6f7e 0x965e +0x7021 0x965d +0x7022 0x965f +0x7023 0x9666 +0x7024 0x9672 +0x7025 0x966c +0x7026 0x968d +0x7027 0x9698 +0x7028 0x9695 +0x7029 0x9697 +0x702a 0x96aa +0x702b 0x96a7 +0x702c 0x96b1 +0x702d 0x96b2 +0x702e 0x96b0 +0x702f 0x96b4 +0x7030 0x96b6 +0x7031 0x96b8 +0x7032 0x96b9 +0x7033 0x96ce +0x7034 0x96cb +0x7035 0x96c9 +0x7036 0x96cd +0x7037 0x894d +0x7038 0x96dc +0x7039 0x970d +0x703a 0x96d5 +0x703b 0x96f9 +0x703c 0x9704 +0x703d 0x9706 +0x703e 0x9708 +0x703f 0x9713 +0x7040 0x970e +0x7041 0x9711 +0x7042 0x970f +0x7043 0x9716 +0x7044 0x9719 +0x7045 0x9724 +0x7046 0x972a +0x7047 0x9730 +0x7048 0x9739 +0x7049 0x973d +0x704a 0x973e +0x704b 0x9744 +0x704c 0x9746 +0x704d 0x9748 +0x704e 0x9742 +0x704f 0x9749 +0x7050 0x975c +0x7051 0x9760 +0x7052 0x9764 +0x7053 0x9766 +0x7054 0x9768 +0x7055 0x52d2 +0x7056 0x976b +0x7057 0x9771 +0x7058 0x9779 +0x7059 0x9785 +0x705a 0x977c +0x705b 0x9781 +0x705c 0x977a +0x705d 0x9786 +0x705e 0x978b +0x705f 0x978f +0x7060 0x9790 +0x7061 0x979c +0x7062 0x97a8 +0x7063 0x97a6 +0x7064 0x97a3 +0x7065 0x97b3 +0x7066 0x97b4 +0x7067 0x97c3 +0x7068 0x97c6 +0x7069 0x97c8 +0x706a 0x97cb +0x706b 0x97dc +0x706c 0x97ed +0x706d 0x9f4f +0x706e 0x97f2 +0x706f 0x7adf +0x7070 0x97f6 +0x7071 0x97f5 +0x7072 0x980f +0x7073 0x980c +0x7074 0x9838 +0x7075 0x9824 +0x7076 0x9821 +0x7077 0x9837 +0x7078 0x983d +0x7079 0x9846 +0x707a 0x984f +0x707b 0x984b +0x707c 0x986b +0x707d 0x986f +0x707e 0x9870 +0x7121 0x9871 +0x7122 0x9874 +0x7123 0x9873 +0x7124 0x98aa +0x7125 0x98af +0x7126 0x98b1 +0x7127 0x98b6 +0x7128 0x98c4 +0x7129 0x98c3 +0x712a 0x98c6 +0x712b 0x98e9 +0x712c 0x98eb +0x712d 0x9903 +0x712e 0x9909 +0x712f 0x9912 +0x7130 0x9914 +0x7131 0x9918 +0x7132 0x9921 +0x7133 0x991d +0x7134 0x991e +0x7135 0x9924 +0x7136 0x9920 +0x7137 0x992c +0x7138 0x992e +0x7139 0x993d +0x713a 0x993e +0x713b 0x9942 +0x713c 0x9949 +0x713d 0x9945 +0x713e 0x9950 +0x713f 0x994b +0x7140 0x9951 +0x7141 0x9952 +0x7142 0x994c +0x7143 0x9955 +0x7144 0x9997 +0x7145 0x9998 +0x7146 0x99a5 +0x7147 0x99ad +0x7148 0x99ae +0x7149 0x99bc +0x714a 0x99df +0x714b 0x99db +0x714c 0x99dd +0x714d 0x99d8 +0x714e 0x99d1 +0x714f 0x99ed +0x7150 0x99ee +0x7151 0x99f1 +0x7152 0x99f2 +0x7153 0x99fb +0x7154 0x99f8 +0x7155 0x9a01 +0x7156 0x9a0f +0x7157 0x9a05 +0x7158 0x99e2 +0x7159 0x9a19 +0x715a 0x9a2b +0x715b 0x9a37 +0x715c 0x9a45 +0x715d 0x9a42 +0x715e 0x9a40 +0x715f 0x9a43 +0x7160 0x9a3e +0x7161 0x9a55 +0x7162 0x9a4d +0x7163 0x9a5b +0x7164 0x9a57 +0x7165 0x9a5f +0x7166 0x9a62 +0x7167 0x9a65 +0x7168 0x9a64 +0x7169 0x9a69 +0x716a 0x9a6b +0x716b 0x9a6a +0x716c 0x9aad +0x716d 0x9ab0 +0x716e 0x9abc +0x716f 0x9ac0 +0x7170 0x9acf +0x7171 0x9ad1 +0x7172 0x9ad3 +0x7173 0x9ad4 +0x7174 0x9ade +0x7175 0x9adf +0x7176 0x9ae2 +0x7177 0x9ae3 +0x7178 0x9ae6 +0x7179 0x9aef +0x717a 0x9aeb +0x717b 0x9aee +0x717c 0x9af4 +0x717d 0x9af1 +0x717e 0x9af7 +0x7221 0x9afb +0x7222 0x9b06 +0x7223 0x9b18 +0x7224 0x9b1a +0x7225 0x9b1f +0x7226 0x9b22 +0x7227 0x9b23 +0x7228 0x9b25 +0x7229 0x9b27 +0x722a 0x9b28 +0x722b 0x9b29 +0x722c 0x9b2a +0x722d 0x9b2e +0x722e 0x9b2f +0x722f 0x9b32 +0x7230 0x9b44 +0x7231 0x9b43 +0x7232 0x9b4f +0x7233 0x9b4d +0x7234 0x9b4e +0x7235 0x9b51 +0x7236 0x9b58 +0x7237 0x9b74 +0x7238 0x9b93 +0x7239 0x9b83 +0x723a 0x9b91 +0x723b 0x9b96 +0x723c 0x9b97 +0x723d 0x9b9f +0x723e 0x9ba0 +0x723f 0x9ba8 +0x7240 0x9bb4 +0x7241 0x9bc0 +0x7242 0x9bca +0x7243 0x9bb9 +0x7244 0x9bc6 +0x7245 0x9bcf +0x7246 0x9bd1 +0x7247 0x9bd2 +0x7248 0x9be3 +0x7249 0x9be2 +0x724a 0x9be4 +0x724b 0x9bd4 +0x724c 0x9be1 +0x724d 0x9c3a +0x724e 0x9bf2 +0x724f 0x9bf1 +0x7250 0x9bf0 +0x7251 0x9c15 +0x7252 0x9c14 +0x7253 0x9c09 +0x7254 0x9c13 +0x7255 0x9c0c +0x7256 0x9c06 +0x7257 0x9c08 +0x7258 0x9c12 +0x7259 0x9c0a +0x725a 0x9c04 +0x725b 0x9c2e +0x725c 0x9c1b +0x725d 0x9c25 +0x725e 0x9c24 +0x725f 0x9c21 +0x7260 0x9c30 +0x7261 0x9c47 +0x7262 0x9c32 +0x7263 0x9c46 +0x7264 0x9c3e +0x7265 0x9c5a +0x7266 0x9c60 +0x7267 0x9c67 +0x7268 0x9c76 +0x7269 0x9c78 +0x726a 0x9ce7 +0x726b 0x9cec +0x726c 0x9cf0 +0x726d 0x9d09 +0x726e 0x9d08 +0x726f 0x9ceb +0x7270 0x9d03 +0x7271 0x9d06 +0x7272 0x9d2a +0x7273 0x9d26 +0x7274 0x9daf +0x7275 0x9d23 +0x7276 0x9d1f +0x7277 0x9d44 +0x7278 0x9d15 +0x7279 0x9d12 +0x727a 0x9d41 +0x727b 0x9d3f +0x727c 0x9d3e +0x727d 0x9d46 +0x727e 0x9d48 +0x7321 0x9d5d +0x7322 0x9d5e +0x7323 0x9d64 +0x7324 0x9d51 +0x7325 0x9d50 +0x7326 0x9d59 +0x7327 0x9d72 +0x7328 0x9d89 +0x7329 0x9d87 +0x732a 0x9dab +0x732b 0x9d6f +0x732c 0x9d7a +0x732d 0x9d9a +0x732e 0x9da4 +0x732f 0x9da9 +0x7330 0x9db2 +0x7331 0x9dc4 +0x7332 0x9dc1 +0x7333 0x9dbb +0x7334 0x9db8 +0x7335 0x9dba +0x7336 0x9dc6 +0x7337 0x9dcf +0x7338 0x9dc2 +0x7339 0x9dd9 +0x733a 0x9dd3 +0x733b 0x9df8 +0x733c 0x9de6 +0x733d 0x9ded +0x733e 0x9def +0x733f 0x9dfd +0x7340 0x9e1a +0x7341 0x9e1b +0x7342 0x9e1e +0x7343 0x9e75 +0x7344 0x9e79 +0x7345 0x9e7d +0x7346 0x9e81 +0x7347 0x9e88 +0x7348 0x9e8b +0x7349 0x9e8c +0x734a 0x9e92 +0x734b 0x9e95 +0x734c 0x9e91 +0x734d 0x9e9d +0x734e 0x9ea5 +0x734f 0x9ea9 +0x7350 0x9eb8 +0x7351 0x9eaa +0x7352 0x9ead +0x7353 0x9761 +0x7354 0x9ecc +0x7355 0x9ece +0x7356 0x9ecf +0x7357 0x9ed0 +0x7358 0x9ed4 +0x7359 0x9edc +0x735a 0x9ede +0x735b 0x9edd +0x735c 0x9ee0 +0x735d 0x9ee5 +0x735e 0x9ee8 +0x735f 0x9eef +0x7360 0x9ef4 +0x7361 0x9ef6 +0x7362 0x9ef7 +0x7363 0x9ef9 +0x7364 0x9efb +0x7365 0x9efc +0x7366 0x9efd +0x7367 0x9f07 +0x7368 0x9f08 +0x7369 0x76b7 +0x736a 0x9f15 +0x736b 0x9f21 +0x736c 0x9f2c +0x736d 0x9f3e +0x736e 0x9f4a +0x736f 0x9f52 +0x7370 0x9f54 +0x7371 0x9f63 +0x7372 0x9f5f +0x7373 0x9f60 +0x7374 0x9f61 +0x7375 0x9f66 +0x7376 0x9f67 +0x7377 0x9f6c +0x7378 0x9f6a +0x7379 0x9f77 +0x737a 0x9f72 +0x737b 0x9f76 +0x737c 0x9f95 +0x737d 0x9f9c +0x737e 0x9fa0 +0x7421 0x582f +0x7422 0x69c7 +0x7423 0x9059 +0x7424 0x7464 +0x7425 0x51dc +0x7426 0x7199 +0x7521 0xe000 +0x7522 0xe001 +0x7523 0xe002 +0x7524 0xe003 +0x7525 0xe004 +0x7526 0xe005 +0x7527 0xe006 +0x7528 0xe007 +0x7529 0xe008 +0x752a 0xe009 +0x752b 0xe00a +0x752c 0xe00b +0x752d 0xe00c +0x752e 0xe00d +0x752f 0xe00e +0x7530 0xe00f +0x7531 0xe010 +0x7532 0xe011 +0x7533 0xe012 +0x7534 0xe013 +0x7535 0xe014 +0x7536 0xe015 +0x7537 0xe016 +0x7538 0xe017 +0x7539 0xe018 +0x753a 0xe019 +0x753b 0xe01a +0x753c 0xe01b +0x753d 0xe01c +0x753e 0xe01d +0x753f 0xe01e +0x7540 0xe01f +0x7541 0xe020 +0x7542 0xe021 +0x7543 0xe022 +0x7544 0xe023 +0x7545 0xe024 +0x7546 0xe025 +0x7547 0xe026 +0x7548 0xe027 +0x7549 0xe028 +0x754a 0xe029 +0x754b 0xe02a +0x754c 0xe02b +0x754d 0xe02c +0x754e 0xe02d +0x754f 0xe02e +0x7550 0xe02f +0x7551 0xe030 +0x7552 0xe031 +0x7553 0xe032 +0x7554 0xe033 +0x7555 0xe034 +0x7556 0xe035 +0x7557 0xe036 +0x7558 0xe037 +0x7559 0xe038 +0x755a 0xe039 +0x755b 0xe03a +0x755c 0xe03b +0x755d 0xe03c +0x755e 0xe03d +0x755f 0xe03e +0x7560 0xe03f +0x7561 0xe040 +0x7562 0xe041 +0x7563 0xe042 +0x7564 0xe043 +0x7565 0xe044 +0x7566 0xe045 +0x7567 0xe046 +0x7568 0xe047 +0x7569 0xe048 +0x756a 0xe049 +0x756b 0xe04a +0x756c 0xe04b +0x756d 0xe04c +0x756e 0xe04d +0x756f 0xe04e +0x7570 0xe04f +0x7571 0xe050 +0x7572 0xe051 +0x7573 0xe052 +0x7574 0xe053 +0x7575 0xe054 +0x7576 0xe055 +0x7577 0xe056 +0x7578 0xe057 +0x7579 0xe058 +0x757a 0xe059 +0x757b 0xe05a +0x757c 0xe05b +0x757d 0xe05c +0x757e 0xe05d +0x7621 0xe05e +0x7622 0xe05f +0x7623 0xe060 +0x7624 0xe061 +0x7625 0xe062 +0x7626 0xe063 +0x7627 0xe064 +0x7628 0xe065 +0x7629 0xe066 +0x762a 0xe067 +0x762b 0xe068 +0x762c 0xe069 +0x762d 0xe06a +0x762e 0xe06b +0x762f 0xe06c +0x7630 0xe06d +0x7631 0xe06e +0x7632 0xe06f +0x7633 0xe070 +0x7634 0xe071 +0x7635 0xe072 +0x7636 0xe073 +0x7637 0xe074 +0x7638 0xe075 +0x7639 0xe076 +0x763a 0xe077 +0x763b 0xe078 +0x763c 0xe079 +0x763d 0xe07a +0x763e 0xe07b +0x763f 0xe07c +0x7640 0xe07d +0x7641 0xe07e +0x7642 0xe07f +0x7643 0xe080 +0x7644 0xe081 +0x7645 0xe082 +0x7646 0xe083 +0x7647 0xe084 +0x7648 0xe085 +0x7649 0xe086 +0x764a 0xe087 +0x764b 0xe088 +0x764c 0xe089 +0x764d 0xe08a +0x764e 0xe08b +0x764f 0xe08c +0x7650 0xe08d +0x7651 0xe08e +0x7652 0xe08f +0x7653 0xe090 +0x7654 0xe091 +0x7655 0xe092 +0x7656 0xe093 +0x7657 0xe094 +0x7658 0xe095 +0x7659 0xe096 +0x765a 0xe097 +0x765b 0xe098 +0x765c 0xe099 +0x765d 0xe09a +0x765e 0xe09b +0x765f 0xe09c +0x7660 0xe09d +0x7661 0xe09e +0x7662 0xe09f +0x7663 0xe0a0 +0x7664 0xe0a1 +0x7665 0xe0a2 +0x7666 0xe0a3 +0x7667 0xe0a4 +0x7668 0xe0a5 +0x7669 0xe0a6 +0x766a 0xe0a7 +0x766b 0xe0a8 +0x766c 0xe0a9 +0x766d 0xe0aa +0x766e 0xe0ab +0x766f 0xe0ac +0x7670 0xe0ad +0x7671 0xe0ae +0x7672 0xe0af +0x7673 0xe0b0 +0x7674 0xe0b1 +0x7675 0xe0b2 +0x7676 0xe0b3 +0x7677 0xe0b4 +0x7678 0xe0b5 +0x7679 0xe0b6 +0x767a 0xe0b7 +0x767b 0xe0b8 +0x767c 0xe0b9 +0x767d 0xe0ba +0x767e 0xe0bb +0x7721 0xe0bc +0x7722 0xe0bd +0x7723 0xe0be +0x7724 0xe0bf +0x7725 0xe0c0 +0x7726 0xe0c1 +0x7727 0xe0c2 +0x7728 0xe0c3 +0x7729 0xe0c4 +0x772a 0xe0c5 +0x772b 0xe0c6 +0x772c 0xe0c7 +0x772d 0xe0c8 +0x772e 0xe0c9 +0x772f 0xe0ca +0x7730 0xe0cb +0x7731 0xe0cc +0x7732 0xe0cd +0x7733 0xe0ce +0x7734 0xe0cf +0x7735 0xe0d0 +0x7736 0xe0d1 +0x7737 0xe0d2 +0x7738 0xe0d3 +0x7739 0xe0d4 +0x773a 0xe0d5 +0x773b 0xe0d6 +0x773c 0xe0d7 +0x773d 0xe0d8 +0x773e 0xe0d9 +0x773f 0xe0da +0x7740 0xe0db +0x7741 0xe0dc +0x7742 0xe0dd +0x7743 0xe0de +0x7744 0xe0df +0x7745 0xe0e0 +0x7746 0xe0e1 +0x7747 0xe0e2 +0x7748 0xe0e3 +0x7749 0xe0e4 +0x774a 0xe0e5 +0x774b 0xe0e6 +0x774c 0xe0e7 +0x774d 0xe0e8 +0x774e 0xe0e9 +0x774f 0xe0ea +0x7750 0xe0eb +0x7751 0xe0ec +0x7752 0xe0ed +0x7753 0xe0ee +0x7754 0xe0ef +0x7755 0xe0f0 +0x7756 0xe0f1 +0x7757 0xe0f2 +0x7758 0xe0f3 +0x7759 0xe0f4 +0x775a 0xe0f5 +0x775b 0xe0f6 +0x775c 0xe0f7 +0x775d 0xe0f8 +0x775e 0xe0f9 +0x775f 0xe0fa +0x7760 0xe0fb +0x7761 0xe0fc +0x7762 0xe0fd +0x7763 0xe0fe +0x7764 0xe0ff +0x7765 0xe100 +0x7766 0xe101 +0x7767 0xe102 +0x7768 0xe103 +0x7769 0xe104 +0x776a 0xe105 +0x776b 0xe106 +0x776c 0xe107 +0x776d 0xe108 +0x776e 0xe109 +0x776f 0xe10a +0x7770 0xe10b +0x7771 0xe10c +0x7772 0xe10d +0x7773 0xe10e +0x7774 0xe10f +0x7775 0xe110 +0x7776 0xe111 +0x7777 0xe112 +0x7778 0xe113 +0x7779 0xe114 +0x777a 0xe115 +0x777b 0xe116 +0x777c 0xe117 +0x777d 0xe118 +0x777e 0xe119 +0x7821 0xe11a +0x7822 0xe11b +0x7823 0xe11c +0x7824 0xe11d +0x7825 0xe11e +0x7826 0xe11f +0x7827 0xe120 +0x7828 0xe121 +0x7829 0xe122 +0x782a 0xe123 +0x782b 0xe124 +0x782c 0xe125 +0x782d 0xe126 +0x782e 0xe127 +0x782f 0xe128 +0x7830 0xe129 +0x7831 0xe12a +0x7832 0xe12b +0x7833 0xe12c +0x7834 0xe12d +0x7835 0xe12e +0x7836 0xe12f +0x7837 0xe130 +0x7838 0xe131 +0x7839 0xe132 +0x783a 0xe133 +0x783b 0xe134 +0x783c 0xe135 +0x783d 0xe136 +0x783e 0xe137 +0x783f 0xe138 +0x7840 0xe139 +0x7841 0xe13a +0x7842 0xe13b +0x7843 0xe13c +0x7844 0xe13d +0x7845 0xe13e +0x7846 0xe13f +0x7847 0xe140 +0x7848 0xe141 +0x7849 0xe142 +0x784a 0xe143 +0x784b 0xe144 +0x784c 0xe145 +0x784d 0xe146 +0x784e 0xe147 +0x784f 0xe148 +0x7850 0xe149 +0x7851 0xe14a +0x7852 0xe14b +0x7853 0xe14c +0x7854 0xe14d +0x7855 0xe14e +0x7856 0xe14f +0x7857 0xe150 +0x7858 0xe151 +0x7859 0xe152 +0x785a 0xe153 +0x785b 0xe154 +0x785c 0xe155 +0x785d 0xe156 +0x785e 0xe157 +0x785f 0xe158 +0x7860 0xe159 +0x7861 0xe15a +0x7862 0xe15b +0x7863 0xe15c +0x7864 0xe15d +0x7865 0xe15e +0x7866 0xe15f +0x7867 0xe160 +0x7868 0xe161 +0x7869 0xe162 +0x786a 0xe163 +0x786b 0xe164 +0x786c 0xe165 +0x786d 0xe166 +0x786e 0xe167 +0x786f 0xe168 +0x7870 0xe169 +0x7871 0xe16a +0x7872 0xe16b +0x7873 0xe16c +0x7874 0xe16d +0x7875 0xe16e +0x7876 0xe16f +0x7877 0xe170 +0x7878 0xe171 +0x7879 0xe172 +0x787a 0xe173 +0x787b 0xe174 +0x787c 0xe175 +0x787d 0xe176 +0x787e 0xe177 +0x7921 0xe178 +0x7922 0xe179 +0x7923 0xe17a +0x7924 0xe17b +0x7925 0xe17c +0x7926 0xe17d +0x7927 0xe17e +0x7928 0xe17f +0x7929 0xe180 +0x792a 0xe181 +0x792b 0xe182 +0x792c 0xe183 +0x792d 0xe184 +0x792e 0xe185 +0x792f 0xe186 +0x7930 0xe187 +0x7931 0xe188 +0x7932 0xe189 +0x7933 0xe18a +0x7934 0xe18b +0x7935 0xe18c +0x7936 0xe18d +0x7937 0xe18e +0x7938 0xe18f +0x7939 0xe190 +0x793a 0xe191 +0x793b 0xe192 +0x793c 0xe193 +0x793d 0xe194 +0x793e 0xe195 +0x793f 0xe196 +0x7940 0xe197 +0x7941 0xe198 +0x7942 0xe199 +0x7943 0xe19a +0x7944 0xe19b +0x7945 0xe19c +0x7946 0xe19d +0x7947 0xe19e +0x7948 0xe19f +0x7949 0xe1a0 +0x794a 0xe1a1 +0x794b 0xe1a2 +0x794c 0xe1a3 +0x794d 0xe1a4 +0x794e 0xe1a5 +0x794f 0xe1a6 +0x7950 0xe1a7 +0x7951 0xe1a8 +0x7952 0xe1a9 +0x7953 0xe1aa +0x7954 0xe1ab +0x7955 0xe1ac +0x7956 0xe1ad +0x7957 0xe1ae +0x7958 0xe1af +0x7959 0xe1b0 +0x795a 0xe1b1 +0x795b 0xe1b2 +0x795c 0xe1b3 +0x795d 0xe1b4 +0x795e 0xe1b5 +0x795f 0xe1b6 +0x7960 0xe1b7 +0x7961 0xe1b8 +0x7962 0xe1b9 +0x7963 0xe1ba +0x7964 0xe1bb +0x7965 0xe1bc +0x7966 0xe1bd +0x7967 0xe1be +0x7968 0xe1bf +0x7969 0xe1c0 +0x796a 0xe1c1 +0x796b 0xe1c2 +0x796c 0xe1c3 +0x796d 0xe1c4 +0x796e 0xe1c5 +0x796f 0xe1c6 +0x7970 0xe1c7 +0x7971 0xe1c8 +0x7972 0xe1c9 +0x7973 0xe1ca +0x7974 0xe1cb +0x7975 0xe1cc +0x7976 0xe1cd +0x7977 0xe1ce +0x7978 0xe1cf +0x7979 0xe1d0 +0x797a 0xe1d1 +0x797b 0xe1d2 +0x797c 0xe1d3 +0x797d 0xe1d4 +0x797e 0xe1d5 +0x7a21 0xe1d6 +0x7a22 0xe1d7 +0x7a23 0xe1d8 +0x7a24 0xe1d9 +0x7a25 0xe1da +0x7a26 0xe1db +0x7a27 0xe1dc +0x7a28 0xe1dd +0x7a29 0xe1de +0x7a2a 0xe1df +0x7a2b 0xe1e0 +0x7a2c 0xe1e1 +0x7a2d 0xe1e2 +0x7a2e 0xe1e3 +0x7a2f 0xe1e4 +0x7a30 0xe1e5 +0x7a31 0xe1e6 +0x7a32 0xe1e7 +0x7a33 0xe1e8 +0x7a34 0xe1e9 +0x7a35 0xe1ea +0x7a36 0xe1eb +0x7a37 0xe1ec +0x7a38 0xe1ed +0x7a39 0xe1ee +0x7a3a 0xe1ef +0x7a3b 0xe1f0 +0x7a3c 0xe1f1 +0x7a3d 0xe1f2 +0x7a3e 0xe1f3 +0x7a3f 0xe1f4 +0x7a40 0xe1f5 +0x7a41 0xe1f6 +0x7a42 0xe1f7 +0x7a43 0xe1f8 +0x7a44 0xe1f9 +0x7a45 0xe1fa +0x7a46 0xe1fb +0x7a47 0xe1fc +0x7a48 0xe1fd +0x7a49 0xe1fe +0x7a4a 0xe1ff +0x7a4b 0xe200 +0x7a4c 0xe201 +0x7a4d 0xe202 +0x7a4e 0xe203 +0x7a4f 0xe204 +0x7a50 0xe205 +0x7a51 0xe206 +0x7a52 0xe207 +0x7a53 0xe208 +0x7a54 0xe209 +0x7a55 0xe20a +0x7a56 0xe20b +0x7a57 0xe20c +0x7a58 0xe20d +0x7a59 0xe20e +0x7a5a 0xe20f +0x7a5b 0xe210 +0x7a5c 0xe211 +0x7a5d 0xe212 +0x7a5e 0xe213 +0x7a5f 0xe214 +0x7a60 0xe215 +0x7a61 0xe216 +0x7a62 0xe217 +0x7a63 0xe218 +0x7a64 0xe219 +0x7a65 0xe21a +0x7a66 0xe21b +0x7a67 0xe21c +0x7a68 0xe21d +0x7a69 0xe21e +0x7a6a 0xe21f +0x7a6b 0xe220 +0x7a6c 0xe221 +0x7a6d 0xe222 +0x7a6e 0xe223 +0x7a6f 0xe224 +0x7a70 0xe225 +0x7a71 0xe226 +0x7a72 0xe227 +0x7a73 0xe228 +0x7a74 0xe229 +0x7a75 0xe22a +0x7a76 0xe22b +0x7a77 0xe22c +0x7a78 0xe22d +0x7a79 0xe22e +0x7a7a 0xe22f +0x7a7b 0xe230 +0x7a7c 0xe231 +0x7a7d 0xe232 +0x7a7e 0xe233 +0x7b21 0xe234 +0x7b22 0xe235 +0x7b23 0xe236 +0x7b24 0xe237 +0x7b25 0xe238 +0x7b26 0xe239 +0x7b27 0xe23a +0x7b28 0xe23b +0x7b29 0xe23c +0x7b2a 0xe23d +0x7b2b 0xe23e +0x7b2c 0xe23f +0x7b2d 0xe240 +0x7b2e 0xe241 +0x7b2f 0xe242 +0x7b30 0xe243 +0x7b31 0xe244 +0x7b32 0xe245 +0x7b33 0xe246 +0x7b34 0xe247 +0x7b35 0xe248 +0x7b36 0xe249 +0x7b37 0xe24a +0x7b38 0xe24b +0x7b39 0xe24c +0x7b3a 0xe24d +0x7b3b 0xe24e +0x7b3c 0xe24f +0x7b3d 0xe250 +0x7b3e 0xe251 +0x7b3f 0xe252 +0x7b40 0xe253 +0x7b41 0xe254 +0x7b42 0xe255 +0x7b43 0xe256 +0x7b44 0xe257 +0x7b45 0xe258 +0x7b46 0xe259 +0x7b47 0xe25a +0x7b48 0xe25b +0x7b49 0xe25c +0x7b4a 0xe25d +0x7b4b 0xe25e +0x7b4c 0xe25f +0x7b4d 0xe260 +0x7b4e 0xe261 +0x7b4f 0xe262 +0x7b50 0xe263 +0x7b51 0xe264 +0x7b52 0xe265 +0x7b53 0xe266 +0x7b54 0xe267 +0x7b55 0xe268 +0x7b56 0xe269 +0x7b57 0xe26a +0x7b58 0xe26b +0x7b59 0xe26c +0x7b5a 0xe26d +0x7b5b 0xe26e +0x7b5c 0xe26f +0x7b5d 0xe270 +0x7b5e 0xe271 +0x7b5f 0xe272 +0x7b60 0xe273 +0x7b61 0xe274 +0x7b62 0xe275 +0x7b63 0xe276 +0x7b64 0xe277 +0x7b65 0xe278 +0x7b66 0xe279 +0x7b67 0xe27a +0x7b68 0xe27b +0x7b69 0xe27c +0x7b6a 0xe27d +0x7b6b 0xe27e +0x7b6c 0xe27f +0x7b6d 0xe280 +0x7b6e 0xe281 +0x7b6f 0xe282 +0x7b70 0xe283 +0x7b71 0xe284 +0x7b72 0xe285 +0x7b73 0xe286 +0x7b74 0xe287 +0x7b75 0xe288 +0x7b76 0xe289 +0x7b77 0xe28a +0x7b78 0xe28b +0x7b79 0xe28c +0x7b7a 0xe28d +0x7b7b 0xe28e +0x7b7c 0xe28f +0x7b7d 0xe290 +0x7b7e 0xe291 +0x7c21 0xe292 +0x7c22 0xe293 +0x7c23 0xe294 +0x7c24 0xe295 +0x7c25 0xe296 +0x7c26 0xe297 +0x7c27 0xe298 +0x7c28 0xe299 +0x7c29 0xe29a +0x7c2a 0xe29b +0x7c2b 0xe29c +0x7c2c 0xe29d +0x7c2d 0xe29e +0x7c2e 0xe29f +0x7c2f 0xe2a0 +0x7c30 0xe2a1 +0x7c31 0xe2a2 +0x7c32 0xe2a3 +0x7c33 0xe2a4 +0x7c34 0xe2a5 +0x7c35 0xe2a6 +0x7c36 0xe2a7 +0x7c37 0xe2a8 +0x7c38 0xe2a9 +0x7c39 0xe2aa +0x7c3a 0xe2ab +0x7c3b 0xe2ac +0x7c3c 0xe2ad +0x7c3d 0xe2ae +0x7c3e 0xe2af +0x7c3f 0xe2b0 +0x7c40 0xe2b1 +0x7c41 0xe2b2 +0x7c42 0xe2b3 +0x7c43 0xe2b4 +0x7c44 0xe2b5 +0x7c45 0xe2b6 +0x7c46 0xe2b7 +0x7c47 0xe2b8 +0x7c48 0xe2b9 +0x7c49 0xe2ba +0x7c4a 0xe2bb +0x7c4b 0xe2bc +0x7c4c 0xe2bd +0x7c4d 0xe2be +0x7c4e 0xe2bf +0x7c4f 0xe2c0 +0x7c50 0xe2c1 +0x7c51 0xe2c2 +0x7c52 0xe2c3 +0x7c53 0xe2c4 +0x7c54 0xe2c5 +0x7c55 0xe2c6 +0x7c56 0xe2c7 +0x7c57 0xe2c8 +0x7c58 0xe2c9 +0x7c59 0xe2ca +0x7c5a 0xe2cb +0x7c5b 0xe2cc +0x7c5c 0xe2cd +0x7c5d 0xe2ce +0x7c5e 0xe2cf +0x7c5f 0xe2d0 +0x7c60 0xe2d1 +0x7c61 0xe2d2 +0x7c62 0xe2d3 +0x7c63 0xe2d4 +0x7c64 0xe2d5 +0x7c65 0xe2d6 +0x7c66 0xe2d7 +0x7c67 0xe2d8 +0x7c68 0xe2d9 +0x7c69 0xe2da +0x7c6a 0xe2db +0x7c6b 0xe2dc +0x7c6c 0xe2dd +0x7c6d 0xe2de +0x7c6e 0xe2df +0x7c6f 0xe2e0 +0x7c70 0xe2e1 +0x7c71 0xe2e2 +0x7c72 0xe2e3 +0x7c73 0xe2e4 +0x7c74 0xe2e5 +0x7c75 0xe2e6 +0x7c76 0xe2e7 +0x7c77 0xe2e8 +0x7c78 0xe2e9 +0x7c79 0xe2ea +0x7c7a 0xe2eb +0x7c7b 0xe2ec +0x7c7c 0xe2ed +0x7c7d 0xe2ee +0x7c7e 0xe2ef +0x7d21 0xe2f0 +0x7d22 0xe2f1 +0x7d23 0xe2f2 +0x7d24 0xe2f3 +0x7d25 0xe2f4 +0x7d26 0xe2f5 +0x7d27 0xe2f6 +0x7d28 0xe2f7 +0x7d29 0xe2f8 +0x7d2a 0xe2f9 +0x7d2b 0xe2fa +0x7d2c 0xe2fb +0x7d2d 0xe2fc +0x7d2e 0xe2fd +0x7d2f 0xe2fe +0x7d30 0xe2ff +0x7d31 0xe300 +0x7d32 0xe301 +0x7d33 0xe302 +0x7d34 0xe303 +0x7d35 0xe304 +0x7d36 0xe305 +0x7d37 0xe306 +0x7d38 0xe307 +0x7d39 0xe308 +0x7d3a 0xe309 +0x7d3b 0xe30a +0x7d3c 0xe30b +0x7d3d 0xe30c +0x7d3e 0xe30d +0x7d3f 0xe30e +0x7d40 0xe30f +0x7d41 0xe310 +0x7d42 0xe311 +0x7d43 0xe312 +0x7d44 0xe313 +0x7d45 0xe314 +0x7d46 0xe315 +0x7d47 0xe316 +0x7d48 0xe317 +0x7d49 0xe318 +0x7d4a 0xe319 +0x7d4b 0xe31a +0x7d4c 0xe31b +0x7d4d 0xe31c +0x7d4e 0xe31d +0x7d4f 0xe31e +0x7d50 0xe31f +0x7d51 0xe320 +0x7d52 0xe321 +0x7d53 0xe322 +0x7d54 0xe323 +0x7d55 0xe324 +0x7d56 0xe325 +0x7d57 0xe326 +0x7d58 0xe327 +0x7d59 0xe328 +0x7d5a 0xe329 +0x7d5b 0xe32a +0x7d5c 0xe32b +0x7d5d 0xe32c +0x7d5e 0xe32d +0x7d5f 0xe32e +0x7d60 0xe32f +0x7d61 0xe330 +0x7d62 0xe331 +0x7d63 0xe332 +0x7d64 0xe333 +0x7d65 0xe334 +0x7d66 0xe335 +0x7d67 0xe336 +0x7d68 0xe337 +0x7d69 0xe338 +0x7d6a 0xe339 +0x7d6b 0xe33a +0x7d6c 0xe33b +0x7d6d 0xe33c +0x7d6e 0xe33d +0x7d6f 0xe33e +0x7d70 0xe33f +0x7d71 0xe340 +0x7d72 0xe341 +0x7d73 0xe342 +0x7d74 0xe343 +0x7d75 0xe344 +0x7d76 0xe345 +0x7d77 0xe346 +0x7d78 0xe347 +0x7d79 0xe348 +0x7d7a 0xe349 +0x7d7b 0xe34a +0x7d7c 0xe34b +0x7d7d 0xe34c +0x7d7e 0xe34d +0x7e21 0xe34e +0x7e22 0xe34f +0x7e23 0xe350 +0x7e24 0xe351 +0x7e25 0xe352 +0x7e26 0xe353 +0x7e27 0xe354 +0x7e28 0xe355 +0x7e29 0xe356 +0x7e2a 0xe357 +0x7e2b 0xe358 +0x7e2c 0xe359 +0x7e2d 0xe35a +0x7e2e 0xe35b +0x7e2f 0xe35c +0x7e30 0xe35d +0x7e31 0xe35e +0x7e32 0xe35f +0x7e33 0xe360 +0x7e34 0xe361 +0x7e35 0xe362 +0x7e36 0xe363 +0x7e37 0xe364 +0x7e38 0xe365 +0x7e39 0xe366 +0x7e3a 0xe367 +0x7e3b 0xe368 +0x7e3c 0xe369 +0x7e3d 0xe36a +0x7e3e 0xe36b +0x7e3f 0xe36c +0x7e40 0xe36d +0x7e41 0xe36e +0x7e42 0xe36f +0x7e43 0xe370 +0x7e44 0xe371 +0x7e45 0xe372 +0x7e46 0xe373 +0x7e47 0xe374 +0x7e48 0xe375 +0x7e49 0xe376 +0x7e4a 0xe377 +0x7e4b 0xe378 +0x7e4c 0xe379 +0x7e4d 0xe37a +0x7e4e 0xe37b +0x7e4f 0xe37c +0x7e50 0xe37d +0x7e51 0xe37e +0x7e52 0xe37f +0x7e53 0xe380 +0x7e54 0xe381 +0x7e55 0xe382 +0x7e56 0xe383 +0x7e57 0xe384 +0x7e58 0xe385 +0x7e59 0xe386 +0x7e5a 0xe387 +0x7e5b 0xe388 +0x7e5c 0xe389 +0x7e5d 0xe38a +0x7e5e 0xe38b +0x7e5f 0xe38c +0x7e60 0xe38d +0x7e61 0xe38e +0x7e62 0xe38f +0x7e63 0xe390 +0x7e64 0xe391 +0x7e65 0xe392 +0x7e66 0xe393 +0x7e67 0xe394 +0x7e68 0xe395 +0x7e69 0xe396 +0x7e6a 0xe397 +0x7e6b 0xe398 +0x7e6c 0xe399 +0x7e6d 0xe39a +0x7e6e 0xe39b +0x7e6f 0xe39c +0x7e70 0xe39d +0x7e71 0xe39e +0x7e72 0xe39f +0x7e73 0xe3a0 +0x7e74 0xe3a1 +0x7e75 0xe3a2 +0x7e76 0xe3a3 +0x7e77 0xe3a4 +0x7e78 0xe3a5 +0x7e79 0xe3a6 +0x7e7a 0xe3a7 +0x7e7b 0xe3a8 +0x7e7c 0xe3a9 +0x7e7d 0xe3aa +0x7e7e 0xe3ab diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/JIS_X_0208_MS932.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/JIS_X_0208_MS932.map Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,7364 @@ +# +# mapping is based on JIS_X_0208_MS932_De/Encoder +# +# moved following entries to .nr +# +# 0x224c 0xffe2 +# 0x225d 0x22a5 +# 0x2265 0x221a +# 0x2269 0x222b +# 0x2d70 0x2252 +# 0x2d71 0x2261 +# 0x2d77 0x2220 +# 0x2d7a 0x2235 +# 0x2d7b 0x2229 +# 0x2d7c 0x222a +# +# and following to c2b +# +# 0x2124 0x00b8 +# 0x2126 0x00b7 +# 0x2131 0x00af +# 0x2263 0x00ab +# 0x2264 0x00bb +# 0x2574 0x3094 +# 0x264c 0x00b5 +# +# +# +0x2121 0x3000 +0x2122 0x3001 +0x2123 0x3002 +0x2124 0xff0c +0x2125 0xff0e +0x2126 0x30fb +0x2127 0xff1a +0x2128 0xff1b +0x2129 0xff1f +0x212a 0xff01 +0x212b 0x309b +0x212c 0x309c +0x212d 0x00b4 +0x212e 0xff40 +0x212f 0x00a8 +0x2130 0xff3e +0x2131 0xffe3 +0x2132 0xff3f +0x2133 0x30fd +0x2134 0x30fe +0x2135 0x309d +0x2136 0x309e +0x2137 0x3003 +0x2138 0x4edd +0x2139 0x3005 +0x213a 0x3006 +0x213b 0x3007 +0x213c 0x30fc +0x213d 0x2015 +0x213e 0x2010 +0x213f 0xff0f +0x2140 0xff3c +0x2141 0xff5e +0x2142 0x2225 +0x2143 0xff5c +0x2144 0x2026 +0x2145 0x2025 +0x2146 0x2018 +0x2147 0x2019 +0x2148 0x201c +0x2149 0x201d +0x214a 0xff08 +0x214b 0xff09 +0x214c 0x3014 +0x214d 0x3015 +0x214e 0xff3b +0x214f 0xff3d +0x2150 0xff5b +0x2151 0xff5d +0x2152 0x3008 +0x2153 0x3009 +0x2154 0x300a +0x2155 0x300b +0x2156 0x300c +0x2157 0x300d +0x2158 0x300e +0x2159 0x300f +0x215a 0x3010 +0x215b 0x3011 +0x215c 0xff0b +0x215d 0xff0d +0x215e 0x00b1 +0x215f 0x00d7 +0x2160 0x00f7 +0x2161 0xff1d +0x2162 0x2260 +0x2163 0xff1c +0x2164 0xff1e +0x2165 0x2266 +0x2166 0x2267 +0x2167 0x221e +0x2168 0x2234 +0x2169 0x2642 +0x216a 0x2640 +0x216b 0x00b0 +0x216c 0x2032 +0x216d 0x2033 +0x216e 0x2103 +0x216f 0xffe5 +0x2170 0xff04 +0x2171 0xffe0 +0x2172 0xffe1 +0x2173 0xff05 +0x2174 0xff03 +0x2175 0xff06 +0x2176 0xff0a +0x2177 0xff20 +0x2178 0x00a7 +0x2179 0x2606 +0x217a 0x2605 +0x217b 0x25cb +0x217c 0x25cf +0x217d 0x25ce +0x217e 0x25c7 +0x2221 0x25c6 +0x2222 0x25a1 +0x2223 0x25a0 +0x2224 0x25b3 +0x2225 0x25b2 +0x2226 0x25bd +0x2227 0x25bc +0x2228 0x203b +0x2229 0x3012 +0x222a 0x2192 +0x222b 0x2190 +0x222c 0x2191 +0x222d 0x2193 +0x222e 0x3013 +0x223a 0x2208 +0x223b 0x220b +0x223c 0x2286 +0x223d 0x2287 +0x223e 0x2282 +0x223f 0x2283 +0x2240 0x222a +0x2241 0x2229 +0x224a 0x2227 +0x224b 0x2228 +#0x224c 0xffe2 +0x224d 0x21d2 +0x224e 0x21d4 +0x224f 0x2200 +0x2250 0x2203 +0x225c 0x2220 +#0x225d 0x22a5 +0x225e 0x2312 +0x225f 0x2202 +0x2260 0x2207 +0x2261 0x2261 +0x2262 0x2252 +0x2263 0x226a +0x2264 0x226b +#0x2265 0x221a +0x2266 0x223d +0x2267 0x221d +0x2268 0x2235 +#0x2269 0x222b +0x226a 0x222c +0x2272 0x212b +0x2273 0x2030 +0x2274 0x266f +0x2275 0x266d +0x2276 0x266a +0x2277 0x2020 +0x2278 0x2021 +0x2279 0x00b6 +0x227e 0x25ef +0x2330 0xff10 +0x2331 0xff11 +0x2332 0xff12 +0x2333 0xff13 +0x2334 0xff14 +0x2335 0xff15 +0x2336 0xff16 +0x2337 0xff17 +0x2338 0xff18 +0x2339 0xff19 +0x2341 0xff21 +0x2342 0xff22 +0x2343 0xff23 +0x2344 0xff24 +0x2345 0xff25 +0x2346 0xff26 +0x2347 0xff27 +0x2348 0xff28 +0x2349 0xff29 +0x234a 0xff2a +0x234b 0xff2b +0x234c 0xff2c +0x234d 0xff2d +0x234e 0xff2e +0x234f 0xff2f +0x2350 0xff30 +0x2351 0xff31 +0x2352 0xff32 +0x2353 0xff33 +0x2354 0xff34 +0x2355 0xff35 +0x2356 0xff36 +0x2357 0xff37 +0x2358 0xff38 +0x2359 0xff39 +0x235a 0xff3a +0x2361 0xff41 +0x2362 0xff42 +0x2363 0xff43 +0x2364 0xff44 +0x2365 0xff45 +0x2366 0xff46 +0x2367 0xff47 +0x2368 0xff48 +0x2369 0xff49 +0x236a 0xff4a +0x236b 0xff4b +0x236c 0xff4c +0x236d 0xff4d +0x236e 0xff4e +0x236f 0xff4f +0x2370 0xff50 +0x2371 0xff51 +0x2372 0xff52 +0x2373 0xff53 +0x2374 0xff54 +0x2375 0xff55 +0x2376 0xff56 +0x2377 0xff57 +0x2378 0xff58 +0x2379 0xff59 +0x237a 0xff5a +0x2421 0x3041 +0x2422 0x3042 +0x2423 0x3043 +0x2424 0x3044 +0x2425 0x3045 +0x2426 0x3046 +0x2427 0x3047 +0x2428 0x3048 +0x2429 0x3049 +0x242a 0x304a +0x242b 0x304b +0x242c 0x304c +0x242d 0x304d +0x242e 0x304e +0x242f 0x304f +0x2430 0x3050 +0x2431 0x3051 +0x2432 0x3052 +0x2433 0x3053 +0x2434 0x3054 +0x2435 0x3055 +0x2436 0x3056 +0x2437 0x3057 +0x2438 0x3058 +0x2439 0x3059 +0x243a 0x305a +0x243b 0x305b +0x243c 0x305c +0x243d 0x305d +0x243e 0x305e +0x243f 0x305f +0x2440 0x3060 +0x2441 0x3061 +0x2442 0x3062 +0x2443 0x3063 +0x2444 0x3064 +0x2445 0x3065 +0x2446 0x3066 +0x2447 0x3067 +0x2448 0x3068 +0x2449 0x3069 +0x244a 0x306a +0x244b 0x306b +0x244c 0x306c +0x244d 0x306d +0x244e 0x306e +0x244f 0x306f +0x2450 0x3070 +0x2451 0x3071 +0x2452 0x3072 +0x2453 0x3073 +0x2454 0x3074 +0x2455 0x3075 +0x2456 0x3076 +0x2457 0x3077 +0x2458 0x3078 +0x2459 0x3079 +0x245a 0x307a +0x245b 0x307b +0x245c 0x307c +0x245d 0x307d +0x245e 0x307e +0x245f 0x307f +0x2460 0x3080 +0x2461 0x3081 +0x2462 0x3082 +0x2463 0x3083 +0x2464 0x3084 +0x2465 0x3085 +0x2466 0x3086 +0x2467 0x3087 +0x2468 0x3088 +0x2469 0x3089 +0x246a 0x308a +0x246b 0x308b +0x246c 0x308c +0x246d 0x308d +0x246e 0x308e +0x246f 0x308f +0x2470 0x3090 +0x2471 0x3091 +0x2472 0x3092 +0x2473 0x3093 +0x2521 0x30a1 +0x2522 0x30a2 +0x2523 0x30a3 +0x2524 0x30a4 +0x2525 0x30a5 +0x2526 0x30a6 +0x2527 0x30a7 +0x2528 0x30a8 +0x2529 0x30a9 +0x252a 0x30aa +0x252b 0x30ab +0x252c 0x30ac +0x252d 0x30ad +0x252e 0x30ae +0x252f 0x30af +0x2530 0x30b0 +0x2531 0x30b1 +0x2532 0x30b2 +0x2533 0x30b3 +0x2534 0x30b4 +0x2535 0x30b5 +0x2536 0x30b6 +0x2537 0x30b7 +0x2538 0x30b8 +0x2539 0x30b9 +0x253a 0x30ba +0x253b 0x30bb +0x253c 0x30bc +0x253d 0x30bd +0x253e 0x30be +0x253f 0x30bf +0x2540 0x30c0 +0x2541 0x30c1 +0x2542 0x30c2 +0x2543 0x30c3 +0x2544 0x30c4 +0x2545 0x30c5 +0x2546 0x30c6 +0x2547 0x30c7 +0x2548 0x30c8 +0x2549 0x30c9 +0x254a 0x30ca +0x254b 0x30cb +0x254c 0x30cc +0x254d 0x30cd +0x254e 0x30ce +0x254f 0x30cf +0x2550 0x30d0 +0x2551 0x30d1 +0x2552 0x30d2 +0x2553 0x30d3 +0x2554 0x30d4 +0x2555 0x30d5 +0x2556 0x30d6 +0x2557 0x30d7 +0x2558 0x30d8 +0x2559 0x30d9 +0x255a 0x30da +0x255b 0x30db +0x255c 0x30dc +0x255d 0x30dd +0x255e 0x30de +0x255f 0x30df +0x2560 0x30e0 +0x2561 0x30e1 +0x2562 0x30e2 +0x2563 0x30e3 +0x2564 0x30e4 +0x2565 0x30e5 +0x2566 0x30e6 +0x2567 0x30e7 +0x2568 0x30e8 +0x2569 0x30e9 +0x256a 0x30ea +0x256b 0x30eb +0x256c 0x30ec +0x256d 0x30ed +0x256e 0x30ee +0x256f 0x30ef +0x2570 0x30f0 +0x2571 0x30f1 +0x2572 0x30f2 +0x2573 0x30f3 +0x2574 0x30f4 +0x2575 0x30f5 +0x2576 0x30f6 +0x2621 0x0391 +0x2622 0x0392 +0x2623 0x0393 +0x2624 0x0394 +0x2625 0x0395 +0x2626 0x0396 +0x2627 0x0397 +0x2628 0x0398 +0x2629 0x0399 +0x262a 0x039a +0x262b 0x039b +0x262c 0x039c +0x262d 0x039d +0x262e 0x039e +0x262f 0x039f +0x2630 0x03a0 +0x2631 0x03a1 +0x2632 0x03a3 +0x2633 0x03a4 +0x2634 0x03a5 +0x2635 0x03a6 +0x2636 0x03a7 +0x2637 0x03a8 +0x2638 0x03a9 +0x2641 0x03b1 +0x2642 0x03b2 +0x2643 0x03b3 +0x2644 0x03b4 +0x2645 0x03b5 +0x2646 0x03b6 +0x2647 0x03b7 +0x2648 0x03b8 +0x2649 0x03b9 +0x264a 0x03ba +0x264b 0x03bb +0x264c 0x03bc +0x264d 0x03bd +0x264e 0x03be +0x264f 0x03bf +0x2650 0x03c0 +0x2651 0x03c1 +0x2652 0x03c3 +0x2653 0x03c4 +0x2654 0x03c5 +0x2655 0x03c6 +0x2656 0x03c7 +0x2657 0x03c8 +0x2658 0x03c9 +0x2721 0x0410 +0x2722 0x0411 +0x2723 0x0412 +0x2724 0x0413 +0x2725 0x0414 +0x2726 0x0415 +0x2727 0x0401 +0x2728 0x0416 +0x2729 0x0417 +0x272a 0x0418 +0x272b 0x0419 +0x272c 0x041a +0x272d 0x041b +0x272e 0x041c +0x272f 0x041d +0x2730 0x041e +0x2731 0x041f +0x2732 0x0420 +0x2733 0x0421 +0x2734 0x0422 +0x2735 0x0423 +0x2736 0x0424 +0x2737 0x0425 +0x2738 0x0426 +0x2739 0x0427 +0x273a 0x0428 +0x273b 0x0429 +0x273c 0x042a +0x273d 0x042b +0x273e 0x042c +0x273f 0x042d +0x2740 0x042e +0x2741 0x042f +0x2751 0x0430 +0x2752 0x0431 +0x2753 0x0432 +0x2754 0x0433 +0x2755 0x0434 +0x2756 0x0435 +0x2757 0x0451 +0x2758 0x0436 +0x2759 0x0437 +0x275a 0x0438 +0x275b 0x0439 +0x275c 0x043a +0x275d 0x043b +0x275e 0x043c +0x275f 0x043d +0x2760 0x043e +0x2761 0x043f +0x2762 0x0440 +0x2763 0x0441 +0x2764 0x0442 +0x2765 0x0443 +0x2766 0x0444 +0x2767 0x0445 +0x2768 0x0446 +0x2769 0x0447 +0x276a 0x0448 +0x276b 0x0449 +0x276c 0x044a +0x276d 0x044b +0x276e 0x044c +0x276f 0x044d +0x2770 0x044e +0x2771 0x044f +0x2821 0x2500 +0x2822 0x2502 +0x2823 0x250c +0x2824 0x2510 +0x2825 0x2518 +0x2826 0x2514 +0x2827 0x251c +0x2828 0x252c +0x2829 0x2524 +0x282a 0x2534 +0x282b 0x253c +0x282c 0x2501 +0x282d 0x2503 +0x282e 0x250f +0x282f 0x2513 +0x2830 0x251b +0x2831 0x2517 +0x2832 0x2523 +0x2833 0x2533 +0x2834 0x252b +0x2835 0x253b +0x2836 0x254b +0x2837 0x2520 +0x2838 0x252f +0x2839 0x2528 +0x283a 0x2537 +0x283b 0x253f +0x283c 0x251d +0x283d 0x2530 +0x283e 0x2525 +0x283f 0x2538 +0x2840 0x2542 +0x2d21 0x2460 +0x2d22 0x2461 +0x2d23 0x2462 +0x2d24 0x2463 +0x2d25 0x2464 +0x2d26 0x2465 +0x2d27 0x2466 +0x2d28 0x2467 +0x2d29 0x2468 +0x2d2a 0x2469 +0x2d2b 0x246a +0x2d2c 0x246b +0x2d2d 0x246c +0x2d2e 0x246d +0x2d2f 0x246e +0x2d30 0x246f +0x2d31 0x2470 +0x2d32 0x2471 +0x2d33 0x2472 +0x2d34 0x2473 +0x2d35 0x2160 +0x2d36 0x2161 +0x2d37 0x2162 +0x2d38 0x2163 +0x2d39 0x2164 +0x2d3a 0x2165 +0x2d3b 0x2166 +0x2d3c 0x2167 +0x2d3d 0x2168 +0x2d3e 0x2169 +0x2d40 0x3349 +0x2d41 0x3314 +0x2d42 0x3322 +0x2d43 0x334d +0x2d44 0x3318 +0x2d45 0x3327 +0x2d46 0x3303 +0x2d47 0x3336 +0x2d48 0x3351 +0x2d49 0x3357 +0x2d4a 0x330d +0x2d4b 0x3326 +0x2d4c 0x3323 +0x2d4d 0x332b +0x2d4e 0x334a +0x2d4f 0x333b +0x2d50 0x339c +0x2d51 0x339d +0x2d52 0x339e +0x2d53 0x338e +0x2d54 0x338f +0x2d55 0x33c4 +0x2d56 0x33a1 +0x2d5f 0x337b +0x2d60 0x301d +0x2d61 0x301f +0x2d62 0x2116 +0x2d63 0x33cd +0x2d64 0x2121 +0x2d65 0x32a4 +0x2d66 0x32a5 +0x2d67 0x32a6 +0x2d68 0x32a7 +0x2d69 0x32a8 +0x2d6a 0x3231 +0x2d6b 0x3232 +0x2d6c 0x3239 +0x2d6d 0x337e +0x2d6e 0x337d +0x2d6f 0x337c +#0x2d70 0x2252 +#0x2d71 0x2261 +0x2d72 0x222b +0x2d73 0x222e +0x2d74 0x2211 +0x2d75 0x221a +0x2d76 0x22a5 +#0x2d77 0x2220 +0x2d78 0x221f +0x2d79 0x22bf +#0x2d7a 0x2235 +#0x2d7b 0x2229 +#0x2d7c 0x222a +0x3021 0x4e9c +0x3022 0x5516 +0x3023 0x5a03 +0x3024 0x963f +0x3025 0x54c0 +0x3026 0x611b +0x3027 0x6328 +0x3028 0x59f6 +0x3029 0x9022 +0x302a 0x8475 +0x302b 0x831c +0x302c 0x7a50 +0x302d 0x60aa +0x302e 0x63e1 +0x302f 0x6e25 +0x3030 0x65ed +0x3031 0x8466 +0x3032 0x82a6 +0x3033 0x9bf5 +0x3034 0x6893 +0x3035 0x5727 +0x3036 0x65a1 +0x3037 0x6271 +0x3038 0x5b9b +0x3039 0x59d0 +0x303a 0x867b +0x303b 0x98f4 +0x303c 0x7d62 +0x303d 0x7dbe +0x303e 0x9b8e +0x303f 0x6216 +0x3040 0x7c9f +0x3041 0x88b7 +0x3042 0x5b89 +0x3043 0x5eb5 +0x3044 0x6309 +0x3045 0x6697 +0x3046 0x6848 +0x3047 0x95c7 +0x3048 0x978d +0x3049 0x674f +0x304a 0x4ee5 +0x304b 0x4f0a +0x304c 0x4f4d +0x304d 0x4f9d +0x304e 0x5049 +0x304f 0x56f2 +0x3050 0x5937 +0x3051 0x59d4 +0x3052 0x5a01 +0x3053 0x5c09 +0x3054 0x60df +0x3055 0x610f +0x3056 0x6170 +0x3057 0x6613 +0x3058 0x6905 +0x3059 0x70ba +0x305a 0x754f +0x305b 0x7570 +0x305c 0x79fb +0x305d 0x7dad +0x305e 0x7def +0x305f 0x80c3 +0x3060 0x840e +0x3061 0x8863 +0x3062 0x8b02 +0x3063 0x9055 +0x3064 0x907a +0x3065 0x533b +0x3066 0x4e95 +0x3067 0x4ea5 +0x3068 0x57df +0x3069 0x80b2 +0x306a 0x90c1 +0x306b 0x78ef +0x306c 0x4e00 +0x306d 0x58f1 +0x306e 0x6ea2 +0x306f 0x9038 +0x3070 0x7a32 +0x3071 0x8328 +0x3072 0x828b +0x3073 0x9c2f +0x3074 0x5141 +0x3075 0x5370 +0x3076 0x54bd +0x3077 0x54e1 +0x3078 0x56e0 +0x3079 0x59fb +0x307a 0x5f15 +0x307b 0x98f2 +0x307c 0x6deb +0x307d 0x80e4 +0x307e 0x852d +0x3121 0x9662 +0x3122 0x9670 +0x3123 0x96a0 +0x3124 0x97fb +0x3125 0x540b +0x3126 0x53f3 +0x3127 0x5b87 +0x3128 0x70cf +0x3129 0x7fbd +0x312a 0x8fc2 +0x312b 0x96e8 +0x312c 0x536f +0x312d 0x9d5c +0x312e 0x7aba +0x312f 0x4e11 +0x3130 0x7893 +0x3131 0x81fc +0x3132 0x6e26 +0x3133 0x5618 +0x3134 0x5504 +0x3135 0x6b1d +0x3136 0x851a +0x3137 0x9c3b +0x3138 0x59e5 +0x3139 0x53a9 +0x313a 0x6d66 +0x313b 0x74dc +0x313c 0x958f +0x313d 0x5642 +0x313e 0x4e91 +0x313f 0x904b +0x3140 0x96f2 +0x3141 0x834f +0x3142 0x990c +0x3143 0x53e1 +0x3144 0x55b6 +0x3145 0x5b30 +0x3146 0x5f71 +0x3147 0x6620 +0x3148 0x66f3 +0x3149 0x6804 +0x314a 0x6c38 +0x314b 0x6cf3 +0x314c 0x6d29 +0x314d 0x745b +0x314e 0x76c8 +0x314f 0x7a4e +0x3150 0x9834 +0x3151 0x82f1 +0x3152 0x885b +0x3153 0x8a60 +0x3154 0x92ed +0x3155 0x6db2 +0x3156 0x75ab +0x3157 0x76ca +0x3158 0x99c5 +0x3159 0x60a6 +0x315a 0x8b01 +0x315b 0x8d8a +0x315c 0x95b2 +0x315d 0x698e +0x315e 0x53ad +0x315f 0x5186 +0x3160 0x5712 +0x3161 0x5830 +0x3162 0x5944 +0x3163 0x5bb4 +0x3164 0x5ef6 +0x3165 0x6028 +0x3166 0x63a9 +0x3167 0x63f4 +0x3168 0x6cbf +0x3169 0x6f14 +0x316a 0x708e +0x316b 0x7114 +0x316c 0x7159 +0x316d 0x71d5 +0x316e 0x733f +0x316f 0x7e01 +0x3170 0x8276 +0x3171 0x82d1 +0x3172 0x8597 +0x3173 0x9060 +0x3174 0x925b +0x3175 0x9d1b +0x3176 0x5869 +0x3177 0x65bc +0x3178 0x6c5a +0x3179 0x7525 +0x317a 0x51f9 +0x317b 0x592e +0x317c 0x5965 +0x317d 0x5f80 +0x317e 0x5fdc +0x3221 0x62bc +0x3222 0x65fa +0x3223 0x6a2a +0x3224 0x6b27 +0x3225 0x6bb4 +0x3226 0x738b +0x3227 0x7fc1 +0x3228 0x8956 +0x3229 0x9d2c +0x322a 0x9d0e +0x322b 0x9ec4 +0x322c 0x5ca1 +0x322d 0x6c96 +0x322e 0x837b +0x322f 0x5104 +0x3230 0x5c4b +0x3231 0x61b6 +0x3232 0x81c6 +0x3233 0x6876 +0x3234 0x7261 +0x3235 0x4e59 +0x3236 0x4ffa +0x3237 0x5378 +0x3238 0x6069 +0x3239 0x6e29 +0x323a 0x7a4f +0x323b 0x97f3 +0x323c 0x4e0b +0x323d 0x5316 +0x323e 0x4eee +0x323f 0x4f55 +0x3240 0x4f3d +0x3241 0x4fa1 +0x3242 0x4f73 +0x3243 0x52a0 +0x3244 0x53ef +0x3245 0x5609 +0x3246 0x590f +0x3247 0x5ac1 +0x3248 0x5bb6 +0x3249 0x5be1 +0x324a 0x79d1 +0x324b 0x6687 +0x324c 0x679c +0x324d 0x67b6 +0x324e 0x6b4c +0x324f 0x6cb3 +0x3250 0x706b +0x3251 0x73c2 +0x3252 0x798d +0x3253 0x79be +0x3254 0x7a3c +0x3255 0x7b87 +0x3256 0x82b1 +0x3257 0x82db +0x3258 0x8304 +0x3259 0x8377 +0x325a 0x83ef +0x325b 0x83d3 +0x325c 0x8766 +0x325d 0x8ab2 +0x325e 0x5629 +0x325f 0x8ca8 +0x3260 0x8fe6 +0x3261 0x904e +0x3262 0x971e +0x3263 0x868a +0x3264 0x4fc4 +0x3265 0x5ce8 +0x3266 0x6211 +0x3267 0x7259 +0x3268 0x753b +0x3269 0x81e5 +0x326a 0x82bd +0x326b 0x86fe +0x326c 0x8cc0 +0x326d 0x96c5 +0x326e 0x9913 +0x326f 0x99d5 +0x3270 0x4ecb +0x3271 0x4f1a +0x3272 0x89e3 +0x3273 0x56de +0x3274 0x584a +0x3275 0x58ca +0x3276 0x5efb +0x3277 0x5feb +0x3278 0x602a +0x3279 0x6094 +0x327a 0x6062 +0x327b 0x61d0 +0x327c 0x6212 +0x327d 0x62d0 +0x327e 0x6539 +0x3321 0x9b41 +0x3322 0x6666 +0x3323 0x68b0 +0x3324 0x6d77 +0x3325 0x7070 +0x3326 0x754c +0x3327 0x7686 +0x3328 0x7d75 +0x3329 0x82a5 +0x332a 0x87f9 +0x332b 0x958b +0x332c 0x968e +0x332d 0x8c9d +0x332e 0x51f1 +0x332f 0x52be +0x3330 0x5916 +0x3331 0x54b3 +0x3332 0x5bb3 +0x3333 0x5d16 +0x3334 0x6168 +0x3335 0x6982 +0x3336 0x6daf +0x3337 0x788d +0x3338 0x84cb +0x3339 0x8857 +0x333a 0x8a72 +0x333b 0x93a7 +0x333c 0x9ab8 +0x333d 0x6d6c +0x333e 0x99a8 +0x333f 0x86d9 +0x3340 0x57a3 +0x3341 0x67ff +0x3342 0x86ce +0x3343 0x920e +0x3344 0x5283 +0x3345 0x5687 +0x3346 0x5404 +0x3347 0x5ed3 +0x3348 0x62e1 +0x3349 0x64b9 +0x334a 0x683c +0x334b 0x6838 +0x334c 0x6bbb +0x334d 0x7372 +0x334e 0x78ba +0x334f 0x7a6b +0x3350 0x899a +0x3351 0x89d2 +0x3352 0x8d6b +0x3353 0x8f03 +0x3354 0x90ed +0x3355 0x95a3 +0x3356 0x9694 +0x3357 0x9769 +0x3358 0x5b66 +0x3359 0x5cb3 +0x335a 0x697d +0x335b 0x984d +0x335c 0x984e +0x335d 0x639b +0x335e 0x7b20 +0x335f 0x6a2b +0x3360 0x6a7f +0x3361 0x68b6 +0x3362 0x9c0d +0x3363 0x6f5f +0x3364 0x5272 +0x3365 0x559d +0x3366 0x6070 +0x3367 0x62ec +0x3368 0x6d3b +0x3369 0x6e07 +0x336a 0x6ed1 +0x336b 0x845b +0x336c 0x8910 +0x336d 0x8f44 +0x336e 0x4e14 +0x336f 0x9c39 +0x3370 0x53f6 +0x3371 0x691b +0x3372 0x6a3a +0x3373 0x9784 +0x3374 0x682a +0x3375 0x515c +0x3376 0x7ac3 +0x3377 0x84b2 +0x3378 0x91dc +0x3379 0x938c +0x337a 0x565b +0x337b 0x9d28 +0x337c 0x6822 +0x337d 0x8305 +0x337e 0x8431 +0x3421 0x7ca5 +0x3422 0x5208 +0x3423 0x82c5 +0x3424 0x74e6 +0x3425 0x4e7e +0x3426 0x4f83 +0x3427 0x51a0 +0x3428 0x5bd2 +0x3429 0x520a +0x342a 0x52d8 +0x342b 0x52e7 +0x342c 0x5dfb +0x342d 0x559a +0x342e 0x582a +0x342f 0x59e6 +0x3430 0x5b8c +0x3431 0x5b98 +0x3432 0x5bdb +0x3433 0x5e72 +0x3434 0x5e79 +0x3435 0x60a3 +0x3436 0x611f +0x3437 0x6163 +0x3438 0x61be +0x3439 0x63db +0x343a 0x6562 +0x343b 0x67d1 +0x343c 0x6853 +0x343d 0x68fa +0x343e 0x6b3e +0x343f 0x6b53 +0x3440 0x6c57 +0x3441 0x6f22 +0x3442 0x6f97 +0x3443 0x6f45 +0x3444 0x74b0 +0x3445 0x7518 +0x3446 0x76e3 +0x3447 0x770b +0x3448 0x7aff +0x3449 0x7ba1 +0x344a 0x7c21 +0x344b 0x7de9 +0x344c 0x7f36 +0x344d 0x7ff0 +0x344e 0x809d +0x344f 0x8266 +0x3450 0x839e +0x3451 0x89b3 +0x3452 0x8acc +0x3453 0x8cab +0x3454 0x9084 +0x3455 0x9451 +0x3456 0x9593 +0x3457 0x9591 +0x3458 0x95a2 +0x3459 0x9665 +0x345a 0x97d3 +0x345b 0x9928 +0x345c 0x8218 +0x345d 0x4e38 +0x345e 0x542b +0x345f 0x5cb8 +0x3460 0x5dcc +0x3461 0x73a9 +0x3462 0x764c +0x3463 0x773c +0x3464 0x5ca9 +0x3465 0x7feb +0x3466 0x8d0b +0x3467 0x96c1 +0x3468 0x9811 +0x3469 0x9854 +0x346a 0x9858 +0x346b 0x4f01 +0x346c 0x4f0e +0x346d 0x5371 +0x346e 0x559c +0x346f 0x5668 +0x3470 0x57fa +0x3471 0x5947 +0x3472 0x5b09 +0x3473 0x5bc4 +0x3474 0x5c90 +0x3475 0x5e0c +0x3476 0x5e7e +0x3477 0x5fcc +0x3478 0x63ee +0x3479 0x673a +0x347a 0x65d7 +0x347b 0x65e2 +0x347c 0x671f +0x347d 0x68cb +0x347e 0x68c4 +0x3521 0x6a5f +0x3522 0x5e30 +0x3523 0x6bc5 +0x3524 0x6c17 +0x3525 0x6c7d +0x3526 0x757f +0x3527 0x7948 +0x3528 0x5b63 +0x3529 0x7a00 +0x352a 0x7d00 +0x352b 0x5fbd +0x352c 0x898f +0x352d 0x8a18 +0x352e 0x8cb4 +0x352f 0x8d77 +0x3530 0x8ecc +0x3531 0x8f1d +0x3532 0x98e2 +0x3533 0x9a0e +0x3534 0x9b3c +0x3535 0x4e80 +0x3536 0x507d +0x3537 0x5100 +0x3538 0x5993 +0x3539 0x5b9c +0x353a 0x622f +0x353b 0x6280 +0x353c 0x64ec +0x353d 0x6b3a +0x353e 0x72a0 +0x353f 0x7591 +0x3540 0x7947 +0x3541 0x7fa9 +0x3542 0x87fb +0x3543 0x8abc +0x3544 0x8b70 +0x3545 0x63ac +0x3546 0x83ca +0x3547 0x97a0 +0x3548 0x5409 +0x3549 0x5403 +0x354a 0x55ab +0x354b 0x6854 +0x354c 0x6a58 +0x354d 0x8a70 +0x354e 0x7827 +0x354f 0x6775 +0x3550 0x9ecd +0x3551 0x5374 +0x3552 0x5ba2 +0x3553 0x811a +0x3554 0x8650 +0x3555 0x9006 +0x3556 0x4e18 +0x3557 0x4e45 +0x3558 0x4ec7 +0x3559 0x4f11 +0x355a 0x53ca +0x355b 0x5438 +0x355c 0x5bae +0x355d 0x5f13 +0x355e 0x6025 +0x355f 0x6551 +0x3560 0x673d +0x3561 0x6c42 +0x3562 0x6c72 +0x3563 0x6ce3 +0x3564 0x7078 +0x3565 0x7403 +0x3566 0x7a76 +0x3567 0x7aae +0x3568 0x7b08 +0x3569 0x7d1a +0x356a 0x7cfe +0x356b 0x7d66 +0x356c 0x65e7 +0x356d 0x725b +0x356e 0x53bb +0x356f 0x5c45 +0x3570 0x5de8 +0x3571 0x62d2 +0x3572 0x62e0 +0x3573 0x6319 +0x3574 0x6e20 +0x3575 0x865a +0x3576 0x8a31 +0x3577 0x8ddd +0x3578 0x92f8 +0x3579 0x6f01 +0x357a 0x79a6 +0x357b 0x9b5a +0x357c 0x4ea8 +0x357d 0x4eab +0x357e 0x4eac +0x3621 0x4f9b +0x3622 0x4fa0 +0x3623 0x50d1 +0x3624 0x5147 +0x3625 0x7af6 +0x3626 0x5171 +0x3627 0x51f6 +0x3628 0x5354 +0x3629 0x5321 +0x362a 0x537f +0x362b 0x53eb +0x362c 0x55ac +0x362d 0x5883 +0x362e 0x5ce1 +0x362f 0x5f37 +0x3630 0x5f4a +0x3631 0x602f +0x3632 0x6050 +0x3633 0x606d +0x3634 0x631f +0x3635 0x6559 +0x3636 0x6a4b +0x3637 0x6cc1 +0x3638 0x72c2 +0x3639 0x72ed +0x363a 0x77ef +0x363b 0x80f8 +0x363c 0x8105 +0x363d 0x8208 +0x363e 0x854e +0x363f 0x90f7 +0x3640 0x93e1 +0x3641 0x97ff +0x3642 0x9957 +0x3643 0x9a5a +0x3644 0x4ef0 +0x3645 0x51dd +0x3646 0x5c2d +0x3647 0x6681 +0x3648 0x696d +0x3649 0x5c40 +0x364a 0x66f2 +0x364b 0x6975 +0x364c 0x7389 +0x364d 0x6850 +0x364e 0x7c81 +0x364f 0x50c5 +0x3650 0x52e4 +0x3651 0x5747 +0x3652 0x5dfe +0x3653 0x9326 +0x3654 0x65a4 +0x3655 0x6b23 +0x3656 0x6b3d +0x3657 0x7434 +0x3658 0x7981 +0x3659 0x79bd +0x365a 0x7b4b +0x365b 0x7dca +0x365c 0x82b9 +0x365d 0x83cc +0x365e 0x887f +0x365f 0x895f +0x3660 0x8b39 +0x3661 0x8fd1 +0x3662 0x91d1 +0x3663 0x541f +0x3664 0x9280 +0x3665 0x4e5d +0x3666 0x5036 +0x3667 0x53e5 +0x3668 0x533a +0x3669 0x72d7 +0x366a 0x7396 +0x366b 0x77e9 +0x366c 0x82e6 +0x366d 0x8eaf +0x366e 0x99c6 +0x366f 0x99c8 +0x3670 0x99d2 +0x3671 0x5177 +0x3672 0x611a +0x3673 0x865e +0x3674 0x55b0 +0x3675 0x7a7a +0x3676 0x5076 +0x3677 0x5bd3 +0x3678 0x9047 +0x3679 0x9685 +0x367a 0x4e32 +0x367b 0x6adb +0x367c 0x91e7 +0x367d 0x5c51 +0x367e 0x5c48 +0x3721 0x6398 +0x3722 0x7a9f +0x3723 0x6c93 +0x3724 0x9774 +0x3725 0x8f61 +0x3726 0x7aaa +0x3727 0x718a +0x3728 0x9688 +0x3729 0x7c82 +0x372a 0x6817 +0x372b 0x7e70 +0x372c 0x6851 +0x372d 0x936c +0x372e 0x52f2 +0x372f 0x541b +0x3730 0x85ab +0x3731 0x8a13 +0x3732 0x7fa4 +0x3733 0x8ecd +0x3734 0x90e1 +0x3735 0x5366 +0x3736 0x8888 +0x3737 0x7941 +0x3738 0x4fc2 +0x3739 0x50be +0x373a 0x5211 +0x373b 0x5144 +0x373c 0x5553 +0x373d 0x572d +0x373e 0x73ea +0x373f 0x578b +0x3740 0x5951 +0x3741 0x5f62 +0x3742 0x5f84 +0x3743 0x6075 +0x3744 0x6176 +0x3745 0x6167 +0x3746 0x61a9 +0x3747 0x63b2 +0x3748 0x643a +0x3749 0x656c +0x374a 0x666f +0x374b 0x6842 +0x374c 0x6e13 +0x374d 0x7566 +0x374e 0x7a3d +0x374f 0x7cfb +0x3750 0x7d4c +0x3751 0x7d99 +0x3752 0x7e4b +0x3753 0x7f6b +0x3754 0x830e +0x3755 0x834a +0x3756 0x86cd +0x3757 0x8a08 +0x3758 0x8a63 +0x3759 0x8b66 +0x375a 0x8efd +0x375b 0x981a +0x375c 0x9d8f +0x375d 0x82b8 +0x375e 0x8fce +0x375f 0x9be8 +0x3760 0x5287 +0x3761 0x621f +0x3762 0x6483 +0x3763 0x6fc0 +0x3764 0x9699 +0x3765 0x6841 +0x3766 0x5091 +0x3767 0x6b20 +0x3768 0x6c7a +0x3769 0x6f54 +0x376a 0x7a74 +0x376b 0x7d50 +0x376c 0x8840 +0x376d 0x8a23 +0x376e 0x6708 +0x376f 0x4ef6 +0x3770 0x5039 +0x3771 0x5026 +0x3772 0x5065 +0x3773 0x517c +0x3774 0x5238 +0x3775 0x5263 +0x3776 0x55a7 +0x3777 0x570f +0x3778 0x5805 +0x3779 0x5acc +0x377a 0x5efa +0x377b 0x61b2 +0x377c 0x61f8 +0x377d 0x62f3 +0x377e 0x6372 +0x3821 0x691c +0x3822 0x6a29 +0x3823 0x727d +0x3824 0x72ac +0x3825 0x732e +0x3826 0x7814 +0x3827 0x786f +0x3828 0x7d79 +0x3829 0x770c +0x382a 0x80a9 +0x382b 0x898b +0x382c 0x8b19 +0x382d 0x8ce2 +0x382e 0x8ed2 +0x382f 0x9063 +0x3830 0x9375 +0x3831 0x967a +0x3832 0x9855 +0x3833 0x9a13 +0x3834 0x9e78 +0x3835 0x5143 +0x3836 0x539f +0x3837 0x53b3 +0x3838 0x5e7b +0x3839 0x5f26 +0x383a 0x6e1b +0x383b 0x6e90 +0x383c 0x7384 +0x383d 0x73fe +0x383e 0x7d43 +0x383f 0x8237 +0x3840 0x8a00 +0x3841 0x8afa +0x3842 0x9650 +0x3843 0x4e4e +0x3844 0x500b +0x3845 0x53e4 +0x3846 0x547c +0x3847 0x56fa +0x3848 0x59d1 +0x3849 0x5b64 +0x384a 0x5df1 +0x384b 0x5eab +0x384c 0x5f27 +0x384d 0x6238 +0x384e 0x6545 +0x384f 0x67af +0x3850 0x6e56 +0x3851 0x72d0 +0x3852 0x7cca +0x3853 0x88b4 +0x3854 0x80a1 +0x3855 0x80e1 +0x3856 0x83f0 +0x3857 0x864e +0x3858 0x8a87 +0x3859 0x8de8 +0x385a 0x9237 +0x385b 0x96c7 +0x385c 0x9867 +0x385d 0x9f13 +0x385e 0x4e94 +0x385f 0x4e92 +0x3860 0x4f0d +0x3861 0x5348 +0x3862 0x5449 +0x3863 0x543e +0x3864 0x5a2f +0x3865 0x5f8c +0x3866 0x5fa1 +0x3867 0x609f +0x3868 0x68a7 +0x3869 0x6a8e +0x386a 0x745a +0x386b 0x7881 +0x386c 0x8a9e +0x386d 0x8aa4 +0x386e 0x8b77 +0x386f 0x9190 +0x3870 0x4e5e +0x3871 0x9bc9 +0x3872 0x4ea4 +0x3873 0x4f7c +0x3874 0x4faf +0x3875 0x5019 +0x3876 0x5016 +0x3877 0x5149 +0x3878 0x516c +0x3879 0x529f +0x387a 0x52b9 +0x387b 0x52fe +0x387c 0x539a +0x387d 0x53e3 +0x387e 0x5411 +0x3921 0x540e +0x3922 0x5589 +0x3923 0x5751 +0x3924 0x57a2 +0x3925 0x597d +0x3926 0x5b54 +0x3927 0x5b5d +0x3928 0x5b8f +0x3929 0x5de5 +0x392a 0x5de7 +0x392b 0x5df7 +0x392c 0x5e78 +0x392d 0x5e83 +0x392e 0x5e9a +0x392f 0x5eb7 +0x3930 0x5f18 +0x3931 0x6052 +0x3932 0x614c +0x3933 0x6297 +0x3934 0x62d8 +0x3935 0x63a7 +0x3936 0x653b +0x3937 0x6602 +0x3938 0x6643 +0x3939 0x66f4 +0x393a 0x676d +0x393b 0x6821 +0x393c 0x6897 +0x393d 0x69cb +0x393e 0x6c5f +0x393f 0x6d2a +0x3940 0x6d69 +0x3941 0x6e2f +0x3942 0x6e9d +0x3943 0x7532 +0x3944 0x7687 +0x3945 0x786c +0x3946 0x7a3f +0x3947 0x7ce0 +0x3948 0x7d05 +0x3949 0x7d18 +0x394a 0x7d5e +0x394b 0x7db1 +0x394c 0x8015 +0x394d 0x8003 +0x394e 0x80af +0x394f 0x80b1 +0x3950 0x8154 +0x3951 0x818f +0x3952 0x822a +0x3953 0x8352 +0x3954 0x884c +0x3955 0x8861 +0x3956 0x8b1b +0x3957 0x8ca2 +0x3958 0x8cfc +0x3959 0x90ca +0x395a 0x9175 +0x395b 0x9271 +0x395c 0x783f +0x395d 0x92fc +0x395e 0x95a4 +0x395f 0x964d +0x3960 0x9805 +0x3961 0x9999 +0x3962 0x9ad8 +0x3963 0x9d3b +0x3964 0x525b +0x3965 0x52ab +0x3966 0x53f7 +0x3967 0x5408 +0x3968 0x58d5 +0x3969 0x62f7 +0x396a 0x6fe0 +0x396b 0x8c6a +0x396c 0x8f5f +0x396d 0x9eb9 +0x396e 0x514b +0x396f 0x523b +0x3970 0x544a +0x3971 0x56fd +0x3972 0x7a40 +0x3973 0x9177 +0x3974 0x9d60 +0x3975 0x9ed2 +0x3976 0x7344 +0x3977 0x6f09 +0x3978 0x8170 +0x3979 0x7511 +0x397a 0x5ffd +0x397b 0x60da +0x397c 0x9aa8 +0x397d 0x72db +0x397e 0x8fbc +0x3a21 0x6b64 +0x3a22 0x9803 +0x3a23 0x4eca +0x3a24 0x56f0 +0x3a25 0x5764 +0x3a26 0x58be +0x3a27 0x5a5a +0x3a28 0x6068 +0x3a29 0x61c7 +0x3a2a 0x660f +0x3a2b 0x6606 +0x3a2c 0x6839 +0x3a2d 0x68b1 +0x3a2e 0x6df7 +0x3a2f 0x75d5 +0x3a30 0x7d3a +0x3a31 0x826e +0x3a32 0x9b42 +0x3a33 0x4e9b +0x3a34 0x4f50 +0x3a35 0x53c9 +0x3a36 0x5506 +0x3a37 0x5d6f +0x3a38 0x5de6 +0x3a39 0x5dee +0x3a3a 0x67fb +0x3a3b 0x6c99 +0x3a3c 0x7473 +0x3a3d 0x7802 +0x3a3e 0x8a50 +0x3a3f 0x9396 +0x3a40 0x88df +0x3a41 0x5750 +0x3a42 0x5ea7 +0x3a43 0x632b +0x3a44 0x50b5 +0x3a45 0x50ac +0x3a46 0x518d +0x3a47 0x6700 +0x3a48 0x54c9 +0x3a49 0x585e +0x3a4a 0x59bb +0x3a4b 0x5bb0 +0x3a4c 0x5f69 +0x3a4d 0x624d +0x3a4e 0x63a1 +0x3a4f 0x683d +0x3a50 0x6b73 +0x3a51 0x6e08 +0x3a52 0x707d +0x3a53 0x91c7 +0x3a54 0x7280 +0x3a55 0x7815 +0x3a56 0x7826 +0x3a57 0x796d +0x3a58 0x658e +0x3a59 0x7d30 +0x3a5a 0x83dc +0x3a5b 0x88c1 +0x3a5c 0x8f09 +0x3a5d 0x969b +0x3a5e 0x5264 +0x3a5f 0x5728 +0x3a60 0x6750 +0x3a61 0x7f6a +0x3a62 0x8ca1 +0x3a63 0x51b4 +0x3a64 0x5742 +0x3a65 0x962a +0x3a66 0x583a +0x3a67 0x698a +0x3a68 0x80b4 +0x3a69 0x54b2 +0x3a6a 0x5d0e +0x3a6b 0x57fc +0x3a6c 0x7895 +0x3a6d 0x9dfa +0x3a6e 0x4f5c +0x3a6f 0x524a +0x3a70 0x548b +0x3a71 0x643e +0x3a72 0x6628 +0x3a73 0x6714 +0x3a74 0x67f5 +0x3a75 0x7a84 +0x3a76 0x7b56 +0x3a77 0x7d22 +0x3a78 0x932f +0x3a79 0x685c +0x3a7a 0x9bad +0x3a7b 0x7b39 +0x3a7c 0x5319 +0x3a7d 0x518a +0x3a7e 0x5237 +0x3b21 0x5bdf +0x3b22 0x62f6 +0x3b23 0x64ae +0x3b24 0x64e6 +0x3b25 0x672d +0x3b26 0x6bba +0x3b27 0x85a9 +0x3b28 0x96d1 +0x3b29 0x7690 +0x3b2a 0x9bd6 +0x3b2b 0x634c +0x3b2c 0x9306 +0x3b2d 0x9bab +0x3b2e 0x76bf +0x3b2f 0x6652 +0x3b30 0x4e09 +0x3b31 0x5098 +0x3b32 0x53c2 +0x3b33 0x5c71 +0x3b34 0x60e8 +0x3b35 0x6492 +0x3b36 0x6563 +0x3b37 0x685f +0x3b38 0x71e6 +0x3b39 0x73ca +0x3b3a 0x7523 +0x3b3b 0x7b97 +0x3b3c 0x7e82 +0x3b3d 0x8695 +0x3b3e 0x8b83 +0x3b3f 0x8cdb +0x3b40 0x9178 +0x3b41 0x9910 +0x3b42 0x65ac +0x3b43 0x66ab +0x3b44 0x6b8b +0x3b45 0x4ed5 +0x3b46 0x4ed4 +0x3b47 0x4f3a +0x3b48 0x4f7f +0x3b49 0x523a +0x3b4a 0x53f8 +0x3b4b 0x53f2 +0x3b4c 0x55e3 +0x3b4d 0x56db +0x3b4e 0x58eb +0x3b4f 0x59cb +0x3b50 0x59c9 +0x3b51 0x59ff +0x3b52 0x5b50 +0x3b53 0x5c4d +0x3b54 0x5e02 +0x3b55 0x5e2b +0x3b56 0x5fd7 +0x3b57 0x601d +0x3b58 0x6307 +0x3b59 0x652f +0x3b5a 0x5b5c +0x3b5b 0x65af +0x3b5c 0x65bd +0x3b5d 0x65e8 +0x3b5e 0x679d +0x3b5f 0x6b62 +0x3b60 0x6b7b +0x3b61 0x6c0f +0x3b62 0x7345 +0x3b63 0x7949 +0x3b64 0x79c1 +0x3b65 0x7cf8 +0x3b66 0x7d19 +0x3b67 0x7d2b +0x3b68 0x80a2 +0x3b69 0x8102 +0x3b6a 0x81f3 +0x3b6b 0x8996 +0x3b6c 0x8a5e +0x3b6d 0x8a69 +0x3b6e 0x8a66 +0x3b6f 0x8a8c +0x3b70 0x8aee +0x3b71 0x8cc7 +0x3b72 0x8cdc +0x3b73 0x96cc +0x3b74 0x98fc +0x3b75 0x6b6f +0x3b76 0x4e8b +0x3b77 0x4f3c +0x3b78 0x4f8d +0x3b79 0x5150 +0x3b7a 0x5b57 +0x3b7b 0x5bfa +0x3b7c 0x6148 +0x3b7d 0x6301 +0x3b7e 0x6642 +0x3c21 0x6b21 +0x3c22 0x6ecb +0x3c23 0x6cbb +0x3c24 0x723e +0x3c25 0x74bd +0x3c26 0x75d4 +0x3c27 0x78c1 +0x3c28 0x793a +0x3c29 0x800c +0x3c2a 0x8033 +0x3c2b 0x81ea +0x3c2c 0x8494 +0x3c2d 0x8f9e +0x3c2e 0x6c50 +0x3c2f 0x9e7f +0x3c30 0x5f0f +0x3c31 0x8b58 +0x3c32 0x9d2b +0x3c33 0x7afa +0x3c34 0x8ef8 +0x3c35 0x5b8d +0x3c36 0x96eb +0x3c37 0x4e03 +0x3c38 0x53f1 +0x3c39 0x57f7 +0x3c3a 0x5931 +0x3c3b 0x5ac9 +0x3c3c 0x5ba4 +0x3c3d 0x6089 +0x3c3e 0x6e7f +0x3c3f 0x6f06 +0x3c40 0x75be +0x3c41 0x8cea +0x3c42 0x5b9f +0x3c43 0x8500 +0x3c44 0x7be0 +0x3c45 0x5072 +0x3c46 0x67f4 +0x3c47 0x829d +0x3c48 0x5c61 +0x3c49 0x854a +0x3c4a 0x7e1e +0x3c4b 0x820e +0x3c4c 0x5199 +0x3c4d 0x5c04 +0x3c4e 0x6368 +0x3c4f 0x8d66 +0x3c50 0x659c +0x3c51 0x716e +0x3c52 0x793e +0x3c53 0x7d17 +0x3c54 0x8005 +0x3c55 0x8b1d +0x3c56 0x8eca +0x3c57 0x906e +0x3c58 0x86c7 +0x3c59 0x90aa +0x3c5a 0x501f +0x3c5b 0x52fa +0x3c5c 0x5c3a +0x3c5d 0x6753 +0x3c5e 0x707c +0x3c5f 0x7235 +0x3c60 0x914c +0x3c61 0x91c8 +0x3c62 0x932b +0x3c63 0x82e5 +0x3c64 0x5bc2 +0x3c65 0x5f31 +0x3c66 0x60f9 +0x3c67 0x4e3b +0x3c68 0x53d6 +0x3c69 0x5b88 +0x3c6a 0x624b +0x3c6b 0x6731 +0x3c6c 0x6b8a +0x3c6d 0x72e9 +0x3c6e 0x73e0 +0x3c6f 0x7a2e +0x3c70 0x816b +0x3c71 0x8da3 +0x3c72 0x9152 +0x3c73 0x9996 +0x3c74 0x5112 +0x3c75 0x53d7 +0x3c76 0x546a +0x3c77 0x5bff +0x3c78 0x6388 +0x3c79 0x6a39 +0x3c7a 0x7dac +0x3c7b 0x9700 +0x3c7c 0x56da +0x3c7d 0x53ce +0x3c7e 0x5468 +0x3d21 0x5b97 +0x3d22 0x5c31 +0x3d23 0x5dde +0x3d24 0x4fee +0x3d25 0x6101 +0x3d26 0x62fe +0x3d27 0x6d32 +0x3d28 0x79c0 +0x3d29 0x79cb +0x3d2a 0x7d42 +0x3d2b 0x7e4d +0x3d2c 0x7fd2 +0x3d2d 0x81ed +0x3d2e 0x821f +0x3d2f 0x8490 +0x3d30 0x8846 +0x3d31 0x8972 +0x3d32 0x8b90 +0x3d33 0x8e74 +0x3d34 0x8f2f +0x3d35 0x9031 +0x3d36 0x914b +0x3d37 0x916c +0x3d38 0x96c6 +0x3d39 0x919c +0x3d3a 0x4ec0 +0x3d3b 0x4f4f +0x3d3c 0x5145 +0x3d3d 0x5341 +0x3d3e 0x5f93 +0x3d3f 0x620e +0x3d40 0x67d4 +0x3d41 0x6c41 +0x3d42 0x6e0b +0x3d43 0x7363 +0x3d44 0x7e26 +0x3d45 0x91cd +0x3d46 0x9283 +0x3d47 0x53d4 +0x3d48 0x5919 +0x3d49 0x5bbf +0x3d4a 0x6dd1 +0x3d4b 0x795d +0x3d4c 0x7e2e +0x3d4d 0x7c9b +0x3d4e 0x587e +0x3d4f 0x719f +0x3d50 0x51fa +0x3d51 0x8853 +0x3d52 0x8ff0 +0x3d53 0x4fca +0x3d54 0x5cfb +0x3d55 0x6625 +0x3d56 0x77ac +0x3d57 0x7ae3 +0x3d58 0x821c +0x3d59 0x99ff +0x3d5a 0x51c6 +0x3d5b 0x5faa +0x3d5c 0x65ec +0x3d5d 0x696f +0x3d5e 0x6b89 +0x3d5f 0x6df3 +0x3d60 0x6e96 +0x3d61 0x6f64 +0x3d62 0x76fe +0x3d63 0x7d14 +0x3d64 0x5de1 +0x3d65 0x9075 +0x3d66 0x9187 +0x3d67 0x9806 +0x3d68 0x51e6 +0x3d69 0x521d +0x3d6a 0x6240 +0x3d6b 0x6691 +0x3d6c 0x66d9 +0x3d6d 0x6e1a +0x3d6e 0x5eb6 +0x3d6f 0x7dd2 +0x3d70 0x7f72 +0x3d71 0x66f8 +0x3d72 0x85af +0x3d73 0x85f7 +0x3d74 0x8af8 +0x3d75 0x52a9 +0x3d76 0x53d9 +0x3d77 0x5973 +0x3d78 0x5e8f +0x3d79 0x5f90 +0x3d7a 0x6055 +0x3d7b 0x92e4 +0x3d7c 0x9664 +0x3d7d 0x50b7 +0x3d7e 0x511f +0x3e21 0x52dd +0x3e22 0x5320 +0x3e23 0x5347 +0x3e24 0x53ec +0x3e25 0x54e8 +0x3e26 0x5546 +0x3e27 0x5531 +0x3e28 0x5617 +0x3e29 0x5968 +0x3e2a 0x59be +0x3e2b 0x5a3c +0x3e2c 0x5bb5 +0x3e2d 0x5c06 +0x3e2e 0x5c0f +0x3e2f 0x5c11 +0x3e30 0x5c1a +0x3e31 0x5e84 +0x3e32 0x5e8a +0x3e33 0x5ee0 +0x3e34 0x5f70 +0x3e35 0x627f +0x3e36 0x6284 +0x3e37 0x62db +0x3e38 0x638c +0x3e39 0x6377 +0x3e3a 0x6607 +0x3e3b 0x660c +0x3e3c 0x662d +0x3e3d 0x6676 +0x3e3e 0x677e +0x3e3f 0x68a2 +0x3e40 0x6a1f +0x3e41 0x6a35 +0x3e42 0x6cbc +0x3e43 0x6d88 +0x3e44 0x6e09 +0x3e45 0x6e58 +0x3e46 0x713c +0x3e47 0x7126 +0x3e48 0x7167 +0x3e49 0x75c7 +0x3e4a 0x7701 +0x3e4b 0x785d +0x3e4c 0x7901 +0x3e4d 0x7965 +0x3e4e 0x79f0 +0x3e4f 0x7ae0 +0x3e50 0x7b11 +0x3e51 0x7ca7 +0x3e52 0x7d39 +0x3e53 0x8096 +0x3e54 0x83d6 +0x3e55 0x848b +0x3e56 0x8549 +0x3e57 0x885d +0x3e58 0x88f3 +0x3e59 0x8a1f +0x3e5a 0x8a3c +0x3e5b 0x8a54 +0x3e5c 0x8a73 +0x3e5d 0x8c61 +0x3e5e 0x8cde +0x3e5f 0x91a4 +0x3e60 0x9266 +0x3e61 0x937e +0x3e62 0x9418 +0x3e63 0x969c +0x3e64 0x9798 +0x3e65 0x4e0a +0x3e66 0x4e08 +0x3e67 0x4e1e +0x3e68 0x4e57 +0x3e69 0x5197 +0x3e6a 0x5270 +0x3e6b 0x57ce +0x3e6c 0x5834 +0x3e6d 0x58cc +0x3e6e 0x5b22 +0x3e6f 0x5e38 +0x3e70 0x60c5 +0x3e71 0x64fe +0x3e72 0x6761 +0x3e73 0x6756 +0x3e74 0x6d44 +0x3e75 0x72b6 +0x3e76 0x7573 +0x3e77 0x7a63 +0x3e78 0x84b8 +0x3e79 0x8b72 +0x3e7a 0x91b8 +0x3e7b 0x9320 +0x3e7c 0x5631 +0x3e7d 0x57f4 +0x3e7e 0x98fe +0x3f21 0x62ed +0x3f22 0x690d +0x3f23 0x6b96 +0x3f24 0x71ed +0x3f25 0x7e54 +0x3f26 0x8077 +0x3f27 0x8272 +0x3f28 0x89e6 +0x3f29 0x98df +0x3f2a 0x8755 +0x3f2b 0x8fb1 +0x3f2c 0x5c3b +0x3f2d 0x4f38 +0x3f2e 0x4fe1 +0x3f2f 0x4fb5 +0x3f30 0x5507 +0x3f31 0x5a20 +0x3f32 0x5bdd +0x3f33 0x5be9 +0x3f34 0x5fc3 +0x3f35 0x614e +0x3f36 0x632f +0x3f37 0x65b0 +0x3f38 0x664b +0x3f39 0x68ee +0x3f3a 0x699b +0x3f3b 0x6d78 +0x3f3c 0x6df1 +0x3f3d 0x7533 +0x3f3e 0x75b9 +0x3f3f 0x771f +0x3f40 0x795e +0x3f41 0x79e6 +0x3f42 0x7d33 +0x3f43 0x81e3 +0x3f44 0x82af +0x3f45 0x85aa +0x3f46 0x89aa +0x3f47 0x8a3a +0x3f48 0x8eab +0x3f49 0x8f9b +0x3f4a 0x9032 +0x3f4b 0x91dd +0x3f4c 0x9707 +0x3f4d 0x4eba +0x3f4e 0x4ec1 +0x3f4f 0x5203 +0x3f50 0x5875 +0x3f51 0x58ec +0x3f52 0x5c0b +0x3f53 0x751a +0x3f54 0x5c3d +0x3f55 0x814e +0x3f56 0x8a0a +0x3f57 0x8fc5 +0x3f58 0x9663 +0x3f59 0x976d +0x3f5a 0x7b25 +0x3f5b 0x8acf +0x3f5c 0x9808 +0x3f5d 0x9162 +0x3f5e 0x56f3 +0x3f5f 0x53a8 +0x3f60 0x9017 +0x3f61 0x5439 +0x3f62 0x5782 +0x3f63 0x5e25 +0x3f64 0x63a8 +0x3f65 0x6c34 +0x3f66 0x708a +0x3f67 0x7761 +0x3f68 0x7c8b +0x3f69 0x7fe0 +0x3f6a 0x8870 +0x3f6b 0x9042 +0x3f6c 0x9154 +0x3f6d 0x9310 +0x3f6e 0x9318 +0x3f6f 0x968f +0x3f70 0x745e +0x3f71 0x9ac4 +0x3f72 0x5d07 +0x3f73 0x5d69 +0x3f74 0x6570 +0x3f75 0x67a2 +0x3f76 0x8da8 +0x3f77 0x96db +0x3f78 0x636e +0x3f79 0x6749 +0x3f7a 0x6919 +0x3f7b 0x83c5 +0x3f7c 0x9817 +0x3f7d 0x96c0 +0x3f7e 0x88fe +0x4021 0x6f84 +0x4022 0x647a +0x4023 0x5bf8 +0x4024 0x4e16 +0x4025 0x702c +0x4026 0x755d +0x4027 0x662f +0x4028 0x51c4 +0x4029 0x5236 +0x402a 0x52e2 +0x402b 0x59d3 +0x402c 0x5f81 +0x402d 0x6027 +0x402e 0x6210 +0x402f 0x653f +0x4030 0x6574 +0x4031 0x661f +0x4032 0x6674 +0x4033 0x68f2 +0x4034 0x6816 +0x4035 0x6b63 +0x4036 0x6e05 +0x4037 0x7272 +0x4038 0x751f +0x4039 0x76db +0x403a 0x7cbe +0x403b 0x8056 +0x403c 0x58f0 +0x403d 0x88fd +0x403e 0x897f +0x403f 0x8aa0 +0x4040 0x8a93 +0x4041 0x8acb +0x4042 0x901d +0x4043 0x9192 +0x4044 0x9752 +0x4045 0x9759 +0x4046 0x6589 +0x4047 0x7a0e +0x4048 0x8106 +0x4049 0x96bb +0x404a 0x5e2d +0x404b 0x60dc +0x404c 0x621a +0x404d 0x65a5 +0x404e 0x6614 +0x404f 0x6790 +0x4050 0x77f3 +0x4051 0x7a4d +0x4052 0x7c4d +0x4053 0x7e3e +0x4054 0x810a +0x4055 0x8cac +0x4056 0x8d64 +0x4057 0x8de1 +0x4058 0x8e5f +0x4059 0x78a9 +0x405a 0x5207 +0x405b 0x62d9 +0x405c 0x63a5 +0x405d 0x6442 +0x405e 0x6298 +0x405f 0x8a2d +0x4060 0x7a83 +0x4061 0x7bc0 +0x4062 0x8aac +0x4063 0x96ea +0x4064 0x7d76 +0x4065 0x820c +0x4066 0x8749 +0x4067 0x4ed9 +0x4068 0x5148 +0x4069 0x5343 +0x406a 0x5360 +0x406b 0x5ba3 +0x406c 0x5c02 +0x406d 0x5c16 +0x406e 0x5ddd +0x406f 0x6226 +0x4070 0x6247 +0x4071 0x64b0 +0x4072 0x6813 +0x4073 0x6834 +0x4074 0x6cc9 +0x4075 0x6d45 +0x4076 0x6d17 +0x4077 0x67d3 +0x4078 0x6f5c +0x4079 0x714e +0x407a 0x717d +0x407b 0x65cb +0x407c 0x7a7f +0x407d 0x7bad +0x407e 0x7dda +0x4121 0x7e4a +0x4122 0x7fa8 +0x4123 0x817a +0x4124 0x821b +0x4125 0x8239 +0x4126 0x85a6 +0x4127 0x8a6e +0x4128 0x8cce +0x4129 0x8df5 +0x412a 0x9078 +0x412b 0x9077 +0x412c 0x92ad +0x412d 0x9291 +0x412e 0x9583 +0x412f 0x9bae +0x4130 0x524d +0x4131 0x5584 +0x4132 0x6f38 +0x4133 0x7136 +0x4134 0x5168 +0x4135 0x7985 +0x4136 0x7e55 +0x4137 0x81b3 +0x4138 0x7cce +0x4139 0x564c +0x413a 0x5851 +0x413b 0x5ca8 +0x413c 0x63aa +0x413d 0x66fe +0x413e 0x66fd +0x413f 0x695a +0x4140 0x72d9 +0x4141 0x758f +0x4142 0x758e +0x4143 0x790e +0x4144 0x7956 +0x4145 0x79df +0x4146 0x7c97 +0x4147 0x7d20 +0x4148 0x7d44 +0x4149 0x8607 +0x414a 0x8a34 +0x414b 0x963b +0x414c 0x9061 +0x414d 0x9f20 +0x414e 0x50e7 +0x414f 0x5275 +0x4150 0x53cc +0x4151 0x53e2 +0x4152 0x5009 +0x4153 0x55aa +0x4154 0x58ee +0x4155 0x594f +0x4156 0x723d +0x4157 0x5b8b +0x4158 0x5c64 +0x4159 0x531d +0x415a 0x60e3 +0x415b 0x60f3 +0x415c 0x635c +0x415d 0x6383 +0x415e 0x633f +0x415f 0x63bb +0x4160 0x64cd +0x4161 0x65e9 +0x4162 0x66f9 +0x4163 0x5de3 +0x4164 0x69cd +0x4165 0x69fd +0x4166 0x6f15 +0x4167 0x71e5 +0x4168 0x4e89 +0x4169 0x75e9 +0x416a 0x76f8 +0x416b 0x7a93 +0x416c 0x7cdf +0x416d 0x7dcf +0x416e 0x7d9c +0x416f 0x8061 +0x4170 0x8349 +0x4171 0x8358 +0x4172 0x846c +0x4173 0x84bc +0x4174 0x85fb +0x4175 0x88c5 +0x4176 0x8d70 +0x4177 0x9001 +0x4178 0x906d +0x4179 0x9397 +0x417a 0x971c +0x417b 0x9a12 +0x417c 0x50cf +0x417d 0x5897 +0x417e 0x618e +0x4221 0x81d3 +0x4222 0x8535 +0x4223 0x8d08 +0x4224 0x9020 +0x4225 0x4fc3 +0x4226 0x5074 +0x4227 0x5247 +0x4228 0x5373 +0x4229 0x606f +0x422a 0x6349 +0x422b 0x675f +0x422c 0x6e2c +0x422d 0x8db3 +0x422e 0x901f +0x422f 0x4fd7 +0x4230 0x5c5e +0x4231 0x8cca +0x4232 0x65cf +0x4233 0x7d9a +0x4234 0x5352 +0x4235 0x8896 +0x4236 0x5176 +0x4237 0x63c3 +0x4238 0x5b58 +0x4239 0x5b6b +0x423a 0x5c0a +0x423b 0x640d +0x423c 0x6751 +0x423d 0x905c +0x423e 0x4ed6 +0x423f 0x591a +0x4240 0x592a +0x4241 0x6c70 +0x4242 0x8a51 +0x4243 0x553e +0x4244 0x5815 +0x4245 0x59a5 +0x4246 0x60f0 +0x4247 0x6253 +0x4248 0x67c1 +0x4249 0x8235 +0x424a 0x6955 +0x424b 0x9640 +0x424c 0x99c4 +0x424d 0x9a28 +0x424e 0x4f53 +0x424f 0x5806 +0x4250 0x5bfe +0x4251 0x8010 +0x4252 0x5cb1 +0x4253 0x5e2f +0x4254 0x5f85 +0x4255 0x6020 +0x4256 0x614b +0x4257 0x6234 +0x4258 0x66ff +0x4259 0x6cf0 +0x425a 0x6ede +0x425b 0x80ce +0x425c 0x817f +0x425d 0x82d4 +0x425e 0x888b +0x425f 0x8cb8 +0x4260 0x9000 +0x4261 0x902e +0x4262 0x968a +0x4263 0x9edb +0x4264 0x9bdb +0x4265 0x4ee3 +0x4266 0x53f0 +0x4267 0x5927 +0x4268 0x7b2c +0x4269 0x918d +0x426a 0x984c +0x426b 0x9df9 +0x426c 0x6edd +0x426d 0x7027 +0x426e 0x5353 +0x426f 0x5544 +0x4270 0x5b85 +0x4271 0x6258 +0x4272 0x629e +0x4273 0x62d3 +0x4274 0x6ca2 +0x4275 0x6fef +0x4276 0x7422 +0x4277 0x8a17 +0x4278 0x9438 +0x4279 0x6fc1 +0x427a 0x8afe +0x427b 0x8338 +0x427c 0x51e7 +0x427d 0x86f8 +0x427e 0x53ea +0x4321 0x53e9 +0x4322 0x4f46 +0x4323 0x9054 +0x4324 0x8fb0 +0x4325 0x596a +0x4326 0x8131 +0x4327 0x5dfd +0x4328 0x7aea +0x4329 0x8fbf +0x432a 0x68da +0x432b 0x8c37 +0x432c 0x72f8 +0x432d 0x9c48 +0x432e 0x6a3d +0x432f 0x8ab0 +0x4330 0x4e39 +0x4331 0x5358 +0x4332 0x5606 +0x4333 0x5766 +0x4334 0x62c5 +0x4335 0x63a2 +0x4336 0x65e6 +0x4337 0x6b4e +0x4338 0x6de1 +0x4339 0x6e5b +0x433a 0x70ad +0x433b 0x77ed +0x433c 0x7aef +0x433d 0x7baa +0x433e 0x7dbb +0x433f 0x803d +0x4340 0x80c6 +0x4341 0x86cb +0x4342 0x8a95 +0x4343 0x935b +0x4344 0x56e3 +0x4345 0x58c7 +0x4346 0x5f3e +0x4347 0x65ad +0x4348 0x6696 +0x4349 0x6a80 +0x434a 0x6bb5 +0x434b 0x7537 +0x434c 0x8ac7 +0x434d 0x5024 +0x434e 0x77e5 +0x434f 0x5730 +0x4350 0x5f1b +0x4351 0x6065 +0x4352 0x667a +0x4353 0x6c60 +0x4354 0x75f4 +0x4355 0x7a1a +0x4356 0x7f6e +0x4357 0x81f4 +0x4358 0x8718 +0x4359 0x9045 +0x435a 0x99b3 +0x435b 0x7bc9 +0x435c 0x755c +0x435d 0x7af9 +0x435e 0x7b51 +0x435f 0x84c4 +0x4360 0x9010 +0x4361 0x79e9 +0x4362 0x7a92 +0x4363 0x8336 +0x4364 0x5ae1 +0x4365 0x7740 +0x4366 0x4e2d +0x4367 0x4ef2 +0x4368 0x5b99 +0x4369 0x5fe0 +0x436a 0x62bd +0x436b 0x663c +0x436c 0x67f1 +0x436d 0x6ce8 +0x436e 0x866b +0x436f 0x8877 +0x4370 0x8a3b +0x4371 0x914e +0x4372 0x92f3 +0x4373 0x99d0 +0x4374 0x6a17 +0x4375 0x7026 +0x4376 0x732a +0x4377 0x82e7 +0x4378 0x8457 +0x4379 0x8caf +0x437a 0x4e01 +0x437b 0x5146 +0x437c 0x51cb +0x437d 0x558b +0x437e 0x5bf5 +0x4421 0x5e16 +0x4422 0x5e33 +0x4423 0x5e81 +0x4424 0x5f14 +0x4425 0x5f35 +0x4426 0x5f6b +0x4427 0x5fb4 +0x4428 0x61f2 +0x4429 0x6311 +0x442a 0x66a2 +0x442b 0x671d +0x442c 0x6f6e +0x442d 0x7252 +0x442e 0x753a +0x442f 0x773a +0x4430 0x8074 +0x4431 0x8139 +0x4432 0x8178 +0x4433 0x8776 +0x4434 0x8abf +0x4435 0x8adc +0x4436 0x8d85 +0x4437 0x8df3 +0x4438 0x929a +0x4439 0x9577 +0x443a 0x9802 +0x443b 0x9ce5 +0x443c 0x52c5 +0x443d 0x6357 +0x443e 0x76f4 +0x443f 0x6715 +0x4440 0x6c88 +0x4441 0x73cd +0x4442 0x8cc3 +0x4443 0x93ae +0x4444 0x9673 +0x4445 0x6d25 +0x4446 0x589c +0x4447 0x690e +0x4448 0x69cc +0x4449 0x8ffd +0x444a 0x939a +0x444b 0x75db +0x444c 0x901a +0x444d 0x585a +0x444e 0x6802 +0x444f 0x63b4 +0x4450 0x69fb +0x4451 0x4f43 +0x4452 0x6f2c +0x4453 0x67d8 +0x4454 0x8fbb +0x4455 0x8526 +0x4456 0x7db4 +0x4457 0x9354 +0x4458 0x693f +0x4459 0x6f70 +0x445a 0x576a +0x445b 0x58f7 +0x445c 0x5b2c +0x445d 0x7d2c +0x445e 0x722a +0x445f 0x540a +0x4460 0x91e3 +0x4461 0x9db4 +0x4462 0x4ead +0x4463 0x4f4e +0x4464 0x505c +0x4465 0x5075 +0x4466 0x5243 +0x4467 0x8c9e +0x4468 0x5448 +0x4469 0x5824 +0x446a 0x5b9a +0x446b 0x5e1d +0x446c 0x5e95 +0x446d 0x5ead +0x446e 0x5ef7 +0x446f 0x5f1f +0x4470 0x608c +0x4471 0x62b5 +0x4472 0x633a +0x4473 0x63d0 +0x4474 0x68af +0x4475 0x6c40 +0x4476 0x7887 +0x4477 0x798e +0x4478 0x7a0b +0x4479 0x7de0 +0x447a 0x8247 +0x447b 0x8a02 +0x447c 0x8ae6 +0x447d 0x8e44 +0x447e 0x9013 +0x4521 0x90b8 +0x4522 0x912d +0x4523 0x91d8 +0x4524 0x9f0e +0x4525 0x6ce5 +0x4526 0x6458 +0x4527 0x64e2 +0x4528 0x6575 +0x4529 0x6ef4 +0x452a 0x7684 +0x452b 0x7b1b +0x452c 0x9069 +0x452d 0x93d1 +0x452e 0x6eba +0x452f 0x54f2 +0x4530 0x5fb9 +0x4531 0x64a4 +0x4532 0x8f4d +0x4533 0x8fed +0x4534 0x9244 +0x4535 0x5178 +0x4536 0x586b +0x4537 0x5929 +0x4538 0x5c55 +0x4539 0x5e97 +0x453a 0x6dfb +0x453b 0x7e8f +0x453c 0x751c +0x453d 0x8cbc +0x453e 0x8ee2 +0x453f 0x985b +0x4540 0x70b9 +0x4541 0x4f1d +0x4542 0x6bbf +0x4543 0x6fb1 +0x4544 0x7530 +0x4545 0x96fb +0x4546 0x514e +0x4547 0x5410 +0x4548 0x5835 +0x4549 0x5857 +0x454a 0x59ac +0x454b 0x5c60 +0x454c 0x5f92 +0x454d 0x6597 +0x454e 0x675c +0x454f 0x6e21 +0x4550 0x767b +0x4551 0x83df +0x4552 0x8ced +0x4553 0x9014 +0x4554 0x90fd +0x4555 0x934d +0x4556 0x7825 +0x4557 0x783a +0x4558 0x52aa +0x4559 0x5ea6 +0x455a 0x571f +0x455b 0x5974 +0x455c 0x6012 +0x455d 0x5012 +0x455e 0x515a +0x455f 0x51ac +0x4560 0x51cd +0x4561 0x5200 +0x4562 0x5510 +0x4563 0x5854 +0x4564 0x5858 +0x4565 0x5957 +0x4566 0x5b95 +0x4567 0x5cf6 +0x4568 0x5d8b +0x4569 0x60bc +0x456a 0x6295 +0x456b 0x642d +0x456c 0x6771 +0x456d 0x6843 +0x456e 0x68bc +0x456f 0x68df +0x4570 0x76d7 +0x4571 0x6dd8 +0x4572 0x6e6f +0x4573 0x6d9b +0x4574 0x706f +0x4575 0x71c8 +0x4576 0x5f53 +0x4577 0x75d8 +0x4578 0x7977 +0x4579 0x7b49 +0x457a 0x7b54 +0x457b 0x7b52 +0x457c 0x7cd6 +0x457d 0x7d71 +0x457e 0x5230 +0x4621 0x8463 +0x4622 0x8569 +0x4623 0x85e4 +0x4624 0x8a0e +0x4625 0x8b04 +0x4626 0x8c46 +0x4627 0x8e0f +0x4628 0x9003 +0x4629 0x900f +0x462a 0x9419 +0x462b 0x9676 +0x462c 0x982d +0x462d 0x9a30 +0x462e 0x95d8 +0x462f 0x50cd +0x4630 0x52d5 +0x4631 0x540c +0x4632 0x5802 +0x4633 0x5c0e +0x4634 0x61a7 +0x4635 0x649e +0x4636 0x6d1e +0x4637 0x77b3 +0x4638 0x7ae5 +0x4639 0x80f4 +0x463a 0x8404 +0x463b 0x9053 +0x463c 0x9285 +0x463d 0x5ce0 +0x463e 0x9d07 +0x463f 0x533f +0x4640 0x5f97 +0x4641 0x5fb3 +0x4642 0x6d9c +0x4643 0x7279 +0x4644 0x7763 +0x4645 0x79bf +0x4646 0x7be4 +0x4647 0x6bd2 +0x4648 0x72ec +0x4649 0x8aad +0x464a 0x6803 +0x464b 0x6a61 +0x464c 0x51f8 +0x464d 0x7a81 +0x464e 0x6934 +0x464f 0x5c4a +0x4650 0x9cf6 +0x4651 0x82eb +0x4652 0x5bc5 +0x4653 0x9149 +0x4654 0x701e +0x4655 0x5678 +0x4656 0x5c6f +0x4657 0x60c7 +0x4658 0x6566 +0x4659 0x6c8c +0x465a 0x8c5a +0x465b 0x9041 +0x465c 0x9813 +0x465d 0x5451 +0x465e 0x66c7 +0x465f 0x920d +0x4660 0x5948 +0x4661 0x90a3 +0x4662 0x5185 +0x4663 0x4e4d +0x4664 0x51ea +0x4665 0x8599 +0x4666 0x8b0e +0x4667 0x7058 +0x4668 0x637a +0x4669 0x934b +0x466a 0x6962 +0x466b 0x99b4 +0x466c 0x7e04 +0x466d 0x7577 +0x466e 0x5357 +0x466f 0x6960 +0x4670 0x8edf +0x4671 0x96e3 +0x4672 0x6c5d +0x4673 0x4e8c +0x4674 0x5c3c +0x4675 0x5f10 +0x4676 0x8fe9 +0x4677 0x5302 +0x4678 0x8cd1 +0x4679 0x8089 +0x467a 0x8679 +0x467b 0x5eff +0x467c 0x65e5 +0x467d 0x4e73 +0x467e 0x5165 +0x4721 0x5982 +0x4722 0x5c3f +0x4723 0x97ee +0x4724 0x4efb +0x4725 0x598a +0x4726 0x5fcd +0x4727 0x8a8d +0x4728 0x6fe1 +0x4729 0x79b0 +0x472a 0x7962 +0x472b 0x5be7 +0x472c 0x8471 +0x472d 0x732b +0x472e 0x71b1 +0x472f 0x5e74 +0x4730 0x5ff5 +0x4731 0x637b +0x4732 0x649a +0x4733 0x71c3 +0x4734 0x7c98 +0x4735 0x4e43 +0x4736 0x5efc +0x4737 0x4e4b +0x4738 0x57dc +0x4739 0x56a2 +0x473a 0x60a9 +0x473b 0x6fc3 +0x473c 0x7d0d +0x473d 0x80fd +0x473e 0x8133 +0x473f 0x81bf +0x4740 0x8fb2 +0x4741 0x8997 +0x4742 0x86a4 +0x4743 0x5df4 +0x4744 0x628a +0x4745 0x64ad +0x4746 0x8987 +0x4747 0x6777 +0x4748 0x6ce2 +0x4749 0x6d3e +0x474a 0x7436 +0x474b 0x7834 +0x474c 0x5a46 +0x474d 0x7f75 +0x474e 0x82ad +0x474f 0x99ac +0x4750 0x4ff3 +0x4751 0x5ec3 +0x4752 0x62dd +0x4753 0x6392 +0x4754 0x6557 +0x4755 0x676f +0x4756 0x76c3 +0x4757 0x724c +0x4758 0x80cc +0x4759 0x80ba +0x475a 0x8f29 +0x475b 0x914d +0x475c 0x500d +0x475d 0x57f9 +0x475e 0x5a92 +0x475f 0x6885 +0x4760 0x6973 +0x4761 0x7164 +0x4762 0x72fd +0x4763 0x8cb7 +0x4764 0x58f2 +0x4765 0x8ce0 +0x4766 0x966a +0x4767 0x9019 +0x4768 0x877f +0x4769 0x79e4 +0x476a 0x77e7 +0x476b 0x8429 +0x476c 0x4f2f +0x476d 0x5265 +0x476e 0x535a +0x476f 0x62cd +0x4770 0x67cf +0x4771 0x6cca +0x4772 0x767d +0x4773 0x7b94 +0x4774 0x7c95 +0x4775 0x8236 +0x4776 0x8584 +0x4777 0x8feb +0x4778 0x66dd +0x4779 0x6f20 +0x477a 0x7206 +0x477b 0x7e1b +0x477c 0x83ab +0x477d 0x99c1 +0x477e 0x9ea6 +0x4821 0x51fd +0x4822 0x7bb1 +0x4823 0x7872 +0x4824 0x7bb8 +0x4825 0x8087 +0x4826 0x7b48 +0x4827 0x6ae8 +0x4828 0x5e61 +0x4829 0x808c +0x482a 0x7551 +0x482b 0x7560 +0x482c 0x516b +0x482d 0x9262 +0x482e 0x6e8c +0x482f 0x767a +0x4830 0x9197 +0x4831 0x9aea +0x4832 0x4f10 +0x4833 0x7f70 +0x4834 0x629c +0x4835 0x7b4f +0x4836 0x95a5 +0x4837 0x9ce9 +0x4838 0x567a +0x4839 0x5859 +0x483a 0x86e4 +0x483b 0x96bc +0x483c 0x4f34 +0x483d 0x5224 +0x483e 0x534a +0x483f 0x53cd +0x4840 0x53db +0x4841 0x5e06 +0x4842 0x642c +0x4843 0x6591 +0x4844 0x677f +0x4845 0x6c3e +0x4846 0x6c4e +0x4847 0x7248 +0x4848 0x72af +0x4849 0x73ed +0x484a 0x7554 +0x484b 0x7e41 +0x484c 0x822c +0x484d 0x85e9 +0x484e 0x8ca9 +0x484f 0x7bc4 +0x4850 0x91c6 +0x4851 0x7169 +0x4852 0x9812 +0x4853 0x98ef +0x4854 0x633d +0x4855 0x6669 +0x4856 0x756a +0x4857 0x76e4 +0x4858 0x78d0 +0x4859 0x8543 +0x485a 0x86ee +0x485b 0x532a +0x485c 0x5351 +0x485d 0x5426 +0x485e 0x5983 +0x485f 0x5e87 +0x4860 0x5f7c +0x4861 0x60b2 +0x4862 0x6249 +0x4863 0x6279 +0x4864 0x62ab +0x4865 0x6590 +0x4866 0x6bd4 +0x4867 0x6ccc +0x4868 0x75b2 +0x4869 0x76ae +0x486a 0x7891 +0x486b 0x79d8 +0x486c 0x7dcb +0x486d 0x7f77 +0x486e 0x80a5 +0x486f 0x88ab +0x4870 0x8ab9 +0x4871 0x8cbb +0x4872 0x907f +0x4873 0x975e +0x4874 0x98db +0x4875 0x6a0b +0x4876 0x7c38 +0x4877 0x5099 +0x4878 0x5c3e +0x4879 0x5fae +0x487a 0x6787 +0x487b 0x6bd8 +0x487c 0x7435 +0x487d 0x7709 +0x487e 0x7f8e +0x4921 0x9f3b +0x4922 0x67ca +0x4923 0x7a17 +0x4924 0x5339 +0x4925 0x758b +0x4926 0x9aed +0x4927 0x5f66 +0x4928 0x819d +0x4929 0x83f1 +0x492a 0x8098 +0x492b 0x5f3c +0x492c 0x5fc5 +0x492d 0x7562 +0x492e 0x7b46 +0x492f 0x903c +0x4930 0x6867 +0x4931 0x59eb +0x4932 0x5a9b +0x4933 0x7d10 +0x4934 0x767e +0x4935 0x8b2c +0x4936 0x4ff5 +0x4937 0x5f6a +0x4938 0x6a19 +0x4939 0x6c37 +0x493a 0x6f02 +0x493b 0x74e2 +0x493c 0x7968 +0x493d 0x8868 +0x493e 0x8a55 +0x493f 0x8c79 +0x4940 0x5edf +0x4941 0x63cf +0x4942 0x75c5 +0x4943 0x79d2 +0x4944 0x82d7 +0x4945 0x9328 +0x4946 0x92f2 +0x4947 0x849c +0x4948 0x86ed +0x4949 0x9c2d +0x494a 0x54c1 +0x494b 0x5f6c +0x494c 0x658c +0x494d 0x6d5c +0x494e 0x7015 +0x494f 0x8ca7 +0x4950 0x8cd3 +0x4951 0x983b +0x4952 0x654f +0x4953 0x74f6 +0x4954 0x4e0d +0x4955 0x4ed8 +0x4956 0x57e0 +0x4957 0x592b +0x4958 0x5a66 +0x4959 0x5bcc +0x495a 0x51a8 +0x495b 0x5e03 +0x495c 0x5e9c +0x495d 0x6016 +0x495e 0x6276 +0x495f 0x6577 +0x4960 0x65a7 +0x4961 0x666e +0x4962 0x6d6e +0x4963 0x7236 +0x4964 0x7b26 +0x4965 0x8150 +0x4966 0x819a +0x4967 0x8299 +0x4968 0x8b5c +0x4969 0x8ca0 +0x496a 0x8ce6 +0x496b 0x8d74 +0x496c 0x961c +0x496d 0x9644 +0x496e 0x4fae +0x496f 0x64ab +0x4970 0x6b66 +0x4971 0x821e +0x4972 0x8461 +0x4973 0x856a +0x4974 0x90e8 +0x4975 0x5c01 +0x4976 0x6953 +0x4977 0x98a8 +0x4978 0x847a +0x4979 0x8557 +0x497a 0x4f0f +0x497b 0x526f +0x497c 0x5fa9 +0x497d 0x5e45 +0x497e 0x670d +0x4a21 0x798f +0x4a22 0x8179 +0x4a23 0x8907 +0x4a24 0x8986 +0x4a25 0x6df5 +0x4a26 0x5f17 +0x4a27 0x6255 +0x4a28 0x6cb8 +0x4a29 0x4ecf +0x4a2a 0x7269 +0x4a2b 0x9b92 +0x4a2c 0x5206 +0x4a2d 0x543b +0x4a2e 0x5674 +0x4a2f 0x58b3 +0x4a30 0x61a4 +0x4a31 0x626e +0x4a32 0x711a +0x4a33 0x596e +0x4a34 0x7c89 +0x4a35 0x7cde +0x4a36 0x7d1b +0x4a37 0x96f0 +0x4a38 0x6587 +0x4a39 0x805e +0x4a3a 0x4e19 +0x4a3b 0x4f75 +0x4a3c 0x5175 +0x4a3d 0x5840 +0x4a3e 0x5e63 +0x4a3f 0x5e73 +0x4a40 0x5f0a +0x4a41 0x67c4 +0x4a42 0x4e26 +0x4a43 0x853d +0x4a44 0x9589 +0x4a45 0x965b +0x4a46 0x7c73 +0x4a47 0x9801 +0x4a48 0x50fb +0x4a49 0x58c1 +0x4a4a 0x7656 +0x4a4b 0x78a7 +0x4a4c 0x5225 +0x4a4d 0x77a5 +0x4a4e 0x8511 +0x4a4f 0x7b86 +0x4a50 0x504f +0x4a51 0x5909 +0x4a52 0x7247 +0x4a53 0x7bc7 +0x4a54 0x7de8 +0x4a55 0x8fba +0x4a56 0x8fd4 +0x4a57 0x904d +0x4a58 0x4fbf +0x4a59 0x52c9 +0x4a5a 0x5a29 +0x4a5b 0x5f01 +0x4a5c 0x97ad +0x4a5d 0x4fdd +0x4a5e 0x8217 +0x4a5f 0x92ea +0x4a60 0x5703 +0x4a61 0x6355 +0x4a62 0x6b69 +0x4a63 0x752b +0x4a64 0x88dc +0x4a65 0x8f14 +0x4a66 0x7a42 +0x4a67 0x52df +0x4a68 0x5893 +0x4a69 0x6155 +0x4a6a 0x620a +0x4a6b 0x66ae +0x4a6c 0x6bcd +0x4a6d 0x7c3f +0x4a6e 0x83e9 +0x4a6f 0x5023 +0x4a70 0x4ff8 +0x4a71 0x5305 +0x4a72 0x5446 +0x4a73 0x5831 +0x4a74 0x5949 +0x4a75 0x5b9d +0x4a76 0x5cf0 +0x4a77 0x5cef +0x4a78 0x5d29 +0x4a79 0x5e96 +0x4a7a 0x62b1 +0x4a7b 0x6367 +0x4a7c 0x653e +0x4a7d 0x65b9 +0x4a7e 0x670b +0x4b21 0x6cd5 +0x4b22 0x6ce1 +0x4b23 0x70f9 +0x4b24 0x7832 +0x4b25 0x7e2b +0x4b26 0x80de +0x4b27 0x82b3 +0x4b28 0x840c +0x4b29 0x84ec +0x4b2a 0x8702 +0x4b2b 0x8912 +0x4b2c 0x8a2a +0x4b2d 0x8c4a +0x4b2e 0x90a6 +0x4b2f 0x92d2 +0x4b30 0x98fd +0x4b31 0x9cf3 +0x4b32 0x9d6c +0x4b33 0x4e4f +0x4b34 0x4ea1 +0x4b35 0x508d +0x4b36 0x5256 +0x4b37 0x574a +0x4b38 0x59a8 +0x4b39 0x5e3d +0x4b3a 0x5fd8 +0x4b3b 0x5fd9 +0x4b3c 0x623f +0x4b3d 0x66b4 +0x4b3e 0x671b +0x4b3f 0x67d0 +0x4b40 0x68d2 +0x4b41 0x5192 +0x4b42 0x7d21 +0x4b43 0x80aa +0x4b44 0x81a8 +0x4b45 0x8b00 +0x4b46 0x8c8c +0x4b47 0x8cbf +0x4b48 0x927e +0x4b49 0x9632 +0x4b4a 0x5420 +0x4b4b 0x982c +0x4b4c 0x5317 +0x4b4d 0x50d5 +0x4b4e 0x535c +0x4b4f 0x58a8 +0x4b50 0x64b2 +0x4b51 0x6734 +0x4b52 0x7267 +0x4b53 0x7766 +0x4b54 0x7a46 +0x4b55 0x91e6 +0x4b56 0x52c3 +0x4b57 0x6ca1 +0x4b58 0x6b86 +0x4b59 0x5800 +0x4b5a 0x5e4c +0x4b5b 0x5954 +0x4b5c 0x672c +0x4b5d 0x7ffb +0x4b5e 0x51e1 +0x4b5f 0x76c6 +0x4b60 0x6469 +0x4b61 0x78e8 +0x4b62 0x9b54 +0x4b63 0x9ebb +0x4b64 0x57cb +0x4b65 0x59b9 +0x4b66 0x6627 +0x4b67 0x679a +0x4b68 0x6bce +0x4b69 0x54e9 +0x4b6a 0x69d9 +0x4b6b 0x5e55 +0x4b6c 0x819c +0x4b6d 0x6795 +0x4b6e 0x9baa +0x4b6f 0x67fe +0x4b70 0x9c52 +0x4b71 0x685d +0x4b72 0x4ea6 +0x4b73 0x4fe3 +0x4b74 0x53c8 +0x4b75 0x62b9 +0x4b76 0x672b +0x4b77 0x6cab +0x4b78 0x8fc4 +0x4b79 0x4fad +0x4b7a 0x7e6d +0x4b7b 0x9ebf +0x4b7c 0x4e07 +0x4b7d 0x6162 +0x4b7e 0x6e80 +0x4c21 0x6f2b +0x4c22 0x8513 +0x4c23 0x5473 +0x4c24 0x672a +0x4c25 0x9b45 +0x4c26 0x5df3 +0x4c27 0x7b95 +0x4c28 0x5cac +0x4c29 0x5bc6 +0x4c2a 0x871c +0x4c2b 0x6e4a +0x4c2c 0x84d1 +0x4c2d 0x7a14 +0x4c2e 0x8108 +0x4c2f 0x5999 +0x4c30 0x7c8d +0x4c31 0x6c11 +0x4c32 0x7720 +0x4c33 0x52d9 +0x4c34 0x5922 +0x4c35 0x7121 +0x4c36 0x725f +0x4c37 0x77db +0x4c38 0x9727 +0x4c39 0x9d61 +0x4c3a 0x690b +0x4c3b 0x5a7f +0x4c3c 0x5a18 +0x4c3d 0x51a5 +0x4c3e 0x540d +0x4c3f 0x547d +0x4c40 0x660e +0x4c41 0x76df +0x4c42 0x8ff7 +0x4c43 0x9298 +0x4c44 0x9cf4 +0x4c45 0x59ea +0x4c46 0x725d +0x4c47 0x6ec5 +0x4c48 0x514d +0x4c49 0x68c9 +0x4c4a 0x7dbf +0x4c4b 0x7dec +0x4c4c 0x9762 +0x4c4d 0x9eba +0x4c4e 0x6478 +0x4c4f 0x6a21 +0x4c50 0x8302 +0x4c51 0x5984 +0x4c52 0x5b5f +0x4c53 0x6bdb +0x4c54 0x731b +0x4c55 0x76f2 +0x4c56 0x7db2 +0x4c57 0x8017 +0x4c58 0x8499 +0x4c59 0x5132 +0x4c5a 0x6728 +0x4c5b 0x9ed9 +0x4c5c 0x76ee +0x4c5d 0x6762 +0x4c5e 0x52ff +0x4c5f 0x9905 +0x4c60 0x5c24 +0x4c61 0x623b +0x4c62 0x7c7e +0x4c63 0x8cb0 +0x4c64 0x554f +0x4c65 0x60b6 +0x4c66 0x7d0b +0x4c67 0x9580 +0x4c68 0x5301 +0x4c69 0x4e5f +0x4c6a 0x51b6 +0x4c6b 0x591c +0x4c6c 0x723a +0x4c6d 0x8036 +0x4c6e 0x91ce +0x4c6f 0x5f25 +0x4c70 0x77e2 +0x4c71 0x5384 +0x4c72 0x5f79 +0x4c73 0x7d04 +0x4c74 0x85ac +0x4c75 0x8a33 +0x4c76 0x8e8d +0x4c77 0x9756 +0x4c78 0x67f3 +0x4c79 0x85ae +0x4c7a 0x9453 +0x4c7b 0x6109 +0x4c7c 0x6108 +0x4c7d 0x6cb9 +0x4c7e 0x7652 +0x4d21 0x8aed +0x4d22 0x8f38 +0x4d23 0x552f +0x4d24 0x4f51 +0x4d25 0x512a +0x4d26 0x52c7 +0x4d27 0x53cb +0x4d28 0x5ba5 +0x4d29 0x5e7d +0x4d2a 0x60a0 +0x4d2b 0x6182 +0x4d2c 0x63d6 +0x4d2d 0x6709 +0x4d2e 0x67da +0x4d2f 0x6e67 +0x4d30 0x6d8c +0x4d31 0x7336 +0x4d32 0x7337 +0x4d33 0x7531 +0x4d34 0x7950 +0x4d35 0x88d5 +0x4d36 0x8a98 +0x4d37 0x904a +0x4d38 0x9091 +0x4d39 0x90f5 +0x4d3a 0x96c4 +0x4d3b 0x878d +0x4d3c 0x5915 +0x4d3d 0x4e88 +0x4d3e 0x4f59 +0x4d3f 0x4e0e +0x4d40 0x8a89 +0x4d41 0x8f3f +0x4d42 0x9810 +0x4d43 0x50ad +0x4d44 0x5e7c +0x4d45 0x5996 +0x4d46 0x5bb9 +0x4d47 0x5eb8 +0x4d48 0x63da +0x4d49 0x63fa +0x4d4a 0x64c1 +0x4d4b 0x66dc +0x4d4c 0x694a +0x4d4d 0x69d8 +0x4d4e 0x6d0b +0x4d4f 0x6eb6 +0x4d50 0x7194 +0x4d51 0x7528 +0x4d52 0x7aaf +0x4d53 0x7f8a +0x4d54 0x8000 +0x4d55 0x8449 +0x4d56 0x84c9 +0x4d57 0x8981 +0x4d58 0x8b21 +0x4d59 0x8e0a +0x4d5a 0x9065 +0x4d5b 0x967d +0x4d5c 0x990a +0x4d5d 0x617e +0x4d5e 0x6291 +0x4d5f 0x6b32 +0x4d60 0x6c83 +0x4d61 0x6d74 +0x4d62 0x7fcc +0x4d63 0x7ffc +0x4d64 0x6dc0 +0x4d65 0x7f85 +0x4d66 0x87ba +0x4d67 0x88f8 +0x4d68 0x6765 +0x4d69 0x83b1 +0x4d6a 0x983c +0x4d6b 0x96f7 +0x4d6c 0x6d1b +0x4d6d 0x7d61 +0x4d6e 0x843d +0x4d6f 0x916a +0x4d70 0x4e71 +0x4d71 0x5375 +0x4d72 0x5d50 +0x4d73 0x6b04 +0x4d74 0x6feb +0x4d75 0x85cd +0x4d76 0x862d +0x4d77 0x89a7 +0x4d78 0x5229 +0x4d79 0x540f +0x4d7a 0x5c65 +0x4d7b 0x674e +0x4d7c 0x68a8 +0x4d7d 0x7406 +0x4d7e 0x7483 +0x4e21 0x75e2 +0x4e22 0x88cf +0x4e23 0x88e1 +0x4e24 0x91cc +0x4e25 0x96e2 +0x4e26 0x9678 +0x4e27 0x5f8b +0x4e28 0x7387 +0x4e29 0x7acb +0x4e2a 0x844e +0x4e2b 0x63a0 +0x4e2c 0x7565 +0x4e2d 0x5289 +0x4e2e 0x6d41 +0x4e2f 0x6e9c +0x4e30 0x7409 +0x4e31 0x7559 +0x4e32 0x786b +0x4e33 0x7c92 +0x4e34 0x9686 +0x4e35 0x7adc +0x4e36 0x9f8d +0x4e37 0x4fb6 +0x4e38 0x616e +0x4e39 0x65c5 +0x4e3a 0x865c +0x4e3b 0x4e86 +0x4e3c 0x4eae +0x4e3d 0x50da +0x4e3e 0x4e21 +0x4e3f 0x51cc +0x4e40 0x5bee +0x4e41 0x6599 +0x4e42 0x6881 +0x4e43 0x6dbc +0x4e44 0x731f +0x4e45 0x7642 +0x4e46 0x77ad +0x4e47 0x7a1c +0x4e48 0x7ce7 +0x4e49 0x826f +0x4e4a 0x8ad2 +0x4e4b 0x907c +0x4e4c 0x91cf +0x4e4d 0x9675 +0x4e4e 0x9818 +0x4e4f 0x529b +0x4e50 0x7dd1 +0x4e51 0x502b +0x4e52 0x5398 +0x4e53 0x6797 +0x4e54 0x6dcb +0x4e55 0x71d0 +0x4e56 0x7433 +0x4e57 0x81e8 +0x4e58 0x8f2a +0x4e59 0x96a3 +0x4e5a 0x9c57 +0x4e5b 0x9e9f +0x4e5c 0x7460 +0x4e5d 0x5841 +0x4e5e 0x6d99 +0x4e5f 0x7d2f +0x4e60 0x985e +0x4e61 0x4ee4 +0x4e62 0x4f36 +0x4e63 0x4f8b +0x4e64 0x51b7 +0x4e65 0x52b1 +0x4e66 0x5dba +0x4e67 0x601c +0x4e68 0x73b2 +0x4e69 0x793c +0x4e6a 0x82d3 +0x4e6b 0x9234 +0x4e6c 0x96b7 +0x4e6d 0x96f6 +0x4e6e 0x970a +0x4e6f 0x9e97 +0x4e70 0x9f62 +0x4e71 0x66a6 +0x4e72 0x6b74 +0x4e73 0x5217 +0x4e74 0x52a3 +0x4e75 0x70c8 +0x4e76 0x88c2 +0x4e77 0x5ec9 +0x4e78 0x604b +0x4e79 0x6190 +0x4e7a 0x6f23 +0x4e7b 0x7149 +0x4e7c 0x7c3e +0x4e7d 0x7df4 +0x4e7e 0x806f +0x4f21 0x84ee +0x4f22 0x9023 +0x4f23 0x932c +0x4f24 0x5442 +0x4f25 0x9b6f +0x4f26 0x6ad3 +0x4f27 0x7089 +0x4f28 0x8cc2 +0x4f29 0x8def +0x4f2a 0x9732 +0x4f2b 0x52b4 +0x4f2c 0x5a41 +0x4f2d 0x5eca +0x4f2e 0x5f04 +0x4f2f 0x6717 +0x4f30 0x697c +0x4f31 0x6994 +0x4f32 0x6d6a +0x4f33 0x6f0f +0x4f34 0x7262 +0x4f35 0x72fc +0x4f36 0x7bed +0x4f37 0x8001 +0x4f38 0x807e +0x4f39 0x874b +0x4f3a 0x90ce +0x4f3b 0x516d +0x4f3c 0x9e93 +0x4f3d 0x7984 +0x4f3e 0x808b +0x4f3f 0x9332 +0x4f40 0x8ad6 +0x4f41 0x502d +0x4f42 0x548c +0x4f43 0x8a71 +0x4f44 0x6b6a +0x4f45 0x8cc4 +0x4f46 0x8107 +0x4f47 0x60d1 +0x4f48 0x67a0 +0x4f49 0x9df2 +0x4f4a 0x4e99 +0x4f4b 0x4e98 +0x4f4c 0x9c10 +0x4f4d 0x8a6b +0x4f4e 0x85c1 +0x4f4f 0x8568 +0x4f50 0x6900 +0x4f51 0x6e7e +0x4f52 0x7897 +0x4f53 0x8155 +0x5021 0x5f0c +0x5022 0x4e10 +0x5023 0x4e15 +0x5024 0x4e2a +0x5025 0x4e31 +0x5026 0x4e36 +0x5027 0x4e3c +0x5028 0x4e3f +0x5029 0x4e42 +0x502a 0x4e56 +0x502b 0x4e58 +0x502c 0x4e82 +0x502d 0x4e85 +0x502e 0x8c6b +0x502f 0x4e8a +0x5030 0x8212 +0x5031 0x5f0d +0x5032 0x4e8e +0x5033 0x4e9e +0x5034 0x4e9f +0x5035 0x4ea0 +0x5036 0x4ea2 +0x5037 0x4eb0 +0x5038 0x4eb3 +0x5039 0x4eb6 +0x503a 0x4ece +0x503b 0x4ecd +0x503c 0x4ec4 +0x503d 0x4ec6 +0x503e 0x4ec2 +0x503f 0x4ed7 +0x5040 0x4ede +0x5041 0x4eed +0x5042 0x4edf +0x5043 0x4ef7 +0x5044 0x4f09 +0x5045 0x4f5a +0x5046 0x4f30 +0x5047 0x4f5b +0x5048 0x4f5d +0x5049 0x4f57 +0x504a 0x4f47 +0x504b 0x4f76 +0x504c 0x4f88 +0x504d 0x4f8f +0x504e 0x4f98 +0x504f 0x4f7b +0x5050 0x4f69 +0x5051 0x4f70 +0x5052 0x4f91 +0x5053 0x4f6f +0x5054 0x4f86 +0x5055 0x4f96 +0x5056 0x5118 +0x5057 0x4fd4 +0x5058 0x4fdf +0x5059 0x4fce +0x505a 0x4fd8 +0x505b 0x4fdb +0x505c 0x4fd1 +0x505d 0x4fda +0x505e 0x4fd0 +0x505f 0x4fe4 +0x5060 0x4fe5 +0x5061 0x501a +0x5062 0x5028 +0x5063 0x5014 +0x5064 0x502a +0x5065 0x5025 +0x5066 0x5005 +0x5067 0x4f1c +0x5068 0x4ff6 +0x5069 0x5021 +0x506a 0x5029 +0x506b 0x502c +0x506c 0x4ffe +0x506d 0x4fef +0x506e 0x5011 +0x506f 0x5006 +0x5070 0x5043 +0x5071 0x5047 +0x5072 0x6703 +0x5073 0x5055 +0x5074 0x5050 +0x5075 0x5048 +0x5076 0x505a +0x5077 0x5056 +0x5078 0x506c +0x5079 0x5078 +0x507a 0x5080 +0x507b 0x509a +0x507c 0x5085 +0x507d 0x50b4 +0x507e 0x50b2 +0x5121 0x50c9 +0x5122 0x50ca +0x5123 0x50b3 +0x5124 0x50c2 +0x5125 0x50d6 +0x5126 0x50de +0x5127 0x50e5 +0x5128 0x50ed +0x5129 0x50e3 +0x512a 0x50ee +0x512b 0x50f9 +0x512c 0x50f5 +0x512d 0x5109 +0x512e 0x5101 +0x512f 0x5102 +0x5130 0x5116 +0x5131 0x5115 +0x5132 0x5114 +0x5133 0x511a +0x5134 0x5121 +0x5135 0x513a +0x5136 0x5137 +0x5137 0x513c +0x5138 0x513b +0x5139 0x513f +0x513a 0x5140 +0x513b 0x5152 +0x513c 0x514c +0x513d 0x5154 +0x513e 0x5162 +0x513f 0x7af8 +0x5140 0x5169 +0x5141 0x516a +0x5142 0x516e +0x5143 0x5180 +0x5144 0x5182 +0x5145 0x56d8 +0x5146 0x518c +0x5147 0x5189 +0x5148 0x518f +0x5149 0x5191 +0x514a 0x5193 +0x514b 0x5195 +0x514c 0x5196 +0x514d 0x51a4 +0x514e 0x51a6 +0x514f 0x51a2 +0x5150 0x51a9 +0x5151 0x51aa +0x5152 0x51ab +0x5153 0x51b3 +0x5154 0x51b1 +0x5155 0x51b2 +0x5156 0x51b0 +0x5157 0x51b5 +0x5158 0x51bd +0x5159 0x51c5 +0x515a 0x51c9 +0x515b 0x51db +0x515c 0x51e0 +0x515d 0x8655 +0x515e 0x51e9 +0x515f 0x51ed +0x5160 0x51f0 +0x5161 0x51f5 +0x5162 0x51fe +0x5163 0x5204 +0x5164 0x520b +0x5165 0x5214 +0x5166 0x520e +0x5167 0x5227 +0x5168 0x522a +0x5169 0x522e +0x516a 0x5233 +0x516b 0x5239 +0x516c 0x524f +0x516d 0x5244 +0x516e 0x524b +0x516f 0x524c +0x5170 0x525e +0x5171 0x5254 +0x5172 0x526a +0x5173 0x5274 +0x5174 0x5269 +0x5175 0x5273 +0x5176 0x527f +0x5177 0x527d +0x5178 0x528d +0x5179 0x5294 +0x517a 0x5292 +0x517b 0x5271 +0x517c 0x5288 +0x517d 0x5291 +0x517e 0x8fa8 +0x5221 0x8fa7 +0x5222 0x52ac +0x5223 0x52ad +0x5224 0x52bc +0x5225 0x52b5 +0x5226 0x52c1 +0x5227 0x52cd +0x5228 0x52d7 +0x5229 0x52de +0x522a 0x52e3 +0x522b 0x52e6 +0x522c 0x98ed +0x522d 0x52e0 +0x522e 0x52f3 +0x522f 0x52f5 +0x5230 0x52f8 +0x5231 0x52f9 +0x5232 0x5306 +0x5233 0x5308 +0x5234 0x7538 +0x5235 0x530d +0x5236 0x5310 +0x5237 0x530f +0x5238 0x5315 +0x5239 0x531a +0x523a 0x5323 +0x523b 0x532f +0x523c 0x5331 +0x523d 0x5333 +0x523e 0x5338 +0x523f 0x5340 +0x5240 0x5346 +0x5241 0x5345 +0x5242 0x4e17 +0x5243 0x5349 +0x5244 0x534d +0x5245 0x51d6 +0x5246 0x535e +0x5247 0x5369 +0x5248 0x536e +0x5249 0x5918 +0x524a 0x537b +0x524b 0x5377 +0x524c 0x5382 +0x524d 0x5396 +0x524e 0x53a0 +0x524f 0x53a6 +0x5250 0x53a5 +0x5251 0x53ae +0x5252 0x53b0 +0x5253 0x53b6 +0x5254 0x53c3 +0x5255 0x7c12 +0x5256 0x96d9 +0x5257 0x53df +0x5258 0x66fc +0x5259 0x71ee +0x525a 0x53ee +0x525b 0x53e8 +0x525c 0x53ed +0x525d 0x53fa +0x525e 0x5401 +0x525f 0x543d +0x5260 0x5440 +0x5261 0x542c +0x5262 0x542d +0x5263 0x543c +0x5264 0x542e +0x5265 0x5436 +0x5266 0x5429 +0x5267 0x541d +0x5268 0x544e +0x5269 0x548f +0x526a 0x5475 +0x526b 0x548e +0x526c 0x545f +0x526d 0x5471 +0x526e 0x5477 +0x526f 0x5470 +0x5270 0x5492 +0x5271 0x547b +0x5272 0x5480 +0x5273 0x5476 +0x5274 0x5484 +0x5275 0x5490 +0x5276 0x5486 +0x5277 0x54c7 +0x5278 0x54a2 +0x5279 0x54b8 +0x527a 0x54a5 +0x527b 0x54ac +0x527c 0x54c4 +0x527d 0x54c8 +0x527e 0x54a8 +0x5321 0x54ab +0x5322 0x54c2 +0x5323 0x54a4 +0x5324 0x54be +0x5325 0x54bc +0x5326 0x54d8 +0x5327 0x54e5 +0x5328 0x54e6 +0x5329 0x550f +0x532a 0x5514 +0x532b 0x54fd +0x532c 0x54ee +0x532d 0x54ed +0x532e 0x54fa +0x532f 0x54e2 +0x5330 0x5539 +0x5331 0x5540 +0x5332 0x5563 +0x5333 0x554c +0x5334 0x552e +0x5335 0x555c +0x5336 0x5545 +0x5337 0x5556 +0x5338 0x5557 +0x5339 0x5538 +0x533a 0x5533 +0x533b 0x555d +0x533c 0x5599 +0x533d 0x5580 +0x533e 0x54af +0x533f 0x558a +0x5340 0x559f +0x5341 0x557b +0x5342 0x557e +0x5343 0x5598 +0x5344 0x559e +0x5345 0x55ae +0x5346 0x557c +0x5347 0x5583 +0x5348 0x55a9 +0x5349 0x5587 +0x534a 0x55a8 +0x534b 0x55da +0x534c 0x55c5 +0x534d 0x55df +0x534e 0x55c4 +0x534f 0x55dc +0x5350 0x55e4 +0x5351 0x55d4 +0x5352 0x5614 +0x5353 0x55f7 +0x5354 0x5616 +0x5355 0x55fe +0x5356 0x55fd +0x5357 0x561b +0x5358 0x55f9 +0x5359 0x564e +0x535a 0x5650 +0x535b 0x71df +0x535c 0x5634 +0x535d 0x5636 +0x535e 0x5632 +0x535f 0x5638 +0x5360 0x566b +0x5361 0x5664 +0x5362 0x562f +0x5363 0x566c +0x5364 0x566a +0x5365 0x5686 +0x5366 0x5680 +0x5367 0x568a +0x5368 0x56a0 +0x5369 0x5694 +0x536a 0x568f +0x536b 0x56a5 +0x536c 0x56ae +0x536d 0x56b6 +0x536e 0x56b4 +0x536f 0x56c2 +0x5370 0x56bc +0x5371 0x56c1 +0x5372 0x56c3 +0x5373 0x56c0 +0x5374 0x56c8 +0x5375 0x56ce +0x5376 0x56d1 +0x5377 0x56d3 +0x5378 0x56d7 +0x5379 0x56ee +0x537a 0x56f9 +0x537b 0x5700 +0x537c 0x56ff +0x537d 0x5704 +0x537e 0x5709 +0x5421 0x5708 +0x5422 0x570b +0x5423 0x570d +0x5424 0x5713 +0x5425 0x5718 +0x5426 0x5716 +0x5427 0x55c7 +0x5428 0x571c +0x5429 0x5726 +0x542a 0x5737 +0x542b 0x5738 +0x542c 0x574e +0x542d 0x573b +0x542e 0x5740 +0x542f 0x574f +0x5430 0x5769 +0x5431 0x57c0 +0x5432 0x5788 +0x5433 0x5761 +0x5434 0x577f +0x5435 0x5789 +0x5436 0x5793 +0x5437 0x57a0 +0x5438 0x57b3 +0x5439 0x57a4 +0x543a 0x57aa +0x543b 0x57b0 +0x543c 0x57c3 +0x543d 0x57c6 +0x543e 0x57d4 +0x543f 0x57d2 +0x5440 0x57d3 +0x5441 0x580a +0x5442 0x57d6 +0x5443 0x57e3 +0x5444 0x580b +0x5445 0x5819 +0x5446 0x581d +0x5447 0x5872 +0x5448 0x5821 +0x5449 0x5862 +0x544a 0x584b +0x544b 0x5870 +0x544c 0x6bc0 +0x544d 0x5852 +0x544e 0x583d +0x544f 0x5879 +0x5450 0x5885 +0x5451 0x58b9 +0x5452 0x589f +0x5453 0x58ab +0x5454 0x58ba +0x5455 0x58de +0x5456 0x58bb +0x5457 0x58b8 +0x5458 0x58ae +0x5459 0x58c5 +0x545a 0x58d3 +0x545b 0x58d1 +0x545c 0x58d7 +0x545d 0x58d9 +0x545e 0x58d8 +0x545f 0x58e5 +0x5460 0x58dc +0x5461 0x58e4 +0x5462 0x58df +0x5463 0x58ef +0x5464 0x58fa +0x5465 0x58f9 +0x5466 0x58fb +0x5467 0x58fc +0x5468 0x58fd +0x5469 0x5902 +0x546a 0x590a +0x546b 0x5910 +0x546c 0x591b +0x546d 0x68a6 +0x546e 0x5925 +0x546f 0x592c +0x5470 0x592d +0x5471 0x5932 +0x5472 0x5938 +0x5473 0x593e +0x5474 0x7ad2 +0x5475 0x5955 +0x5476 0x5950 +0x5477 0x594e +0x5478 0x595a +0x5479 0x5958 +0x547a 0x5962 +0x547b 0x5960 +0x547c 0x5967 +0x547d 0x596c +0x547e 0x5969 +0x5521 0x5978 +0x5522 0x5981 +0x5523 0x599d +0x5524 0x4f5e +0x5525 0x4fab +0x5526 0x59a3 +0x5527 0x59b2 +0x5528 0x59c6 +0x5529 0x59e8 +0x552a 0x59dc +0x552b 0x598d +0x552c 0x59d9 +0x552d 0x59da +0x552e 0x5a25 +0x552f 0x5a1f +0x5530 0x5a11 +0x5531 0x5a1c +0x5532 0x5a09 +0x5533 0x5a1a +0x5534 0x5a40 +0x5535 0x5a6c +0x5536 0x5a49 +0x5537 0x5a35 +0x5538 0x5a36 +0x5539 0x5a62 +0x553a 0x5a6a +0x553b 0x5a9a +0x553c 0x5abc +0x553d 0x5abe +0x553e 0x5acb +0x553f 0x5ac2 +0x5540 0x5abd +0x5541 0x5ae3 +0x5542 0x5ad7 +0x5543 0x5ae6 +0x5544 0x5ae9 +0x5545 0x5ad6 +0x5546 0x5afa +0x5547 0x5afb +0x5548 0x5b0c +0x5549 0x5b0b +0x554a 0x5b16 +0x554b 0x5b32 +0x554c 0x5ad0 +0x554d 0x5b2a +0x554e 0x5b36 +0x554f 0x5b3e +0x5550 0x5b43 +0x5551 0x5b45 +0x5552 0x5b40 +0x5553 0x5b51 +0x5554 0x5b55 +0x5555 0x5b5a +0x5556 0x5b5b +0x5557 0x5b65 +0x5558 0x5b69 +0x5559 0x5b70 +0x555a 0x5b73 +0x555b 0x5b75 +0x555c 0x5b78 +0x555d 0x6588 +0x555e 0x5b7a +0x555f 0x5b80 +0x5560 0x5b83 +0x5561 0x5ba6 +0x5562 0x5bb8 +0x5563 0x5bc3 +0x5564 0x5bc7 +0x5565 0x5bc9 +0x5566 0x5bd4 +0x5567 0x5bd0 +0x5568 0x5be4 +0x5569 0x5be6 +0x556a 0x5be2 +0x556b 0x5bde +0x556c 0x5be5 +0x556d 0x5beb +0x556e 0x5bf0 +0x556f 0x5bf6 +0x5570 0x5bf3 +0x5571 0x5c05 +0x5572 0x5c07 +0x5573 0x5c08 +0x5574 0x5c0d +0x5575 0x5c13 +0x5576 0x5c20 +0x5577 0x5c22 +0x5578 0x5c28 +0x5579 0x5c38 +0x557a 0x5c39 +0x557b 0x5c41 +0x557c 0x5c46 +0x557d 0x5c4e +0x557e 0x5c53 +0x5621 0x5c50 +0x5622 0x5c4f +0x5623 0x5b71 +0x5624 0x5c6c +0x5625 0x5c6e +0x5626 0x4e62 +0x5627 0x5c76 +0x5628 0x5c79 +0x5629 0x5c8c +0x562a 0x5c91 +0x562b 0x5c94 +0x562c 0x599b +0x562d 0x5cab +0x562e 0x5cbb +0x562f 0x5cb6 +0x5630 0x5cbc +0x5631 0x5cb7 +0x5632 0x5cc5 +0x5633 0x5cbe +0x5634 0x5cc7 +0x5635 0x5cd9 +0x5636 0x5ce9 +0x5637 0x5cfd +0x5638 0x5cfa +0x5639 0x5ced +0x563a 0x5d8c +0x563b 0x5cea +0x563c 0x5d0b +0x563d 0x5d15 +0x563e 0x5d17 +0x563f 0x5d5c +0x5640 0x5d1f +0x5641 0x5d1b +0x5642 0x5d11 +0x5643 0x5d14 +0x5644 0x5d22 +0x5645 0x5d1a +0x5646 0x5d19 +0x5647 0x5d18 +0x5648 0x5d4c +0x5649 0x5d52 +0x564a 0x5d4e +0x564b 0x5d4b +0x564c 0x5d6c +0x564d 0x5d73 +0x564e 0x5d76 +0x564f 0x5d87 +0x5650 0x5d84 +0x5651 0x5d82 +0x5652 0x5da2 +0x5653 0x5d9d +0x5654 0x5dac +0x5655 0x5dae +0x5656 0x5dbd +0x5657 0x5d90 +0x5658 0x5db7 +0x5659 0x5dbc +0x565a 0x5dc9 +0x565b 0x5dcd +0x565c 0x5dd3 +0x565d 0x5dd2 +0x565e 0x5dd6 +0x565f 0x5ddb +0x5660 0x5deb +0x5661 0x5df2 +0x5662 0x5df5 +0x5663 0x5e0b +0x5664 0x5e1a +0x5665 0x5e19 +0x5666 0x5e11 +0x5667 0x5e1b +0x5668 0x5e36 +0x5669 0x5e37 +0x566a 0x5e44 +0x566b 0x5e43 +0x566c 0x5e40 +0x566d 0x5e4e +0x566e 0x5e57 +0x566f 0x5e54 +0x5670 0x5e5f +0x5671 0x5e62 +0x5672 0x5e64 +0x5673 0x5e47 +0x5674 0x5e75 +0x5675 0x5e76 +0x5676 0x5e7a +0x5677 0x9ebc +0x5678 0x5e7f +0x5679 0x5ea0 +0x567a 0x5ec1 +0x567b 0x5ec2 +0x567c 0x5ec8 +0x567d 0x5ed0 +0x567e 0x5ecf +0x5721 0x5ed6 +0x5722 0x5ee3 +0x5723 0x5edd +0x5724 0x5eda +0x5725 0x5edb +0x5726 0x5ee2 +0x5727 0x5ee1 +0x5728 0x5ee8 +0x5729 0x5ee9 +0x572a 0x5eec +0x572b 0x5ef1 +0x572c 0x5ef3 +0x572d 0x5ef0 +0x572e 0x5ef4 +0x572f 0x5ef8 +0x5730 0x5efe +0x5731 0x5f03 +0x5732 0x5f09 +0x5733 0x5f5d +0x5734 0x5f5c +0x5735 0x5f0b +0x5736 0x5f11 +0x5737 0x5f16 +0x5738 0x5f29 +0x5739 0x5f2d +0x573a 0x5f38 +0x573b 0x5f41 +0x573c 0x5f48 +0x573d 0x5f4c +0x573e 0x5f4e +0x573f 0x5f2f +0x5740 0x5f51 +0x5741 0x5f56 +0x5742 0x5f57 +0x5743 0x5f59 +0x5744 0x5f61 +0x5745 0x5f6d +0x5746 0x5f73 +0x5747 0x5f77 +0x5748 0x5f83 +0x5749 0x5f82 +0x574a 0x5f7f +0x574b 0x5f8a +0x574c 0x5f88 +0x574d 0x5f91 +0x574e 0x5f87 +0x574f 0x5f9e +0x5750 0x5f99 +0x5751 0x5f98 +0x5752 0x5fa0 +0x5753 0x5fa8 +0x5754 0x5fad +0x5755 0x5fbc +0x5756 0x5fd6 +0x5757 0x5ffb +0x5758 0x5fe4 +0x5759 0x5ff8 +0x575a 0x5ff1 +0x575b 0x5fdd +0x575c 0x60b3 +0x575d 0x5fff +0x575e 0x6021 +0x575f 0x6060 +0x5760 0x6019 +0x5761 0x6010 +0x5762 0x6029 +0x5763 0x600e +0x5764 0x6031 +0x5765 0x601b +0x5766 0x6015 +0x5767 0x602b +0x5768 0x6026 +0x5769 0x600f +0x576a 0x603a +0x576b 0x605a +0x576c 0x6041 +0x576d 0x606a +0x576e 0x6077 +0x576f 0x605f +0x5770 0x604a +0x5771 0x6046 +0x5772 0x604d +0x5773 0x6063 +0x5774 0x6043 +0x5775 0x6064 +0x5776 0x6042 +0x5777 0x606c +0x5778 0x606b +0x5779 0x6059 +0x577a 0x6081 +0x577b 0x608d +0x577c 0x60e7 +0x577d 0x6083 +0x577e 0x609a +0x5821 0x6084 +0x5822 0x609b +0x5823 0x6096 +0x5824 0x6097 +0x5825 0x6092 +0x5826 0x60a7 +0x5827 0x608b +0x5828 0x60e1 +0x5829 0x60b8 +0x582a 0x60e0 +0x582b 0x60d3 +0x582c 0x60b4 +0x582d 0x5ff0 +0x582e 0x60bd +0x582f 0x60c6 +0x5830 0x60b5 +0x5831 0x60d8 +0x5832 0x614d +0x5833 0x6115 +0x5834 0x6106 +0x5835 0x60f6 +0x5836 0x60f7 +0x5837 0x6100 +0x5838 0x60f4 +0x5839 0x60fa +0x583a 0x6103 +0x583b 0x6121 +0x583c 0x60fb +0x583d 0x60f1 +0x583e 0x610d +0x583f 0x610e +0x5840 0x6147 +0x5841 0x613e +0x5842 0x6128 +0x5843 0x6127 +0x5844 0x614a +0x5845 0x613f +0x5846 0x613c +0x5847 0x612c +0x5848 0x6134 +0x5849 0x613d +0x584a 0x6142 +0x584b 0x6144 +0x584c 0x6173 +0x584d 0x6177 +0x584e 0x6158 +0x584f 0x6159 +0x5850 0x615a +0x5851 0x616b +0x5852 0x6174 +0x5853 0x616f +0x5854 0x6165 +0x5855 0x6171 +0x5856 0x615f +0x5857 0x615d +0x5858 0x6153 +0x5859 0x6175 +0x585a 0x6199 +0x585b 0x6196 +0x585c 0x6187 +0x585d 0x61ac +0x585e 0x6194 +0x585f 0x619a +0x5860 0x618a +0x5861 0x6191 +0x5862 0x61ab +0x5863 0x61ae +0x5864 0x61cc +0x5865 0x61ca +0x5866 0x61c9 +0x5867 0x61f7 +0x5868 0x61c8 +0x5869 0x61c3 +0x586a 0x61c6 +0x586b 0x61ba +0x586c 0x61cb +0x586d 0x7f79 +0x586e 0x61cd +0x586f 0x61e6 +0x5870 0x61e3 +0x5871 0x61f6 +0x5872 0x61fa +0x5873 0x61f4 +0x5874 0x61ff +0x5875 0x61fd +0x5876 0x61fc +0x5877 0x61fe +0x5878 0x6200 +0x5879 0x6208 +0x587a 0x6209 +0x587b 0x620d +0x587c 0x620c +0x587d 0x6214 +0x587e 0x621b +0x5921 0x621e +0x5922 0x6221 +0x5923 0x622a +0x5924 0x622e +0x5925 0x6230 +0x5926 0x6232 +0x5927 0x6233 +0x5928 0x6241 +0x5929 0x624e +0x592a 0x625e +0x592b 0x6263 +0x592c 0x625b +0x592d 0x6260 +0x592e 0x6268 +0x592f 0x627c +0x5930 0x6282 +0x5931 0x6289 +0x5932 0x627e +0x5933 0x6292 +0x5934 0x6293 +0x5935 0x6296 +0x5936 0x62d4 +0x5937 0x6283 +0x5938 0x6294 +0x5939 0x62d7 +0x593a 0x62d1 +0x593b 0x62bb +0x593c 0x62cf +0x593d 0x62ff +0x593e 0x62c6 +0x593f 0x64d4 +0x5940 0x62c8 +0x5941 0x62dc +0x5942 0x62cc +0x5943 0x62ca +0x5944 0x62c2 +0x5945 0x62c7 +0x5946 0x629b +0x5947 0x62c9 +0x5948 0x630c +0x5949 0x62ee +0x594a 0x62f1 +0x594b 0x6327 +0x594c 0x6302 +0x594d 0x6308 +0x594e 0x62ef +0x594f 0x62f5 +0x5950 0x6350 +0x5951 0x633e +0x5952 0x634d +0x5953 0x641c +0x5954 0x634f +0x5955 0x6396 +0x5956 0x638e +0x5957 0x6380 +0x5958 0x63ab +0x5959 0x6376 +0x595a 0x63a3 +0x595b 0x638f +0x595c 0x6389 +0x595d 0x639f +0x595e 0x63b5 +0x595f 0x636b +0x5960 0x6369 +0x5961 0x63be +0x5962 0x63e9 +0x5963 0x63c0 +0x5964 0x63c6 +0x5965 0x63e3 +0x5966 0x63c9 +0x5967 0x63d2 +0x5968 0x63f6 +0x5969 0x63c4 +0x596a 0x6416 +0x596b 0x6434 +0x596c 0x6406 +0x596d 0x6413 +0x596e 0x6426 +0x596f 0x6436 +0x5970 0x651d +0x5971 0x6417 +0x5972 0x6428 +0x5973 0x640f +0x5974 0x6467 +0x5975 0x646f +0x5976 0x6476 +0x5977 0x644e +0x5978 0x652a +0x5979 0x6495 +0x597a 0x6493 +0x597b 0x64a5 +0x597c 0x64a9 +0x597d 0x6488 +0x597e 0x64bc +0x5a21 0x64da +0x5a22 0x64d2 +0x5a23 0x64c5 +0x5a24 0x64c7 +0x5a25 0x64bb +0x5a26 0x64d8 +0x5a27 0x64c2 +0x5a28 0x64f1 +0x5a29 0x64e7 +0x5a2a 0x8209 +0x5a2b 0x64e0 +0x5a2c 0x64e1 +0x5a2d 0x62ac +0x5a2e 0x64e3 +0x5a2f 0x64ef +0x5a30 0x652c +0x5a31 0x64f6 +0x5a32 0x64f4 +0x5a33 0x64f2 +0x5a34 0x64fa +0x5a35 0x6500 +0x5a36 0x64fd +0x5a37 0x6518 +0x5a38 0x651c +0x5a39 0x6505 +0x5a3a 0x6524 +0x5a3b 0x6523 +0x5a3c 0x652b +0x5a3d 0x6534 +0x5a3e 0x6535 +0x5a3f 0x6537 +0x5a40 0x6536 +0x5a41 0x6538 +0x5a42 0x754b +0x5a43 0x6548 +0x5a44 0x6556 +0x5a45 0x6555 +0x5a46 0x654d +0x5a47 0x6558 +0x5a48 0x655e +0x5a49 0x655d +0x5a4a 0x6572 +0x5a4b 0x6578 +0x5a4c 0x6582 +0x5a4d 0x6583 +0x5a4e 0x8b8a +0x5a4f 0x659b +0x5a50 0x659f +0x5a51 0x65ab +0x5a52 0x65b7 +0x5a53 0x65c3 +0x5a54 0x65c6 +0x5a55 0x65c1 +0x5a56 0x65c4 +0x5a57 0x65cc +0x5a58 0x65d2 +0x5a59 0x65db +0x5a5a 0x65d9 +0x5a5b 0x65e0 +0x5a5c 0x65e1 +0x5a5d 0x65f1 +0x5a5e 0x6772 +0x5a5f 0x660a +0x5a60 0x6603 +0x5a61 0x65fb +0x5a62 0x6773 +0x5a63 0x6635 +0x5a64 0x6636 +0x5a65 0x6634 +0x5a66 0x661c +0x5a67 0x664f +0x5a68 0x6644 +0x5a69 0x6649 +0x5a6a 0x6641 +0x5a6b 0x665e +0x5a6c 0x665d +0x5a6d 0x6664 +0x5a6e 0x6667 +0x5a6f 0x6668 +0x5a70 0x665f +0x5a71 0x6662 +0x5a72 0x6670 +0x5a73 0x6683 +0x5a74 0x6688 +0x5a75 0x668e +0x5a76 0x6689 +0x5a77 0x6684 +0x5a78 0x6698 +0x5a79 0x669d +0x5a7a 0x66c1 +0x5a7b 0x66b9 +0x5a7c 0x66c9 +0x5a7d 0x66be +0x5a7e 0x66bc +0x5b21 0x66c4 +0x5b22 0x66b8 +0x5b23 0x66d6 +0x5b24 0x66da +0x5b25 0x66e0 +0x5b26 0x663f +0x5b27 0x66e6 +0x5b28 0x66e9 +0x5b29 0x66f0 +0x5b2a 0x66f5 +0x5b2b 0x66f7 +0x5b2c 0x670f +0x5b2d 0x6716 +0x5b2e 0x671e +0x5b2f 0x6726 +0x5b30 0x6727 +0x5b31 0x9738 +0x5b32 0x672e +0x5b33 0x673f +0x5b34 0x6736 +0x5b35 0x6741 +0x5b36 0x6738 +0x5b37 0x6737 +0x5b38 0x6746 +0x5b39 0x675e +0x5b3a 0x6760 +0x5b3b 0x6759 +0x5b3c 0x6763 +0x5b3d 0x6764 +0x5b3e 0x6789 +0x5b3f 0x6770 +0x5b40 0x67a9 +0x5b41 0x677c +0x5b42 0x676a +0x5b43 0x678c +0x5b44 0x678b +0x5b45 0x67a6 +0x5b46 0x67a1 +0x5b47 0x6785 +0x5b48 0x67b7 +0x5b49 0x67ef +0x5b4a 0x67b4 +0x5b4b 0x67ec +0x5b4c 0x67b3 +0x5b4d 0x67e9 +0x5b4e 0x67b8 +0x5b4f 0x67e4 +0x5b50 0x67de +0x5b51 0x67dd +0x5b52 0x67e2 +0x5b53 0x67ee +0x5b54 0x67b9 +0x5b55 0x67ce +0x5b56 0x67c6 +0x5b57 0x67e7 +0x5b58 0x6a9c +0x5b59 0x681e +0x5b5a 0x6846 +0x5b5b 0x6829 +0x5b5c 0x6840 +0x5b5d 0x684d +0x5b5e 0x6832 +0x5b5f 0x684e +0x5b60 0x68b3 +0x5b61 0x682b +0x5b62 0x6859 +0x5b63 0x6863 +0x5b64 0x6877 +0x5b65 0x687f +0x5b66 0x689f +0x5b67 0x688f +0x5b68 0x68ad +0x5b69 0x6894 +0x5b6a 0x689d +0x5b6b 0x689b +0x5b6c 0x6883 +0x5b6d 0x6aae +0x5b6e 0x68b9 +0x5b6f 0x6874 +0x5b70 0x68b5 +0x5b71 0x68a0 +0x5b72 0x68ba +0x5b73 0x690f +0x5b74 0x688d +0x5b75 0x687e +0x5b76 0x6901 +0x5b77 0x68ca +0x5b78 0x6908 +0x5b79 0x68d8 +0x5b7a 0x6922 +0x5b7b 0x6926 +0x5b7c 0x68e1 +0x5b7d 0x690c +0x5b7e 0x68cd +0x5c21 0x68d4 +0x5c22 0x68e7 +0x5c23 0x68d5 +0x5c24 0x6936 +0x5c25 0x6912 +0x5c26 0x6904 +0x5c27 0x68d7 +0x5c28 0x68e3 +0x5c29 0x6925 +0x5c2a 0x68f9 +0x5c2b 0x68e0 +0x5c2c 0x68ef +0x5c2d 0x6928 +0x5c2e 0x692a +0x5c2f 0x691a +0x5c30 0x6923 +0x5c31 0x6921 +0x5c32 0x68c6 +0x5c33 0x6979 +0x5c34 0x6977 +0x5c35 0x695c +0x5c36 0x6978 +0x5c37 0x696b +0x5c38 0x6954 +0x5c39 0x697e +0x5c3a 0x696e +0x5c3b 0x6939 +0x5c3c 0x6974 +0x5c3d 0x693d +0x5c3e 0x6959 +0x5c3f 0x6930 +0x5c40 0x6961 +0x5c41 0x695e +0x5c42 0x695d +0x5c43 0x6981 +0x5c44 0x696a +0x5c45 0x69b2 +0x5c46 0x69ae +0x5c47 0x69d0 +0x5c48 0x69bf +0x5c49 0x69c1 +0x5c4a 0x69d3 +0x5c4b 0x69be +0x5c4c 0x69ce +0x5c4d 0x5be8 +0x5c4e 0x69ca +0x5c4f 0x69dd +0x5c50 0x69bb +0x5c51 0x69c3 +0x5c52 0x69a7 +0x5c53 0x6a2e +0x5c54 0x6991 +0x5c55 0x69a0 +0x5c56 0x699c +0x5c57 0x6995 +0x5c58 0x69b4 +0x5c59 0x69de +0x5c5a 0x69e8 +0x5c5b 0x6a02 +0x5c5c 0x6a1b +0x5c5d 0x69ff +0x5c5e 0x6b0a +0x5c5f 0x69f9 +0x5c60 0x69f2 +0x5c61 0x69e7 +0x5c62 0x6a05 +0x5c63 0x69b1 +0x5c64 0x6a1e +0x5c65 0x69ed +0x5c66 0x6a14 +0x5c67 0x69eb +0x5c68 0x6a0a +0x5c69 0x6a12 +0x5c6a 0x6ac1 +0x5c6b 0x6a23 +0x5c6c 0x6a13 +0x5c6d 0x6a44 +0x5c6e 0x6a0c +0x5c6f 0x6a72 +0x5c70 0x6a36 +0x5c71 0x6a78 +0x5c72 0x6a47 +0x5c73 0x6a62 +0x5c74 0x6a59 +0x5c75 0x6a66 +0x5c76 0x6a48 +0x5c77 0x6a38 +0x5c78 0x6a22 +0x5c79 0x6a90 +0x5c7a 0x6a8d +0x5c7b 0x6aa0 +0x5c7c 0x6a84 +0x5c7d 0x6aa2 +0x5c7e 0x6aa3 +0x5d21 0x6a97 +0x5d22 0x8617 +0x5d23 0x6abb +0x5d24 0x6ac3 +0x5d25 0x6ac2 +0x5d26 0x6ab8 +0x5d27 0x6ab3 +0x5d28 0x6aac +0x5d29 0x6ade +0x5d2a 0x6ad1 +0x5d2b 0x6adf +0x5d2c 0x6aaa +0x5d2d 0x6ada +0x5d2e 0x6aea +0x5d2f 0x6afb +0x5d30 0x6b05 +0x5d31 0x8616 +0x5d32 0x6afa +0x5d33 0x6b12 +0x5d34 0x6b16 +0x5d35 0x9b31 +0x5d36 0x6b1f +0x5d37 0x6b38 +0x5d38 0x6b37 +0x5d39 0x76dc +0x5d3a 0x6b39 +0x5d3b 0x98ee +0x5d3c 0x6b47 +0x5d3d 0x6b43 +0x5d3e 0x6b49 +0x5d3f 0x6b50 +0x5d40 0x6b59 +0x5d41 0x6b54 +0x5d42 0x6b5b +0x5d43 0x6b5f +0x5d44 0x6b61 +0x5d45 0x6b78 +0x5d46 0x6b79 +0x5d47 0x6b7f +0x5d48 0x6b80 +0x5d49 0x6b84 +0x5d4a 0x6b83 +0x5d4b 0x6b8d +0x5d4c 0x6b98 +0x5d4d 0x6b95 +0x5d4e 0x6b9e +0x5d4f 0x6ba4 +0x5d50 0x6baa +0x5d51 0x6bab +0x5d52 0x6baf +0x5d53 0x6bb2 +0x5d54 0x6bb1 +0x5d55 0x6bb3 +0x5d56 0x6bb7 +0x5d57 0x6bbc +0x5d58 0x6bc6 +0x5d59 0x6bcb +0x5d5a 0x6bd3 +0x5d5b 0x6bdf +0x5d5c 0x6bec +0x5d5d 0x6beb +0x5d5e 0x6bf3 +0x5d5f 0x6bef +0x5d60 0x9ebe +0x5d61 0x6c08 +0x5d62 0x6c13 +0x5d63 0x6c14 +0x5d64 0x6c1b +0x5d65 0x6c24 +0x5d66 0x6c23 +0x5d67 0x6c5e +0x5d68 0x6c55 +0x5d69 0x6c62 +0x5d6a 0x6c6a +0x5d6b 0x6c82 +0x5d6c 0x6c8d +0x5d6d 0x6c9a +0x5d6e 0x6c81 +0x5d6f 0x6c9b +0x5d70 0x6c7e +0x5d71 0x6c68 +0x5d72 0x6c73 +0x5d73 0x6c92 +0x5d74 0x6c90 +0x5d75 0x6cc4 +0x5d76 0x6cf1 +0x5d77 0x6cd3 +0x5d78 0x6cbd +0x5d79 0x6cd7 +0x5d7a 0x6cc5 +0x5d7b 0x6cdd +0x5d7c 0x6cae +0x5d7d 0x6cb1 +0x5d7e 0x6cbe +0x5e21 0x6cba +0x5e22 0x6cdb +0x5e23 0x6cef +0x5e24 0x6cd9 +0x5e25 0x6cea +0x5e26 0x6d1f +0x5e27 0x884d +0x5e28 0x6d36 +0x5e29 0x6d2b +0x5e2a 0x6d3d +0x5e2b 0x6d38 +0x5e2c 0x6d19 +0x5e2d 0x6d35 +0x5e2e 0x6d33 +0x5e2f 0x6d12 +0x5e30 0x6d0c +0x5e31 0x6d63 +0x5e32 0x6d93 +0x5e33 0x6d64 +0x5e34 0x6d5a +0x5e35 0x6d79 +0x5e36 0x6d59 +0x5e37 0x6d8e +0x5e38 0x6d95 +0x5e39 0x6fe4 +0x5e3a 0x6d85 +0x5e3b 0x6df9 +0x5e3c 0x6e15 +0x5e3d 0x6e0a +0x5e3e 0x6db5 +0x5e3f 0x6dc7 +0x5e40 0x6de6 +0x5e41 0x6db8 +0x5e42 0x6dc6 +0x5e43 0x6dec +0x5e44 0x6dde +0x5e45 0x6dcc +0x5e46 0x6de8 +0x5e47 0x6dd2 +0x5e48 0x6dc5 +0x5e49 0x6dfa +0x5e4a 0x6dd9 +0x5e4b 0x6de4 +0x5e4c 0x6dd5 +0x5e4d 0x6dea +0x5e4e 0x6dee +0x5e4f 0x6e2d +0x5e50 0x6e6e +0x5e51 0x6e2e +0x5e52 0x6e19 +0x5e53 0x6e72 +0x5e54 0x6e5f +0x5e55 0x6e3e +0x5e56 0x6e23 +0x5e57 0x6e6b +0x5e58 0x6e2b +0x5e59 0x6e76 +0x5e5a 0x6e4d +0x5e5b 0x6e1f +0x5e5c 0x6e43 +0x5e5d 0x6e3a +0x5e5e 0x6e4e +0x5e5f 0x6e24 +0x5e60 0x6eff +0x5e61 0x6e1d +0x5e62 0x6e38 +0x5e63 0x6e82 +0x5e64 0x6eaa +0x5e65 0x6e98 +0x5e66 0x6ec9 +0x5e67 0x6eb7 +0x5e68 0x6ed3 +0x5e69 0x6ebd +0x5e6a 0x6eaf +0x5e6b 0x6ec4 +0x5e6c 0x6eb2 +0x5e6d 0x6ed4 +0x5e6e 0x6ed5 +0x5e6f 0x6e8f +0x5e70 0x6ea5 +0x5e71 0x6ec2 +0x5e72 0x6e9f +0x5e73 0x6f41 +0x5e74 0x6f11 +0x5e75 0x704c +0x5e76 0x6eec +0x5e77 0x6ef8 +0x5e78 0x6efe +0x5e79 0x6f3f +0x5e7a 0x6ef2 +0x5e7b 0x6f31 +0x5e7c 0x6eef +0x5e7d 0x6f32 +0x5e7e 0x6ecc +0x5f21 0x6f3e +0x5f22 0x6f13 +0x5f23 0x6ef7 +0x5f24 0x6f86 +0x5f25 0x6f7a +0x5f26 0x6f78 +0x5f27 0x6f81 +0x5f28 0x6f80 +0x5f29 0x6f6f +0x5f2a 0x6f5b +0x5f2b 0x6ff3 +0x5f2c 0x6f6d +0x5f2d 0x6f82 +0x5f2e 0x6f7c +0x5f2f 0x6f58 +0x5f30 0x6f8e +0x5f31 0x6f91 +0x5f32 0x6fc2 +0x5f33 0x6f66 +0x5f34 0x6fb3 +0x5f35 0x6fa3 +0x5f36 0x6fa1 +0x5f37 0x6fa4 +0x5f38 0x6fb9 +0x5f39 0x6fc6 +0x5f3a 0x6faa +0x5f3b 0x6fdf +0x5f3c 0x6fd5 +0x5f3d 0x6fec +0x5f3e 0x6fd4 +0x5f3f 0x6fd8 +0x5f40 0x6ff1 +0x5f41 0x6fee +0x5f42 0x6fdb +0x5f43 0x7009 +0x5f44 0x700b +0x5f45 0x6ffa +0x5f46 0x7011 +0x5f47 0x7001 +0x5f48 0x700f +0x5f49 0x6ffe +0x5f4a 0x701b +0x5f4b 0x701a +0x5f4c 0x6f74 +0x5f4d 0x701d +0x5f4e 0x7018 +0x5f4f 0x701f +0x5f50 0x7030 +0x5f51 0x703e +0x5f52 0x7032 +0x5f53 0x7051 +0x5f54 0x7063 +0x5f55 0x7099 +0x5f56 0x7092 +0x5f57 0x70af +0x5f58 0x70f1 +0x5f59 0x70ac +0x5f5a 0x70b8 +0x5f5b 0x70b3 +0x5f5c 0x70ae +0x5f5d 0x70df +0x5f5e 0x70cb +0x5f5f 0x70dd +0x5f60 0x70d9 +0x5f61 0x7109 +0x5f62 0x70fd +0x5f63 0x711c +0x5f64 0x7119 +0x5f65 0x7165 +0x5f66 0x7155 +0x5f67 0x7188 +0x5f68 0x7166 +0x5f69 0x7162 +0x5f6a 0x714c +0x5f6b 0x7156 +0x5f6c 0x716c +0x5f6d 0x718f +0x5f6e 0x71fb +0x5f6f 0x7184 +0x5f70 0x7195 +0x5f71 0x71a8 +0x5f72 0x71ac +0x5f73 0x71d7 +0x5f74 0x71b9 +0x5f75 0x71be +0x5f76 0x71d2 +0x5f77 0x71c9 +0x5f78 0x71d4 +0x5f79 0x71ce +0x5f7a 0x71e0 +0x5f7b 0x71ec +0x5f7c 0x71e7 +0x5f7d 0x71f5 +0x5f7e 0x71fc +0x6021 0x71f9 +0x6022 0x71ff +0x6023 0x720d +0x6024 0x7210 +0x6025 0x721b +0x6026 0x7228 +0x6027 0x722d +0x6028 0x722c +0x6029 0x7230 +0x602a 0x7232 +0x602b 0x723b +0x602c 0x723c +0x602d 0x723f +0x602e 0x7240 +0x602f 0x7246 +0x6030 0x724b +0x6031 0x7258 +0x6032 0x7274 +0x6033 0x727e +0x6034 0x7282 +0x6035 0x7281 +0x6036 0x7287 +0x6037 0x7292 +0x6038 0x7296 +0x6039 0x72a2 +0x603a 0x72a7 +0x603b 0x72b9 +0x603c 0x72b2 +0x603d 0x72c3 +0x603e 0x72c6 +0x603f 0x72c4 +0x6040 0x72ce +0x6041 0x72d2 +0x6042 0x72e2 +0x6043 0x72e0 +0x6044 0x72e1 +0x6045 0x72f9 +0x6046 0x72f7 +0x6047 0x500f +0x6048 0x7317 +0x6049 0x730a +0x604a 0x731c +0x604b 0x7316 +0x604c 0x731d +0x604d 0x7334 +0x604e 0x732f +0x604f 0x7329 +0x6050 0x7325 +0x6051 0x733e +0x6052 0x734e +0x6053 0x734f +0x6054 0x9ed8 +0x6055 0x7357 +0x6056 0x736a +0x6057 0x7368 +0x6058 0x7370 +0x6059 0x7378 +0x605a 0x7375 +0x605b 0x737b +0x605c 0x737a +0x605d 0x73c8 +0x605e 0x73b3 +0x605f 0x73ce +0x6060 0x73bb +0x6061 0x73c0 +0x6062 0x73e5 +0x6063 0x73ee +0x6064 0x73de +0x6065 0x74a2 +0x6066 0x7405 +0x6067 0x746f +0x6068 0x7425 +0x6069 0x73f8 +0x606a 0x7432 +0x606b 0x743a +0x606c 0x7455 +0x606d 0x743f +0x606e 0x745f +0x606f 0x7459 +0x6070 0x7441 +0x6071 0x745c +0x6072 0x7469 +0x6073 0x7470 +0x6074 0x7463 +0x6075 0x746a +0x6076 0x7476 +0x6077 0x747e +0x6078 0x748b +0x6079 0x749e +0x607a 0x74a7 +0x607b 0x74ca +0x607c 0x74cf +0x607d 0x74d4 +0x607e 0x73f1 +0x6121 0x74e0 +0x6122 0x74e3 +0x6123 0x74e7 +0x6124 0x74e9 +0x6125 0x74ee +0x6126 0x74f2 +0x6127 0x74f0 +0x6128 0x74f1 +0x6129 0x74f8 +0x612a 0x74f7 +0x612b 0x7504 +0x612c 0x7503 +0x612d 0x7505 +0x612e 0x750c +0x612f 0x750e +0x6130 0x750d +0x6131 0x7515 +0x6132 0x7513 +0x6133 0x751e +0x6134 0x7526 +0x6135 0x752c +0x6136 0x753c +0x6137 0x7544 +0x6138 0x754d +0x6139 0x754a +0x613a 0x7549 +0x613b 0x755b +0x613c 0x7546 +0x613d 0x755a +0x613e 0x7569 +0x613f 0x7564 +0x6140 0x7567 +0x6141 0x756b +0x6142 0x756d +0x6143 0x7578 +0x6144 0x7576 +0x6145 0x7586 +0x6146 0x7587 +0x6147 0x7574 +0x6148 0x758a +0x6149 0x7589 +0x614a 0x7582 +0x614b 0x7594 +0x614c 0x759a +0x614d 0x759d +0x614e 0x75a5 +0x614f 0x75a3 +0x6150 0x75c2 +0x6151 0x75b3 +0x6152 0x75c3 +0x6153 0x75b5 +0x6154 0x75bd +0x6155 0x75b8 +0x6156 0x75bc +0x6157 0x75b1 +0x6158 0x75cd +0x6159 0x75ca +0x615a 0x75d2 +0x615b 0x75d9 +0x615c 0x75e3 +0x615d 0x75de +0x615e 0x75fe +0x615f 0x75ff +0x6160 0x75fc +0x6161 0x7601 +0x6162 0x75f0 +0x6163 0x75fa +0x6164 0x75f2 +0x6165 0x75f3 +0x6166 0x760b +0x6167 0x760d +0x6168 0x7609 +0x6169 0x761f +0x616a 0x7627 +0x616b 0x7620 +0x616c 0x7621 +0x616d 0x7622 +0x616e 0x7624 +0x616f 0x7634 +0x6170 0x7630 +0x6171 0x763b +0x6172 0x7647 +0x6173 0x7648 +0x6174 0x7646 +0x6175 0x765c +0x6176 0x7658 +0x6177 0x7661 +0x6178 0x7662 +0x6179 0x7668 +0x617a 0x7669 +0x617b 0x766a +0x617c 0x7667 +0x617d 0x766c +0x617e 0x7670 +0x6221 0x7672 +0x6222 0x7676 +0x6223 0x7678 +0x6224 0x767c +0x6225 0x7680 +0x6226 0x7683 +0x6227 0x7688 +0x6228 0x768b +0x6229 0x768e +0x622a 0x7696 +0x622b 0x7693 +0x622c 0x7699 +0x622d 0x769a +0x622e 0x76b0 +0x622f 0x76b4 +0x6230 0x76b8 +0x6231 0x76b9 +0x6232 0x76ba +0x6233 0x76c2 +0x6234 0x76cd +0x6235 0x76d6 +0x6236 0x76d2 +0x6237 0x76de +0x6238 0x76e1 +0x6239 0x76e5 +0x623a 0x76e7 +0x623b 0x76ea +0x623c 0x862f +0x623d 0x76fb +0x623e 0x7708 +0x623f 0x7707 +0x6240 0x7704 +0x6241 0x7729 +0x6242 0x7724 +0x6243 0x771e +0x6244 0x7725 +0x6245 0x7726 +0x6246 0x771b +0x6247 0x7737 +0x6248 0x7738 +0x6249 0x7747 +0x624a 0x775a +0x624b 0x7768 +0x624c 0x776b +0x624d 0x775b +0x624e 0x7765 +0x624f 0x777f +0x6250 0x777e +0x6251 0x7779 +0x6252 0x778e +0x6253 0x778b +0x6254 0x7791 +0x6255 0x77a0 +0x6256 0x779e +0x6257 0x77b0 +0x6258 0x77b6 +0x6259 0x77b9 +0x625a 0x77bf +0x625b 0x77bc +0x625c 0x77bd +0x625d 0x77bb +0x625e 0x77c7 +0x625f 0x77cd +0x6260 0x77d7 +0x6261 0x77da +0x6262 0x77dc +0x6263 0x77e3 +0x6264 0x77ee +0x6265 0x77fc +0x6266 0x780c +0x6267 0x7812 +0x6268 0x7926 +0x6269 0x7820 +0x626a 0x792a +0x626b 0x7845 +0x626c 0x788e +0x626d 0x7874 +0x626e 0x7886 +0x626f 0x787c +0x6270 0x789a +0x6271 0x788c +0x6272 0x78a3 +0x6273 0x78b5 +0x6274 0x78aa +0x6275 0x78af +0x6276 0x78d1 +0x6277 0x78c6 +0x6278 0x78cb +0x6279 0x78d4 +0x627a 0x78be +0x627b 0x78bc +0x627c 0x78c5 +0x627d 0x78ca +0x627e 0x78ec +0x6321 0x78e7 +0x6322 0x78da +0x6323 0x78fd +0x6324 0x78f4 +0x6325 0x7907 +0x6326 0x7912 +0x6327 0x7911 +0x6328 0x7919 +0x6329 0x792c +0x632a 0x792b +0x632b 0x7940 +0x632c 0x7960 +0x632d 0x7957 +0x632e 0x795f +0x632f 0x795a +0x6330 0x7955 +0x6331 0x7953 +0x6332 0x797a +0x6333 0x797f +0x6334 0x798a +0x6335 0x799d +0x6336 0x79a7 +0x6337 0x9f4b +0x6338 0x79aa +0x6339 0x79ae +0x633a 0x79b3 +0x633b 0x79b9 +0x633c 0x79ba +0x633d 0x79c9 +0x633e 0x79d5 +0x633f 0x79e7 +0x6340 0x79ec +0x6341 0x79e1 +0x6342 0x79e3 +0x6343 0x7a08 +0x6344 0x7a0d +0x6345 0x7a18 +0x6346 0x7a19 +0x6347 0x7a20 +0x6348 0x7a1f +0x6349 0x7980 +0x634a 0x7a31 +0x634b 0x7a3b +0x634c 0x7a3e +0x634d 0x7a37 +0x634e 0x7a43 +0x634f 0x7a57 +0x6350 0x7a49 +0x6351 0x7a61 +0x6352 0x7a62 +0x6353 0x7a69 +0x6354 0x9f9d +0x6355 0x7a70 +0x6356 0x7a79 +0x6357 0x7a7d +0x6358 0x7a88 +0x6359 0x7a97 +0x635a 0x7a95 +0x635b 0x7a98 +0x635c 0x7a96 +0x635d 0x7aa9 +0x635e 0x7ac8 +0x635f 0x7ab0 +0x6360 0x7ab6 +0x6361 0x7ac5 +0x6362 0x7ac4 +0x6363 0x7abf +0x6364 0x9083 +0x6365 0x7ac7 +0x6366 0x7aca +0x6367 0x7acd +0x6368 0x7acf +0x6369 0x7ad5 +0x636a 0x7ad3 +0x636b 0x7ad9 +0x636c 0x7ada +0x636d 0x7add +0x636e 0x7ae1 +0x636f 0x7ae2 +0x6370 0x7ae6 +0x6371 0x7aed +0x6372 0x7af0 +0x6373 0x7b02 +0x6374 0x7b0f +0x6375 0x7b0a +0x6376 0x7b06 +0x6377 0x7b33 +0x6378 0x7b18 +0x6379 0x7b19 +0x637a 0x7b1e +0x637b 0x7b35 +0x637c 0x7b28 +0x637d 0x7b36 +0x637e 0x7b50 +0x6421 0x7b7a +0x6422 0x7b04 +0x6423 0x7b4d +0x6424 0x7b0b +0x6425 0x7b4c +0x6426 0x7b45 +0x6427 0x7b75 +0x6428 0x7b65 +0x6429 0x7b74 +0x642a 0x7b67 +0x642b 0x7b70 +0x642c 0x7b71 +0x642d 0x7b6c +0x642e 0x7b6e +0x642f 0x7b9d +0x6430 0x7b98 +0x6431 0x7b9f +0x6432 0x7b8d +0x6433 0x7b9c +0x6434 0x7b9a +0x6435 0x7b8b +0x6436 0x7b92 +0x6437 0x7b8f +0x6438 0x7b5d +0x6439 0x7b99 +0x643a 0x7bcb +0x643b 0x7bc1 +0x643c 0x7bcc +0x643d 0x7bcf +0x643e 0x7bb4 +0x643f 0x7bc6 +0x6440 0x7bdd +0x6441 0x7be9 +0x6442 0x7c11 +0x6443 0x7c14 +0x6444 0x7be6 +0x6445 0x7be5 +0x6446 0x7c60 +0x6447 0x7c00 +0x6448 0x7c07 +0x6449 0x7c13 +0x644a 0x7bf3 +0x644b 0x7bf7 +0x644c 0x7c17 +0x644d 0x7c0d +0x644e 0x7bf6 +0x644f 0x7c23 +0x6450 0x7c27 +0x6451 0x7c2a +0x6452 0x7c1f +0x6453 0x7c37 +0x6454 0x7c2b +0x6455 0x7c3d +0x6456 0x7c4c +0x6457 0x7c43 +0x6458 0x7c54 +0x6459 0x7c4f +0x645a 0x7c40 +0x645b 0x7c50 +0x645c 0x7c58 +0x645d 0x7c5f +0x645e 0x7c64 +0x645f 0x7c56 +0x6460 0x7c65 +0x6461 0x7c6c +0x6462 0x7c75 +0x6463 0x7c83 +0x6464 0x7c90 +0x6465 0x7ca4 +0x6466 0x7cad +0x6467 0x7ca2 +0x6468 0x7cab +0x6469 0x7ca1 +0x646a 0x7ca8 +0x646b 0x7cb3 +0x646c 0x7cb2 +0x646d 0x7cb1 +0x646e 0x7cae +0x646f 0x7cb9 +0x6470 0x7cbd +0x6471 0x7cc0 +0x6472 0x7cc5 +0x6473 0x7cc2 +0x6474 0x7cd8 +0x6475 0x7cd2 +0x6476 0x7cdc +0x6477 0x7ce2 +0x6478 0x9b3b +0x6479 0x7cef +0x647a 0x7cf2 +0x647b 0x7cf4 +0x647c 0x7cf6 +0x647d 0x7cfa +0x647e 0x7d06 +0x6521 0x7d02 +0x6522 0x7d1c +0x6523 0x7d15 +0x6524 0x7d0a +0x6525 0x7d45 +0x6526 0x7d4b +0x6527 0x7d2e +0x6528 0x7d32 +0x6529 0x7d3f +0x652a 0x7d35 +0x652b 0x7d46 +0x652c 0x7d73 +0x652d 0x7d56 +0x652e 0x7d4e +0x652f 0x7d72 +0x6530 0x7d68 +0x6531 0x7d6e +0x6532 0x7d4f +0x6533 0x7d63 +0x6534 0x7d93 +0x6535 0x7d89 +0x6536 0x7d5b +0x6537 0x7d8f +0x6538 0x7d7d +0x6539 0x7d9b +0x653a 0x7dba +0x653b 0x7dae +0x653c 0x7da3 +0x653d 0x7db5 +0x653e 0x7dc7 +0x653f 0x7dbd +0x6540 0x7dab +0x6541 0x7e3d +0x6542 0x7da2 +0x6543 0x7daf +0x6544 0x7ddc +0x6545 0x7db8 +0x6546 0x7d9f +0x6547 0x7db0 +0x6548 0x7dd8 +0x6549 0x7ddd +0x654a 0x7de4 +0x654b 0x7dde +0x654c 0x7dfb +0x654d 0x7df2 +0x654e 0x7de1 +0x654f 0x7e05 +0x6550 0x7e0a +0x6551 0x7e23 +0x6552 0x7e21 +0x6553 0x7e12 +0x6554 0x7e31 +0x6555 0x7e1f +0x6556 0x7e09 +0x6557 0x7e0b +0x6558 0x7e22 +0x6559 0x7e46 +0x655a 0x7e66 +0x655b 0x7e3b +0x655c 0x7e35 +0x655d 0x7e39 +0x655e 0x7e43 +0x655f 0x7e37 +0x6560 0x7e32 +0x6561 0x7e3a +0x6562 0x7e67 +0x6563 0x7e5d +0x6564 0x7e56 +0x6565 0x7e5e +0x6566 0x7e59 +0x6567 0x7e5a +0x6568 0x7e79 +0x6569 0x7e6a +0x656a 0x7e69 +0x656b 0x7e7c +0x656c 0x7e7b +0x656d 0x7e83 +0x656e 0x7dd5 +0x656f 0x7e7d +0x6570 0x8fae +0x6571 0x7e7f +0x6572 0x7e88 +0x6573 0x7e89 +0x6574 0x7e8c +0x6575 0x7e92 +0x6576 0x7e90 +0x6577 0x7e93 +0x6578 0x7e94 +0x6579 0x7e96 +0x657a 0x7e8e +0x657b 0x7e9b +0x657c 0x7e9c +0x657d 0x7f38 +0x657e 0x7f3a +0x6621 0x7f45 +0x6622 0x7f4c +0x6623 0x7f4d +0x6624 0x7f4e +0x6625 0x7f50 +0x6626 0x7f51 +0x6627 0x7f55 +0x6628 0x7f54 +0x6629 0x7f58 +0x662a 0x7f5f +0x662b 0x7f60 +0x662c 0x7f68 +0x662d 0x7f69 +0x662e 0x7f67 +0x662f 0x7f78 +0x6630 0x7f82 +0x6631 0x7f86 +0x6632 0x7f83 +0x6633 0x7f88 +0x6634 0x7f87 +0x6635 0x7f8c +0x6636 0x7f94 +0x6637 0x7f9e +0x6638 0x7f9d +0x6639 0x7f9a +0x663a 0x7fa3 +0x663b 0x7faf +0x663c 0x7fb2 +0x663d 0x7fb9 +0x663e 0x7fae +0x663f 0x7fb6 +0x6640 0x7fb8 +0x6641 0x8b71 +0x6642 0x7fc5 +0x6643 0x7fc6 +0x6644 0x7fca +0x6645 0x7fd5 +0x6646 0x7fd4 +0x6647 0x7fe1 +0x6648 0x7fe6 +0x6649 0x7fe9 +0x664a 0x7ff3 +0x664b 0x7ff9 +0x664c 0x98dc +0x664d 0x8006 +0x664e 0x8004 +0x664f 0x800b +0x6650 0x8012 +0x6651 0x8018 +0x6652 0x8019 +0x6653 0x801c +0x6654 0x8021 +0x6655 0x8028 +0x6656 0x803f +0x6657 0x803b +0x6658 0x804a +0x6659 0x8046 +0x665a 0x8052 +0x665b 0x8058 +0x665c 0x805a +0x665d 0x805f +0x665e 0x8062 +0x665f 0x8068 +0x6660 0x8073 +0x6661 0x8072 +0x6662 0x8070 +0x6663 0x8076 +0x6664 0x8079 +0x6665 0x807d +0x6666 0x807f +0x6667 0x8084 +0x6668 0x8086 +0x6669 0x8085 +0x666a 0x809b +0x666b 0x8093 +0x666c 0x809a +0x666d 0x80ad +0x666e 0x5190 +0x666f 0x80ac +0x6670 0x80db +0x6671 0x80e5 +0x6672 0x80d9 +0x6673 0x80dd +0x6674 0x80c4 +0x6675 0x80da +0x6676 0x80d6 +0x6677 0x8109 +0x6678 0x80ef +0x6679 0x80f1 +0x667a 0x811b +0x667b 0x8129 +0x667c 0x8123 +0x667d 0x812f +0x667e 0x814b +0x6721 0x968b +0x6722 0x8146 +0x6723 0x813e +0x6724 0x8153 +0x6725 0x8151 +0x6726 0x80fc +0x6727 0x8171 +0x6728 0x816e +0x6729 0x8165 +0x672a 0x8166 +0x672b 0x8174 +0x672c 0x8183 +0x672d 0x8188 +0x672e 0x818a +0x672f 0x8180 +0x6730 0x8182 +0x6731 0x81a0 +0x6732 0x8195 +0x6733 0x81a4 +0x6734 0x81a3 +0x6735 0x815f +0x6736 0x8193 +0x6737 0x81a9 +0x6738 0x81b0 +0x6739 0x81b5 +0x673a 0x81be +0x673b 0x81b8 +0x673c 0x81bd +0x673d 0x81c0 +0x673e 0x81c2 +0x673f 0x81ba +0x6740 0x81c9 +0x6741 0x81cd +0x6742 0x81d1 +0x6743 0x81d9 +0x6744 0x81d8 +0x6745 0x81c8 +0x6746 0x81da +0x6747 0x81df +0x6748 0x81e0 +0x6749 0x81e7 +0x674a 0x81fa +0x674b 0x81fb +0x674c 0x81fe +0x674d 0x8201 +0x674e 0x8202 +0x674f 0x8205 +0x6750 0x8207 +0x6751 0x820a +0x6752 0x820d +0x6753 0x8210 +0x6754 0x8216 +0x6755 0x8229 +0x6756 0x822b +0x6757 0x8238 +0x6758 0x8233 +0x6759 0x8240 +0x675a 0x8259 +0x675b 0x8258 +0x675c 0x825d +0x675d 0x825a +0x675e 0x825f +0x675f 0x8264 +0x6760 0x8262 +0x6761 0x8268 +0x6762 0x826a +0x6763 0x826b +0x6764 0x822e +0x6765 0x8271 +0x6766 0x8277 +0x6767 0x8278 +0x6768 0x827e +0x6769 0x828d +0x676a 0x8292 +0x676b 0x82ab +0x676c 0x829f +0x676d 0x82bb +0x676e 0x82ac +0x676f 0x82e1 +0x6770 0x82e3 +0x6771 0x82df +0x6772 0x82d2 +0x6773 0x82f4 +0x6774 0x82f3 +0x6775 0x82fa +0x6776 0x8393 +0x6777 0x8303 +0x6778 0x82fb +0x6779 0x82f9 +0x677a 0x82de +0x677b 0x8306 +0x677c 0x82dc +0x677d 0x8309 +0x677e 0x82d9 +0x6821 0x8335 +0x6822 0x8334 +0x6823 0x8316 +0x6824 0x8332 +0x6825 0x8331 +0x6826 0x8340 +0x6827 0x8339 +0x6828 0x8350 +0x6829 0x8345 +0x682a 0x832f +0x682b 0x832b +0x682c 0x8317 +0x682d 0x8318 +0x682e 0x8385 +0x682f 0x839a +0x6830 0x83aa +0x6831 0x839f +0x6832 0x83a2 +0x6833 0x8396 +0x6834 0x8323 +0x6835 0x838e +0x6836 0x8387 +0x6837 0x838a +0x6838 0x837c +0x6839 0x83b5 +0x683a 0x8373 +0x683b 0x8375 +0x683c 0x83a0 +0x683d 0x8389 +0x683e 0x83a8 +0x683f 0x83f4 +0x6840 0x8413 +0x6841 0x83eb +0x6842 0x83ce +0x6843 0x83fd +0x6844 0x8403 +0x6845 0x83d8 +0x6846 0x840b +0x6847 0x83c1 +0x6848 0x83f7 +0x6849 0x8407 +0x684a 0x83e0 +0x684b 0x83f2 +0x684c 0x840d +0x684d 0x8422 +0x684e 0x8420 +0x684f 0x83bd +0x6850 0x8438 +0x6851 0x8506 +0x6852 0x83fb +0x6853 0x846d +0x6854 0x842a +0x6855 0x843c +0x6856 0x855a +0x6857 0x8484 +0x6858 0x8477 +0x6859 0x846b +0x685a 0x84ad +0x685b 0x846e +0x685c 0x8482 +0x685d 0x8469 +0x685e 0x8446 +0x685f 0x842c +0x6860 0x846f +0x6861 0x8479 +0x6862 0x8435 +0x6863 0x84ca +0x6864 0x8462 +0x6865 0x84b9 +0x6866 0x84bf +0x6867 0x849f +0x6868 0x84d9 +0x6869 0x84cd +0x686a 0x84bb +0x686b 0x84da +0x686c 0x84d0 +0x686d 0x84c1 +0x686e 0x84c6 +0x686f 0x84d6 +0x6870 0x84a1 +0x6871 0x8521 +0x6872 0x84ff +0x6873 0x84f4 +0x6874 0x8517 +0x6875 0x8518 +0x6876 0x852c +0x6877 0x851f +0x6878 0x8515 +0x6879 0x8514 +0x687a 0x84fc +0x687b 0x8540 +0x687c 0x8563 +0x687d 0x8558 +0x687e 0x8548 +0x6921 0x8541 +0x6922 0x8602 +0x6923 0x854b +0x6924 0x8555 +0x6925 0x8580 +0x6926 0x85a4 +0x6927 0x8588 +0x6928 0x8591 +0x6929 0x858a +0x692a 0x85a8 +0x692b 0x856d +0x692c 0x8594 +0x692d 0x859b +0x692e 0x85ea +0x692f 0x8587 +0x6930 0x859c +0x6931 0x8577 +0x6932 0x857e +0x6933 0x8590 +0x6934 0x85c9 +0x6935 0x85ba +0x6936 0x85cf +0x6937 0x85b9 +0x6938 0x85d0 +0x6939 0x85d5 +0x693a 0x85dd +0x693b 0x85e5 +0x693c 0x85dc +0x693d 0x85f9 +0x693e 0x860a +0x693f 0x8613 +0x6940 0x860b +0x6941 0x85fe +0x6942 0x85fa +0x6943 0x8606 +0x6944 0x8622 +0x6945 0x861a +0x6946 0x8630 +0x6947 0x863f +0x6948 0x864d +0x6949 0x4e55 +0x694a 0x8654 +0x694b 0x865f +0x694c 0x8667 +0x694d 0x8671 +0x694e 0x8693 +0x694f 0x86a3 +0x6950 0x86a9 +0x6951 0x86aa +0x6952 0x868b +0x6953 0x868c +0x6954 0x86b6 +0x6955 0x86af +0x6956 0x86c4 +0x6957 0x86c6 +0x6958 0x86b0 +0x6959 0x86c9 +0x695a 0x8823 +0x695b 0x86ab +0x695c 0x86d4 +0x695d 0x86de +0x695e 0x86e9 +0x695f 0x86ec +0x6960 0x86df +0x6961 0x86db +0x6962 0x86ef +0x6963 0x8712 +0x6964 0x8706 +0x6965 0x8708 +0x6966 0x8700 +0x6967 0x8703 +0x6968 0x86fb +0x6969 0x8711 +0x696a 0x8709 +0x696b 0x870d +0x696c 0x86f9 +0x696d 0x870a +0x696e 0x8734 +0x696f 0x873f +0x6970 0x8737 +0x6971 0x873b +0x6972 0x8725 +0x6973 0x8729 +0x6974 0x871a +0x6975 0x8760 +0x6976 0x875f +0x6977 0x8778 +0x6978 0x874c +0x6979 0x874e +0x697a 0x8774 +0x697b 0x8757 +0x697c 0x8768 +0x697d 0x876e +0x697e 0x8759 +0x6a21 0x8753 +0x6a22 0x8763 +0x6a23 0x876a +0x6a24 0x8805 +0x6a25 0x87a2 +0x6a26 0x879f +0x6a27 0x8782 +0x6a28 0x87af +0x6a29 0x87cb +0x6a2a 0x87bd +0x6a2b 0x87c0 +0x6a2c 0x87d0 +0x6a2d 0x96d6 +0x6a2e 0x87ab +0x6a2f 0x87c4 +0x6a30 0x87b3 +0x6a31 0x87c7 +0x6a32 0x87c6 +0x6a33 0x87bb +0x6a34 0x87ef +0x6a35 0x87f2 +0x6a36 0x87e0 +0x6a37 0x880f +0x6a38 0x880d +0x6a39 0x87fe +0x6a3a 0x87f6 +0x6a3b 0x87f7 +0x6a3c 0x880e +0x6a3d 0x87d2 +0x6a3e 0x8811 +0x6a3f 0x8816 +0x6a40 0x8815 +0x6a41 0x8822 +0x6a42 0x8821 +0x6a43 0x8831 +0x6a44 0x8836 +0x6a45 0x8839 +0x6a46 0x8827 +0x6a47 0x883b +0x6a48 0x8844 +0x6a49 0x8842 +0x6a4a 0x8852 +0x6a4b 0x8859 +0x6a4c 0x885e +0x6a4d 0x8862 +0x6a4e 0x886b +0x6a4f 0x8881 +0x6a50 0x887e +0x6a51 0x889e +0x6a52 0x8875 +0x6a53 0x887d +0x6a54 0x88b5 +0x6a55 0x8872 +0x6a56 0x8882 +0x6a57 0x8897 +0x6a58 0x8892 +0x6a59 0x88ae +0x6a5a 0x8899 +0x6a5b 0x88a2 +0x6a5c 0x888d +0x6a5d 0x88a4 +0x6a5e 0x88b0 +0x6a5f 0x88bf +0x6a60 0x88b1 +0x6a61 0x88c3 +0x6a62 0x88c4 +0x6a63 0x88d4 +0x6a64 0x88d8 +0x6a65 0x88d9 +0x6a66 0x88dd +0x6a67 0x88f9 +0x6a68 0x8902 +0x6a69 0x88fc +0x6a6a 0x88f4 +0x6a6b 0x88e8 +0x6a6c 0x88f2 +0x6a6d 0x8904 +0x6a6e 0x890c +0x6a6f 0x890a +0x6a70 0x8913 +0x6a71 0x8943 +0x6a72 0x891e +0x6a73 0x8925 +0x6a74 0x892a +0x6a75 0x892b +0x6a76 0x8941 +0x6a77 0x8944 +0x6a78 0x893b +0x6a79 0x8936 +0x6a7a 0x8938 +0x6a7b 0x894c +0x6a7c 0x891d +0x6a7d 0x8960 +0x6a7e 0x895e +0x6b21 0x8966 +0x6b22 0x8964 +0x6b23 0x896d +0x6b24 0x896a +0x6b25 0x896f +0x6b26 0x8974 +0x6b27 0x8977 +0x6b28 0x897e +0x6b29 0x8983 +0x6b2a 0x8988 +0x6b2b 0x898a +0x6b2c 0x8993 +0x6b2d 0x8998 +0x6b2e 0x89a1 +0x6b2f 0x89a9 +0x6b30 0x89a6 +0x6b31 0x89ac +0x6b32 0x89af +0x6b33 0x89b2 +0x6b34 0x89ba +0x6b35 0x89bd +0x6b36 0x89bf +0x6b37 0x89c0 +0x6b38 0x89da +0x6b39 0x89dc +0x6b3a 0x89dd +0x6b3b 0x89e7 +0x6b3c 0x89f4 +0x6b3d 0x89f8 +0x6b3e 0x8a03 +0x6b3f 0x8a16 +0x6b40 0x8a10 +0x6b41 0x8a0c +0x6b42 0x8a1b +0x6b43 0x8a1d +0x6b44 0x8a25 +0x6b45 0x8a36 +0x6b46 0x8a41 +0x6b47 0x8a5b +0x6b48 0x8a52 +0x6b49 0x8a46 +0x6b4a 0x8a48 +0x6b4b 0x8a7c +0x6b4c 0x8a6d +0x6b4d 0x8a6c +0x6b4e 0x8a62 +0x6b4f 0x8a85 +0x6b50 0x8a82 +0x6b51 0x8a84 +0x6b52 0x8aa8 +0x6b53 0x8aa1 +0x6b54 0x8a91 +0x6b55 0x8aa5 +0x6b56 0x8aa6 +0x6b57 0x8a9a +0x6b58 0x8aa3 +0x6b59 0x8ac4 +0x6b5a 0x8acd +0x6b5b 0x8ac2 +0x6b5c 0x8ada +0x6b5d 0x8aeb +0x6b5e 0x8af3 +0x6b5f 0x8ae7 +0x6b60 0x8ae4 +0x6b61 0x8af1 +0x6b62 0x8b14 +0x6b63 0x8ae0 +0x6b64 0x8ae2 +0x6b65 0x8af7 +0x6b66 0x8ade +0x6b67 0x8adb +0x6b68 0x8b0c +0x6b69 0x8b07 +0x6b6a 0x8b1a +0x6b6b 0x8ae1 +0x6b6c 0x8b16 +0x6b6d 0x8b10 +0x6b6e 0x8b17 +0x6b6f 0x8b20 +0x6b70 0x8b33 +0x6b71 0x97ab +0x6b72 0x8b26 +0x6b73 0x8b2b +0x6b74 0x8b3e +0x6b75 0x8b28 +0x6b76 0x8b41 +0x6b77 0x8b4c +0x6b78 0x8b4f +0x6b79 0x8b4e +0x6b7a 0x8b49 +0x6b7b 0x8b56 +0x6b7c 0x8b5b +0x6b7d 0x8b5a +0x6b7e 0x8b6b +0x6c21 0x8b5f +0x6c22 0x8b6c +0x6c23 0x8b6f +0x6c24 0x8b74 +0x6c25 0x8b7d +0x6c26 0x8b80 +0x6c27 0x8b8c +0x6c28 0x8b8e +0x6c29 0x8b92 +0x6c2a 0x8b93 +0x6c2b 0x8b96 +0x6c2c 0x8b99 +0x6c2d 0x8b9a +0x6c2e 0x8c3a +0x6c2f 0x8c41 +0x6c30 0x8c3f +0x6c31 0x8c48 +0x6c32 0x8c4c +0x6c33 0x8c4e +0x6c34 0x8c50 +0x6c35 0x8c55 +0x6c36 0x8c62 +0x6c37 0x8c6c +0x6c38 0x8c78 +0x6c39 0x8c7a +0x6c3a 0x8c82 +0x6c3b 0x8c89 +0x6c3c 0x8c85 +0x6c3d 0x8c8a +0x6c3e 0x8c8d +0x6c3f 0x8c8e +0x6c40 0x8c94 +0x6c41 0x8c7c +0x6c42 0x8c98 +0x6c43 0x621d +0x6c44 0x8cad +0x6c45 0x8caa +0x6c46 0x8cbd +0x6c47 0x8cb2 +0x6c48 0x8cb3 +0x6c49 0x8cae +0x6c4a 0x8cb6 +0x6c4b 0x8cc8 +0x6c4c 0x8cc1 +0x6c4d 0x8ce4 +0x6c4e 0x8ce3 +0x6c4f 0x8cda +0x6c50 0x8cfd +0x6c51 0x8cfa +0x6c52 0x8cfb +0x6c53 0x8d04 +0x6c54 0x8d05 +0x6c55 0x8d0a +0x6c56 0x8d07 +0x6c57 0x8d0f +0x6c58 0x8d0d +0x6c59 0x8d10 +0x6c5a 0x9f4e +0x6c5b 0x8d13 +0x6c5c 0x8ccd +0x6c5d 0x8d14 +0x6c5e 0x8d16 +0x6c5f 0x8d67 +0x6c60 0x8d6d +0x6c61 0x8d71 +0x6c62 0x8d73 +0x6c63 0x8d81 +0x6c64 0x8d99 +0x6c65 0x8dc2 +0x6c66 0x8dbe +0x6c67 0x8dba +0x6c68 0x8dcf +0x6c69 0x8dda +0x6c6a 0x8dd6 +0x6c6b 0x8dcc +0x6c6c 0x8ddb +0x6c6d 0x8dcb +0x6c6e 0x8dea +0x6c6f 0x8deb +0x6c70 0x8ddf +0x6c71 0x8de3 +0x6c72 0x8dfc +0x6c73 0x8e08 +0x6c74 0x8e09 +0x6c75 0x8dff +0x6c76 0x8e1d +0x6c77 0x8e1e +0x6c78 0x8e10 +0x6c79 0x8e1f +0x6c7a 0x8e42 +0x6c7b 0x8e35 +0x6c7c 0x8e30 +0x6c7d 0x8e34 +0x6c7e 0x8e4a +0x6d21 0x8e47 +0x6d22 0x8e49 +0x6d23 0x8e4c +0x6d24 0x8e50 +0x6d25 0x8e48 +0x6d26 0x8e59 +0x6d27 0x8e64 +0x6d28 0x8e60 +0x6d29 0x8e2a +0x6d2a 0x8e63 +0x6d2b 0x8e55 +0x6d2c 0x8e76 +0x6d2d 0x8e72 +0x6d2e 0x8e7c +0x6d2f 0x8e81 +0x6d30 0x8e87 +0x6d31 0x8e85 +0x6d32 0x8e84 +0x6d33 0x8e8b +0x6d34 0x8e8a +0x6d35 0x8e93 +0x6d36 0x8e91 +0x6d37 0x8e94 +0x6d38 0x8e99 +0x6d39 0x8eaa +0x6d3a 0x8ea1 +0x6d3b 0x8eac +0x6d3c 0x8eb0 +0x6d3d 0x8ec6 +0x6d3e 0x8eb1 +0x6d3f 0x8ebe +0x6d40 0x8ec5 +0x6d41 0x8ec8 +0x6d42 0x8ecb +0x6d43 0x8edb +0x6d44 0x8ee3 +0x6d45 0x8efc +0x6d46 0x8efb +0x6d47 0x8eeb +0x6d48 0x8efe +0x6d49 0x8f0a +0x6d4a 0x8f05 +0x6d4b 0x8f15 +0x6d4c 0x8f12 +0x6d4d 0x8f19 +0x6d4e 0x8f13 +0x6d4f 0x8f1c +0x6d50 0x8f1f +0x6d51 0x8f1b +0x6d52 0x8f0c +0x6d53 0x8f26 +0x6d54 0x8f33 +0x6d55 0x8f3b +0x6d56 0x8f39 +0x6d57 0x8f45 +0x6d58 0x8f42 +0x6d59 0x8f3e +0x6d5a 0x8f4c +0x6d5b 0x8f49 +0x6d5c 0x8f46 +0x6d5d 0x8f4e +0x6d5e 0x8f57 +0x6d5f 0x8f5c +0x6d60 0x8f62 +0x6d61 0x8f63 +0x6d62 0x8f64 +0x6d63 0x8f9c +0x6d64 0x8f9f +0x6d65 0x8fa3 +0x6d66 0x8fad +0x6d67 0x8faf +0x6d68 0x8fb7 +0x6d69 0x8fda +0x6d6a 0x8fe5 +0x6d6b 0x8fe2 +0x6d6c 0x8fea +0x6d6d 0x8fef +0x6d6e 0x9087 +0x6d6f 0x8ff4 +0x6d70 0x9005 +0x6d71 0x8ff9 +0x6d72 0x8ffa +0x6d73 0x9011 +0x6d74 0x9015 +0x6d75 0x9021 +0x6d76 0x900d +0x6d77 0x901e +0x6d78 0x9016 +0x6d79 0x900b +0x6d7a 0x9027 +0x6d7b 0x9036 +0x6d7c 0x9035 +0x6d7d 0x9039 +0x6d7e 0x8ff8 +0x6e21 0x904f +0x6e22 0x9050 +0x6e23 0x9051 +0x6e24 0x9052 +0x6e25 0x900e +0x6e26 0x9049 +0x6e27 0x903e +0x6e28 0x9056 +0x6e29 0x9058 +0x6e2a 0x905e +0x6e2b 0x9068 +0x6e2c 0x906f +0x6e2d 0x9076 +0x6e2e 0x96a8 +0x6e2f 0x9072 +0x6e30 0x9082 +0x6e31 0x907d +0x6e32 0x9081 +0x6e33 0x9080 +0x6e34 0x908a +0x6e35 0x9089 +0x6e36 0x908f +0x6e37 0x90a8 +0x6e38 0x90af +0x6e39 0x90b1 +0x6e3a 0x90b5 +0x6e3b 0x90e2 +0x6e3c 0x90e4 +0x6e3d 0x6248 +0x6e3e 0x90db +0x6e3f 0x9102 +0x6e40 0x9112 +0x6e41 0x9119 +0x6e42 0x9132 +0x6e43 0x9130 +0x6e44 0x914a +0x6e45 0x9156 +0x6e46 0x9158 +0x6e47 0x9163 +0x6e48 0x9165 +0x6e49 0x9169 +0x6e4a 0x9173 +0x6e4b 0x9172 +0x6e4c 0x918b +0x6e4d 0x9189 +0x6e4e 0x9182 +0x6e4f 0x91a2 +0x6e50 0x91ab +0x6e51 0x91af +0x6e52 0x91aa +0x6e53 0x91b5 +0x6e54 0x91b4 +0x6e55 0x91ba +0x6e56 0x91c0 +0x6e57 0x91c1 +0x6e58 0x91c9 +0x6e59 0x91cb +0x6e5a 0x91d0 +0x6e5b 0x91d6 +0x6e5c 0x91df +0x6e5d 0x91e1 +0x6e5e 0x91db +0x6e5f 0x91fc +0x6e60 0x91f5 +0x6e61 0x91f6 +0x6e62 0x921e +0x6e63 0x91ff +0x6e64 0x9214 +0x6e65 0x922c +0x6e66 0x9215 +0x6e67 0x9211 +0x6e68 0x925e +0x6e69 0x9257 +0x6e6a 0x9245 +0x6e6b 0x9249 +0x6e6c 0x9264 +0x6e6d 0x9248 +0x6e6e 0x9295 +0x6e6f 0x923f +0x6e70 0x924b +0x6e71 0x9250 +0x6e72 0x929c +0x6e73 0x9296 +0x6e74 0x9293 +0x6e75 0x929b +0x6e76 0x925a +0x6e77 0x92cf +0x6e78 0x92b9 +0x6e79 0x92b7 +0x6e7a 0x92e9 +0x6e7b 0x930f +0x6e7c 0x92fa +0x6e7d 0x9344 +0x6e7e 0x932e +0x6f21 0x9319 +0x6f22 0x9322 +0x6f23 0x931a +0x6f24 0x9323 +0x6f25 0x933a +0x6f26 0x9335 +0x6f27 0x933b +0x6f28 0x935c +0x6f29 0x9360 +0x6f2a 0x937c +0x6f2b 0x936e +0x6f2c 0x9356 +0x6f2d 0x93b0 +0x6f2e 0x93ac +0x6f2f 0x93ad +0x6f30 0x9394 +0x6f31 0x93b9 +0x6f32 0x93d6 +0x6f33 0x93d7 +0x6f34 0x93e8 +0x6f35 0x93e5 +0x6f36 0x93d8 +0x6f37 0x93c3 +0x6f38 0x93dd +0x6f39 0x93d0 +0x6f3a 0x93c8 +0x6f3b 0x93e4 +0x6f3c 0x941a +0x6f3d 0x9414 +0x6f3e 0x9413 +0x6f3f 0x9403 +0x6f40 0x9407 +0x6f41 0x9410 +0x6f42 0x9436 +0x6f43 0x942b +0x6f44 0x9435 +0x6f45 0x9421 +0x6f46 0x943a +0x6f47 0x9441 +0x6f48 0x9452 +0x6f49 0x9444 +0x6f4a 0x945b +0x6f4b 0x9460 +0x6f4c 0x9462 +0x6f4d 0x945e +0x6f4e 0x946a +0x6f4f 0x9229 +0x6f50 0x9470 +0x6f51 0x9475 +0x6f52 0x9477 +0x6f53 0x947d +0x6f54 0x945a +0x6f55 0x947c +0x6f56 0x947e +0x6f57 0x9481 +0x6f58 0x947f +0x6f59 0x9582 +0x6f5a 0x9587 +0x6f5b 0x958a +0x6f5c 0x9594 +0x6f5d 0x9596 +0x6f5e 0x9598 +0x6f5f 0x9599 +0x6f60 0x95a0 +0x6f61 0x95a8 +0x6f62 0x95a7 +0x6f63 0x95ad +0x6f64 0x95bc +0x6f65 0x95bb +0x6f66 0x95b9 +0x6f67 0x95be +0x6f68 0x95ca +0x6f69 0x6ff6 +0x6f6a 0x95c3 +0x6f6b 0x95cd +0x6f6c 0x95cc +0x6f6d 0x95d5 +0x6f6e 0x95d4 +0x6f6f 0x95d6 +0x6f70 0x95dc +0x6f71 0x95e1 +0x6f72 0x95e5 +0x6f73 0x95e2 +0x6f74 0x9621 +0x6f75 0x9628 +0x6f76 0x962e +0x6f77 0x962f +0x6f78 0x9642 +0x6f79 0x964c +0x6f7a 0x964f +0x6f7b 0x964b +0x6f7c 0x9677 +0x6f7d 0x965c +0x6f7e 0x965e +0x7021 0x965d +0x7022 0x965f +0x7023 0x9666 +0x7024 0x9672 +0x7025 0x966c +0x7026 0x968d +0x7027 0x9698 +0x7028 0x9695 +0x7029 0x9697 +0x702a 0x96aa +0x702b 0x96a7 +0x702c 0x96b1 +0x702d 0x96b2 +0x702e 0x96b0 +0x702f 0x96b4 +0x7030 0x96b6 +0x7031 0x96b8 +0x7032 0x96b9 +0x7033 0x96ce +0x7034 0x96cb +0x7035 0x96c9 +0x7036 0x96cd +0x7037 0x894d +0x7038 0x96dc +0x7039 0x970d +0x703a 0x96d5 +0x703b 0x96f9 +0x703c 0x9704 +0x703d 0x9706 +0x703e 0x9708 +0x703f 0x9713 +0x7040 0x970e +0x7041 0x9711 +0x7042 0x970f +0x7043 0x9716 +0x7044 0x9719 +0x7045 0x9724 +0x7046 0x972a +0x7047 0x9730 +0x7048 0x9739 +0x7049 0x973d +0x704a 0x973e +0x704b 0x9744 +0x704c 0x9746 +0x704d 0x9748 +0x704e 0x9742 +0x704f 0x9749 +0x7050 0x975c +0x7051 0x9760 +0x7052 0x9764 +0x7053 0x9766 +0x7054 0x9768 +0x7055 0x52d2 +0x7056 0x976b +0x7057 0x9771 +0x7058 0x9779 +0x7059 0x9785 +0x705a 0x977c +0x705b 0x9781 +0x705c 0x977a +0x705d 0x9786 +0x705e 0x978b +0x705f 0x978f +0x7060 0x9790 +0x7061 0x979c +0x7062 0x97a8 +0x7063 0x97a6 +0x7064 0x97a3 +0x7065 0x97b3 +0x7066 0x97b4 +0x7067 0x97c3 +0x7068 0x97c6 +0x7069 0x97c8 +0x706a 0x97cb +0x706b 0x97dc +0x706c 0x97ed +0x706d 0x9f4f +0x706e 0x97f2 +0x706f 0x7adf +0x7070 0x97f6 +0x7071 0x97f5 +0x7072 0x980f +0x7073 0x980c +0x7074 0x9838 +0x7075 0x9824 +0x7076 0x9821 +0x7077 0x9837 +0x7078 0x983d +0x7079 0x9846 +0x707a 0x984f +0x707b 0x984b +0x707c 0x986b +0x707d 0x986f +0x707e 0x9870 +0x7121 0x9871 +0x7122 0x9874 +0x7123 0x9873 +0x7124 0x98aa +0x7125 0x98af +0x7126 0x98b1 +0x7127 0x98b6 +0x7128 0x98c4 +0x7129 0x98c3 +0x712a 0x98c6 +0x712b 0x98e9 +0x712c 0x98eb +0x712d 0x9903 +0x712e 0x9909 +0x712f 0x9912 +0x7130 0x9914 +0x7131 0x9918 +0x7132 0x9921 +0x7133 0x991d +0x7134 0x991e +0x7135 0x9924 +0x7136 0x9920 +0x7137 0x992c +0x7138 0x992e +0x7139 0x993d +0x713a 0x993e +0x713b 0x9942 +0x713c 0x9949 +0x713d 0x9945 +0x713e 0x9950 +0x713f 0x994b +0x7140 0x9951 +0x7141 0x9952 +0x7142 0x994c +0x7143 0x9955 +0x7144 0x9997 +0x7145 0x9998 +0x7146 0x99a5 +0x7147 0x99ad +0x7148 0x99ae +0x7149 0x99bc +0x714a 0x99df +0x714b 0x99db +0x714c 0x99dd +0x714d 0x99d8 +0x714e 0x99d1 +0x714f 0x99ed +0x7150 0x99ee +0x7151 0x99f1 +0x7152 0x99f2 +0x7153 0x99fb +0x7154 0x99f8 +0x7155 0x9a01 +0x7156 0x9a0f +0x7157 0x9a05 +0x7158 0x99e2 +0x7159 0x9a19 +0x715a 0x9a2b +0x715b 0x9a37 +0x715c 0x9a45 +0x715d 0x9a42 +0x715e 0x9a40 +0x715f 0x9a43 +0x7160 0x9a3e +0x7161 0x9a55 +0x7162 0x9a4d +0x7163 0x9a5b +0x7164 0x9a57 +0x7165 0x9a5f +0x7166 0x9a62 +0x7167 0x9a65 +0x7168 0x9a64 +0x7169 0x9a69 +0x716a 0x9a6b +0x716b 0x9a6a +0x716c 0x9aad +0x716d 0x9ab0 +0x716e 0x9abc +0x716f 0x9ac0 +0x7170 0x9acf +0x7171 0x9ad1 +0x7172 0x9ad3 +0x7173 0x9ad4 +0x7174 0x9ade +0x7175 0x9adf +0x7176 0x9ae2 +0x7177 0x9ae3 +0x7178 0x9ae6 +0x7179 0x9aef +0x717a 0x9aeb +0x717b 0x9aee +0x717c 0x9af4 +0x717d 0x9af1 +0x717e 0x9af7 +0x7221 0x9afb +0x7222 0x9b06 +0x7223 0x9b18 +0x7224 0x9b1a +0x7225 0x9b1f +0x7226 0x9b22 +0x7227 0x9b23 +0x7228 0x9b25 +0x7229 0x9b27 +0x722a 0x9b28 +0x722b 0x9b29 +0x722c 0x9b2a +0x722d 0x9b2e +0x722e 0x9b2f +0x722f 0x9b32 +0x7230 0x9b44 +0x7231 0x9b43 +0x7232 0x9b4f +0x7233 0x9b4d +0x7234 0x9b4e +0x7235 0x9b51 +0x7236 0x9b58 +0x7237 0x9b74 +0x7238 0x9b93 +0x7239 0x9b83 +0x723a 0x9b91 +0x723b 0x9b96 +0x723c 0x9b97 +0x723d 0x9b9f +0x723e 0x9ba0 +0x723f 0x9ba8 +0x7240 0x9bb4 +0x7241 0x9bc0 +0x7242 0x9bca +0x7243 0x9bb9 +0x7244 0x9bc6 +0x7245 0x9bcf +0x7246 0x9bd1 +0x7247 0x9bd2 +0x7248 0x9be3 +0x7249 0x9be2 +0x724a 0x9be4 +0x724b 0x9bd4 +0x724c 0x9be1 +0x724d 0x9c3a +0x724e 0x9bf2 +0x724f 0x9bf1 +0x7250 0x9bf0 +0x7251 0x9c15 +0x7252 0x9c14 +0x7253 0x9c09 +0x7254 0x9c13 +0x7255 0x9c0c +0x7256 0x9c06 +0x7257 0x9c08 +0x7258 0x9c12 +0x7259 0x9c0a +0x725a 0x9c04 +0x725b 0x9c2e +0x725c 0x9c1b +0x725d 0x9c25 +0x725e 0x9c24 +0x725f 0x9c21 +0x7260 0x9c30 +0x7261 0x9c47 +0x7262 0x9c32 +0x7263 0x9c46 +0x7264 0x9c3e +0x7265 0x9c5a +0x7266 0x9c60 +0x7267 0x9c67 +0x7268 0x9c76 +0x7269 0x9c78 +0x726a 0x9ce7 +0x726b 0x9cec +0x726c 0x9cf0 +0x726d 0x9d09 +0x726e 0x9d08 +0x726f 0x9ceb +0x7270 0x9d03 +0x7271 0x9d06 +0x7272 0x9d2a +0x7273 0x9d26 +0x7274 0x9daf +0x7275 0x9d23 +0x7276 0x9d1f +0x7277 0x9d44 +0x7278 0x9d15 +0x7279 0x9d12 +0x727a 0x9d41 +0x727b 0x9d3f +0x727c 0x9d3e +0x727d 0x9d46 +0x727e 0x9d48 +0x7321 0x9d5d +0x7322 0x9d5e +0x7323 0x9d64 +0x7324 0x9d51 +0x7325 0x9d50 +0x7326 0x9d59 +0x7327 0x9d72 +0x7328 0x9d89 +0x7329 0x9d87 +0x732a 0x9dab +0x732b 0x9d6f +0x732c 0x9d7a +0x732d 0x9d9a +0x732e 0x9da4 +0x732f 0x9da9 +0x7330 0x9db2 +0x7331 0x9dc4 +0x7332 0x9dc1 +0x7333 0x9dbb +0x7334 0x9db8 +0x7335 0x9dba +0x7336 0x9dc6 +0x7337 0x9dcf +0x7338 0x9dc2 +0x7339 0x9dd9 +0x733a 0x9dd3 +0x733b 0x9df8 +0x733c 0x9de6 +0x733d 0x9ded +0x733e 0x9def +0x733f 0x9dfd +0x7340 0x9e1a +0x7341 0x9e1b +0x7342 0x9e1e +0x7343 0x9e75 +0x7344 0x9e79 +0x7345 0x9e7d +0x7346 0x9e81 +0x7347 0x9e88 +0x7348 0x9e8b +0x7349 0x9e8c +0x734a 0x9e92 +0x734b 0x9e95 +0x734c 0x9e91 +0x734d 0x9e9d +0x734e 0x9ea5 +0x734f 0x9ea9 +0x7350 0x9eb8 +0x7351 0x9eaa +0x7352 0x9ead +0x7353 0x9761 +0x7354 0x9ecc +0x7355 0x9ece +0x7356 0x9ecf +0x7357 0x9ed0 +0x7358 0x9ed4 +0x7359 0x9edc +0x735a 0x9ede +0x735b 0x9edd +0x735c 0x9ee0 +0x735d 0x9ee5 +0x735e 0x9ee8 +0x735f 0x9eef +0x7360 0x9ef4 +0x7361 0x9ef6 +0x7362 0x9ef7 +0x7363 0x9ef9 +0x7364 0x9efb +0x7365 0x9efc +0x7366 0x9efd +0x7367 0x9f07 +0x7368 0x9f08 +0x7369 0x76b7 +0x736a 0x9f15 +0x736b 0x9f21 +0x736c 0x9f2c +0x736d 0x9f3e +0x736e 0x9f4a +0x736f 0x9f52 +0x7370 0x9f54 +0x7371 0x9f63 +0x7372 0x9f5f +0x7373 0x9f60 +0x7374 0x9f61 +0x7375 0x9f66 +0x7376 0x9f67 +0x7377 0x9f6c +0x7378 0x9f6a +0x7379 0x9f77 +0x737a 0x9f72 +0x737b 0x9f76 +0x737c 0x9f95 +0x737d 0x9f9c +0x737e 0x9fa0 +0x7421 0x582f +0x7422 0x69c7 +0x7423 0x9059 +0x7424 0x7464 +0x7425 0x51dc +0x7426 0x7199 +0x7921 0x7e8a +0x7922 0x891c +0x7923 0x9348 +0x7924 0x9288 +0x7925 0x84dc +0x7926 0x4fc9 +0x7927 0x70bb +0x7928 0x6631 +0x7929 0x68c8 +0x792a 0x92f9 +0x792b 0x66fb +0x792c 0x5f45 +0x792d 0x4e28 +0x792e 0x4ee1 +0x792f 0x4efc +0x7930 0x4f00 +0x7931 0x4f03 +0x7932 0x4f39 +0x7933 0x4f56 +0x7934 0x4f92 +0x7935 0x4f8a +0x7936 0x4f9a +0x7937 0x4f94 +0x7938 0x4fcd +0x7939 0x5040 +0x793a 0x5022 +0x793b 0x4fff +0x793c 0x501e +0x793d 0x5046 +0x793e 0x5070 +0x793f 0x5042 +0x7940 0x5094 +0x7941 0x50f4 +0x7942 0x50d8 +0x7943 0x514a +0x7944 0x5164 +0x7945 0x519d +0x7946 0x51be +0x7947 0x51ec +0x7948 0x5215 +0x7949 0x529c +0x794a 0x52a6 +0x794b 0x52c0 +0x794c 0x52db +0x794d 0x5300 +0x794e 0x5307 +0x794f 0x5324 +0x7950 0x5372 +0x7951 0x5393 +0x7952 0x53b2 +0x7953 0x53dd +0x7954 0xfa0e +0x7955 0x549c +0x7956 0x548a +0x7957 0x54a9 +0x7958 0x54ff +0x7959 0x5586 +0x795a 0x5759 +0x795b 0x5765 +0x795c 0x57ac +0x795d 0x57c8 +0x795e 0x57c7 +0x795f 0xfa0f +0x7960 0xfa10 +0x7961 0x589e +0x7962 0x58b2 +0x7963 0x590b +0x7964 0x5953 +0x7965 0x595b +0x7966 0x595d +0x7967 0x5963 +0x7968 0x59a4 +0x7969 0x59ba +0x796a 0x5b56 +0x796b 0x5bc0 +0x796c 0x752f +0x796d 0x5bd8 +0x796e 0x5bec +0x796f 0x5c1e +0x7970 0x5ca6 +0x7971 0x5cba +0x7972 0x5cf5 +0x7973 0x5d27 +0x7974 0x5d53 +0x7975 0xfa11 +0x7976 0x5d42 +0x7977 0x5d6d +0x7978 0x5db8 +0x7979 0x5db9 +0x797a 0x5dd0 +0x797b 0x5f21 +0x797c 0x5f34 +0x797d 0x5f67 +0x797e 0x5fb7 +0x7a21 0x5fde +0x7a22 0x605d +0x7a23 0x6085 +0x7a24 0x608a +0x7a25 0x60de +0x7a26 0x60d5 +0x7a27 0x6120 +0x7a28 0x60f2 +0x7a29 0x6111 +0x7a2a 0x6137 +0x7a2b 0x6130 +0x7a2c 0x6198 +0x7a2d 0x6213 +0x7a2e 0x62a6 +0x7a2f 0x63f5 +0x7a30 0x6460 +0x7a31 0x649d +0x7a32 0x64ce +0x7a33 0x654e +0x7a34 0x6600 +0x7a35 0x6615 +0x7a36 0x663b +0x7a37 0x6609 +0x7a38 0x662e +0x7a39 0x661e +0x7a3a 0x6624 +0x7a3b 0x6665 +0x7a3c 0x6657 +0x7a3d 0x6659 +0x7a3e 0xfa12 +0x7a3f 0x6673 +0x7a40 0x6699 +0x7a41 0x66a0 +0x7a42 0x66b2 +0x7a43 0x66bf +0x7a44 0x66fa +0x7a45 0x670e +0x7a46 0xf929 +0x7a47 0x6766 +0x7a48 0x67bb +0x7a49 0x6852 +0x7a4a 0x67c0 +0x7a4b 0x6801 +0x7a4c 0x6844 +0x7a4d 0x68cf +0x7a4e 0xfa13 +0x7a4f 0x6968 +0x7a50 0xfa14 +0x7a51 0x6998 +0x7a52 0x69e2 +0x7a53 0x6a30 +0x7a54 0x6a6b +0x7a55 0x6a46 +0x7a56 0x6a73 +0x7a57 0x6a7e +0x7a58 0x6ae2 +0x7a59 0x6ae4 +0x7a5a 0x6bd6 +0x7a5b 0x6c3f +0x7a5c 0x6c5c +0x7a5d 0x6c86 +0x7a5e 0x6c6f +0x7a5f 0x6cda +0x7a60 0x6d04 +0x7a61 0x6d87 +0x7a62 0x6d6f +0x7a63 0x6d96 +0x7a64 0x6dac +0x7a65 0x6dcf +0x7a66 0x6df8 +0x7a67 0x6df2 +0x7a68 0x6dfc +0x7a69 0x6e39 +0x7a6a 0x6e5c +0x7a6b 0x6e27 +0x7a6c 0x6e3c +0x7a6d 0x6ebf +0x7a6e 0x6f88 +0x7a6f 0x6fb5 +0x7a70 0x6ff5 +0x7a71 0x7005 +0x7a72 0x7007 +0x7a73 0x7028 +0x7a74 0x7085 +0x7a75 0x70ab +0x7a76 0x710f +0x7a77 0x7104 +0x7a78 0x715c +0x7a79 0x7146 +0x7a7a 0x7147 +0x7a7b 0xfa15 +0x7a7c 0x71c1 +0x7a7d 0x71fe +0x7a7e 0x72b1 +0x7b21 0x72be +0x7b22 0x7324 +0x7b23 0xfa16 +0x7b24 0x7377 +0x7b25 0x73bd +0x7b26 0x73c9 +0x7b27 0x73d6 +0x7b28 0x73e3 +0x7b29 0x73d2 +0x7b2a 0x7407 +0x7b2b 0x73f5 +0x7b2c 0x7426 +0x7b2d 0x742a +0x7b2e 0x7429 +0x7b2f 0x742e +0x7b30 0x7462 +0x7b31 0x7489 +0x7b32 0x749f +0x7b33 0x7501 +0x7b34 0x756f +0x7b35 0x7682 +0x7b36 0x769c +0x7b37 0x769e +0x7b38 0x769b +0x7b39 0x76a6 +0x7b3a 0xfa17 +0x7b3b 0x7746 +0x7b3c 0x52af +0x7b3d 0x7821 +0x7b3e 0x784e +0x7b3f 0x7864 +0x7b40 0x787a +0x7b41 0x7930 +0x7b42 0xfa18 +0x7b43 0xfa19 +0x7b44 0xfa1a +0x7b45 0x7994 +0x7b46 0xfa1b +0x7b47 0x799b +0x7b48 0x7ad1 +0x7b49 0x7ae7 +0x7b4a 0xfa1c +0x7b4b 0x7aeb +0x7b4c 0x7b9e +0x7b4d 0xfa1d +0x7b4e 0x7d48 +0x7b4f 0x7d5c +0x7b50 0x7db7 +0x7b51 0x7da0 +0x7b52 0x7dd6 +0x7b53 0x7e52 +0x7b54 0x7f47 +0x7b55 0x7fa1 +0x7b56 0xfa1e +0x7b57 0x8301 +0x7b58 0x8362 +0x7b59 0x837f +0x7b5a 0x83c7 +0x7b5b 0x83f6 +0x7b5c 0x8448 +0x7b5d 0x84b4 +0x7b5e 0x8553 +0x7b5f 0x8559 +0x7b60 0x856b +0x7b61 0xfa1f +0x7b62 0x85b0 +0x7b63 0xfa20 +0x7b64 0xfa21 +0x7b65 0x8807 +0x7b66 0x88f5 +0x7b67 0x8a12 +0x7b68 0x8a37 +0x7b69 0x8a79 +0x7b6a 0x8aa7 +0x7b6b 0x8abe +0x7b6c 0x8adf +0x7b6d 0xfa22 +0x7b6e 0x8af6 +0x7b6f 0x8b53 +0x7b70 0x8b7f +0x7b71 0x8cf0 +0x7b72 0x8cf4 +0x7b73 0x8d12 +0x7b74 0x8d76 +0x7b75 0xfa23 +0x7b76 0x8ecf +0x7b77 0xfa24 +0x7b78 0xfa25 +0x7b79 0x9067 +0x7b7a 0x90de +0x7b7b 0xfa26 +0x7b7c 0x9115 +0x7b7d 0x9127 +0x7b7e 0x91da +0x7c21 0x91d7 +0x7c22 0x91de +0x7c23 0x91ed +0x7c24 0x91ee +0x7c25 0x91e4 +0x7c26 0x91e5 +0x7c27 0x9206 +0x7c28 0x9210 +0x7c29 0x920a +0x7c2a 0x923a +0x7c2b 0x9240 +0x7c2c 0x923c +0x7c2d 0x924e +0x7c2e 0x9259 +0x7c2f 0x9251 +0x7c30 0x9239 +0x7c31 0x9267 +0x7c32 0x92a7 +0x7c33 0x9277 +0x7c34 0x9278 +0x7c35 0x92e7 +0x7c36 0x92d7 +0x7c37 0x92d9 +0x7c38 0x92d0 +0x7c39 0xfa27 +0x7c3a 0x92d5 +0x7c3b 0x92e0 +0x7c3c 0x92d3 +0x7c3d 0x9325 +0x7c3e 0x9321 +0x7c3f 0x92fb +0x7c40 0xfa28 +0x7c41 0x931e +0x7c42 0x92ff +0x7c43 0x931d +0x7c44 0x9302 +0x7c45 0x9370 +0x7c46 0x9357 +0x7c47 0x93a4 +0x7c48 0x93c6 +0x7c49 0x93de +0x7c4a 0x93f8 +0x7c4b 0x9431 +0x7c4c 0x9445 +0x7c4d 0x9448 +0x7c4e 0x9592 +0x7c4f 0xf9dc +0x7c50 0xfa29 +0x7c51 0x969d +0x7c52 0x96af +0x7c53 0x9733 +0x7c54 0x973b +0x7c55 0x9743 +0x7c56 0x974d +0x7c57 0x974f +0x7c58 0x9751 +0x7c59 0x9755 +0x7c5a 0x9857 +0x7c5b 0x9865 +0x7c5c 0xfa2a +0x7c5d 0xfa2b +0x7c5e 0x9927 +0x7c5f 0xfa2c +0x7c60 0x999e +0x7c61 0x9a4e +0x7c62 0x9ad9 +0x7c63 0x9adc +0x7c64 0x9b75 +0x7c65 0x9b72 +0x7c66 0x9b8f +0x7c67 0x9bb1 +0x7c68 0x9bbb +0x7c69 0x9c00 +0x7c6a 0x9d70 +0x7c6b 0x9d6b +0x7c6c 0xfa2d +0x7c6d 0x9e19 +0x7c6e 0x9ed1 +0x7c71 0x2170 +0x7c72 0x2171 +0x7c73 0x2172 +0x7c74 0x2173 +0x7c75 0x2174 +0x7c76 0x2175 +0x7c77 0x2176 +0x7c78 0x2177 +0x7c79 0x2178 +0x7c7a 0x2179 +0x7c7b 0xffe2 +0x7c7c 0xffe4 +0x7c7d 0xff07 +0x7c7e 0xff02 diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/JIS_X_0208_MS932.nr --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/JIS_X_0208_MS932.nr Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,10 @@ +0x224c 0xffe2 +0x225d 0x22a5 +0x2265 0x221a +0x2269 0x222b +0x2d70 0x2252 +0x2d71 0x2261 +0x2d77 0x2220 +0x2d7a 0x2235 +0x2d7b 0x2229 +0x2d7c 0x222a diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/JIS_X_0208_Solaris.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/JIS_X_0208_Solaris.map Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,851 @@ +# +# Generated from JIS_X_0208_De/Encoder +# +# added 0x2129 entry, which is the "replacement" for 0208 +0x2129 0xff1f +# +0x2d21 0x2460 +0x2d22 0x2461 +0x2d23 0x2462 +0x2d24 0x2463 +0x2d25 0x2464 +0x2d26 0x2465 +0x2d27 0x2466 +0x2d28 0x2467 +0x2d29 0x2468 +0x2d2a 0x2469 +0x2d2b 0x246a +0x2d2c 0x246b +0x2d2d 0x246c +0x2d2e 0x246d +0x2d2f 0x246e +0x2d30 0x246f +0x2d31 0x2470 +0x2d32 0x2471 +0x2d33 0x2472 +0x2d34 0x2473 +0x2d35 0x2160 +0x2d36 0x2161 +0x2d37 0x2162 +0x2d38 0x2163 +0x2d39 0x2164 +0x2d3a 0x2165 +0x2d3b 0x2166 +0x2d3c 0x2167 +0x2d3d 0x2168 +0x2d3e 0x2169 +0x2d40 0x3349 +0x2d41 0x3314 +0x2d42 0x3322 +0x2d43 0x334d +0x2d44 0x3318 +0x2d45 0x3327 +0x2d46 0x3303 +0x2d47 0x3336 +0x2d48 0x3351 +0x2d49 0x3357 +0x2d4a 0x330d +0x2d4b 0x3326 +0x2d4c 0x3323 +0x2d4d 0x332b +0x2d4e 0x334a +0x2d4f 0x333b +0x2d50 0x339c +0x2d51 0x339d +0x2d52 0x339e +0x2d53 0x338e +0x2d54 0x338f +0x2d55 0x33c4 +0x2d56 0x33a1 +0x2d5f 0x337b +0x2d60 0x301d +0x2d61 0x301f +0x2d62 0x2116 +0x2d63 0x33cd +0x2d64 0x2121 +0x2d65 0x32a4 +0x2d66 0x32a5 +0x2d67 0x32a6 +0x2d68 0x32a7 +0x2d69 0x32a8 +0x2d6a 0x3231 +0x2d6b 0x3232 +0x2d6c 0x3239 +0x2d6d 0x337e +0x2d6e 0x337d +0x2d6f 0x337c +0x2d70 0x2252 +0x2d71 0x2261 +0x2d72 0x222b +0x2d73 0x222e +0x2d74 0x2211 +0x2d75 0x221a +0x2d76 0x22a5 +0x2d77 0x2220 +0x2d78 0x221f +0x2d79 0x22bf +0x2d7a 0x2235 +0x2d7b 0x2229 +0x2d7c 0x222a +0x7921 0x7e8a +0x7922 0x891c +0x7923 0x9348 +0x7924 0x9288 +0x7925 0x84dc +0x7926 0x4fc9 +0x7927 0x70bb +0x7928 0x6631 +0x7929 0x68c8 +0x792a 0x92f9 +0x792b 0x66fb +0x792c 0x5f45 +0x792d 0x4e28 +0x792e 0x4ee1 +0x792f 0x4efc +0x7930 0x4f00 +0x7931 0x4f03 +0x7932 0x4f39 +0x7933 0x4f56 +0x7934 0x4f92 +0x7935 0x4f8a +0x7936 0x4f9a +0x7937 0x4f94 +0x7938 0x4fcd +0x7939 0x5040 +0x793a 0x5022 +0x793b 0x4fff +0x793c 0x501e +0x793d 0x5046 +0x793e 0x5070 +0x793f 0x5042 +0x7940 0x5094 +0x7941 0x50f4 +0x7942 0x50d8 +0x7943 0x514a +0x7944 0x5164 +0x7945 0x519d +0x7946 0x51be +0x7947 0x51ec +0x7948 0x5215 +0x7949 0x529c +0x794a 0x52a6 +0x794b 0x52c0 +0x794c 0x52db +0x794d 0x5300 +0x794e 0x5307 +0x794f 0x5324 +0x7950 0x5372 +0x7951 0x5393 +0x7952 0x53b2 +0x7953 0x53dd +0x7954 0xfa0e +0x7955 0x549c +0x7956 0x548a +0x7957 0x54a9 +0x7958 0x54ff +0x7959 0x5586 +0x795a 0x5759 +0x795b 0x5765 +0x795c 0x57ac +0x795d 0x57c8 +0x795e 0x57c7 +0x795f 0xfa0f +0x7960 0xfa10 +0x7961 0x589e +0x7962 0x58b2 +0x7963 0x590b +0x7964 0x5953 +0x7965 0x595b +0x7966 0x595d +0x7967 0x5963 +0x7968 0x59a4 +0x7969 0x59ba +0x796a 0x5b56 +0x796b 0x5bc0 +0x796c 0x752f +0x796d 0x5bd8 +0x796e 0x5bec +0x796f 0x5c1e +0x7970 0x5ca6 +0x7971 0x5cba +0x7972 0x5cf5 +0x7973 0x5d27 +0x7974 0x5d53 +0x7975 0xfa11 +0x7976 0x5d42 +0x7977 0x5d6d +0x7978 0x5db8 +0x7979 0x5db9 +0x797a 0x5dd0 +0x797b 0x5f21 +0x797c 0x5f34 +0x797d 0x5f67 +0x797e 0x5fb7 +0x7a21 0x5fde +0x7a22 0x605d +0x7a23 0x6085 +0x7a24 0x608a +0x7a25 0x60de +0x7a26 0x60d5 +0x7a27 0x6120 +0x7a28 0x60f2 +0x7a29 0x6111 +0x7a2a 0x6137 +0x7a2b 0x6130 +0x7a2c 0x6198 +0x7a2d 0x6213 +0x7a2e 0x62a6 +0x7a2f 0x63f5 +0x7a30 0x6460 +0x7a31 0x649d +0x7a32 0x64ce +0x7a33 0x654e +0x7a34 0x6600 +0x7a35 0x6615 +0x7a36 0x663b +0x7a37 0x6609 +0x7a38 0x662e +0x7a39 0x661e +0x7a3a 0x6624 +0x7a3b 0x6665 +0x7a3c 0x6657 +0x7a3d 0x6659 +0x7a3e 0xfa12 +0x7a3f 0x6673 +0x7a40 0x6699 +0x7a41 0x66a0 +0x7a42 0x66b2 +0x7a43 0x66bf +0x7a44 0x66fa +0x7a45 0x670e +0x7a46 0xf929 +0x7a47 0x6766 +0x7a48 0x67bb +0x7a49 0x6852 +0x7a4a 0x67c0 +0x7a4b 0x6801 +0x7a4c 0x6844 +0x7a4d 0x68cf +0x7a4e 0xfa13 +0x7a4f 0x6968 +0x7a50 0xfa14 +0x7a51 0x6998 +0x7a52 0x69e2 +0x7a53 0x6a30 +0x7a54 0x6a6b +0x7a55 0x6a46 +0x7a56 0x6a73 +0x7a57 0x6a7e +0x7a58 0x6ae2 +0x7a59 0x6ae4 +0x7a5a 0x6bd6 +0x7a5b 0x6c3f +0x7a5c 0x6c5c +0x7a5d 0x6c86 +0x7a5e 0x6c6f +0x7a5f 0x6cda +0x7a60 0x6d04 +0x7a61 0x6d87 +0x7a62 0x6d6f +0x7a63 0x6d96 +0x7a64 0x6dac +0x7a65 0x6dcf +0x7a66 0x6df8 +0x7a67 0x6df2 +0x7a68 0x6dfc +0x7a69 0x6e39 +0x7a6a 0x6e5c +0x7a6b 0x6e27 +0x7a6c 0x6e3c +0x7a6d 0x6ebf +0x7a6e 0x6f88 +0x7a6f 0x6fb5 +0x7a70 0x6ff5 +0x7a71 0x7005 +0x7a72 0x7007 +0x7a73 0x7028 +0x7a74 0x7085 +0x7a75 0x70ab +0x7a76 0x710f +0x7a77 0x7104 +0x7a78 0x715c +0x7a79 0x7146 +0x7a7a 0x7147 +0x7a7b 0xfa15 +0x7a7c 0x71c1 +0x7a7d 0x71fe +0x7a7e 0x72b1 +0x7b21 0x72be +0x7b22 0x7324 +0x7b23 0xfa16 +0x7b24 0x7377 +0x7b25 0x73bd +0x7b26 0x73c9 +0x7b27 0x73d6 +0x7b28 0x73e3 +0x7b29 0x73d2 +0x7b2a 0x7407 +0x7b2b 0x73f5 +0x7b2c 0x7426 +0x7b2d 0x742a +0x7b2e 0x7429 +0x7b2f 0x742e +0x7b30 0x7462 +0x7b31 0x7489 +0x7b32 0x749f +0x7b33 0x7501 +0x7b34 0x756f +0x7b35 0x7682 +0x7b36 0x769c +0x7b37 0x769e +0x7b38 0x769b +0x7b39 0x76a6 +0x7b3a 0xfa17 +0x7b3b 0x7746 +0x7b3c 0x52af +0x7b3d 0x7821 +0x7b3e 0x784e +0x7b3f 0x7864 +0x7b40 0x787a +0x7b41 0x7930 +0x7b42 0xfa18 +0x7b43 0xfa19 +0x7b44 0xfa1a +0x7b45 0x7994 +0x7b46 0xfa1b +0x7b47 0x799b +0x7b48 0x7ad1 +0x7b49 0x7ae7 +0x7b4a 0xfa1c +0x7b4b 0x7aeb +0x7b4c 0x7b9e +0x7b4d 0xfa1d +0x7b4e 0x7d48 +0x7b4f 0x7d5c +0x7b50 0x7db7 +0x7b51 0x7da0 +0x7b52 0x7dd6 +0x7b53 0x7e52 +0x7b54 0x7f47 +0x7b55 0x7fa1 +0x7b56 0xfa1e +0x7b57 0x8301 +0x7b58 0x8362 +0x7b59 0x837f +0x7b5a 0x83c7 +0x7b5b 0x83f6 +0x7b5c 0x8448 +0x7b5d 0x84b4 +0x7b5e 0x8553 +0x7b5f 0x8559 +0x7b60 0x856b +0x7b61 0xfa1f +0x7b62 0x85b0 +0x7b63 0xfa20 +0x7b64 0xfa21 +0x7b65 0x8807 +0x7b66 0x88f5 +0x7b67 0x8a12 +0x7b68 0x8a37 +0x7b69 0x8a79 +0x7b6a 0x8aa7 +0x7b6b 0x8abe +0x7b6c 0x8adf +0x7b6d 0xfa22 +0x7b6e 0x8af6 +0x7b6f 0x8b53 +0x7b70 0x8b7f +0x7b71 0x8cf0 +0x7b72 0x8cf4 +0x7b73 0x8d12 +0x7b74 0x8d76 +0x7b75 0xfa23 +0x7b76 0x8ecf +0x7b77 0xfa24 +0x7b78 0xfa25 +0x7b79 0x9067 +0x7b7a 0x90de +0x7b7b 0xfa26 +0x7b7c 0x9115 +0x7b7d 0x9127 +0x7b7e 0x91da +0x7c21 0x91d7 +0x7c22 0x91de +0x7c23 0x91ed +0x7c24 0x91ee +0x7c25 0x91e4 +0x7c26 0x91e5 +0x7c27 0x9206 +0x7c28 0x9210 +0x7c29 0x920a +0x7c2a 0x923a +0x7c2b 0x9240 +0x7c2c 0x923c +0x7c2d 0x924e +0x7c2e 0x9259 +0x7c2f 0x9251 +0x7c30 0x9239 +0x7c31 0x9267 +0x7c32 0x92a7 +0x7c33 0x9277 +0x7c34 0x9278 +0x7c35 0x92e7 +0x7c36 0x92d7 +0x7c37 0x92d9 +0x7c38 0x92d0 +0x7c39 0xfa27 +0x7c3a 0x92d5 +0x7c3b 0x92e0 +0x7c3c 0x92d3 +0x7c3d 0x9325 +0x7c3e 0x9321 +0x7c3f 0x92fb +0x7c40 0xfa28 +0x7c41 0x931e +0x7c42 0x92ff +0x7c43 0x931d +0x7c44 0x9302 +0x7c45 0x9370 +0x7c46 0x9357 +0x7c47 0x93a4 +0x7c48 0x93c6 +0x7c49 0x93de +0x7c4a 0x93f8 +0x7c4b 0x9431 +0x7c4c 0x9445 +0x7c4d 0x9448 +0x7c4e 0x9592 +0x7c4f 0xf9dc +0x7c50 0xfa29 +0x7c51 0x969d +0x7c52 0x96af +0x7c53 0x9733 +0x7c54 0x973b +0x7c55 0x9743 +0x7c56 0x974d +0x7c57 0x974f +0x7c58 0x9751 +0x7c59 0x9755 +0x7c5a 0x9857 +0x7c5b 0x9865 +0x7c5c 0xfa2a +0x7c5d 0xfa2b +0x7c5e 0x9927 +0x7c5f 0xfa2c +0x7c60 0x999e +0x7c61 0x9a4e +0x7c62 0x9ad9 +0x7c63 0x9adc +0x7c64 0x9b75 +0x7c65 0x9b72 +0x7c66 0x9b8f +0x7c67 0x9bb1 +0x7c68 0x9bbb +0x7c69 0x9c00 +0x7c6a 0x9d70 +0x7c6b 0x9d6b +0x7c6c 0xfa2d +0x7c6d 0x9e19 +0x7c6e 0x9ed1 +0x7c71 0x2170 +0x7c72 0x2171 +0x7c73 0x2172 +0x7c74 0x2173 +0x7c75 0x2174 +0x7c76 0x2175 +0x7c77 0x2176 +0x7c78 0x2177 +0x7c79 0x2178 +0x7c7a 0x2179 +0x7c7b 0x3052 +0x7c7c 0x00a6 +0x7c7d 0xff07 +0x7c7e 0xff02 +0x9321 0x2170 +0x9322 0x2171 +0x9323 0x2172 +0x9324 0x2173 +0x9325 0x2174 +0x9326 0x2175 +0x9327 0x2176 +0x9328 0x2177 +0x9329 0x2178 +0x932a 0x2179 +0x932b 0x2160 +0x932c 0x2161 +0x932d 0x2162 +0x932e 0x2163 +0x932f 0x2164 +0x9330 0x2165 +0x9331 0x2166 +0x9332 0x2167 +0x9333 0x2168 +0x9334 0x2169 +0x9335 0x3052 +0x9336 0x00a6 +0x9337 0xff07 +0x9338 0xff02 +0x9339 0x3231 +0x933a 0x2116 +0x933b 0x2121 +0x933c 0x306e +0x933d 0x7e8a +0x933e 0x891c +0x933f 0x9348 +0x9340 0x9288 +0x9341 0x84dc +0x9342 0x4fc9 +0x9343 0x70bb +0x9344 0x6631 +0x9345 0x68c8 +0x9346 0x92f9 +0x9347 0x66fb +0x9348 0x5f45 +0x9349 0x4e28 +0x934a 0x4ee1 +0x934b 0x4efc +0x934c 0x4f00 +0x934d 0x4f03 +0x934e 0x4f39 +0x934f 0x4f56 +0x9350 0x4f92 +0x9351 0x4f8a +0x9352 0x4f9a +0x9353 0x4f94 +0x9354 0x4fcd +0x9355 0x5040 +0x9356 0x5022 +0x9357 0x4fff +0x9358 0x501e +0x9359 0x5046 +0x935a 0x5070 +0x935b 0x5042 +0x935c 0x5094 +0x935d 0x50f4 +0x935e 0x50d8 +0x935f 0x514a +0x9360 0x5164 +0x9361 0x519d +0x9362 0x51be +0x9363 0x51ec +0x9364 0x5215 +0x9365 0x529c +0x9366 0x52a6 +0x9367 0x52c0 +0x9368 0x52db +0x9369 0x5300 +0x936a 0x5307 +0x936b 0x5324 +0x936c 0x5372 +0x936d 0x5393 +0x936e 0x53b2 +0x936f 0x53dd +0x9370 0xfa0e +0x9371 0x549c +0x9372 0x548a +0x9373 0x54a9 +0x9374 0x54ff +0x9375 0x5586 +0x9376 0x5759 +0x9377 0x5765 +0x9378 0x57ac +0x9379 0x57c8 +0x937a 0x57c7 +0x937b 0xfa0f +0x937c 0xfa10 +0x937d 0x589e +0x937e 0x58b2 +0x9421 0x590b +0x9422 0x5953 +0x9423 0x595b +0x9424 0x595d +0x9425 0x5963 +0x9426 0x59a4 +0x9427 0x59ba +0x9428 0x5b56 +0x9429 0x5bc0 +0x942a 0x752f +0x942b 0x5bd8 +0x942c 0x5bec +0x942d 0x5c1e +0x942e 0x5ca6 +0x942f 0x5cba +0x9430 0x5cf5 +0x9431 0x5d27 +0x9432 0x5d53 +0x9433 0xfa11 +0x9434 0x5d42 +0x9435 0x5d6d +0x9436 0x5db8 +0x9437 0x5db9 +0x9438 0x5dd0 +0x9439 0x5f21 +0x943a 0x5f34 +0x943b 0x5f67 +0x943c 0x5fb7 +0x943d 0x5fde +0x943e 0x605d +0x943f 0x6085 +0x9440 0x608a +0x9441 0x60de +0x9442 0x60d5 +0x9443 0x6120 +0x9444 0x60f2 +0x9445 0x6111 +0x9446 0x6137 +0x9447 0x6130 +0x9448 0x6198 +0x9449 0x6213 +0x944a 0x62a6 +0x944b 0x63f5 +0x944c 0x6460 +0x944d 0x649d +0x944e 0x64ce +0x944f 0x654e +0x9450 0x6600 +0x9451 0x6615 +0x9452 0x663b +0x9453 0x6609 +0x9454 0x662e +0x9455 0x661e +0x9456 0x6624 +0x9457 0x6665 +0x9458 0x6657 +0x9459 0x6659 +0x945a 0xfa12 +0x945b 0x6673 +0x945c 0x6699 +0x945d 0x66a0 +0x945e 0x66b2 +0x945f 0x66bf +0x9460 0x66fa +0x9461 0x670e +0x9462 0xf929 +0x9463 0x6766 +0x9464 0x67bb +0x9465 0x6852 +0x9466 0x67c0 +0x9467 0x6801 +0x9468 0x6844 +0x9469 0x68cf +0x946a 0xfa13 +0x946b 0x6968 +0x946c 0xfa14 +0x946d 0x6998 +0x946e 0x69e2 +0x946f 0x6a30 +0x9470 0x6a6b +0x9471 0x6a46 +0x9472 0x6a73 +0x9473 0x6a7e +0x9474 0x6ae2 +0x9475 0x6ae4 +0x9476 0x6bd6 +0x9477 0x6c3f +0x9478 0x6c5c +0x9479 0x6c86 +0x947a 0x6c6f +0x947b 0x6cda +0x947c 0x6d04 +0x947d 0x6d87 +0x947e 0x6d6f +0x9521 0x6d96 +0x9522 0x6dac +0x9523 0x6dcf +0x9524 0x6df8 +0x9525 0x6df2 +0x9526 0x6dfc +0x9527 0x6e39 +0x9528 0x6e5c +0x9529 0x6e27 +0x952a 0x6e3c +0x952b 0x6ebf +0x952c 0x6f88 +0x952d 0x6fb5 +0x952e 0x6ff5 +0x952f 0x7005 +0x9530 0x7007 +0x9531 0x7028 +0x9532 0x7085 +0x9533 0x70ab +0x9534 0x710f +0x9535 0x7104 +0x9536 0x715c +0x9537 0x7146 +0x9538 0x7147 +0x9539 0xfa15 +0x953a 0x71c1 +0x953b 0x71fe +0x953c 0x72b1 +0x953d 0x72be +0x953e 0x7324 +0x953f 0xfa16 +0x9540 0x7377 +0x9541 0x73bd +0x9542 0x73c9 +0x9543 0x73d6 +0x9544 0x73e3 +0x9545 0x73d2 +0x9546 0x7407 +0x9547 0x73f5 +0x9548 0x7426 +0x9549 0x742a +0x954a 0x7429 +0x954b 0x742e +0x954c 0x7462 +0x954d 0x7489 +0x954e 0x749f +0x954f 0x7501 +0x9550 0x756f +0x9551 0x7682 +0x9552 0x769c +0x9553 0x769e +0x9554 0x769b +0x9555 0x76a6 +0x9556 0xfa17 +0x9557 0x7746 +0x9558 0x52af +0x9559 0x7821 +0x955a 0x784e +0x955b 0x7864 +0x955c 0x787a +0x955d 0x7930 +0x955e 0xfa18 +0x955f 0xfa19 +0x9560 0xfa1a +0x9561 0x7994 +0x9562 0xfa1b +0x9563 0x799b +0x9564 0x7ad1 +0x9565 0x7ae7 +0x9566 0xfa1c +0x9567 0x7aeb +0x9568 0x7b9e +0x9569 0xfa1d +0x956a 0x7d48 +0x956b 0x7d5c +0x956c 0x7db7 +0x956d 0x7da0 +0x956e 0x7dd6 +0x956f 0x7e52 +0x9570 0x7f47 +0x9571 0x7fa1 +0x9572 0xfa1e +0x9573 0x8301 +0x9574 0x8362 +0x9575 0x837f +0x9576 0x83c7 +0x9577 0x83f6 +0x9578 0x8448 +0x9579 0x84b4 +0x957a 0x8553 +0x957b 0x8559 +0x957c 0x856b +0x957d 0xfa1f +0x957e 0x85b0 +0x9621 0xfa20 +0x9622 0xfa21 +0x9623 0x8807 +0x9624 0x88f5 +0x9625 0x8a12 +0x9626 0x8a37 +0x9627 0x8a79 +0x9628 0x8aa7 +0x9629 0x8abe +0x962a 0x8adf +0x962b 0xfa22 +0x962c 0x8af6 +0x962d 0x8b53 +0x962e 0x8b7f +0x962f 0x8cf0 +0x9630 0x8cf4 +0x9631 0x8d12 +0x9632 0x8d76 +0x9633 0xfa23 +0x9634 0x8ecf +0x9635 0xfa24 +0x9636 0xfa25 +0x9637 0x9067 +0x9638 0x90de +0x9639 0xfa26 +0x963a 0x9115 +0x963b 0x9127 +0x963c 0x91da +0x963d 0x91d7 +0x963e 0x91de +0x963f 0x91ed +0x9640 0x91ee +0x9641 0x91e4 +0x9642 0x91e5 +0x9643 0x9206 +0x9644 0x9210 +0x9645 0x920a +0x9646 0x923a +0x9647 0x9240 +0x9648 0x923c +0x9649 0x924e +0x964a 0x9259 +0x964b 0x9251 +0x964c 0x9239 +0x964d 0x9267 +0x964e 0x92a7 +0x964f 0x9277 +0x9650 0x9278 +0x9651 0x92e7 +0x9652 0x92d7 +0x9653 0x92d9 +0x9654 0x92d0 +0x9655 0xfa27 +0x9656 0x92d5 +0x9657 0x92e0 +0x9658 0x92d3 +0x9659 0x9325 +0x965a 0x9321 +0x965b 0x92fb +0x965c 0xfa28 +0x965d 0x931e +0x965e 0x92ff +0x965f 0x931d +0x9660 0x9302 +0x9661 0x9370 +0x9662 0x9357 +0x9663 0x93a4 +0x9664 0x93c6 +0x9665 0x93de +0x9666 0x93f8 +0x9667 0x9431 +0x9668 0x9445 +0x9669 0x9448 +0x966a 0x9592 +0x966b 0xf9dc +0x966c 0xfa29 +0x966d 0x969d +0x966e 0x96af +0x966f 0x9733 +0x9670 0x973b +0x9671 0x9743 +0x9672 0x974d +0x9673 0x974f +0x9674 0x9751 +0x9675 0x9755 +0x9676 0x9857 +0x9677 0x9865 +0x9678 0xfa2a +0x9679 0xfa2b +0x967a 0x9927 +0x967b 0xfa2c +0x967c 0x999e +0x967d 0x9a4e +0x967e 0x9ad9 +0x9721 0x9adc +0x9722 0x9b75 +0x9723 0x9b72 +0x9724 0x9b8f +0x9725 0x9bb1 +0x9726 0x9bbb +0x9727 0x9c00 +0x9728 0x9d70 +0x9729 0x9d6b +0x972a 0xfa2d +0x972b 0x9e19 +0x972c 0x9ed1 diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/JIS_X_0208_Solaris.nr --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/JIS_X_0208_Solaris.nr Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,387 @@ +0x7921 0x7e8a +0x7922 0x891c +0x7923 0x9348 +0x7924 0x9288 +0x7925 0x84dc +0x7926 0x4fc9 +0x7927 0x70bb +0x7928 0x6631 +0x7929 0x68c8 +0x792a 0x92f9 +0x792b 0x66fb +0x792c 0x5f45 +0x792d 0x4e28 +0x792e 0x4ee1 +0x792f 0x4efc +0x7930 0x4f00 +0x7931 0x4f03 +0x7932 0x4f39 +0x7933 0x4f56 +0x7934 0x4f92 +0x7935 0x4f8a +0x7936 0x4f9a +0x7937 0x4f94 +0x7938 0x4fcd +0x7939 0x5040 +0x793a 0x5022 +0x793b 0x4fff +0x793c 0x501e +0x793d 0x5046 +0x793e 0x5070 +0x793f 0x5042 +0x7940 0x5094 +0x7941 0x50f4 +0x7942 0x50d8 +0x7943 0x514a +0x7944 0x5164 +0x7945 0x519d +0x7946 0x51be +0x7947 0x51ec +0x7948 0x5215 +0x7949 0x529c +0x794a 0x52a6 +0x794b 0x52c0 +0x794c 0x52db +0x794d 0x5300 +0x794e 0x5307 +0x794f 0x5324 +0x7950 0x5372 +0x7951 0x5393 +0x7952 0x53b2 +0x7953 0x53dd +0x7954 0xfa0e +0x7955 0x549c +0x7956 0x548a +0x7957 0x54a9 +0x7958 0x54ff +0x7959 0x5586 +0x795a 0x5759 +0x795b 0x5765 +0x795c 0x57ac +0x795d 0x57c8 +0x795e 0x57c7 +0x795f 0xfa0f +0x7960 0xfa10 +0x7961 0x589e +0x7962 0x58b2 +0x7963 0x590b +0x7964 0x5953 +0x7965 0x595b +0x7966 0x595d +0x7967 0x5963 +0x7968 0x59a4 +0x7969 0x59ba +0x796a 0x5b56 +0x796b 0x5bc0 +0x796c 0x752f +0x796d 0x5bd8 +0x796e 0x5bec +0x796f 0x5c1e +0x7970 0x5ca6 +0x7971 0x5cba +0x7972 0x5cf5 +0x7973 0x5d27 +0x7974 0x5d53 +0x7975 0xfa11 +0x7976 0x5d42 +0x7977 0x5d6d +0x7978 0x5db8 +0x7979 0x5db9 +0x797a 0x5dd0 +0x797b 0x5f21 +0x797c 0x5f34 +0x797d 0x5f67 +0x797e 0x5fb7 +0x7a21 0x5fde +0x7a22 0x605d +0x7a23 0x6085 +0x7a24 0x608a +0x7a25 0x60de +0x7a26 0x60d5 +0x7a27 0x6120 +0x7a28 0x60f2 +0x7a29 0x6111 +0x7a2a 0x6137 +0x7a2b 0x6130 +0x7a2c 0x6198 +0x7a2d 0x6213 +0x7a2e 0x62a6 +0x7a2f 0x63f5 +0x7a30 0x6460 +0x7a31 0x649d +0x7a32 0x64ce +0x7a33 0x654e +0x7a34 0x6600 +0x7a35 0x6615 +0x7a36 0x663b +0x7a37 0x6609 +0x7a38 0x662e +0x7a39 0x661e +0x7a3a 0x6624 +0x7a3b 0x6665 +0x7a3c 0x6657 +0x7a3d 0x6659 +0x7a3e 0xfa12 +0x7a3f 0x6673 +0x7a40 0x6699 +0x7a41 0x66a0 +0x7a42 0x66b2 +0x7a43 0x66bf +0x7a44 0x66fa +0x7a45 0x670e +0x7a46 0xf929 +0x7a47 0x6766 +0x7a48 0x67bb +0x7a49 0x6852 +0x7a4a 0x67c0 +0x7a4b 0x6801 +0x7a4c 0x6844 +0x7a4d 0x68cf +0x7a4e 0xfa13 +0x7a4f 0x6968 +0x7a50 0xfa14 +0x7a51 0x6998 +0x7a52 0x69e2 +0x7a53 0x6a30 +0x7a54 0x6a6b +0x7a55 0x6a46 +0x7a56 0x6a73 +0x7a57 0x6a7e +0x7a58 0x6ae2 +0x7a59 0x6ae4 +0x7a5a 0x6bd6 +0x7a5b 0x6c3f +0x7a5c 0x6c5c +0x7a5d 0x6c86 +0x7a5e 0x6c6f +0x7a5f 0x6cda +0x7a60 0x6d04 +0x7a61 0x6d87 +0x7a62 0x6d6f +0x7a63 0x6d96 +0x7a64 0x6dac +0x7a65 0x6dcf +0x7a66 0x6df8 +0x7a67 0x6df2 +0x7a68 0x6dfc +0x7a69 0x6e39 +0x7a6a 0x6e5c +0x7a6b 0x6e27 +0x7a6c 0x6e3c +0x7a6d 0x6ebf +0x7a6e 0x6f88 +0x7a6f 0x6fb5 +0x7a70 0x6ff5 +0x7a71 0x7005 +0x7a72 0x7007 +0x7a73 0x7028 +0x7a74 0x7085 +0x7a75 0x70ab +0x7a76 0x710f +0x7a77 0x7104 +0x7a78 0x715c +0x7a79 0x7146 +0x7a7a 0x7147 +0x7a7b 0xfa15 +0x7a7c 0x71c1 +0x7a7d 0x71fe +0x7a7e 0x72b1 +0x7b21 0x72be +0x7b22 0x7324 +0x7b23 0xfa16 +0x7b24 0x7377 +0x7b25 0x73bd +0x7b26 0x73c9 +0x7b27 0x73d6 +0x7b28 0x73e3 +0x7b29 0x73d2 +0x7b2a 0x7407 +0x7b2b 0x73f5 +0x7b2c 0x7426 +0x7b2d 0x742a +0x7b2e 0x7429 +0x7b2f 0x742e +0x7b30 0x7462 +0x7b31 0x7489 +0x7b32 0x749f +0x7b33 0x7501 +0x7b34 0x756f +0x7b35 0x7682 +0x7b36 0x769c +0x7b37 0x769e +0x7b38 0x769b +0x7b39 0x76a6 +0x7b3a 0xfa17 +0x7b3b 0x7746 +0x7b3c 0x52af +0x7b3d 0x7821 +0x7b3e 0x784e +0x7b3f 0x7864 +0x7b40 0x787a +0x7b41 0x7930 +0x7b42 0xfa18 +0x7b43 0xfa19 +0x7b44 0xfa1a +0x7b45 0x7994 +0x7b46 0xfa1b +0x7b47 0x799b +0x7b48 0x7ad1 +0x7b49 0x7ae7 +0x7b4a 0xfa1c +0x7b4b 0x7aeb +0x7b4c 0x7b9e +0x7b4d 0xfa1d +0x7b4e 0x7d48 +0x7b4f 0x7d5c +0x7b50 0x7db7 +0x7b51 0x7da0 +0x7b52 0x7dd6 +0x7b53 0x7e52 +0x7b54 0x7f47 +0x7b55 0x7fa1 +0x7b56 0xfa1e +0x7b57 0x8301 +0x7b58 0x8362 +0x7b59 0x837f +0x7b5a 0x83c7 +0x7b5b 0x83f6 +0x7b5c 0x8448 +0x7b5d 0x84b4 +0x7b5e 0x8553 +0x7b5f 0x8559 +0x7b60 0x856b +0x7b61 0xfa1f +0x7b62 0x85b0 +0x7b63 0xfa20 +0x7b64 0xfa21 +0x7b65 0x8807 +0x7b66 0x88f5 +0x7b67 0x8a12 +0x7b68 0x8a37 +0x7b69 0x8a79 +0x7b6a 0x8aa7 +0x7b6b 0x8abe +0x7b6c 0x8adf +0x7b6d 0xfa22 +0x7b6e 0x8af6 +0x7b6f 0x8b53 +0x7b70 0x8b7f +0x7b71 0x8cf0 +0x7b72 0x8cf4 +0x7b73 0x8d12 +0x7b74 0x8d76 +0x7b75 0xfa23 +0x7b76 0x8ecf +0x7b77 0xfa24 +0x7b78 0xfa25 +0x7b79 0x9067 +0x7b7a 0x90de +0x7b7b 0xfa26 +0x7b7c 0x9115 +0x7b7d 0x9127 +0x7b7e 0x91da +0x7c21 0x91d7 +0x7c22 0x91de +0x7c23 0x91ed +0x7c24 0x91ee +0x7c25 0x91e4 +0x7c26 0x91e5 +0x7c27 0x9206 +0x7c28 0x9210 +0x7c29 0x920a +0x7c2a 0x923a +0x7c2b 0x9240 +0x7c2c 0x923c +0x7c2d 0x924e +0x7c2e 0x9259 +0x7c2f 0x9251 +0x7c30 0x9239 +0x7c31 0x9267 +0x7c32 0x92a7 +0x7c33 0x9277 +0x7c34 0x9278 +0x7c35 0x92e7 +0x7c36 0x92d7 +0x7c37 0x92d9 +0x7c38 0x92d0 +0x7c39 0xfa27 +0x7c3a 0x92d5 +0x7c3b 0x92e0 +0x7c3c 0x92d3 +0x7c3d 0x9325 +0x7c3e 0x9321 +0x7c3f 0x92fb +0x7c40 0xfa28 +0x7c41 0x931e +0x7c42 0x92ff +0x7c43 0x931d +0x7c44 0x9302 +0x7c45 0x9370 +0x7c46 0x9357 +0x7c47 0x93a4 +0x7c48 0x93c6 +0x7c49 0x93de +0x7c4a 0x93f8 +0x7c4b 0x9431 +0x7c4c 0x9445 +0x7c4d 0x9448 +0x7c4e 0x9592 +0x7c4f 0xf9dc +0x7c50 0xfa29 +0x7c51 0x969d +0x7c52 0x96af +0x7c53 0x9733 +0x7c54 0x973b +0x7c55 0x9743 +0x7c56 0x974d +0x7c57 0x974f +0x7c58 0x9751 +0x7c59 0x9755 +0x7c5a 0x9857 +0x7c5b 0x9865 +0x7c5c 0xfa2a +0x7c5d 0xfa2b +0x7c5e 0x9927 +0x7c5f 0xfa2c +0x7c60 0x999e +0x7c61 0x9a4e +0x7c62 0x9ad9 +0x7c63 0x9adc +0x7c64 0x9b75 +0x7c65 0x9b72 +0x7c66 0x9b8f +0x7c67 0x9bb1 +0x7c68 0x9bbb +0x7c69 0x9c00 +0x7c6a 0x9d70 +0x7c6b 0x9d6b +0x7c6c 0xfa2d +0x7c6d 0x9e19 +0x7c6e 0x9ed1 +0x7c71 0x2170 +0x7c72 0x2171 +0x7c73 0x2172 +0x7c74 0x2173 +0x7c75 0x2174 +0x7c76 0x2175 +0x7c77 0x2176 +0x7c78 0x2177 +0x7c79 0x2178 +0x7c7a 0x2179 +0x7c7b 0x3052 +0x7c7c 0x00a6 +0x7c7d 0xff07 +0x7c7e 0xff02 +0x932b 0x2160 +0x932c 0x2161 +0x932d 0x2162 +0x932e 0x2163 +0x932f 0x2164 +0x9330 0x2165 +0x9331 0x2166 +0x9332 0x2167 +0x9333 0x2168 +0x9334 0x2169 +0x9339 0x3231 +0x933a 0x2116 +0x933b 0x2121 diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/JIS_X_0212.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/JIS_X_0212.map Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,6067 @@ +0x222f 0x02d8 +0x2230 0x02c7 +0x2231 0x00b8 +0x2232 0x02d9 +0x2233 0x02dd +0x2234 0x00af +0x2235 0x02db +0x2236 0x02da +0x2237 0xff5e +0x2238 0x0384 +0x2239 0x0385 +0x2242 0x00a1 +0x2243 0x00a6 +0x2244 0x00bf +0x226b 0x00ba +0x226c 0x00aa +0x226d 0x00a9 +0x226e 0x00ae +0x226f 0x2122 +0x2270 0x00a4 +0x2271 0x2116 +0x2661 0x0386 +0x2662 0x0388 +0x2663 0x0389 +0x2664 0x038a +0x2665 0x03aa +0x2667 0x038c +0x2669 0x038e +0x266a 0x03ab +0x266c 0x038f +0x2671 0x03ac +0x2672 0x03ad +0x2673 0x03ae +0x2674 0x03af +0x2675 0x03ca +0x2676 0x0390 +0x2677 0x03cc +0x2678 0x03c2 +0x2679 0x03cd +0x267a 0x03cb +0x267b 0x03b0 +0x267c 0x03ce +0x2742 0x0402 +0x2743 0x0403 +0x2744 0x0404 +0x2745 0x0405 +0x2746 0x0406 +0x2747 0x0407 +0x2748 0x0408 +0x2749 0x0409 +0x274a 0x040a +0x274b 0x040b +0x274c 0x040c +0x274d 0x040e +0x274e 0x040f +0x2772 0x0452 +0x2773 0x0453 +0x2774 0x0454 +0x2775 0x0455 +0x2776 0x0456 +0x2777 0x0457 +0x2778 0x0458 +0x2779 0x0459 +0x277a 0x045a +0x277b 0x045b +0x277c 0x045c +0x277d 0x045e +0x277e 0x045f +0x2921 0x00c6 +0x2922 0x0110 +0x2924 0x0126 +0x2926 0x0132 +0x2928 0x0141 +0x2929 0x013f +0x292b 0x014a +0x292c 0x00d8 +0x292d 0x0152 +0x292f 0x0166 +0x2930 0x00de +0x2941 0x00e6 +0x2942 0x0111 +0x2943 0x00f0 +0x2944 0x0127 +0x2945 0x0131 +0x2946 0x0133 +0x2947 0x0138 +0x2948 0x0142 +0x2949 0x0140 +0x294a 0x0149 +0x294b 0x014b +0x294c 0x00f8 +0x294d 0x0153 +0x294e 0x00df +0x294f 0x0167 +0x2950 0x00fe +0x2a21 0x00c1 +0x2a22 0x00c0 +0x2a23 0x00c4 +0x2a24 0x00c2 +0x2a25 0x0102 +0x2a26 0x01cd +0x2a27 0x0100 +0x2a28 0x0104 +0x2a29 0x00c5 +0x2a2a 0x00c3 +0x2a2b 0x0106 +0x2a2c 0x0108 +0x2a2d 0x010c +0x2a2e 0x00c7 +0x2a2f 0x010a +0x2a30 0x010e +0x2a31 0x00c9 +0x2a32 0x00c8 +0x2a33 0x00cb +0x2a34 0x00ca +0x2a35 0x011a +0x2a36 0x0116 +0x2a37 0x0112 +0x2a38 0x0118 +0x2a3a 0x011c +0x2a3b 0x011e +0x2a3c 0x0122 +0x2a3d 0x0120 +0x2a3e 0x0124 +0x2a3f 0x00cd +0x2a40 0x00cc +0x2a41 0x00cf +0x2a42 0x00ce +0x2a43 0x01cf +0x2a44 0x0130 +0x2a45 0x012a +0x2a46 0x012e +0x2a47 0x0128 +0x2a48 0x0134 +0x2a49 0x0136 +0x2a4a 0x0139 +0x2a4b 0x013d +0x2a4c 0x013b +0x2a4d 0x0143 +0x2a4e 0x0147 +0x2a4f 0x0145 +0x2a50 0x00d1 +0x2a51 0x00d3 +0x2a52 0x00d2 +0x2a53 0x00d6 +0x2a54 0x00d4 +0x2a55 0x01d1 +0x2a56 0x0150 +0x2a57 0x014c +0x2a58 0x00d5 +0x2a59 0x0154 +0x2a5a 0x0158 +0x2a5b 0x0156 +0x2a5c 0x015a +0x2a5d 0x015c +0x2a5e 0x0160 +0x2a5f 0x015e +0x2a60 0x0164 +0x2a61 0x0162 +0x2a62 0x00da +0x2a63 0x00d9 +0x2a64 0x00dc +0x2a65 0x00db +0x2a66 0x016c +0x2a67 0x01d3 +0x2a68 0x0170 +0x2a69 0x016a +0x2a6a 0x0172 +0x2a6b 0x016e +0x2a6c 0x0168 +0x2a6d 0x01d7 +0x2a6e 0x01db +0x2a6f 0x01d9 +0x2a70 0x01d5 +0x2a71 0x0174 +0x2a72 0x00dd +0x2a73 0x0178 +0x2a74 0x0176 +0x2a75 0x0179 +0x2a76 0x017d +0x2a77 0x017b +0x2b21 0x00e1 +0x2b22 0x00e0 +0x2b23 0x00e4 +0x2b24 0x00e2 +0x2b25 0x0103 +0x2b26 0x01ce +0x2b27 0x0101 +0x2b28 0x0105 +0x2b29 0x00e5 +0x2b2a 0x00e3 +0x2b2b 0x0107 +0x2b2c 0x0109 +0x2b2d 0x010d +0x2b2e 0x00e7 +0x2b2f 0x010b +0x2b30 0x010f +0x2b31 0x00e9 +0x2b32 0x00e8 +0x2b33 0x00eb +0x2b34 0x00ea +0x2b35 0x011b +0x2b36 0x0117 +0x2b37 0x0113 +0x2b38 0x0119 +0x2b39 0x01f5 +0x2b3a 0x011d +0x2b3b 0x011f +0x2b3d 0x0121 +0x2b3e 0x0125 +0x2b3f 0x00ed +0x2b40 0x00ec +0x2b41 0x00ef +0x2b42 0x00ee +0x2b43 0x01d0 +0x2b45 0x012b +0x2b46 0x012f +0x2b47 0x0129 +0x2b48 0x0135 +0x2b49 0x0137 +0x2b4a 0x013a +0x2b4b 0x013e +0x2b4c 0x013c +0x2b4d 0x0144 +0x2b4e 0x0148 +0x2b4f 0x0146 +0x2b50 0x00f1 +0x2b51 0x00f3 +0x2b52 0x00f2 +0x2b53 0x00f6 +0x2b54 0x00f4 +0x2b55 0x01d2 +0x2b56 0x0151 +0x2b57 0x014d +0x2b58 0x00f5 +0x2b59 0x0155 +0x2b5a 0x0159 +0x2b5b 0x0157 +0x2b5c 0x015b +0x2b5d 0x015d +0x2b5e 0x0161 +0x2b5f 0x015f +0x2b60 0x0165 +0x2b61 0x0163 +0x2b62 0x00fa +0x2b63 0x00f9 +0x2b64 0x00fc +0x2b65 0x00fb +0x2b66 0x016d +0x2b67 0x01d4 +0x2b68 0x0171 +0x2b69 0x016b +0x2b6a 0x0173 +0x2b6b 0x016f +0x2b6c 0x0169 +0x2b6d 0x01d8 +0x2b6e 0x01dc +0x2b6f 0x01da +0x2b70 0x01d6 +0x2b71 0x0175 +0x2b72 0x00fd +0x2b73 0x00ff +0x2b74 0x0177 +0x2b75 0x017a +0x2b76 0x017e +0x2b77 0x017c +0x3021 0x4e02 +0x3022 0x4e04 +0x3023 0x4e05 +0x3024 0x4e0c +0x3025 0x4e12 +0x3026 0x4e1f +0x3027 0x4e23 +0x3028 0x4e24 +0x3029 0x4e28 +0x302a 0x4e2b +0x302b 0x4e2e +0x302c 0x4e2f +0x302d 0x4e30 +0x302e 0x4e35 +0x302f 0x4e40 +0x3030 0x4e41 +0x3031 0x4e44 +0x3032 0x4e47 +0x3033 0x4e51 +0x3034 0x4e5a +0x3035 0x4e5c +0x3036 0x4e63 +0x3037 0x4e68 +0x3038 0x4e69 +0x3039 0x4e74 +0x303a 0x4e75 +0x303b 0x4e79 +0x303c 0x4e7f +0x303d 0x4e8d +0x303e 0x4e96 +0x303f 0x4e97 +0x3040 0x4e9d +0x3041 0x4eaf +0x3042 0x4eb9 +0x3043 0x4ec3 +0x3044 0x4ed0 +0x3045 0x4eda +0x3046 0x4edb +0x3047 0x4ee0 +0x3048 0x4ee1 +0x3049 0x4ee2 +0x304a 0x4ee8 +0x304b 0x4eef +0x304c 0x4ef1 +0x304d 0x4ef3 +0x304e 0x4ef5 +0x304f 0x4efd +0x3050 0x4efe +0x3051 0x4eff +0x3052 0x4f00 +0x3053 0x4f02 +0x3054 0x4f03 +0x3055 0x4f08 +0x3056 0x4f0b +0x3057 0x4f0c +0x3058 0x4f12 +0x3059 0x4f15 +0x305a 0x4f16 +0x305b 0x4f17 +0x305c 0x4f19 +0x305d 0x4f2e +0x305e 0x4f31 +0x305f 0x4f60 +0x3060 0x4f33 +0x3061 0x4f35 +0x3062 0x4f37 +0x3063 0x4f39 +0x3064 0x4f3b +0x3065 0x4f3e +0x3066 0x4f40 +0x3067 0x4f42 +0x3068 0x4f48 +0x3069 0x4f49 +0x306a 0x4f4b +0x306b 0x4f4c +0x306c 0x4f52 +0x306d 0x4f54 +0x306e 0x4f56 +0x306f 0x4f58 +0x3070 0x4f5f +0x3071 0x4f63 +0x3072 0x4f6a +0x3073 0x4f6c +0x3074 0x4f6e +0x3075 0x4f71 +0x3076 0x4f77 +0x3077 0x4f78 +0x3078 0x4f79 +0x3079 0x4f7a +0x307a 0x4f7d +0x307b 0x4f7e +0x307c 0x4f81 +0x307d 0x4f82 +0x307e 0x4f84 +0x3121 0x4f85 +0x3122 0x4f89 +0x3123 0x4f8a +0x3124 0x4f8c +0x3125 0x4f8e +0x3126 0x4f90 +0x3127 0x4f92 +0x3128 0x4f93 +0x3129 0x4f94 +0x312a 0x4f97 +0x312b 0x4f99 +0x312c 0x4f9a +0x312d 0x4f9e +0x312e 0x4f9f +0x312f 0x4fb2 +0x3130 0x4fb7 +0x3131 0x4fb9 +0x3132 0x4fbb +0x3133 0x4fbc +0x3134 0x4fbd +0x3135 0x4fbe +0x3136 0x4fc0 +0x3137 0x4fc1 +0x3138 0x4fc5 +0x3139 0x4fc6 +0x313a 0x4fc8 +0x313b 0x4fc9 +0x313c 0x4fcb +0x313d 0x4fcc +0x313e 0x4fcd +0x313f 0x4fcf +0x3140 0x4fd2 +0x3141 0x4fdc +0x3142 0x4fe0 +0x3143 0x4fe2 +0x3144 0x4ff0 +0x3145 0x4ff2 +0x3146 0x4ffc +0x3147 0x4ffd +0x3148 0x4fff +0x3149 0x5000 +0x314a 0x5001 +0x314b 0x5004 +0x314c 0x5007 +0x314d 0x500a +0x314e 0x500c +0x314f 0x500e +0x3150 0x5010 +0x3151 0x5013 +0x3152 0x5017 +0x3153 0x5018 +0x3154 0x501b +0x3155 0x501c +0x3156 0x501d +0x3157 0x501e +0x3158 0x5022 +0x3159 0x5027 +0x315a 0x502e +0x315b 0x5030 +0x315c 0x5032 +0x315d 0x5033 +0x315e 0x5035 +0x315f 0x5040 +0x3160 0x5041 +0x3161 0x5042 +0x3162 0x5045 +0x3163 0x5046 +0x3164 0x504a +0x3165 0x504c +0x3166 0x504e +0x3167 0x5051 +0x3168 0x5052 +0x3169 0x5053 +0x316a 0x5057 +0x316b 0x5059 +0x316c 0x505f +0x316d 0x5060 +0x316e 0x5062 +0x316f 0x5063 +0x3170 0x5066 +0x3171 0x5067 +0x3172 0x506a +0x3173 0x506d +0x3174 0x5070 +0x3175 0x5071 +0x3176 0x503b +0x3177 0x5081 +0x3178 0x5083 +0x3179 0x5084 +0x317a 0x5086 +0x317b 0x508a +0x317c 0x508e +0x317d 0x508f +0x317e 0x5090 +0x3221 0x5092 +0x3222 0x5093 +0x3223 0x5094 +0x3224 0x5096 +0x3225 0x509b +0x3226 0x509c +0x3227 0x509e +0x3228 0x509f +0x3229 0x50a0 +0x322a 0x50a1 +0x322b 0x50a2 +0x322c 0x50aa +0x322d 0x50af +0x322e 0x50b0 +0x322f 0x50b9 +0x3230 0x50ba +0x3231 0x50bd +0x3232 0x50c0 +0x3233 0x50c3 +0x3234 0x50c4 +0x3235 0x50c7 +0x3236 0x50cc +0x3237 0x50ce +0x3238 0x50d0 +0x3239 0x50d3 +0x323a 0x50d4 +0x323b 0x50d8 +0x323c 0x50dc +0x323d 0x50dd +0x323e 0x50df +0x323f 0x50e2 +0x3240 0x50e4 +0x3241 0x50e6 +0x3242 0x50e8 +0x3243 0x50e9 +0x3244 0x50ef +0x3245 0x50f1 +0x3246 0x50f6 +0x3247 0x50fa +0x3248 0x50fe +0x3249 0x5103 +0x324a 0x5106 +0x324b 0x5107 +0x324c 0x5108 +0x324d 0x510b +0x324e 0x510c +0x324f 0x510d +0x3250 0x510e +0x3251 0x50f2 +0x3252 0x5110 +0x3253 0x5117 +0x3254 0x5119 +0x3255 0x511b +0x3256 0x511c +0x3257 0x511d +0x3258 0x511e +0x3259 0x5123 +0x325a 0x5127 +0x325b 0x5128 +0x325c 0x512c +0x325d 0x512d +0x325e 0x512f +0x325f 0x5131 +0x3260 0x5133 +0x3261 0x5134 +0x3262 0x5135 +0x3263 0x5138 +0x3264 0x5139 +0x3265 0x5142 +0x3266 0x514a +0x3267 0x514f +0x3268 0x5153 +0x3269 0x5155 +0x326a 0x5157 +0x326b 0x5158 +0x326c 0x515f +0x326d 0x5164 +0x326e 0x5166 +0x326f 0x517e +0x3270 0x5183 +0x3271 0x5184 +0x3272 0x518b +0x3273 0x518e +0x3274 0x5198 +0x3275 0x519d +0x3276 0x51a1 +0x3277 0x51a3 +0x3278 0x51ad +0x3279 0x51b8 +0x327a 0x51ba +0x327b 0x51bc +0x327c 0x51be +0x327d 0x51bf +0x327e 0x51c2 +0x3321 0x51c8 +0x3322 0x51cf +0x3323 0x51d1 +0x3324 0x51d2 +0x3325 0x51d3 +0x3326 0x51d5 +0x3327 0x51d8 +0x3328 0x51de +0x3329 0x51e2 +0x332a 0x51e5 +0x332b 0x51ee +0x332c 0x51f2 +0x332d 0x51f3 +0x332e 0x51f4 +0x332f 0x51f7 +0x3330 0x5201 +0x3331 0x5202 +0x3332 0x5205 +0x3333 0x5212 +0x3334 0x5213 +0x3335 0x5215 +0x3336 0x5216 +0x3337 0x5218 +0x3338 0x5222 +0x3339 0x5228 +0x333a 0x5231 +0x333b 0x5232 +0x333c 0x5235 +0x333d 0x523c +0x333e 0x5245 +0x333f 0x5249 +0x3340 0x5255 +0x3341 0x5257 +0x3342 0x5258 +0x3343 0x525a +0x3344 0x525c +0x3345 0x525f +0x3346 0x5260 +0x3347 0x5261 +0x3348 0x5266 +0x3349 0x526e +0x334a 0x5277 +0x334b 0x5278 +0x334c 0x5279 +0x334d 0x5280 +0x334e 0x5282 +0x334f 0x5285 +0x3350 0x528a +0x3351 0x528c +0x3352 0x5293 +0x3353 0x5295 +0x3354 0x5296 +0x3355 0x5297 +0x3356 0x5298 +0x3357 0x529a +0x3358 0x529c +0x3359 0x52a4 +0x335a 0x52a5 +0x335b 0x52a6 +0x335c 0x52a7 +0x335d 0x52af +0x335e 0x52b0 +0x335f 0x52b6 +0x3360 0x52b7 +0x3361 0x52b8 +0x3362 0x52ba +0x3363 0x52bb +0x3364 0x52bd +0x3365 0x52c0 +0x3366 0x52c4 +0x3367 0x52c6 +0x3368 0x52c8 +0x3369 0x52cc +0x336a 0x52cf +0x336b 0x52d1 +0x336c 0x52d4 +0x336d 0x52d6 +0x336e 0x52db +0x336f 0x52dc +0x3370 0x52e1 +0x3371 0x52e5 +0x3372 0x52e8 +0x3373 0x52e9 +0x3374 0x52ea +0x3375 0x52ec +0x3376 0x52f0 +0x3377 0x52f1 +0x3378 0x52f4 +0x3379 0x52f6 +0x337a 0x52f7 +0x337b 0x5300 +0x337c 0x5303 +0x337d 0x530a +0x337e 0x530b +0x3421 0x530c +0x3422 0x5311 +0x3423 0x5313 +0x3424 0x5318 +0x3425 0x531b +0x3426 0x531c +0x3427 0x531e +0x3428 0x531f +0x3429 0x5325 +0x342a 0x5327 +0x342b 0x5328 +0x342c 0x5329 +0x342d 0x532b +0x342e 0x532c +0x342f 0x532d +0x3430 0x5330 +0x3431 0x5332 +0x3432 0x5335 +0x3433 0x533c +0x3434 0x533d +0x3435 0x533e +0x3436 0x5342 +0x3437 0x534c +0x3438 0x534b +0x3439 0x5359 +0x343a 0x535b +0x343b 0x5361 +0x343c 0x5363 +0x343d 0x5365 +0x343e 0x536c +0x343f 0x536d +0x3440 0x5372 +0x3441 0x5379 +0x3442 0x537e +0x3443 0x5383 +0x3444 0x5387 +0x3445 0x5388 +0x3446 0x538e +0x3447 0x5393 +0x3448 0x5394 +0x3449 0x5399 +0x344a 0x539d +0x344b 0x53a1 +0x344c 0x53a4 +0x344d 0x53aa +0x344e 0x53ab +0x344f 0x53af +0x3450 0x53b2 +0x3451 0x53b4 +0x3452 0x53b5 +0x3453 0x53b7 +0x3454 0x53b8 +0x3455 0x53ba +0x3456 0x53bd +0x3457 0x53c0 +0x3458 0x53c5 +0x3459 0x53cf +0x345a 0x53d2 +0x345b 0x53d3 +0x345c 0x53d5 +0x345d 0x53da +0x345e 0x53dd +0x345f 0x53de +0x3460 0x53e0 +0x3461 0x53e6 +0x3462 0x53e7 +0x3463 0x53f5 +0x3464 0x5402 +0x3465 0x5413 +0x3466 0x541a +0x3467 0x5421 +0x3468 0x5427 +0x3469 0x5428 +0x346a 0x542a +0x346b 0x542f +0x346c 0x5431 +0x346d 0x5434 +0x346e 0x5435 +0x346f 0x5443 +0x3470 0x5444 +0x3471 0x5447 +0x3472 0x544d +0x3473 0x544f +0x3474 0x545e +0x3475 0x5462 +0x3476 0x5464 +0x3477 0x5466 +0x3478 0x5467 +0x3479 0x5469 +0x347a 0x546b +0x347b 0x546d +0x347c 0x546e +0x347d 0x5474 +0x347e 0x547f +0x3521 0x5481 +0x3522 0x5483 +0x3523 0x5485 +0x3524 0x5488 +0x3525 0x5489 +0x3526 0x548d +0x3527 0x5491 +0x3528 0x5495 +0x3529 0x5496 +0x352a 0x549c +0x352b 0x549f +0x352c 0x54a1 +0x352d 0x54a6 +0x352e 0x54a7 +0x352f 0x54a9 +0x3530 0x54aa +0x3531 0x54ad +0x3532 0x54ae +0x3533 0x54b1 +0x3534 0x54b7 +0x3535 0x54b9 +0x3536 0x54ba +0x3537 0x54bb +0x3538 0x54bf +0x3539 0x54c6 +0x353a 0x54ca +0x353b 0x54cd +0x353c 0x54ce +0x353d 0x54e0 +0x353e 0x54ea +0x353f 0x54ec +0x3540 0x54ef +0x3541 0x54f6 +0x3542 0x54fc +0x3543 0x54fe +0x3544 0x54ff +0x3545 0x5500 +0x3546 0x5501 +0x3547 0x5505 +0x3548 0x5508 +0x3549 0x5509 +0x354a 0x550c +0x354b 0x550d +0x354c 0x550e +0x354d 0x5515 +0x354e 0x552a +0x354f 0x552b +0x3550 0x5532 +0x3551 0x5535 +0x3552 0x5536 +0x3553 0x553b +0x3554 0x553c +0x3555 0x553d +0x3556 0x5541 +0x3557 0x5547 +0x3558 0x5549 +0x3559 0x554a +0x355a 0x554d +0x355b 0x5550 +0x355c 0x5551 +0x355d 0x5558 +0x355e 0x555a +0x355f 0x555b +0x3560 0x555e +0x3561 0x5560 +0x3562 0x5561 +0x3563 0x5564 +0x3564 0x5566 +0x3565 0x557f +0x3566 0x5581 +0x3567 0x5582 +0x3568 0x5586 +0x3569 0x5588 +0x356a 0x558e +0x356b 0x558f +0x356c 0x5591 +0x356d 0x5592 +0x356e 0x5593 +0x356f 0x5594 +0x3570 0x5597 +0x3571 0x55a3 +0x3572 0x55a4 +0x3573 0x55ad +0x3574 0x55b2 +0x3575 0x55bf +0x3576 0x55c1 +0x3577 0x55c3 +0x3578 0x55c6 +0x3579 0x55c9 +0x357a 0x55cb +0x357b 0x55cc +0x357c 0x55ce +0x357d 0x55d1 +0x357e 0x55d2 +0x3621 0x55d3 +0x3622 0x55d7 +0x3623 0x55d8 +0x3624 0x55db +0x3625 0x55de +0x3626 0x55e2 +0x3627 0x55e9 +0x3628 0x55f6 +0x3629 0x55ff +0x362a 0x5605 +0x362b 0x5608 +0x362c 0x560a +0x362d 0x560d +0x362e 0x560e +0x362f 0x560f +0x3630 0x5610 +0x3631 0x5611 +0x3632 0x5612 +0x3633 0x5619 +0x3634 0x562c +0x3635 0x5630 +0x3636 0x5633 +0x3637 0x5635 +0x3638 0x5637 +0x3639 0x5639 +0x363a 0x563b +0x363b 0x563c +0x363c 0x563d +0x363d 0x563f +0x363e 0x5640 +0x363f 0x5641 +0x3640 0x5643 +0x3641 0x5644 +0x3642 0x5646 +0x3643 0x5649 +0x3644 0x564b +0x3645 0x564d +0x3646 0x564f +0x3647 0x5654 +0x3648 0x565e +0x3649 0x5660 +0x364a 0x5661 +0x364b 0x5662 +0x364c 0x5663 +0x364d 0x5666 +0x364e 0x5669 +0x364f 0x566d +0x3650 0x566f +0x3651 0x5671 +0x3652 0x5672 +0x3653 0x5675 +0x3654 0x5684 +0x3655 0x5685 +0x3656 0x5688 +0x3657 0x568b +0x3658 0x568c +0x3659 0x5695 +0x365a 0x5699 +0x365b 0x569a +0x365c 0x569d +0x365d 0x569e +0x365e 0x569f +0x365f 0x56a6 +0x3660 0x56a7 +0x3661 0x56a8 +0x3662 0x56a9 +0x3663 0x56ab +0x3664 0x56ac +0x3665 0x56ad +0x3666 0x56b1 +0x3667 0x56b3 +0x3668 0x56b7 +0x3669 0x56be +0x366a 0x56c5 +0x366b 0x56c9 +0x366c 0x56ca +0x366d 0x56cb +0x366e 0x56cf +0x366f 0x56d0 +0x3670 0x56cc +0x3671 0x56cd +0x3672 0x56d9 +0x3673 0x56dc +0x3674 0x56dd +0x3675 0x56df +0x3676 0x56e1 +0x3677 0x56e4 +0x3678 0x56e5 +0x3679 0x56e6 +0x367a 0x56e7 +0x367b 0x56e8 +0x367c 0x56f1 +0x367d 0x56eb +0x367e 0x56ed +0x3721 0x56f6 +0x3722 0x56f7 +0x3723 0x5701 +0x3724 0x5702 +0x3725 0x5707 +0x3726 0x570a +0x3727 0x570c +0x3728 0x5711 +0x3729 0x5715 +0x372a 0x571a +0x372b 0x571b +0x372c 0x571d +0x372d 0x5720 +0x372e 0x5722 +0x372f 0x5723 +0x3730 0x5724 +0x3731 0x5725 +0x3732 0x5729 +0x3733 0x572a +0x3734 0x572c +0x3735 0x572e +0x3736 0x572f +0x3737 0x5733 +0x3738 0x5734 +0x3739 0x573d +0x373a 0x573e +0x373b 0x573f +0x373c 0x5745 +0x373d 0x5746 +0x373e 0x574c +0x373f 0x574d +0x3740 0x5752 +0x3741 0x5762 +0x3742 0x5765 +0x3743 0x5767 +0x3744 0x5768 +0x3745 0x576b +0x3746 0x576d +0x3747 0x576e +0x3748 0x576f +0x3749 0x5770 +0x374a 0x5771 +0x374b 0x5773 +0x374c 0x5774 +0x374d 0x5775 +0x374e 0x5777 +0x374f 0x5779 +0x3750 0x577a +0x3751 0x577b +0x3752 0x577c +0x3753 0x577e +0x3754 0x5781 +0x3755 0x5783 +0x3756 0x578c +0x3757 0x5794 +0x3758 0x5797 +0x3759 0x5799 +0x375a 0x579a +0x375b 0x579c +0x375c 0x579d +0x375d 0x579e +0x375e 0x579f +0x375f 0x57a1 +0x3760 0x5795 +0x3761 0x57a7 +0x3762 0x57a8 +0x3763 0x57a9 +0x3764 0x57ac +0x3765 0x57b8 +0x3766 0x57bd +0x3767 0x57c7 +0x3768 0x57c8 +0x3769 0x57cc +0x376a 0x57cf +0x376b 0x57d5 +0x376c 0x57dd +0x376d 0x57de +0x376e 0x57e4 +0x376f 0x57e6 +0x3770 0x57e7 +0x3771 0x57e9 +0x3772 0x57ed +0x3773 0x57f0 +0x3774 0x57f5 +0x3775 0x57f6 +0x3776 0x57f8 +0x3777 0x57fd +0x3778 0x57fe +0x3779 0x57ff +0x377a 0x5803 +0x377b 0x5804 +0x377c 0x5808 +0x377d 0x5809 +0x377e 0x57e1 +0x3821 0x580c +0x3822 0x580d +0x3823 0x581b +0x3824 0x581e +0x3825 0x581f +0x3826 0x5820 +0x3827 0x5826 +0x3828 0x5827 +0x3829 0x582d +0x382a 0x5832 +0x382b 0x5839 +0x382c 0x583f +0x382d 0x5849 +0x382e 0x584c +0x382f 0x584d +0x3830 0x584f +0x3831 0x5850 +0x3832 0x5855 +0x3833 0x585f +0x3834 0x5861 +0x3835 0x5864 +0x3836 0x5867 +0x3837 0x5868 +0x3838 0x5878 +0x3839 0x587c +0x383a 0x587f +0x383b 0x5880 +0x383c 0x5881 +0x383d 0x5887 +0x383e 0x5888 +0x383f 0x5889 +0x3840 0x588a +0x3841 0x588c +0x3842 0x588d +0x3843 0x588f +0x3844 0x5890 +0x3845 0x5894 +0x3846 0x5896 +0x3847 0x589d +0x3848 0x58a0 +0x3849 0x58a1 +0x384a 0x58a2 +0x384b 0x58a6 +0x384c 0x58a9 +0x384d 0x58b1 +0x384e 0x58b2 +0x384f 0x58c4 +0x3850 0x58bc +0x3851 0x58c2 +0x3852 0x58c8 +0x3853 0x58cd +0x3854 0x58ce +0x3855 0x58d0 +0x3856 0x58d2 +0x3857 0x58d4 +0x3858 0x58d6 +0x3859 0x58da +0x385a 0x58dd +0x385b 0x58e1 +0x385c 0x58e2 +0x385d 0x58e9 +0x385e 0x58f3 +0x385f 0x5905 +0x3860 0x5906 +0x3861 0x590b +0x3862 0x590c +0x3863 0x5912 +0x3864 0x5913 +0x3865 0x5914 +0x3866 0x8641 +0x3867 0x591d +0x3868 0x5921 +0x3869 0x5923 +0x386a 0x5924 +0x386b 0x5928 +0x386c 0x592f +0x386d 0x5930 +0x386e 0x5933 +0x386f 0x5935 +0x3870 0x5936 +0x3871 0x593f +0x3872 0x5943 +0x3873 0x5946 +0x3874 0x5952 +0x3875 0x5953 +0x3876 0x5959 +0x3877 0x595b +0x3878 0x595d +0x3879 0x595e +0x387a 0x595f +0x387b 0x5961 +0x387c 0x5963 +0x387d 0x596b +0x387e 0x596d +0x3921 0x596f +0x3922 0x5972 +0x3923 0x5975 +0x3924 0x5976 +0x3925 0x5979 +0x3926 0x597b +0x3927 0x597c +0x3928 0x598b +0x3929 0x598c +0x392a 0x598e +0x392b 0x5992 +0x392c 0x5995 +0x392d 0x5997 +0x392e 0x599f +0x392f 0x59a4 +0x3930 0x59a7 +0x3931 0x59ad +0x3932 0x59ae +0x3933 0x59af +0x3934 0x59b0 +0x3935 0x59b3 +0x3936 0x59b7 +0x3937 0x59ba +0x3938 0x59bc +0x3939 0x59c1 +0x393a 0x59c3 +0x393b 0x59c4 +0x393c 0x59c8 +0x393d 0x59ca +0x393e 0x59cd +0x393f 0x59d2 +0x3940 0x59dd +0x3941 0x59de +0x3942 0x59df +0x3943 0x59e3 +0x3944 0x59e4 +0x3945 0x59e7 +0x3946 0x59ee +0x3947 0x59ef +0x3948 0x59f1 +0x3949 0x59f2 +0x394a 0x59f4 +0x394b 0x59f7 +0x394c 0x5a00 +0x394d 0x5a04 +0x394e 0x5a0c +0x394f 0x5a0d +0x3950 0x5a0e +0x3951 0x5a12 +0x3952 0x5a13 +0x3953 0x5a1e +0x3954 0x5a23 +0x3955 0x5a24 +0x3956 0x5a27 +0x3957 0x5a28 +0x3958 0x5a2a +0x3959 0x5a2d +0x395a 0x5a30 +0x395b 0x5a44 +0x395c 0x5a45 +0x395d 0x5a47 +0x395e 0x5a48 +0x395f 0x5a4c +0x3960 0x5a50 +0x3961 0x5a55 +0x3962 0x5a5e +0x3963 0x5a63 +0x3964 0x5a65 +0x3965 0x5a67 +0x3966 0x5a6d +0x3967 0x5a77 +0x3968 0x5a7a +0x3969 0x5a7b +0x396a 0x5a7e +0x396b 0x5a8b +0x396c 0x5a90 +0x396d 0x5a93 +0x396e 0x5a96 +0x396f 0x5a99 +0x3970 0x5a9c +0x3971 0x5a9e +0x3972 0x5a9f +0x3973 0x5aa0 +0x3974 0x5aa2 +0x3975 0x5aa7 +0x3976 0x5aac +0x3977 0x5ab1 +0x3978 0x5ab2 +0x3979 0x5ab3 +0x397a 0x5ab5 +0x397b 0x5ab8 +0x397c 0x5aba +0x397d 0x5abb +0x397e 0x5abf +0x3a21 0x5ac4 +0x3a22 0x5ac6 +0x3a23 0x5ac8 +0x3a24 0x5acf +0x3a25 0x5ada +0x3a26 0x5adc +0x3a27 0x5ae0 +0x3a28 0x5ae5 +0x3a29 0x5aea +0x3a2a 0x5aee +0x3a2b 0x5af5 +0x3a2c 0x5af6 +0x3a2d 0x5afd +0x3a2e 0x5b00 +0x3a2f 0x5b01 +0x3a30 0x5b08 +0x3a31 0x5b17 +0x3a32 0x5b34 +0x3a33 0x5b19 +0x3a34 0x5b1b +0x3a35 0x5b1d +0x3a36 0x5b21 +0x3a37 0x5b25 +0x3a38 0x5b2d +0x3a39 0x5b38 +0x3a3a 0x5b41 +0x3a3b 0x5b4b +0x3a3c 0x5b4c +0x3a3d 0x5b52 +0x3a3e 0x5b56 +0x3a3f 0x5b5e +0x3a40 0x5b68 +0x3a41 0x5b6e +0x3a42 0x5b6f +0x3a43 0x5b7c +0x3a44 0x5b7d +0x3a45 0x5b7e +0x3a46 0x5b7f +0x3a47 0x5b81 +0x3a48 0x5b84 +0x3a49 0x5b86 +0x3a4a 0x5b8a +0x3a4b 0x5b8e +0x3a4c 0x5b90 +0x3a4d 0x5b91 +0x3a4e 0x5b93 +0x3a4f 0x5b94 +0x3a50 0x5b96 +0x3a51 0x5ba8 +0x3a52 0x5ba9 +0x3a53 0x5bac +0x3a54 0x5bad +0x3a55 0x5baf +0x3a56 0x5bb1 +0x3a57 0x5bb2 +0x3a58 0x5bb7 +0x3a59 0x5bba +0x3a5a 0x5bbc +0x3a5b 0x5bc0 +0x3a5c 0x5bc1 +0x3a5d 0x5bcd +0x3a5e 0x5bcf +0x3a5f 0x5bd6 +0x3a60 0x5bd7 +0x3a61 0x5bd8 +0x3a62 0x5bd9 +0x3a63 0x5bda +0x3a64 0x5be0 +0x3a65 0x5bef +0x3a66 0x5bf1 +0x3a67 0x5bf4 +0x3a68 0x5bfd +0x3a69 0x5c0c +0x3a6a 0x5c17 +0x3a6b 0x5c1e +0x3a6c 0x5c1f +0x3a6d 0x5c23 +0x3a6e 0x5c26 +0x3a6f 0x5c29 +0x3a70 0x5c2b +0x3a71 0x5c2c +0x3a72 0x5c2e +0x3a73 0x5c30 +0x3a74 0x5c32 +0x3a75 0x5c35 +0x3a76 0x5c36 +0x3a77 0x5c59 +0x3a78 0x5c5a +0x3a79 0x5c5c +0x3a7a 0x5c62 +0x3a7b 0x5c63 +0x3a7c 0x5c67 +0x3a7d 0x5c68 +0x3a7e 0x5c69 +0x3b21 0x5c6d +0x3b22 0x5c70 +0x3b23 0x5c74 +0x3b24 0x5c75 +0x3b25 0x5c7a +0x3b26 0x5c7b +0x3b27 0x5c7c +0x3b28 0x5c7d +0x3b29 0x5c87 +0x3b2a 0x5c88 +0x3b2b 0x5c8a +0x3b2c 0x5c8f +0x3b2d 0x5c92 +0x3b2e 0x5c9d +0x3b2f 0x5c9f +0x3b30 0x5ca0 +0x3b31 0x5ca2 +0x3b32 0x5ca3 +0x3b33 0x5ca6 +0x3b34 0x5caa +0x3b35 0x5cb2 +0x3b36 0x5cb4 +0x3b37 0x5cb5 +0x3b38 0x5cba +0x3b39 0x5cc9 +0x3b3a 0x5ccb +0x3b3b 0x5cd2 +0x3b3c 0x5cdd +0x3b3d 0x5cd7 +0x3b3e 0x5cee +0x3b3f 0x5cf1 +0x3b40 0x5cf2 +0x3b41 0x5cf4 +0x3b42 0x5d01 +0x3b43 0x5d06 +0x3b44 0x5d0d +0x3b45 0x5d12 +0x3b46 0x5d2b +0x3b47 0x5d23 +0x3b48 0x5d24 +0x3b49 0x5d26 +0x3b4a 0x5d27 +0x3b4b 0x5d31 +0x3b4c 0x5d34 +0x3b4d 0x5d39 +0x3b4e 0x5d3d +0x3b4f 0x5d3f +0x3b50 0x5d42 +0x3b51 0x5d43 +0x3b52 0x5d46 +0x3b53 0x5d48 +0x3b54 0x5d55 +0x3b55 0x5d51 +0x3b56 0x5d59 +0x3b57 0x5d4a +0x3b58 0x5d5f +0x3b59 0x5d60 +0x3b5a 0x5d61 +0x3b5b 0x5d62 +0x3b5c 0x5d64 +0x3b5d 0x5d6a +0x3b5e 0x5d6d +0x3b5f 0x5d70 +0x3b60 0x5d79 +0x3b61 0x5d7a +0x3b62 0x5d7e +0x3b63 0x5d7f +0x3b64 0x5d81 +0x3b65 0x5d83 +0x3b66 0x5d88 +0x3b67 0x5d8a +0x3b68 0x5d92 +0x3b69 0x5d93 +0x3b6a 0x5d94 +0x3b6b 0x5d95 +0x3b6c 0x5d99 +0x3b6d 0x5d9b +0x3b6e 0x5d9f +0x3b6f 0x5da0 +0x3b70 0x5da7 +0x3b71 0x5dab +0x3b72 0x5db0 +0x3b73 0x5db4 +0x3b74 0x5db8 +0x3b75 0x5db9 +0x3b76 0x5dc3 +0x3b77 0x5dc7 +0x3b78 0x5dcb +0x3b79 0x5dd0 +0x3b7a 0x5dce +0x3b7b 0x5dd8 +0x3b7c 0x5dd9 +0x3b7d 0x5de0 +0x3b7e 0x5de4 +0x3c21 0x5de9 +0x3c22 0x5df8 +0x3c23 0x5df9 +0x3c24 0x5e00 +0x3c25 0x5e07 +0x3c26 0x5e0d +0x3c27 0x5e12 +0x3c28 0x5e14 +0x3c29 0x5e15 +0x3c2a 0x5e18 +0x3c2b 0x5e1f +0x3c2c 0x5e20 +0x3c2d 0x5e2e +0x3c2e 0x5e28 +0x3c2f 0x5e32 +0x3c30 0x5e35 +0x3c31 0x5e3e +0x3c32 0x5e4b +0x3c33 0x5e50 +0x3c34 0x5e49 +0x3c35 0x5e51 +0x3c36 0x5e56 +0x3c37 0x5e58 +0x3c38 0x5e5b +0x3c39 0x5e5c +0x3c3a 0x5e5e +0x3c3b 0x5e68 +0x3c3c 0x5e6a +0x3c3d 0x5e6b +0x3c3e 0x5e6c +0x3c3f 0x5e6d +0x3c40 0x5e6e +0x3c41 0x5e70 +0x3c42 0x5e80 +0x3c43 0x5e8b +0x3c44 0x5e8e +0x3c45 0x5ea2 +0x3c46 0x5ea4 +0x3c47 0x5ea5 +0x3c48 0x5ea8 +0x3c49 0x5eaa +0x3c4a 0x5eac +0x3c4b 0x5eb1 +0x3c4c 0x5eb3 +0x3c4d 0x5ebd +0x3c4e 0x5ebe +0x3c4f 0x5ebf +0x3c50 0x5ec6 +0x3c51 0x5ecc +0x3c52 0x5ecb +0x3c53 0x5ece +0x3c54 0x5ed1 +0x3c55 0x5ed2 +0x3c56 0x5ed4 +0x3c57 0x5ed5 +0x3c58 0x5edc +0x3c59 0x5ede +0x3c5a 0x5ee5 +0x3c5b 0x5eeb +0x3c5c 0x5f02 +0x3c5d 0x5f06 +0x3c5e 0x5f07 +0x3c5f 0x5f08 +0x3c60 0x5f0e +0x3c61 0x5f19 +0x3c62 0x5f1c +0x3c63 0x5f1d +0x3c64 0x5f21 +0x3c65 0x5f22 +0x3c66 0x5f23 +0x3c67 0x5f24 +0x3c68 0x5f28 +0x3c69 0x5f2b +0x3c6a 0x5f2c +0x3c6b 0x5f2e +0x3c6c 0x5f30 +0x3c6d 0x5f34 +0x3c6e 0x5f36 +0x3c6f 0x5f3b +0x3c70 0x5f3d +0x3c71 0x5f3f +0x3c72 0x5f40 +0x3c73 0x5f44 +0x3c74 0x5f45 +0x3c75 0x5f47 +0x3c76 0x5f4d +0x3c77 0x5f50 +0x3c78 0x5f54 +0x3c79 0x5f58 +0x3c7a 0x5f5b +0x3c7b 0x5f60 +0x3c7c 0x5f63 +0x3c7d 0x5f64 +0x3c7e 0x5f67 +0x3d21 0x5f6f +0x3d22 0x5f72 +0x3d23 0x5f74 +0x3d24 0x5f75 +0x3d25 0x5f78 +0x3d26 0x5f7a +0x3d27 0x5f7d +0x3d28 0x5f7e +0x3d29 0x5f89 +0x3d2a 0x5f8d +0x3d2b 0x5f8f +0x3d2c 0x5f96 +0x3d2d 0x5f9c +0x3d2e 0x5f9d +0x3d2f 0x5fa2 +0x3d30 0x5fa7 +0x3d31 0x5fab +0x3d32 0x5fa4 +0x3d33 0x5fac +0x3d34 0x5faf +0x3d35 0x5fb0 +0x3d36 0x5fb1 +0x3d37 0x5fb8 +0x3d38 0x5fc4 +0x3d39 0x5fc7 +0x3d3a 0x5fc8 +0x3d3b 0x5fc9 +0x3d3c 0x5fcb +0x3d3d 0x5fd0 +0x3d3e 0x5fd1 +0x3d3f 0x5fd2 +0x3d40 0x5fd3 +0x3d41 0x5fd4 +0x3d42 0x5fde +0x3d43 0x5fe1 +0x3d44 0x5fe2 +0x3d45 0x5fe8 +0x3d46 0x5fe9 +0x3d47 0x5fea +0x3d48 0x5fec +0x3d49 0x5fed +0x3d4a 0x5fee +0x3d4b 0x5fef +0x3d4c 0x5ff2 +0x3d4d 0x5ff3 +0x3d4e 0x5ff6 +0x3d4f 0x5ffa +0x3d50 0x5ffc +0x3d51 0x6007 +0x3d52 0x600a +0x3d53 0x600d +0x3d54 0x6013 +0x3d55 0x6014 +0x3d56 0x6017 +0x3d57 0x6018 +0x3d58 0x601a +0x3d59 0x601f +0x3d5a 0x6024 +0x3d5b 0x602d +0x3d5c 0x6033 +0x3d5d 0x6035 +0x3d5e 0x6040 +0x3d5f 0x6047 +0x3d60 0x6048 +0x3d61 0x6049 +0x3d62 0x604c +0x3d63 0x6051 +0x3d64 0x6054 +0x3d65 0x6056 +0x3d66 0x6057 +0x3d67 0x605d +0x3d68 0x6061 +0x3d69 0x6067 +0x3d6a 0x6071 +0x3d6b 0x607e +0x3d6c 0x607f +0x3d6d 0x6082 +0x3d6e 0x6086 +0x3d6f 0x6088 +0x3d70 0x608a +0x3d71 0x608e +0x3d72 0x6091 +0x3d73 0x6093 +0x3d74 0x6095 +0x3d75 0x6098 +0x3d76 0x609d +0x3d77 0x609e +0x3d78 0x60a2 +0x3d79 0x60a4 +0x3d7a 0x60a5 +0x3d7b 0x60a8 +0x3d7c 0x60b0 +0x3d7d 0x60b1 +0x3d7e 0x60b7 +0x3e21 0x60bb +0x3e22 0x60be +0x3e23 0x60c2 +0x3e24 0x60c4 +0x3e25 0x60c8 +0x3e26 0x60c9 +0x3e27 0x60ca +0x3e28 0x60cb +0x3e29 0x60ce +0x3e2a 0x60cf +0x3e2b 0x60d4 +0x3e2c 0x60d5 +0x3e2d 0x60d9 +0x3e2e 0x60db +0x3e2f 0x60dd +0x3e30 0x60de +0x3e31 0x60e2 +0x3e32 0x60e5 +0x3e33 0x60f2 +0x3e34 0x60f5 +0x3e35 0x60f8 +0x3e36 0x60fc +0x3e37 0x60fd +0x3e38 0x6102 +0x3e39 0x6107 +0x3e3a 0x610a +0x3e3b 0x610c +0x3e3c 0x6110 +0x3e3d 0x6111 +0x3e3e 0x6112 +0x3e3f 0x6113 +0x3e40 0x6114 +0x3e41 0x6116 +0x3e42 0x6117 +0x3e43 0x6119 +0x3e44 0x611c +0x3e45 0x611e +0x3e46 0x6122 +0x3e47 0x612a +0x3e48 0x612b +0x3e49 0x6130 +0x3e4a 0x6131 +0x3e4b 0x6135 +0x3e4c 0x6136 +0x3e4d 0x6137 +0x3e4e 0x6139 +0x3e4f 0x6141 +0x3e50 0x6145 +0x3e51 0x6146 +0x3e52 0x6149 +0x3e53 0x615e +0x3e54 0x6160 +0x3e55 0x616c +0x3e56 0x6172 +0x3e57 0x6178 +0x3e58 0x617b +0x3e59 0x617c +0x3e5a 0x617f +0x3e5b 0x6180 +0x3e5c 0x6181 +0x3e5d 0x6183 +0x3e5e 0x6184 +0x3e5f 0x618b +0x3e60 0x618d +0x3e61 0x6192 +0x3e62 0x6193 +0x3e63 0x6197 +0x3e64 0x6198 +0x3e65 0x619c +0x3e66 0x619d +0x3e67 0x619f +0x3e68 0x61a0 +0x3e69 0x61a5 +0x3e6a 0x61a8 +0x3e6b 0x61aa +0x3e6c 0x61ad +0x3e6d 0x61b8 +0x3e6e 0x61b9 +0x3e6f 0x61bc +0x3e70 0x61c0 +0x3e71 0x61c1 +0x3e72 0x61c2 +0x3e73 0x61ce +0x3e74 0x61cf +0x3e75 0x61d5 +0x3e76 0x61dc +0x3e77 0x61dd +0x3e78 0x61de +0x3e79 0x61df +0x3e7a 0x61e1 +0x3e7b 0x61e2 +0x3e7c 0x61e7 +0x3e7d 0x61e9 +0x3e7e 0x61e5 +0x3f21 0x61ec +0x3f22 0x61ed +0x3f23 0x61ef +0x3f24 0x6201 +0x3f25 0x6203 +0x3f26 0x6204 +0x3f27 0x6207 +0x3f28 0x6213 +0x3f29 0x6215 +0x3f2a 0x621c +0x3f2b 0x6220 +0x3f2c 0x6222 +0x3f2d 0x6223 +0x3f2e 0x6227 +0x3f2f 0x6229 +0x3f30 0x622b +0x3f31 0x6239 +0x3f32 0x623d +0x3f33 0x6242 +0x3f34 0x6243 +0x3f35 0x6244 +0x3f36 0x6246 +0x3f37 0x624c +0x3f38 0x6250 +0x3f39 0x6251 +0x3f3a 0x6252 +0x3f3b 0x6254 +0x3f3c 0x6256 +0x3f3d 0x625a +0x3f3e 0x625c +0x3f3f 0x6264 +0x3f40 0x626d +0x3f41 0x626f +0x3f42 0x6273 +0x3f43 0x627a +0x3f44 0x627d +0x3f45 0x628d +0x3f46 0x628e +0x3f47 0x628f +0x3f48 0x6290 +0x3f49 0x62a6 +0x3f4a 0x62a8 +0x3f4b 0x62b3 +0x3f4c 0x62b6 +0x3f4d 0x62b7 +0x3f4e 0x62ba +0x3f4f 0x62be +0x3f50 0x62bf +0x3f51 0x62c4 +0x3f52 0x62ce +0x3f53 0x62d5 +0x3f54 0x62d6 +0x3f55 0x62da +0x3f56 0x62ea +0x3f57 0x62f2 +0x3f58 0x62f4 +0x3f59 0x62fc +0x3f5a 0x62fd +0x3f5b 0x6303 +0x3f5c 0x6304 +0x3f5d 0x630a +0x3f5e 0x630b +0x3f5f 0x630d +0x3f60 0x6310 +0x3f61 0x6313 +0x3f62 0x6316 +0x3f63 0x6318 +0x3f64 0x6329 +0x3f65 0x632a +0x3f66 0x632d +0x3f67 0x6335 +0x3f68 0x6336 +0x3f69 0x6339 +0x3f6a 0x633c +0x3f6b 0x6341 +0x3f6c 0x6342 +0x3f6d 0x6343 +0x3f6e 0x6344 +0x3f6f 0x6346 +0x3f70 0x634a +0x3f71 0x634b +0x3f72 0x634e +0x3f73 0x6352 +0x3f74 0x6353 +0x3f75 0x6354 +0x3f76 0x6358 +0x3f77 0x635b +0x3f78 0x6365 +0x3f79 0x6366 +0x3f7a 0x636c +0x3f7b 0x636d +0x3f7c 0x6371 +0x3f7d 0x6374 +0x3f7e 0x6375 +0x4021 0x6378 +0x4022 0x637c +0x4023 0x637d +0x4024 0x637f +0x4025 0x6382 +0x4026 0x6384 +0x4027 0x6387 +0x4028 0x638a +0x4029 0x6390 +0x402a 0x6394 +0x402b 0x6395 +0x402c 0x6399 +0x402d 0x639a +0x402e 0x639e +0x402f 0x63a4 +0x4030 0x63a6 +0x4031 0x63ad +0x4032 0x63ae +0x4033 0x63af +0x4034 0x63bd +0x4035 0x63c1 +0x4036 0x63c5 +0x4037 0x63c8 +0x4038 0x63ce +0x4039 0x63d1 +0x403a 0x63d3 +0x403b 0x63d4 +0x403c 0x63d5 +0x403d 0x63dc +0x403e 0x63e0 +0x403f 0x63e5 +0x4040 0x63ea +0x4041 0x63ec +0x4042 0x63f2 +0x4043 0x63f3 +0x4044 0x63f5 +0x4045 0x63f8 +0x4046 0x63f9 +0x4047 0x6409 +0x4048 0x640a +0x4049 0x6410 +0x404a 0x6412 +0x404b 0x6414 +0x404c 0x6418 +0x404d 0x641e +0x404e 0x6420 +0x404f 0x6422 +0x4050 0x6424 +0x4051 0x6425 +0x4052 0x6429 +0x4053 0x642a +0x4054 0x642f +0x4055 0x6430 +0x4056 0x6435 +0x4057 0x643d +0x4058 0x643f +0x4059 0x644b +0x405a 0x644f +0x405b 0x6451 +0x405c 0x6452 +0x405d 0x6453 +0x405e 0x6454 +0x405f 0x645a +0x4060 0x645b +0x4061 0x645c +0x4062 0x645d +0x4063 0x645f +0x4064 0x6460 +0x4065 0x6461 +0x4066 0x6463 +0x4067 0x646d +0x4068 0x6473 +0x4069 0x6474 +0x406a 0x647b +0x406b 0x647d +0x406c 0x6485 +0x406d 0x6487 +0x406e 0x648f +0x406f 0x6490 +0x4070 0x6491 +0x4071 0x6498 +0x4072 0x6499 +0x4073 0x649b +0x4074 0x649d +0x4075 0x649f +0x4076 0x64a1 +0x4077 0x64a3 +0x4078 0x64a6 +0x4079 0x64a8 +0x407a 0x64ac +0x407b 0x64b3 +0x407c 0x64bd +0x407d 0x64be +0x407e 0x64bf +0x4121 0x64c4 +0x4122 0x64c9 +0x4123 0x64ca +0x4124 0x64cb +0x4125 0x64cc +0x4126 0x64ce +0x4127 0x64d0 +0x4128 0x64d1 +0x4129 0x64d5 +0x412a 0x64d7 +0x412b 0x64e4 +0x412c 0x64e5 +0x412d 0x64e9 +0x412e 0x64ea +0x412f 0x64ed +0x4130 0x64f0 +0x4131 0x64f5 +0x4132 0x64f7 +0x4133 0x64fb +0x4134 0x64ff +0x4135 0x6501 +0x4136 0x6504 +0x4137 0x6508 +0x4138 0x6509 +0x4139 0x650a +0x413a 0x650f +0x413b 0x6513 +0x413c 0x6514 +0x413d 0x6516 +0x413e 0x6519 +0x413f 0x651b +0x4140 0x651e +0x4141 0x651f +0x4142 0x6522 +0x4143 0x6526 +0x4144 0x6529 +0x4145 0x652e +0x4146 0x6531 +0x4147 0x653a +0x4148 0x653c +0x4149 0x653d +0x414a 0x6543 +0x414b 0x6547 +0x414c 0x6549 +0x414d 0x6550 +0x414e 0x6552 +0x414f 0x6554 +0x4150 0x655f +0x4151 0x6560 +0x4152 0x6567 +0x4153 0x656b +0x4154 0x657a +0x4155 0x657d +0x4156 0x6581 +0x4157 0x6585 +0x4158 0x658a +0x4159 0x6592 +0x415a 0x6595 +0x415b 0x6598 +0x415c 0x659d +0x415d 0x65a0 +0x415e 0x65a3 +0x415f 0x65a6 +0x4160 0x65ae +0x4161 0x65b2 +0x4162 0x65b3 +0x4163 0x65b4 +0x4164 0x65bf +0x4165 0x65c2 +0x4166 0x65c8 +0x4167 0x65c9 +0x4168 0x65ce +0x4169 0x65d0 +0x416a 0x65d4 +0x416b 0x65d6 +0x416c 0x65d8 +0x416d 0x65df +0x416e 0x65f0 +0x416f 0x65f2 +0x4170 0x65f4 +0x4171 0x65f5 +0x4172 0x65f9 +0x4173 0x65fe +0x4174 0x65ff +0x4175 0x6600 +0x4176 0x6604 +0x4177 0x6608 +0x4178 0x6609 +0x4179 0x660d +0x417a 0x6611 +0x417b 0x6612 +0x417c 0x6615 +0x417d 0x6616 +0x417e 0x661d +0x4221 0x661e +0x4222 0x6621 +0x4223 0x6622 +0x4224 0x6623 +0x4225 0x6624 +0x4226 0x6626 +0x4227 0x6629 +0x4228 0x662a +0x4229 0x662b +0x422a 0x662c +0x422b 0x662e +0x422c 0x6630 +0x422d 0x6631 +0x422e 0x6633 +0x422f 0x6639 +0x4230 0x6637 +0x4231 0x6640 +0x4232 0x6645 +0x4233 0x6646 +0x4234 0x664a +0x4235 0x664c +0x4236 0x6651 +0x4237 0x664e +0x4238 0x6657 +0x4239 0x6658 +0x423a 0x6659 +0x423b 0x665b +0x423c 0x665c +0x423d 0x6660 +0x423e 0x6661 +0x423f 0x66fb +0x4240 0x666a +0x4241 0x666b +0x4242 0x666c +0x4243 0x667e +0x4244 0x6673 +0x4245 0x6675 +0x4246 0x667f +0x4247 0x6677 +0x4248 0x6678 +0x4249 0x6679 +0x424a 0x667b +0x424b 0x6680 +0x424c 0x667c +0x424d 0x668b +0x424e 0x668c +0x424f 0x668d +0x4250 0x6690 +0x4251 0x6692 +0x4252 0x6699 +0x4253 0x669a +0x4254 0x669b +0x4255 0x669c +0x4256 0x669f +0x4257 0x66a0 +0x4258 0x66a4 +0x4259 0x66ad +0x425a 0x66b1 +0x425b 0x66b2 +0x425c 0x66b5 +0x425d 0x66bb +0x425e 0x66bf +0x425f 0x66c0 +0x4260 0x66c2 +0x4261 0x66c3 +0x4262 0x66c8 +0x4263 0x66cc +0x4264 0x66ce +0x4265 0x66cf +0x4266 0x66d4 +0x4267 0x66db +0x4268 0x66df +0x4269 0x66e8 +0x426a 0x66eb +0x426b 0x66ec +0x426c 0x66ee +0x426d 0x66fa +0x426e 0x6705 +0x426f 0x6707 +0x4270 0x670e +0x4271 0x6713 +0x4272 0x6719 +0x4273 0x671c +0x4274 0x6720 +0x4275 0x6722 +0x4276 0x6733 +0x4277 0x673e +0x4278 0x6745 +0x4279 0x6747 +0x427a 0x6748 +0x427b 0x674c +0x427c 0x6754 +0x427d 0x6755 +0x427e 0x675d +0x4321 0x6766 +0x4322 0x676c +0x4323 0x676e +0x4324 0x6774 +0x4325 0x6776 +0x4326 0x677b +0x4327 0x6781 +0x4328 0x6784 +0x4329 0x678e +0x432a 0x678f +0x432b 0x6791 +0x432c 0x6793 +0x432d 0x6796 +0x432e 0x6798 +0x432f 0x6799 +0x4330 0x679b +0x4331 0x67b0 +0x4332 0x67b1 +0x4333 0x67b2 +0x4334 0x67b5 +0x4335 0x67bb +0x4336 0x67bc +0x4337 0x67bd +0x4338 0x67f9 +0x4339 0x67c0 +0x433a 0x67c2 +0x433b 0x67c3 +0x433c 0x67c5 +0x433d 0x67c8 +0x433e 0x67c9 +0x433f 0x67d2 +0x4340 0x67d7 +0x4341 0x67d9 +0x4342 0x67dc +0x4343 0x67e1 +0x4344 0x67e6 +0x4345 0x67f0 +0x4346 0x67f2 +0x4347 0x67f6 +0x4348 0x67f7 +0x4349 0x6852 +0x434a 0x6814 +0x434b 0x6819 +0x434c 0x681d +0x434d 0x681f +0x434e 0x6828 +0x434f 0x6827 +0x4350 0x682c +0x4351 0x682d +0x4352 0x682f +0x4353 0x6830 +0x4354 0x6831 +0x4355 0x6833 +0x4356 0x683b +0x4357 0x683f +0x4358 0x6844 +0x4359 0x6845 +0x435a 0x684a +0x435b 0x684c +0x435c 0x6855 +0x435d 0x6857 +0x435e 0x6858 +0x435f 0x685b +0x4360 0x686b +0x4361 0x686e +0x4362 0x686f +0x4363 0x6870 +0x4364 0x6871 +0x4365 0x6872 +0x4366 0x6875 +0x4367 0x6879 +0x4368 0x687a +0x4369 0x687b +0x436a 0x687c +0x436b 0x6882 +0x436c 0x6884 +0x436d 0x6886 +0x436e 0x6888 +0x436f 0x6896 +0x4370 0x6898 +0x4371 0x689a +0x4372 0x689c +0x4373 0x68a1 +0x4374 0x68a3 +0x4375 0x68a5 +0x4376 0x68a9 +0x4377 0x68aa +0x4378 0x68ae +0x4379 0x68b2 +0x437a 0x68bb +0x437b 0x68c5 +0x437c 0x68c8 +0x437d 0x68cc +0x437e 0x68cf +0x4421 0x68d0 +0x4422 0x68d1 +0x4423 0x68d3 +0x4424 0x68d6 +0x4425 0x68d9 +0x4426 0x68dc +0x4427 0x68dd +0x4428 0x68e5 +0x4429 0x68e8 +0x442a 0x68ea +0x442b 0x68eb +0x442c 0x68ec +0x442d 0x68ed +0x442e 0x68f0 +0x442f 0x68f1 +0x4430 0x68f5 +0x4431 0x68f6 +0x4432 0x68fb +0x4433 0x68fc +0x4434 0x68fd +0x4435 0x6906 +0x4436 0x6909 +0x4437 0x690a +0x4438 0x6910 +0x4439 0x6911 +0x443a 0x6913 +0x443b 0x6916 +0x443c 0x6917 +0x443d 0x6931 +0x443e 0x6933 +0x443f 0x6935 +0x4440 0x6938 +0x4441 0x693b +0x4442 0x6942 +0x4443 0x6945 +0x4444 0x6949 +0x4445 0x694e +0x4446 0x6957 +0x4447 0x695b +0x4448 0x6963 +0x4449 0x6964 +0x444a 0x6965 +0x444b 0x6966 +0x444c 0x6968 +0x444d 0x6969 +0x444e 0x696c +0x444f 0x6970 +0x4450 0x6971 +0x4451 0x6972 +0x4452 0x697a +0x4453 0x697b +0x4454 0x697f +0x4455 0x6980 +0x4456 0x698d +0x4457 0x6992 +0x4458 0x6996 +0x4459 0x6998 +0x445a 0x69a1 +0x445b 0x69a5 +0x445c 0x69a6 +0x445d 0x69a8 +0x445e 0x69ab +0x445f 0x69ad +0x4460 0x69af +0x4461 0x69b7 +0x4462 0x69b8 +0x4463 0x69ba +0x4464 0x69bc +0x4465 0x69c5 +0x4466 0x69c8 +0x4467 0x69d1 +0x4468 0x69d6 +0x4469 0x69d7 +0x446a 0x69e2 +0x446b 0x69e5 +0x446c 0x69ee +0x446d 0x69ef +0x446e 0x69f1 +0x446f 0x69f3 +0x4470 0x69f5 +0x4471 0x69fe +0x4472 0x6a00 +0x4473 0x6a01 +0x4474 0x6a03 +0x4475 0x6a0f +0x4476 0x6a11 +0x4477 0x6a15 +0x4478 0x6a1a +0x4479 0x6a1d +0x447a 0x6a20 +0x447b 0x6a24 +0x447c 0x6a28 +0x447d 0x6a30 +0x447e 0x6a32 +0x4521 0x6a34 +0x4522 0x6a37 +0x4523 0x6a3b +0x4524 0x6a3e +0x4525 0x6a3f +0x4526 0x6a45 +0x4527 0x6a46 +0x4528 0x6a49 +0x4529 0x6a4a +0x452a 0x6a4e +0x452b 0x6a50 +0x452c 0x6a51 +0x452d 0x6a52 +0x452e 0x6a55 +0x452f 0x6a56 +0x4530 0x6a5b +0x4531 0x6a64 +0x4532 0x6a67 +0x4533 0x6a6a +0x4534 0x6a71 +0x4535 0x6a73 +0x4536 0x6a7e +0x4537 0x6a81 +0x4538 0x6a83 +0x4539 0x6a86 +0x453a 0x6a87 +0x453b 0x6a89 +0x453c 0x6a8b +0x453d 0x6a91 +0x453e 0x6a9b +0x453f 0x6a9d +0x4540 0x6a9e +0x4541 0x6a9f +0x4542 0x6aa5 +0x4543 0x6aab +0x4544 0x6aaf +0x4545 0x6ab0 +0x4546 0x6ab1 +0x4547 0x6ab4 +0x4548 0x6abd +0x4549 0x6abe +0x454a 0x6abf +0x454b 0x6ac6 +0x454c 0x6ac9 +0x454d 0x6ac8 +0x454e 0x6acc +0x454f 0x6ad0 +0x4550 0x6ad4 +0x4551 0x6ad5 +0x4552 0x6ad6 +0x4553 0x6adc +0x4554 0x6add +0x4555 0x6ae4 +0x4556 0x6ae7 +0x4557 0x6aec +0x4558 0x6af0 +0x4559 0x6af1 +0x455a 0x6af2 +0x455b 0x6afc +0x455c 0x6afd +0x455d 0x6b02 +0x455e 0x6b03 +0x455f 0x6b06 +0x4560 0x6b07 +0x4561 0x6b09 +0x4562 0x6b0f +0x4563 0x6b10 +0x4564 0x6b11 +0x4565 0x6b17 +0x4566 0x6b1b +0x4567 0x6b1e +0x4568 0x6b24 +0x4569 0x6b28 +0x456a 0x6b2b +0x456b 0x6b2c +0x456c 0x6b2f +0x456d 0x6b35 +0x456e 0x6b36 +0x456f 0x6b3b +0x4570 0x6b3f +0x4571 0x6b46 +0x4572 0x6b4a +0x4573 0x6b4d +0x4574 0x6b52 +0x4575 0x6b56 +0x4576 0x6b58 +0x4577 0x6b5d +0x4578 0x6b60 +0x4579 0x6b67 +0x457a 0x6b6b +0x457b 0x6b6e +0x457c 0x6b70 +0x457d 0x6b75 +0x457e 0x6b7d +0x4621 0x6b7e +0x4622 0x6b82 +0x4623 0x6b85 +0x4624 0x6b97 +0x4625 0x6b9b +0x4626 0x6b9f +0x4627 0x6ba0 +0x4628 0x6ba2 +0x4629 0x6ba3 +0x462a 0x6ba8 +0x462b 0x6ba9 +0x462c 0x6bac +0x462d 0x6bad +0x462e 0x6bae +0x462f 0x6bb0 +0x4630 0x6bb8 +0x4631 0x6bb9 +0x4632 0x6bbd +0x4633 0x6bbe +0x4634 0x6bc3 +0x4635 0x6bc4 +0x4636 0x6bc9 +0x4637 0x6bcc +0x4638 0x6bd6 +0x4639 0x6bda +0x463a 0x6be1 +0x463b 0x6be3 +0x463c 0x6be6 +0x463d 0x6be7 +0x463e 0x6bee +0x463f 0x6bf1 +0x4640 0x6bf7 +0x4641 0x6bf9 +0x4642 0x6bff +0x4643 0x6c02 +0x4644 0x6c04 +0x4645 0x6c05 +0x4646 0x6c09 +0x4647 0x6c0d +0x4648 0x6c0e +0x4649 0x6c10 +0x464a 0x6c12 +0x464b 0x6c19 +0x464c 0x6c1f +0x464d 0x6c26 +0x464e 0x6c27 +0x464f 0x6c28 +0x4650 0x6c2c +0x4651 0x6c2e +0x4652 0x6c33 +0x4653 0x6c35 +0x4654 0x6c36 +0x4655 0x6c3a +0x4656 0x6c3b +0x4657 0x6c3f +0x4658 0x6c4a +0x4659 0x6c4b +0x465a 0x6c4d +0x465b 0x6c4f +0x465c 0x6c52 +0x465d 0x6c54 +0x465e 0x6c59 +0x465f 0x6c5b +0x4660 0x6c5c +0x4661 0x6c6b +0x4662 0x6c6d +0x4663 0x6c6f +0x4664 0x6c74 +0x4665 0x6c76 +0x4666 0x6c78 +0x4667 0x6c79 +0x4668 0x6c7b +0x4669 0x6c85 +0x466a 0x6c86 +0x466b 0x6c87 +0x466c 0x6c89 +0x466d 0x6c94 +0x466e 0x6c95 +0x466f 0x6c97 +0x4670 0x6c98 +0x4671 0x6c9c +0x4672 0x6c9f +0x4673 0x6cb0 +0x4674 0x6cb2 +0x4675 0x6cb4 +0x4676 0x6cc2 +0x4677 0x6cc6 +0x4678 0x6ccd +0x4679 0x6ccf +0x467a 0x6cd0 +0x467b 0x6cd1 +0x467c 0x6cd2 +0x467d 0x6cd4 +0x467e 0x6cd6 +0x4721 0x6cda +0x4722 0x6cdc +0x4723 0x6ce0 +0x4724 0x6ce7 +0x4725 0x6ce9 +0x4726 0x6ceb +0x4727 0x6cec +0x4728 0x6cee +0x4729 0x6cf2 +0x472a 0x6cf4 +0x472b 0x6d04 +0x472c 0x6d07 +0x472d 0x6d0a +0x472e 0x6d0e +0x472f 0x6d0f +0x4730 0x6d11 +0x4731 0x6d13 +0x4732 0x6d1a +0x4733 0x6d26 +0x4734 0x6d27 +0x4735 0x6d28 +0x4736 0x6c67 +0x4737 0x6d2e +0x4738 0x6d2f +0x4739 0x6d31 +0x473a 0x6d39 +0x473b 0x6d3c +0x473c 0x6d3f +0x473d 0x6d57 +0x473e 0x6d5e +0x473f 0x6d5f +0x4740 0x6d61 +0x4741 0x6d65 +0x4742 0x6d67 +0x4743 0x6d6f +0x4744 0x6d70 +0x4745 0x6d7c +0x4746 0x6d82 +0x4747 0x6d87 +0x4748 0x6d91 +0x4749 0x6d92 +0x474a 0x6d94 +0x474b 0x6d96 +0x474c 0x6d97 +0x474d 0x6d98 +0x474e 0x6daa +0x474f 0x6dac +0x4750 0x6db4 +0x4751 0x6db7 +0x4752 0x6db9 +0x4753 0x6dbd +0x4754 0x6dbf +0x4755 0x6dc4 +0x4756 0x6dc8 +0x4757 0x6dca +0x4758 0x6dce +0x4759 0x6dcf +0x475a 0x6dd6 +0x475b 0x6ddb +0x475c 0x6ddd +0x475d 0x6ddf +0x475e 0x6de0 +0x475f 0x6de2 +0x4760 0x6de5 +0x4761 0x6de9 +0x4762 0x6def +0x4763 0x6df0 +0x4764 0x6df4 +0x4765 0x6df6 +0x4766 0x6dfc +0x4767 0x6e00 +0x4768 0x6e04 +0x4769 0x6e1e +0x476a 0x6e22 +0x476b 0x6e27 +0x476c 0x6e32 +0x476d 0x6e36 +0x476e 0x6e39 +0x476f 0x6e3b +0x4770 0x6e3c +0x4771 0x6e44 +0x4772 0x6e45 +0x4773 0x6e48 +0x4774 0x6e49 +0x4775 0x6e4b +0x4776 0x6e4f +0x4777 0x6e51 +0x4778 0x6e52 +0x4779 0x6e53 +0x477a 0x6e54 +0x477b 0x6e57 +0x477c 0x6e5c +0x477d 0x6e5d +0x477e 0x6e5e +0x4821 0x6e62 +0x4822 0x6e63 +0x4823 0x6e68 +0x4824 0x6e73 +0x4825 0x6e7b +0x4826 0x6e7d +0x4827 0x6e8d +0x4828 0x6e93 +0x4829 0x6e99 +0x482a 0x6ea0 +0x482b 0x6ea7 +0x482c 0x6ead +0x482d 0x6eae +0x482e 0x6eb1 +0x482f 0x6eb3 +0x4830 0x6ebb +0x4831 0x6ebf +0x4832 0x6ec0 +0x4833 0x6ec1 +0x4834 0x6ec3 +0x4835 0x6ec7 +0x4836 0x6ec8 +0x4837 0x6eca +0x4838 0x6ecd +0x4839 0x6ece +0x483a 0x6ecf +0x483b 0x6eeb +0x483c 0x6eed +0x483d 0x6eee +0x483e 0x6ef9 +0x483f 0x6efb +0x4840 0x6efd +0x4841 0x6f04 +0x4842 0x6f08 +0x4843 0x6f0a +0x4844 0x6f0c +0x4845 0x6f0d +0x4846 0x6f16 +0x4847 0x6f18 +0x4848 0x6f1a +0x4849 0x6f1b +0x484a 0x6f26 +0x484b 0x6f29 +0x484c 0x6f2a +0x484d 0x6f2f +0x484e 0x6f30 +0x484f 0x6f33 +0x4850 0x6f36 +0x4851 0x6f3b +0x4852 0x6f3c +0x4853 0x6f2d +0x4854 0x6f4f +0x4855 0x6f51 +0x4856 0x6f52 +0x4857 0x6f53 +0x4858 0x6f57 +0x4859 0x6f59 +0x485a 0x6f5a +0x485b 0x6f5d +0x485c 0x6f5e +0x485d 0x6f61 +0x485e 0x6f62 +0x485f 0x6f68 +0x4860 0x6f6c +0x4861 0x6f7d +0x4862 0x6f7e +0x4863 0x6f83 +0x4864 0x6f87 +0x4865 0x6f88 +0x4866 0x6f8b +0x4867 0x6f8c +0x4868 0x6f8d +0x4869 0x6f90 +0x486a 0x6f92 +0x486b 0x6f93 +0x486c 0x6f94 +0x486d 0x6f96 +0x486e 0x6f9a +0x486f 0x6f9f +0x4870 0x6fa0 +0x4871 0x6fa5 +0x4872 0x6fa6 +0x4873 0x6fa7 +0x4874 0x6fa8 +0x4875 0x6fae +0x4876 0x6faf +0x4877 0x6fb0 +0x4878 0x6fb5 +0x4879 0x6fb6 +0x487a 0x6fbc +0x487b 0x6fc5 +0x487c 0x6fc7 +0x487d 0x6fc8 +0x487e 0x6fca +0x4921 0x6fda +0x4922 0x6fde +0x4923 0x6fe8 +0x4924 0x6fe9 +0x4925 0x6ff0 +0x4926 0x6ff5 +0x4927 0x6ff9 +0x4928 0x6ffc +0x4929 0x6ffd +0x492a 0x7000 +0x492b 0x7005 +0x492c 0x7006 +0x492d 0x7007 +0x492e 0x700d +0x492f 0x7017 +0x4930 0x7020 +0x4931 0x7023 +0x4932 0x702f +0x4933 0x7034 +0x4934 0x7037 +0x4935 0x7039 +0x4936 0x703c +0x4937 0x7043 +0x4938 0x7044 +0x4939 0x7048 +0x493a 0x7049 +0x493b 0x704a +0x493c 0x704b +0x493d 0x7054 +0x493e 0x7055 +0x493f 0x705d +0x4940 0x705e +0x4941 0x704e +0x4942 0x7064 +0x4943 0x7065 +0x4944 0x706c +0x4945 0x706e +0x4946 0x7075 +0x4947 0x7076 +0x4948 0x707e +0x4949 0x7081 +0x494a 0x7085 +0x494b 0x7086 +0x494c 0x7094 +0x494d 0x7095 +0x494e 0x7096 +0x494f 0x7097 +0x4950 0x7098 +0x4951 0x709b +0x4952 0x70a4 +0x4953 0x70ab +0x4954 0x70b0 +0x4955 0x70b1 +0x4956 0x70b4 +0x4957 0x70b7 +0x4958 0x70ca +0x4959 0x70d1 +0x495a 0x70d3 +0x495b 0x70d4 +0x495c 0x70d5 +0x495d 0x70d6 +0x495e 0x70d8 +0x495f 0x70dc +0x4960 0x70e4 +0x4961 0x70fa +0x4962 0x7103 +0x4963 0x7104 +0x4964 0x7105 +0x4965 0x7106 +0x4966 0x7107 +0x4967 0x710b +0x4968 0x710c +0x4969 0x710f +0x496a 0x711e +0x496b 0x7120 +0x496c 0x712b +0x496d 0x712d +0x496e 0x712f +0x496f 0x7130 +0x4970 0x7131 +0x4971 0x7138 +0x4972 0x7141 +0x4973 0x7145 +0x4974 0x7146 +0x4975 0x7147 +0x4976 0x714a +0x4977 0x714b +0x4978 0x7150 +0x4979 0x7152 +0x497a 0x7157 +0x497b 0x715a +0x497c 0x715c +0x497d 0x715e +0x497e 0x7160 +0x4a21 0x7168 +0x4a22 0x7179 +0x4a23 0x7180 +0x4a24 0x7185 +0x4a25 0x7187 +0x4a26 0x718c +0x4a27 0x7192 +0x4a28 0x719a +0x4a29 0x719b +0x4a2a 0x71a0 +0x4a2b 0x71a2 +0x4a2c 0x71af +0x4a2d 0x71b0 +0x4a2e 0x71b2 +0x4a2f 0x71b3 +0x4a30 0x71ba +0x4a31 0x71bf +0x4a32 0x71c0 +0x4a33 0x71c1 +0x4a34 0x71c4 +0x4a35 0x71cb +0x4a36 0x71cc +0x4a37 0x71d3 +0x4a38 0x71d6 +0x4a39 0x71d9 +0x4a3a 0x71da +0x4a3b 0x71dc +0x4a3c 0x71f8 +0x4a3d 0x71fe +0x4a3e 0x7200 +0x4a3f 0x7207 +0x4a40 0x7208 +0x4a41 0x7209 +0x4a42 0x7213 +0x4a43 0x7217 +0x4a44 0x721a +0x4a45 0x721d +0x4a46 0x721f +0x4a47 0x7224 +0x4a48 0x722b +0x4a49 0x722f +0x4a4a 0x7234 +0x4a4b 0x7238 +0x4a4c 0x7239 +0x4a4d 0x7241 +0x4a4e 0x7242 +0x4a4f 0x7243 +0x4a50 0x7245 +0x4a51 0x724e +0x4a52 0x724f +0x4a53 0x7250 +0x4a54 0x7253 +0x4a55 0x7255 +0x4a56 0x7256 +0x4a57 0x725a +0x4a58 0x725c +0x4a59 0x725e +0x4a5a 0x7260 +0x4a5b 0x7263 +0x4a5c 0x7268 +0x4a5d 0x726b +0x4a5e 0x726e +0x4a5f 0x726f +0x4a60 0x7271 +0x4a61 0x7277 +0x4a62 0x7278 +0x4a63 0x727b +0x4a64 0x727c +0x4a65 0x727f +0x4a66 0x7284 +0x4a67 0x7289 +0x4a68 0x728d +0x4a69 0x728e +0x4a6a 0x7293 +0x4a6b 0x729b +0x4a6c 0x72a8 +0x4a6d 0x72ad +0x4a6e 0x72ae +0x4a6f 0x72b1 +0x4a70 0x72b4 +0x4a71 0x72be +0x4a72 0x72c1 +0x4a73 0x72c7 +0x4a74 0x72c9 +0x4a75 0x72cc +0x4a76 0x72d5 +0x4a77 0x72d6 +0x4a78 0x72d8 +0x4a79 0x72df +0x4a7a 0x72e5 +0x4a7b 0x72f3 +0x4a7c 0x72f4 +0x4a7d 0x72fa +0x4a7e 0x72fb +0x4b21 0x72fe +0x4b22 0x7302 +0x4b23 0x7304 +0x4b24 0x7305 +0x4b25 0x7307 +0x4b26 0x730b +0x4b27 0x730d +0x4b28 0x7312 +0x4b29 0x7313 +0x4b2a 0x7318 +0x4b2b 0x7319 +0x4b2c 0x731e +0x4b2d 0x7322 +0x4b2e 0x7324 +0x4b2f 0x7327 +0x4b30 0x7328 +0x4b31 0x732c +0x4b32 0x7331 +0x4b33 0x7332 +0x4b34 0x7335 +0x4b35 0x733a +0x4b36 0x733b +0x4b37 0x733d +0x4b38 0x7343 +0x4b39 0x734d +0x4b3a 0x7350 +0x4b3b 0x7352 +0x4b3c 0x7356 +0x4b3d 0x7358 +0x4b3e 0x735d +0x4b3f 0x735e +0x4b40 0x735f +0x4b41 0x7360 +0x4b42 0x7366 +0x4b43 0x7367 +0x4b44 0x7369 +0x4b45 0x736b +0x4b46 0x736c +0x4b47 0x736e +0x4b48 0x736f +0x4b49 0x7371 +0x4b4a 0x7377 +0x4b4b 0x7379 +0x4b4c 0x737c +0x4b4d 0x7380 +0x4b4e 0x7381 +0x4b4f 0x7383 +0x4b50 0x7385 +0x4b51 0x7386 +0x4b52 0x738e +0x4b53 0x7390 +0x4b54 0x7393 +0x4b55 0x7395 +0x4b56 0x7397 +0x4b57 0x7398 +0x4b58 0x739c +0x4b59 0x739e +0x4b5a 0x739f +0x4b5b 0x73a0 +0x4b5c 0x73a2 +0x4b5d 0x73a5 +0x4b5e 0x73a6 +0x4b5f 0x73aa +0x4b60 0x73ab +0x4b61 0x73ad +0x4b62 0x73b5 +0x4b63 0x73b7 +0x4b64 0x73b9 +0x4b65 0x73bc +0x4b66 0x73bd +0x4b67 0x73bf +0x4b68 0x73c5 +0x4b69 0x73c6 +0x4b6a 0x73c9 +0x4b6b 0x73cb +0x4b6c 0x73cc +0x4b6d 0x73cf +0x4b6e 0x73d2 +0x4b6f 0x73d3 +0x4b70 0x73d6 +0x4b71 0x73d9 +0x4b72 0x73dd +0x4b73 0x73e1 +0x4b74 0x73e3 +0x4b75 0x73e6 +0x4b76 0x73e7 +0x4b77 0x73e9 +0x4b78 0x73f4 +0x4b79 0x73f5 +0x4b7a 0x73f7 +0x4b7b 0x73f9 +0x4b7c 0x73fa +0x4b7d 0x73fb +0x4b7e 0x73fd +0x4c21 0x73ff +0x4c22 0x7400 +0x4c23 0x7401 +0x4c24 0x7404 +0x4c25 0x7407 +0x4c26 0x740a +0x4c27 0x7411 +0x4c28 0x741a +0x4c29 0x741b +0x4c2a 0x7424 +0x4c2b 0x7426 +0x4c2c 0x7428 +0x4c2d 0x7429 +0x4c2e 0x742a +0x4c2f 0x742b +0x4c30 0x742c +0x4c31 0x742d +0x4c32 0x742e +0x4c33 0x742f +0x4c34 0x7430 +0x4c35 0x7431 +0x4c36 0x7439 +0x4c37 0x7440 +0x4c38 0x7443 +0x4c39 0x7444 +0x4c3a 0x7446 +0x4c3b 0x7447 +0x4c3c 0x744b +0x4c3d 0x744d +0x4c3e 0x7451 +0x4c3f 0x7452 +0x4c40 0x7457 +0x4c41 0x745d +0x4c42 0x7462 +0x4c43 0x7466 +0x4c44 0x7467 +0x4c45 0x7468 +0x4c46 0x746b +0x4c47 0x746d +0x4c48 0x746e +0x4c49 0x7471 +0x4c4a 0x7472 +0x4c4b 0x7480 +0x4c4c 0x7481 +0x4c4d 0x7485 +0x4c4e 0x7486 +0x4c4f 0x7487 +0x4c50 0x7489 +0x4c51 0x748f +0x4c52 0x7490 +0x4c53 0x7491 +0x4c54 0x7492 +0x4c55 0x7498 +0x4c56 0x7499 +0x4c57 0x749a +0x4c58 0x749c +0x4c59 0x749f +0x4c5a 0x74a0 +0x4c5b 0x74a1 +0x4c5c 0x74a3 +0x4c5d 0x74a6 +0x4c5e 0x74a8 +0x4c5f 0x74a9 +0x4c60 0x74aa +0x4c61 0x74ab +0x4c62 0x74ae +0x4c63 0x74af +0x4c64 0x74b1 +0x4c65 0x74b2 +0x4c66 0x74b5 +0x4c67 0x74b9 +0x4c68 0x74bb +0x4c69 0x74bf +0x4c6a 0x74c8 +0x4c6b 0x74c9 +0x4c6c 0x74cc +0x4c6d 0x74d0 +0x4c6e 0x74d3 +0x4c6f 0x74d8 +0x4c70 0x74da +0x4c71 0x74db +0x4c72 0x74de +0x4c73 0x74df +0x4c74 0x74e4 +0x4c75 0x74e8 +0x4c76 0x74ea +0x4c77 0x74eb +0x4c78 0x74ef +0x4c79 0x74f4 +0x4c7a 0x74fa +0x4c7b 0x74fb +0x4c7c 0x74fc +0x4c7d 0x74ff +0x4c7e 0x7506 +0x4d21 0x7512 +0x4d22 0x7516 +0x4d23 0x7517 +0x4d24 0x7520 +0x4d25 0x7521 +0x4d26 0x7524 +0x4d27 0x7527 +0x4d28 0x7529 +0x4d29 0x752a +0x4d2a 0x752f +0x4d2b 0x7536 +0x4d2c 0x7539 +0x4d2d 0x753d +0x4d2e 0x753e +0x4d2f 0x753f +0x4d30 0x7540 +0x4d31 0x7543 +0x4d32 0x7547 +0x4d33 0x7548 +0x4d34 0x754e +0x4d35 0x7550 +0x4d36 0x7552 +0x4d37 0x7557 +0x4d38 0x755e +0x4d39 0x755f +0x4d3a 0x7561 +0x4d3b 0x756f +0x4d3c 0x7571 +0x4d3d 0x7579 +0x4d3e 0x757a +0x4d3f 0x757b +0x4d40 0x757c +0x4d41 0x757d +0x4d42 0x757e +0x4d43 0x7581 +0x4d44 0x7585 +0x4d45 0x7590 +0x4d46 0x7592 +0x4d47 0x7593 +0x4d48 0x7595 +0x4d49 0x7599 +0x4d4a 0x759c +0x4d4b 0x75a2 +0x4d4c 0x75a4 +0x4d4d 0x75b4 +0x4d4e 0x75ba +0x4d4f 0x75bf +0x4d50 0x75c0 +0x4d51 0x75c1 +0x4d52 0x75c4 +0x4d53 0x75c6 +0x4d54 0x75cc +0x4d55 0x75ce +0x4d56 0x75cf +0x4d57 0x75d7 +0x4d58 0x75dc +0x4d59 0x75df +0x4d5a 0x75e0 +0x4d5b 0x75e1 +0x4d5c 0x75e4 +0x4d5d 0x75e7 +0x4d5e 0x75ec +0x4d5f 0x75ee +0x4d60 0x75ef +0x4d61 0x75f1 +0x4d62 0x75f9 +0x4d63 0x7600 +0x4d64 0x7602 +0x4d65 0x7603 +0x4d66 0x7604 +0x4d67 0x7607 +0x4d68 0x7608 +0x4d69 0x760a +0x4d6a 0x760c +0x4d6b 0x760f +0x4d6c 0x7612 +0x4d6d 0x7613 +0x4d6e 0x7615 +0x4d6f 0x7616 +0x4d70 0x7619 +0x4d71 0x761b +0x4d72 0x761c +0x4d73 0x761d +0x4d74 0x761e +0x4d75 0x7623 +0x4d76 0x7625 +0x4d77 0x7626 +0x4d78 0x7629 +0x4d79 0x762d +0x4d7a 0x7632 +0x4d7b 0x7633 +0x4d7c 0x7635 +0x4d7d 0x7638 +0x4d7e 0x7639 +0x4e21 0x763a +0x4e22 0x763c +0x4e23 0x764a +0x4e24 0x7640 +0x4e25 0x7641 +0x4e26 0x7643 +0x4e27 0x7644 +0x4e28 0x7645 +0x4e29 0x7649 +0x4e2a 0x764b +0x4e2b 0x7655 +0x4e2c 0x7659 +0x4e2d 0x765f +0x4e2e 0x7664 +0x4e2f 0x7665 +0x4e30 0x766d +0x4e31 0x766e +0x4e32 0x766f +0x4e33 0x7671 +0x4e34 0x7674 +0x4e35 0x7681 +0x4e36 0x7685 +0x4e37 0x768c +0x4e38 0x768d +0x4e39 0x7695 +0x4e3a 0x769b +0x4e3b 0x769c +0x4e3c 0x769d +0x4e3d 0x769f +0x4e3e 0x76a0 +0x4e3f 0x76a2 +0x4e40 0x76a3 +0x4e41 0x76a4 +0x4e42 0x76a5 +0x4e43 0x76a6 +0x4e44 0x76a7 +0x4e45 0x76a8 +0x4e46 0x76aa +0x4e47 0x76ad +0x4e48 0x76bd +0x4e49 0x76c1 +0x4e4a 0x76c5 +0x4e4b 0x76c9 +0x4e4c 0x76cb +0x4e4d 0x76cc +0x4e4e 0x76ce +0x4e4f 0x76d4 +0x4e50 0x76d9 +0x4e51 0x76e0 +0x4e52 0x76e6 +0x4e53 0x76e8 +0x4e54 0x76ec +0x4e55 0x76f0 +0x4e56 0x76f1 +0x4e57 0x76f6 +0x4e58 0x76f9 +0x4e59 0x76fc +0x4e5a 0x7700 +0x4e5b 0x7706 +0x4e5c 0x770a +0x4e5d 0x770e +0x4e5e 0x7712 +0x4e5f 0x7714 +0x4e60 0x7715 +0x4e61 0x7717 +0x4e62 0x7719 +0x4e63 0x771a +0x4e64 0x771c +0x4e65 0x7722 +0x4e66 0x7728 +0x4e67 0x772d +0x4e68 0x772e +0x4e69 0x772f +0x4e6a 0x7734 +0x4e6b 0x7735 +0x4e6c 0x7736 +0x4e6d 0x7739 +0x4e6e 0x773d +0x4e6f 0x773e +0x4e70 0x7742 +0x4e71 0x7745 +0x4e72 0x7746 +0x4e73 0x774a +0x4e74 0x774d +0x4e75 0x774e +0x4e76 0x774f +0x4e77 0x7752 +0x4e78 0x7756 +0x4e79 0x7757 +0x4e7a 0x775c +0x4e7b 0x775e +0x4e7c 0x775f +0x4e7d 0x7760 +0x4e7e 0x7762 +0x4f21 0x7764 +0x4f22 0x7767 +0x4f23 0x776a +0x4f24 0x776c +0x4f25 0x7770 +0x4f26 0x7772 +0x4f27 0x7773 +0x4f28 0x7774 +0x4f29 0x777a +0x4f2a 0x777d +0x4f2b 0x7780 +0x4f2c 0x7784 +0x4f2d 0x778c +0x4f2e 0x778d +0x4f2f 0x7794 +0x4f30 0x7795 +0x4f31 0x7796 +0x4f32 0x779a +0x4f33 0x779f +0x4f34 0x77a2 +0x4f35 0x77a7 +0x4f36 0x77aa +0x4f37 0x77ae +0x4f38 0x77af +0x4f39 0x77b1 +0x4f3a 0x77b5 +0x4f3b 0x77be +0x4f3c 0x77c3 +0x4f3d 0x77c9 +0x4f3e 0x77d1 +0x4f3f 0x77d2 +0x4f40 0x77d5 +0x4f41 0x77d9 +0x4f42 0x77de +0x4f43 0x77df +0x4f44 0x77e0 +0x4f45 0x77e4 +0x4f46 0x77e6 +0x4f47 0x77ea +0x4f48 0x77ec +0x4f49 0x77f0 +0x4f4a 0x77f1 +0x4f4b 0x77f4 +0x4f4c 0x77f8 +0x4f4d 0x77fb +0x4f4e 0x7805 +0x4f4f 0x7806 +0x4f50 0x7809 +0x4f51 0x780d +0x4f52 0x780e +0x4f53 0x7811 +0x4f54 0x781d +0x4f55 0x7821 +0x4f56 0x7822 +0x4f57 0x7823 +0x4f58 0x782d +0x4f59 0x782e +0x4f5a 0x7830 +0x4f5b 0x7835 +0x4f5c 0x7837 +0x4f5d 0x7843 +0x4f5e 0x7844 +0x4f5f 0x7847 +0x4f60 0x7848 +0x4f61 0x784c +0x4f62 0x784e +0x4f63 0x7852 +0x4f64 0x785c +0x4f65 0x785e +0x4f66 0x7860 +0x4f67 0x7861 +0x4f68 0x7863 +0x4f69 0x7864 +0x4f6a 0x7868 +0x4f6b 0x786a +0x4f6c 0x786e +0x4f6d 0x787a +0x4f6e 0x787e +0x4f6f 0x788a +0x4f70 0x788f +0x4f71 0x7894 +0x4f72 0x7898 +0x4f73 0x78a1 +0x4f74 0x789d +0x4f75 0x789e +0x4f76 0x789f +0x4f77 0x78a4 +0x4f78 0x78a8 +0x4f79 0x78ac +0x4f7a 0x78ad +0x4f7b 0x78b0 +0x4f7c 0x78b1 +0x4f7d 0x78b2 +0x4f7e 0x78b3 +0x5021 0x78bb +0x5022 0x78bd +0x5023 0x78bf +0x5024 0x78c7 +0x5025 0x78c8 +0x5026 0x78c9 +0x5027 0x78cc +0x5028 0x78ce +0x5029 0x78d2 +0x502a 0x78d3 +0x502b 0x78d5 +0x502c 0x78d6 +0x502d 0x78e4 +0x502e 0x78db +0x502f 0x78df +0x5030 0x78e0 +0x5031 0x78e1 +0x5032 0x78e6 +0x5033 0x78ea +0x5034 0x78f2 +0x5035 0x78f3 +0x5036 0x7900 +0x5037 0x78f6 +0x5038 0x78f7 +0x5039 0x78fa +0x503a 0x78fb +0x503b 0x78ff +0x503c 0x7906 +0x503d 0x790c +0x503e 0x7910 +0x503f 0x791a +0x5040 0x791c +0x5041 0x791e +0x5042 0x791f +0x5043 0x7920 +0x5044 0x7925 +0x5045 0x7927 +0x5046 0x7929 +0x5047 0x792d +0x5048 0x7931 +0x5049 0x7934 +0x504a 0x7935 +0x504b 0x793b +0x504c 0x793d +0x504d 0x793f +0x504e 0x7944 +0x504f 0x7945 +0x5050 0x7946 +0x5051 0x794a +0x5052 0x794b +0x5053 0x794f +0x5054 0x7951 +0x5055 0x7954 +0x5056 0x7958 +0x5057 0x795b +0x5058 0x795c +0x5059 0x7967 +0x505a 0x7969 +0x505b 0x796b +0x505c 0x7972 +0x505d 0x7979 +0x505e 0x797b +0x505f 0x797c +0x5060 0x797e +0x5061 0x798b +0x5062 0x798c +0x5063 0x7991 +0x5064 0x7993 +0x5065 0x7994 +0x5066 0x7995 +0x5067 0x7996 +0x5068 0x7998 +0x5069 0x799b +0x506a 0x799c +0x506b 0x79a1 +0x506c 0x79a8 +0x506d 0x79a9 +0x506e 0x79ab +0x506f 0x79af +0x5070 0x79b1 +0x5071 0x79b4 +0x5072 0x79b8 +0x5073 0x79bb +0x5074 0x79c2 +0x5075 0x79c4 +0x5076 0x79c7 +0x5077 0x79c8 +0x5078 0x79ca +0x5079 0x79cf +0x507a 0x79d4 +0x507b 0x79d6 +0x507c 0x79da +0x507d 0x79dd +0x507e 0x79de +0x5121 0x79e0 +0x5122 0x79e2 +0x5123 0x79e5 +0x5124 0x79ea +0x5125 0x79eb +0x5126 0x79ed +0x5127 0x79f1 +0x5128 0x79f8 +0x5129 0x79fc +0x512a 0x7a02 +0x512b 0x7a03 +0x512c 0x7a07 +0x512d 0x7a09 +0x512e 0x7a0a +0x512f 0x7a0c +0x5130 0x7a11 +0x5131 0x7a15 +0x5132 0x7a1b +0x5133 0x7a1e +0x5134 0x7a21 +0x5135 0x7a27 +0x5136 0x7a2b +0x5137 0x7a2d +0x5138 0x7a2f +0x5139 0x7a30 +0x513a 0x7a34 +0x513b 0x7a35 +0x513c 0x7a38 +0x513d 0x7a39 +0x513e 0x7a3a +0x513f 0x7a44 +0x5140 0x7a45 +0x5141 0x7a47 +0x5142 0x7a48 +0x5143 0x7a4c +0x5144 0x7a55 +0x5145 0x7a56 +0x5146 0x7a59 +0x5147 0x7a5c +0x5148 0x7a5d +0x5149 0x7a5f +0x514a 0x7a60 +0x514b 0x7a65 +0x514c 0x7a67 +0x514d 0x7a6a +0x514e 0x7a6d +0x514f 0x7a75 +0x5150 0x7a78 +0x5151 0x7a7e +0x5152 0x7a80 +0x5153 0x7a82 +0x5154 0x7a85 +0x5155 0x7a86 +0x5156 0x7a8a +0x5157 0x7a8b +0x5158 0x7a90 +0x5159 0x7a91 +0x515a 0x7a94 +0x515b 0x7a9e +0x515c 0x7aa0 +0x515d 0x7aa3 +0x515e 0x7aac +0x515f 0x7ab3 +0x5160 0x7ab5 +0x5161 0x7ab9 +0x5162 0x7abb +0x5163 0x7abc +0x5164 0x7ac6 +0x5165 0x7ac9 +0x5166 0x7acc +0x5167 0x7ace +0x5168 0x7ad1 +0x5169 0x7adb +0x516a 0x7ae8 +0x516b 0x7ae9 +0x516c 0x7aeb +0x516d 0x7aec +0x516e 0x7af1 +0x516f 0x7af4 +0x5170 0x7afb +0x5171 0x7afd +0x5172 0x7afe +0x5173 0x7b07 +0x5174 0x7b14 +0x5175 0x7b1f +0x5176 0x7b23 +0x5177 0x7b27 +0x5178 0x7b29 +0x5179 0x7b2a +0x517a 0x7b2b +0x517b 0x7b2d +0x517c 0x7b2e +0x517d 0x7b2f +0x517e 0x7b30 +0x5221 0x7b31 +0x5222 0x7b34 +0x5223 0x7b3d +0x5224 0x7b3f +0x5225 0x7b40 +0x5226 0x7b41 +0x5227 0x7b47 +0x5228 0x7b4e +0x5229 0x7b55 +0x522a 0x7b60 +0x522b 0x7b64 +0x522c 0x7b66 +0x522d 0x7b69 +0x522e 0x7b6a +0x522f 0x7b6d +0x5230 0x7b6f +0x5231 0x7b72 +0x5232 0x7b73 +0x5233 0x7b77 +0x5234 0x7b84 +0x5235 0x7b89 +0x5236 0x7b8e +0x5237 0x7b90 +0x5238 0x7b91 +0x5239 0x7b96 +0x523a 0x7b9b +0x523b 0x7b9e +0x523c 0x7ba0 +0x523d 0x7ba5 +0x523e 0x7bac +0x523f 0x7baf +0x5240 0x7bb0 +0x5241 0x7bb2 +0x5242 0x7bb5 +0x5243 0x7bb6 +0x5244 0x7bba +0x5245 0x7bbb +0x5246 0x7bbc +0x5247 0x7bbd +0x5248 0x7bc2 +0x5249 0x7bc5 +0x524a 0x7bc8 +0x524b 0x7bca +0x524c 0x7bd4 +0x524d 0x7bd6 +0x524e 0x7bd7 +0x524f 0x7bd9 +0x5250 0x7bda +0x5251 0x7bdb +0x5252 0x7be8 +0x5253 0x7bea +0x5254 0x7bf2 +0x5255 0x7bf4 +0x5256 0x7bf5 +0x5257 0x7bf8 +0x5258 0x7bf9 +0x5259 0x7bfa +0x525a 0x7bfc +0x525b 0x7bfe +0x525c 0x7c01 +0x525d 0x7c02 +0x525e 0x7c03 +0x525f 0x7c04 +0x5260 0x7c06 +0x5261 0x7c09 +0x5262 0x7c0b +0x5263 0x7c0c +0x5264 0x7c0e +0x5265 0x7c0f +0x5266 0x7c19 +0x5267 0x7c1b +0x5268 0x7c20 +0x5269 0x7c25 +0x526a 0x7c26 +0x526b 0x7c28 +0x526c 0x7c2c +0x526d 0x7c31 +0x526e 0x7c33 +0x526f 0x7c34 +0x5270 0x7c36 +0x5271 0x7c39 +0x5272 0x7c3a +0x5273 0x7c46 +0x5274 0x7c4a +0x5275 0x7c55 +0x5276 0x7c51 +0x5277 0x7c52 +0x5278 0x7c53 +0x5279 0x7c59 +0x527a 0x7c5a +0x527b 0x7c5b +0x527c 0x7c5c +0x527d 0x7c5d +0x527e 0x7c5e +0x5321 0x7c61 +0x5322 0x7c63 +0x5323 0x7c67 +0x5324 0x7c69 +0x5325 0x7c6d +0x5326 0x7c6e +0x5327 0x7c70 +0x5328 0x7c72 +0x5329 0x7c79 +0x532a 0x7c7c +0x532b 0x7c7d +0x532c 0x7c86 +0x532d 0x7c87 +0x532e 0x7c8f +0x532f 0x7c94 +0x5330 0x7c9e +0x5331 0x7ca0 +0x5332 0x7ca6 +0x5333 0x7cb0 +0x5334 0x7cb6 +0x5335 0x7cb7 +0x5336 0x7cba +0x5337 0x7cbb +0x5338 0x7cbc +0x5339 0x7cbf +0x533a 0x7cc4 +0x533b 0x7cc7 +0x533c 0x7cc8 +0x533d 0x7cc9 +0x533e 0x7ccd +0x533f 0x7ccf +0x5340 0x7cd3 +0x5341 0x7cd4 +0x5342 0x7cd5 +0x5343 0x7cd7 +0x5344 0x7cd9 +0x5345 0x7cda +0x5346 0x7cdd +0x5347 0x7ce6 +0x5348 0x7ce9 +0x5349 0x7ceb +0x534a 0x7cf5 +0x534b 0x7d03 +0x534c 0x7d07 +0x534d 0x7d08 +0x534e 0x7d09 +0x534f 0x7d0f +0x5350 0x7d11 +0x5351 0x7d12 +0x5352 0x7d13 +0x5353 0x7d16 +0x5354 0x7d1d +0x5355 0x7d1e +0x5356 0x7d23 +0x5357 0x7d26 +0x5358 0x7d2a +0x5359 0x7d2d +0x535a 0x7d31 +0x535b 0x7d3c +0x535c 0x7d3d +0x535d 0x7d3e +0x535e 0x7d40 +0x535f 0x7d41 +0x5360 0x7d47 +0x5361 0x7d48 +0x5362 0x7d4d +0x5363 0x7d51 +0x5364 0x7d53 +0x5365 0x7d57 +0x5366 0x7d59 +0x5367 0x7d5a +0x5368 0x7d5c +0x5369 0x7d5d +0x536a 0x7d65 +0x536b 0x7d67 +0x536c 0x7d6a +0x536d 0x7d70 +0x536e 0x7d78 +0x536f 0x7d7a +0x5370 0x7d7b +0x5371 0x7d7f +0x5372 0x7d81 +0x5373 0x7d82 +0x5374 0x7d83 +0x5375 0x7d85 +0x5376 0x7d86 +0x5377 0x7d88 +0x5378 0x7d8b +0x5379 0x7d8c +0x537a 0x7d8d +0x537b 0x7d91 +0x537c 0x7d96 +0x537d 0x7d97 +0x537e 0x7d9d +0x5421 0x7d9e +0x5422 0x7da6 +0x5423 0x7da7 +0x5424 0x7daa +0x5425 0x7db3 +0x5426 0x7db6 +0x5427 0x7db7 +0x5428 0x7db9 +0x5429 0x7dc2 +0x542a 0x7dc3 +0x542b 0x7dc4 +0x542c 0x7dc5 +0x542d 0x7dc6 +0x542e 0x7dcc +0x542f 0x7dcd +0x5430 0x7dce +0x5431 0x7dd7 +0x5432 0x7dd9 +0x5433 0x7e00 +0x5434 0x7de2 +0x5435 0x7de5 +0x5436 0x7de6 +0x5437 0x7dea +0x5438 0x7deb +0x5439 0x7ded +0x543a 0x7df1 +0x543b 0x7df5 +0x543c 0x7df6 +0x543d 0x7df9 +0x543e 0x7dfa +0x543f 0x7e08 +0x5440 0x7e10 +0x5441 0x7e11 +0x5442 0x7e15 +0x5443 0x7e17 +0x5444 0x7e1c +0x5445 0x7e1d +0x5446 0x7e20 +0x5447 0x7e27 +0x5448 0x7e28 +0x5449 0x7e2c +0x544a 0x7e2d +0x544b 0x7e2f +0x544c 0x7e33 +0x544d 0x7e36 +0x544e 0x7e3f +0x544f 0x7e44 +0x5450 0x7e45 +0x5451 0x7e47 +0x5452 0x7e4e +0x5453 0x7e50 +0x5454 0x7e52 +0x5455 0x7e58 +0x5456 0x7e5f +0x5457 0x7e61 +0x5458 0x7e62 +0x5459 0x7e65 +0x545a 0x7e6b +0x545b 0x7e6e +0x545c 0x7e6f +0x545d 0x7e73 +0x545e 0x7e78 +0x545f 0x7e7e +0x5460 0x7e81 +0x5461 0x7e86 +0x5462 0x7e87 +0x5463 0x7e8a +0x5464 0x7e8d +0x5465 0x7e91 +0x5466 0x7e95 +0x5467 0x7e98 +0x5468 0x7e9a +0x5469 0x7e9d +0x546a 0x7e9e +0x546b 0x7f3c +0x546c 0x7f3b +0x546d 0x7f3d +0x546e 0x7f3e +0x546f 0x7f3f +0x5470 0x7f43 +0x5471 0x7f44 +0x5472 0x7f47 +0x5473 0x7f4f +0x5474 0x7f52 +0x5475 0x7f53 +0x5476 0x7f5b +0x5477 0x7f5c +0x5478 0x7f5d +0x5479 0x7f61 +0x547a 0x7f63 +0x547b 0x7f64 +0x547c 0x7f65 +0x547d 0x7f66 +0x547e 0x7f6d +0x5521 0x7f71 +0x5522 0x7f7d +0x5523 0x7f7e +0x5524 0x7f7f +0x5525 0x7f80 +0x5526 0x7f8b +0x5527 0x7f8d +0x5528 0x7f8f +0x5529 0x7f90 +0x552a 0x7f91 +0x552b 0x7f96 +0x552c 0x7f97 +0x552d 0x7f9c +0x552e 0x7fa1 +0x552f 0x7fa2 +0x5530 0x7fa6 +0x5531 0x7faa +0x5532 0x7fad +0x5533 0x7fb4 +0x5534 0x7fbc +0x5535 0x7fbf +0x5536 0x7fc0 +0x5537 0x7fc3 +0x5538 0x7fc8 +0x5539 0x7fce +0x553a 0x7fcf +0x553b 0x7fdb +0x553c 0x7fdf +0x553d 0x7fe3 +0x553e 0x7fe5 +0x553f 0x7fe8 +0x5540 0x7fec +0x5541 0x7fee +0x5542 0x7fef +0x5543 0x7ff2 +0x5544 0x7ffa +0x5545 0x7ffd +0x5546 0x7ffe +0x5547 0x7fff +0x5548 0x8007 +0x5549 0x8008 +0x554a 0x800a +0x554b 0x800d +0x554c 0x800e +0x554d 0x800f +0x554e 0x8011 +0x554f 0x8013 +0x5550 0x8014 +0x5551 0x8016 +0x5552 0x801d +0x5553 0x801e +0x5554 0x801f +0x5555 0x8020 +0x5556 0x8024 +0x5557 0x8026 +0x5558 0x802c +0x5559 0x802e +0x555a 0x8030 +0x555b 0x8034 +0x555c 0x8035 +0x555d 0x8037 +0x555e 0x8039 +0x555f 0x803a +0x5560 0x803c +0x5561 0x803e +0x5562 0x8040 +0x5563 0x8044 +0x5564 0x8060 +0x5565 0x8064 +0x5566 0x8066 +0x5567 0x806d +0x5568 0x8071 +0x5569 0x8075 +0x556a 0x8081 +0x556b 0x8088 +0x556c 0x808e +0x556d 0x809c +0x556e 0x809e +0x556f 0x80a6 +0x5570 0x80a7 +0x5571 0x80ab +0x5572 0x80b8 +0x5573 0x80b9 +0x5574 0x80c8 +0x5575 0x80cd +0x5576 0x80cf +0x5577 0x80d2 +0x5578 0x80d4 +0x5579 0x80d5 +0x557a 0x80d7 +0x557b 0x80d8 +0x557c 0x80e0 +0x557d 0x80ed +0x557e 0x80ee +0x5621 0x80f0 +0x5622 0x80f2 +0x5623 0x80f3 +0x5624 0x80f6 +0x5625 0x80f9 +0x5626 0x80fa +0x5627 0x80fe +0x5628 0x8103 +0x5629 0x810b +0x562a 0x8116 +0x562b 0x8117 +0x562c 0x8118 +0x562d 0x811c +0x562e 0x811e +0x562f 0x8120 +0x5630 0x8124 +0x5631 0x8127 +0x5632 0x812c +0x5633 0x8130 +0x5634 0x8135 +0x5635 0x813a +0x5636 0x813c +0x5637 0x8145 +0x5638 0x8147 +0x5639 0x814a +0x563a 0x814c +0x563b 0x8152 +0x563c 0x8157 +0x563d 0x8160 +0x563e 0x8161 +0x563f 0x8167 +0x5640 0x8168 +0x5641 0x8169 +0x5642 0x816d +0x5643 0x816f +0x5644 0x8177 +0x5645 0x8181 +0x5646 0x8190 +0x5647 0x8184 +0x5648 0x8185 +0x5649 0x8186 +0x564a 0x818b +0x564b 0x818e +0x564c 0x8196 +0x564d 0x8198 +0x564e 0x819b +0x564f 0x819e +0x5650 0x81a2 +0x5651 0x81ae +0x5652 0x81b2 +0x5653 0x81b4 +0x5654 0x81bb +0x5655 0x81cb +0x5656 0x81c3 +0x5657 0x81c5 +0x5658 0x81ca +0x5659 0x81ce +0x565a 0x81cf +0x565b 0x81d5 +0x565c 0x81d7 +0x565d 0x81db +0x565e 0x81dd +0x565f 0x81de +0x5660 0x81e1 +0x5661 0x81e4 +0x5662 0x81eb +0x5663 0x81ec +0x5664 0x81f0 +0x5665 0x81f1 +0x5666 0x81f2 +0x5667 0x81f5 +0x5668 0x81f6 +0x5669 0x81f8 +0x566a 0x81f9 +0x566b 0x81fd +0x566c 0x81ff +0x566d 0x8200 +0x566e 0x8203 +0x566f 0x820f +0x5670 0x8213 +0x5671 0x8214 +0x5672 0x8219 +0x5673 0x821a +0x5674 0x821d +0x5675 0x8221 +0x5676 0x8222 +0x5677 0x8228 +0x5678 0x8232 +0x5679 0x8234 +0x567a 0x823a +0x567b 0x8243 +0x567c 0x8244 +0x567d 0x8245 +0x567e 0x8246 +0x5721 0x824b +0x5722 0x824e +0x5723 0x824f +0x5724 0x8251 +0x5725 0x8256 +0x5726 0x825c +0x5727 0x8260 +0x5728 0x8263 +0x5729 0x8267 +0x572a 0x826d +0x572b 0x8274 +0x572c 0x827b +0x572d 0x827d +0x572e 0x827f +0x572f 0x8280 +0x5730 0x8281 +0x5731 0x8283 +0x5732 0x8284 +0x5733 0x8287 +0x5734 0x8289 +0x5735 0x828a +0x5736 0x828e +0x5737 0x8291 +0x5738 0x8294 +0x5739 0x8296 +0x573a 0x8298 +0x573b 0x829a +0x573c 0x829b +0x573d 0x82a0 +0x573e 0x82a1 +0x573f 0x82a3 +0x5740 0x82a4 +0x5741 0x82a7 +0x5742 0x82a8 +0x5743 0x82a9 +0x5744 0x82aa +0x5745 0x82ae +0x5746 0x82b0 +0x5747 0x82b2 +0x5748 0x82b4 +0x5749 0x82b7 +0x574a 0x82ba +0x574b 0x82bc +0x574c 0x82be +0x574d 0x82bf +0x574e 0x82c6 +0x574f 0x82d0 +0x5750 0x82d5 +0x5751 0x82da +0x5752 0x82e0 +0x5753 0x82e2 +0x5754 0x82e4 +0x5755 0x82e8 +0x5756 0x82ea +0x5757 0x82ed +0x5758 0x82ef +0x5759 0x82f6 +0x575a 0x82f7 +0x575b 0x82fd +0x575c 0x82fe +0x575d 0x8300 +0x575e 0x8301 +0x575f 0x8307 +0x5760 0x8308 +0x5761 0x830a +0x5762 0x830b +0x5763 0x8354 +0x5764 0x831b +0x5765 0x831d +0x5766 0x831e +0x5767 0x831f +0x5768 0x8321 +0x5769 0x8322 +0x576a 0x832c +0x576b 0x832d +0x576c 0x832e +0x576d 0x8330 +0x576e 0x8333 +0x576f 0x8337 +0x5770 0x833a +0x5771 0x833c +0x5772 0x833d +0x5773 0x8342 +0x5774 0x8343 +0x5775 0x8344 +0x5776 0x8347 +0x5777 0x834d +0x5778 0x834e +0x5779 0x8351 +0x577a 0x8355 +0x577b 0x8356 +0x577c 0x8357 +0x577d 0x8370 +0x577e 0x8378 +0x5821 0x837d +0x5822 0x837f +0x5823 0x8380 +0x5824 0x8382 +0x5825 0x8384 +0x5826 0x8386 +0x5827 0x838d +0x5828 0x8392 +0x5829 0x8394 +0x582a 0x8395 +0x582b 0x8398 +0x582c 0x8399 +0x582d 0x839b +0x582e 0x839c +0x582f 0x839d +0x5830 0x83a6 +0x5831 0x83a7 +0x5832 0x83a9 +0x5833 0x83ac +0x5834 0x83be +0x5835 0x83bf +0x5836 0x83c0 +0x5837 0x83c7 +0x5838 0x83c9 +0x5839 0x83cf +0x583a 0x83d0 +0x583b 0x83d1 +0x583c 0x83d4 +0x583d 0x83dd +0x583e 0x8353 +0x583f 0x83e8 +0x5840 0x83ea +0x5841 0x83f6 +0x5842 0x83f8 +0x5843 0x83f9 +0x5844 0x83fc +0x5845 0x8401 +0x5846 0x8406 +0x5847 0x840a +0x5848 0x840f +0x5849 0x8411 +0x584a 0x8415 +0x584b 0x8419 +0x584c 0x83ad +0x584d 0x842f +0x584e 0x8439 +0x584f 0x8445 +0x5850 0x8447 +0x5851 0x8448 +0x5852 0x844a +0x5853 0x844d +0x5854 0x844f +0x5855 0x8451 +0x5856 0x8452 +0x5857 0x8456 +0x5858 0x8458 +0x5859 0x8459 +0x585a 0x845a +0x585b 0x845c +0x585c 0x8460 +0x585d 0x8464 +0x585e 0x8465 +0x585f 0x8467 +0x5860 0x846a +0x5861 0x8470 +0x5862 0x8473 +0x5863 0x8474 +0x5864 0x8476 +0x5865 0x8478 +0x5866 0x847c +0x5867 0x847d +0x5868 0x8481 +0x5869 0x8485 +0x586a 0x8492 +0x586b 0x8493 +0x586c 0x8495 +0x586d 0x849e +0x586e 0x84a6 +0x586f 0x84a8 +0x5870 0x84a9 +0x5871 0x84aa +0x5872 0x84af +0x5873 0x84b1 +0x5874 0x84b4 +0x5875 0x84ba +0x5876 0x84bd +0x5877 0x84be +0x5878 0x84c0 +0x5879 0x84c2 +0x587a 0x84c7 +0x587b 0x84c8 +0x587c 0x84cc +0x587d 0x84cf +0x587e 0x84d3 +0x5921 0x84dc +0x5922 0x84e7 +0x5923 0x84ea +0x5924 0x84ef +0x5925 0x84f0 +0x5926 0x84f1 +0x5927 0x84f2 +0x5928 0x84f7 +0x5929 0x8532 +0x592a 0x84fa +0x592b 0x84fb +0x592c 0x84fd +0x592d 0x8502 +0x592e 0x8503 +0x592f 0x8507 +0x5930 0x850c +0x5931 0x850e +0x5932 0x8510 +0x5933 0x851c +0x5934 0x851e +0x5935 0x8522 +0x5936 0x8523 +0x5937 0x8524 +0x5938 0x8525 +0x5939 0x8527 +0x593a 0x852a +0x593b 0x852b +0x593c 0x852f +0x593d 0x8533 +0x593e 0x8534 +0x593f 0x8536 +0x5940 0x853f +0x5941 0x8546 +0x5942 0x854f +0x5943 0x8550 +0x5944 0x8551 +0x5945 0x8552 +0x5946 0x8553 +0x5947 0x8556 +0x5948 0x8559 +0x5949 0x855c +0x594a 0x855d +0x594b 0x855e +0x594c 0x855f +0x594d 0x8560 +0x594e 0x8561 +0x594f 0x8562 +0x5950 0x8564 +0x5951 0x856b +0x5952 0x856f +0x5953 0x8579 +0x5954 0x857a +0x5955 0x857b +0x5956 0x857d +0x5957 0x857f +0x5958 0x8581 +0x5959 0x8585 +0x595a 0x8586 +0x595b 0x8589 +0x595c 0x858b +0x595d 0x858c +0x595e 0x858f +0x595f 0x8593 +0x5960 0x8598 +0x5961 0x859d +0x5962 0x859f +0x5963 0x85a0 +0x5964 0x85a2 +0x5965 0x85a5 +0x5966 0x85a7 +0x5967 0x85b4 +0x5968 0x85b6 +0x5969 0x85b7 +0x596a 0x85b8 +0x596b 0x85bc +0x596c 0x85bd +0x596d 0x85be +0x596e 0x85bf +0x596f 0x85c2 +0x5970 0x85c7 +0x5971 0x85ca +0x5972 0x85cb +0x5973 0x85ce +0x5974 0x85ad +0x5975 0x85d8 +0x5976 0x85da +0x5977 0x85df +0x5978 0x85e0 +0x5979 0x85e6 +0x597a 0x85e8 +0x597b 0x85ed +0x597c 0x85f3 +0x597d 0x85f6 +0x597e 0x85fc +0x5a21 0x85ff +0x5a22 0x8600 +0x5a23 0x8604 +0x5a24 0x8605 +0x5a25 0x860d +0x5a26 0x860e +0x5a27 0x8610 +0x5a28 0x8611 +0x5a29 0x8612 +0x5a2a 0x8618 +0x5a2b 0x8619 +0x5a2c 0x861b +0x5a2d 0x861e +0x5a2e 0x8621 +0x5a2f 0x8627 +0x5a30 0x8629 +0x5a31 0x8636 +0x5a32 0x8638 +0x5a33 0x863a +0x5a34 0x863c +0x5a35 0x863d +0x5a36 0x8640 +0x5a37 0x8642 +0x5a38 0x8646 +0x5a39 0x8652 +0x5a3a 0x8653 +0x5a3b 0x8656 +0x5a3c 0x8657 +0x5a3d 0x8658 +0x5a3e 0x8659 +0x5a3f 0x865d +0x5a40 0x8660 +0x5a41 0x8661 +0x5a42 0x8662 +0x5a43 0x8663 +0x5a44 0x8664 +0x5a45 0x8669 +0x5a46 0x866c +0x5a47 0x866f +0x5a48 0x8675 +0x5a49 0x8676 +0x5a4a 0x8677 +0x5a4b 0x867a +0x5a4c 0x868d +0x5a4d 0x8691 +0x5a4e 0x8696 +0x5a4f 0x8698 +0x5a50 0x869a +0x5a51 0x869c +0x5a52 0x86a1 +0x5a53 0x86a6 +0x5a54 0x86a7 +0x5a55 0x86a8 +0x5a56 0x86ad +0x5a57 0x86b1 +0x5a58 0x86b3 +0x5a59 0x86b4 +0x5a5a 0x86b5 +0x5a5b 0x86b7 +0x5a5c 0x86b8 +0x5a5d 0x86b9 +0x5a5e 0x86bf +0x5a5f 0x86c0 +0x5a60 0x86c1 +0x5a61 0x86c3 +0x5a62 0x86c5 +0x5a63 0x86d1 +0x5a64 0x86d2 +0x5a65 0x86d5 +0x5a66 0x86d7 +0x5a67 0x86da +0x5a68 0x86dc +0x5a69 0x86e0 +0x5a6a 0x86e3 +0x5a6b 0x86e5 +0x5a6c 0x86e7 +0x5a6d 0x8688 +0x5a6e 0x86fa +0x5a6f 0x86fc +0x5a70 0x86fd +0x5a71 0x8704 +0x5a72 0x8705 +0x5a73 0x8707 +0x5a74 0x870b +0x5a75 0x870e +0x5a76 0x870f +0x5a77 0x8710 +0x5a78 0x8713 +0x5a79 0x8714 +0x5a7a 0x8719 +0x5a7b 0x871e +0x5a7c 0x871f +0x5a7d 0x8721 +0x5a7e 0x8723 +0x5b21 0x8728 +0x5b22 0x872e +0x5b23 0x872f +0x5b24 0x8731 +0x5b25 0x8732 +0x5b26 0x8739 +0x5b27 0x873a +0x5b28 0x873c +0x5b29 0x873d +0x5b2a 0x873e +0x5b2b 0x8740 +0x5b2c 0x8743 +0x5b2d 0x8745 +0x5b2e 0x874d +0x5b2f 0x8758 +0x5b30 0x875d +0x5b31 0x8761 +0x5b32 0x8764 +0x5b33 0x8765 +0x5b34 0x876f +0x5b35 0x8771 +0x5b36 0x8772 +0x5b37 0x877b +0x5b38 0x8783 +0x5b39 0x8784 +0x5b3a 0x8785 +0x5b3b 0x8786 +0x5b3c 0x8787 +0x5b3d 0x8788 +0x5b3e 0x8789 +0x5b3f 0x878b +0x5b40 0x878c +0x5b41 0x8790 +0x5b42 0x8793 +0x5b43 0x8795 +0x5b44 0x8797 +0x5b45 0x8798 +0x5b46 0x8799 +0x5b47 0x879e +0x5b48 0x87a0 +0x5b49 0x87a3 +0x5b4a 0x87a7 +0x5b4b 0x87ac +0x5b4c 0x87ad +0x5b4d 0x87ae +0x5b4e 0x87b1 +0x5b4f 0x87b5 +0x5b50 0x87be +0x5b51 0x87bf +0x5b52 0x87c1 +0x5b53 0x87c8 +0x5b54 0x87c9 +0x5b55 0x87ca +0x5b56 0x87ce +0x5b57 0x87d5 +0x5b58 0x87d6 +0x5b59 0x87d9 +0x5b5a 0x87da +0x5b5b 0x87dc +0x5b5c 0x87df +0x5b5d 0x87e2 +0x5b5e 0x87e3 +0x5b5f 0x87e4 +0x5b60 0x87ea +0x5b61 0x87eb +0x5b62 0x87ed +0x5b63 0x87f1 +0x5b64 0x87f3 +0x5b65 0x87f8 +0x5b66 0x87fa +0x5b67 0x87ff +0x5b68 0x8801 +0x5b69 0x8803 +0x5b6a 0x8806 +0x5b6b 0x8809 +0x5b6c 0x880a +0x5b6d 0x880b +0x5b6e 0x8810 +0x5b6f 0x8819 +0x5b70 0x8812 +0x5b71 0x8813 +0x5b72 0x8814 +0x5b73 0x8818 +0x5b74 0x881a +0x5b75 0x881b +0x5b76 0x881c +0x5b77 0x881e +0x5b78 0x881f +0x5b79 0x8828 +0x5b7a 0x882d +0x5b7b 0x882e +0x5b7c 0x8830 +0x5b7d 0x8832 +0x5b7e 0x8835 +0x5c21 0x883a +0x5c22 0x883c +0x5c23 0x8841 +0x5c24 0x8843 +0x5c25 0x8845 +0x5c26 0x8848 +0x5c27 0x8849 +0x5c28 0x884a +0x5c29 0x884b +0x5c2a 0x884e +0x5c2b 0x8851 +0x5c2c 0x8855 +0x5c2d 0x8856 +0x5c2e 0x8858 +0x5c2f 0x885a +0x5c30 0x885c +0x5c31 0x885f +0x5c32 0x8860 +0x5c33 0x8864 +0x5c34 0x8869 +0x5c35 0x8871 +0x5c36 0x8879 +0x5c37 0x887b +0x5c38 0x8880 +0x5c39 0x8898 +0x5c3a 0x889a +0x5c3b 0x889b +0x5c3c 0x889c +0x5c3d 0x889f +0x5c3e 0x88a0 +0x5c3f 0x88a8 +0x5c40 0x88aa +0x5c41 0x88ba +0x5c42 0x88bd +0x5c43 0x88be +0x5c44 0x88c0 +0x5c45 0x88ca +0x5c46 0x88cb +0x5c47 0x88cc +0x5c48 0x88cd +0x5c49 0x88ce +0x5c4a 0x88d1 +0x5c4b 0x88d2 +0x5c4c 0x88d3 +0x5c4d 0x88db +0x5c4e 0x88de +0x5c4f 0x88e7 +0x5c50 0x88ef +0x5c51 0x88f0 +0x5c52 0x88f1 +0x5c53 0x88f5 +0x5c54 0x88f7 +0x5c55 0x8901 +0x5c56 0x8906 +0x5c57 0x890d +0x5c58 0x890e +0x5c59 0x890f +0x5c5a 0x8915 +0x5c5b 0x8916 +0x5c5c 0x8918 +0x5c5d 0x8919 +0x5c5e 0x891a +0x5c5f 0x891c +0x5c60 0x8920 +0x5c61 0x8926 +0x5c62 0x8927 +0x5c63 0x8928 +0x5c64 0x8930 +0x5c65 0x8931 +0x5c66 0x8932 +0x5c67 0x8935 +0x5c68 0x8939 +0x5c69 0x893a +0x5c6a 0x893e +0x5c6b 0x8940 +0x5c6c 0x8942 +0x5c6d 0x8945 +0x5c6e 0x8946 +0x5c6f 0x8949 +0x5c70 0x894f +0x5c71 0x8952 +0x5c72 0x8957 +0x5c73 0x895a +0x5c74 0x895b +0x5c75 0x895c +0x5c76 0x8961 +0x5c77 0x8962 +0x5c78 0x8963 +0x5c79 0x896b +0x5c7a 0x896e +0x5c7b 0x8970 +0x5c7c 0x8973 +0x5c7d 0x8975 +0x5c7e 0x897a +0x5d21 0x897b +0x5d22 0x897c +0x5d23 0x897d +0x5d24 0x8989 +0x5d25 0x898d +0x5d26 0x8990 +0x5d27 0x8994 +0x5d28 0x8995 +0x5d29 0x899b +0x5d2a 0x899c +0x5d2b 0x899f +0x5d2c 0x89a0 +0x5d2d 0x89a5 +0x5d2e 0x89b0 +0x5d2f 0x89b4 +0x5d30 0x89b5 +0x5d31 0x89b6 +0x5d32 0x89b7 +0x5d33 0x89bc +0x5d34 0x89d4 +0x5d35 0x89d5 +0x5d36 0x89d6 +0x5d37 0x89d7 +0x5d38 0x89d8 +0x5d39 0x89e5 +0x5d3a 0x89e9 +0x5d3b 0x89eb +0x5d3c 0x89ed +0x5d3d 0x89f1 +0x5d3e 0x89f3 +0x5d3f 0x89f6 +0x5d40 0x89f9 +0x5d41 0x89fd +0x5d42 0x89ff +0x5d43 0x8a04 +0x5d44 0x8a05 +0x5d45 0x8a07 +0x5d46 0x8a0f +0x5d47 0x8a11 +0x5d48 0x8a12 +0x5d49 0x8a14 +0x5d4a 0x8a15 +0x5d4b 0x8a1e +0x5d4c 0x8a20 +0x5d4d 0x8a22 +0x5d4e 0x8a24 +0x5d4f 0x8a26 +0x5d50 0x8a2b +0x5d51 0x8a2c +0x5d52 0x8a2f +0x5d53 0x8a35 +0x5d54 0x8a37 +0x5d55 0x8a3d +0x5d56 0x8a3e +0x5d57 0x8a40 +0x5d58 0x8a43 +0x5d59 0x8a45 +0x5d5a 0x8a47 +0x5d5b 0x8a49 +0x5d5c 0x8a4d +0x5d5d 0x8a4e +0x5d5e 0x8a53 +0x5d5f 0x8a56 +0x5d60 0x8a57 +0x5d61 0x8a58 +0x5d62 0x8a5c +0x5d63 0x8a5d +0x5d64 0x8a61 +0x5d65 0x8a65 +0x5d66 0x8a67 +0x5d67 0x8a75 +0x5d68 0x8a76 +0x5d69 0x8a77 +0x5d6a 0x8a79 +0x5d6b 0x8a7a +0x5d6c 0x8a7b +0x5d6d 0x8a7e +0x5d6e 0x8a7f +0x5d6f 0x8a80 +0x5d70 0x8a83 +0x5d71 0x8a86 +0x5d72 0x8a8b +0x5d73 0x8a8f +0x5d74 0x8a90 +0x5d75 0x8a92 +0x5d76 0x8a96 +0x5d77 0x8a97 +0x5d78 0x8a99 +0x5d79 0x8a9f +0x5d7a 0x8aa7 +0x5d7b 0x8aa9 +0x5d7c 0x8aae +0x5d7d 0x8aaf +0x5d7e 0x8ab3 +0x5e21 0x8ab6 +0x5e22 0x8ab7 +0x5e23 0x8abb +0x5e24 0x8abe +0x5e25 0x8ac3 +0x5e26 0x8ac6 +0x5e27 0x8ac8 +0x5e28 0x8ac9 +0x5e29 0x8aca +0x5e2a 0x8ad1 +0x5e2b 0x8ad3 +0x5e2c 0x8ad4 +0x5e2d 0x8ad5 +0x5e2e 0x8ad7 +0x5e2f 0x8add +0x5e30 0x8adf +0x5e31 0x8aec +0x5e32 0x8af0 +0x5e33 0x8af4 +0x5e34 0x8af5 +0x5e35 0x8af6 +0x5e36 0x8afc +0x5e37 0x8aff +0x5e38 0x8b05 +0x5e39 0x8b06 +0x5e3a 0x8b0b +0x5e3b 0x8b11 +0x5e3c 0x8b1c +0x5e3d 0x8b1e +0x5e3e 0x8b1f +0x5e3f 0x8b0a +0x5e40 0x8b2d +0x5e41 0x8b30 +0x5e42 0x8b37 +0x5e43 0x8b3c +0x5e44 0x8b42 +0x5e45 0x8b43 +0x5e46 0x8b44 +0x5e47 0x8b45 +0x5e48 0x8b46 +0x5e49 0x8b48 +0x5e4a 0x8b52 +0x5e4b 0x8b53 +0x5e4c 0x8b54 +0x5e4d 0x8b59 +0x5e4e 0x8b4d +0x5e4f 0x8b5e +0x5e50 0x8b63 +0x5e51 0x8b6d +0x5e52 0x8b76 +0x5e53 0x8b78 +0x5e54 0x8b79 +0x5e55 0x8b7c +0x5e56 0x8b7e +0x5e57 0x8b81 +0x5e58 0x8b84 +0x5e59 0x8b85 +0x5e5a 0x8b8b +0x5e5b 0x8b8d +0x5e5c 0x8b8f +0x5e5d 0x8b94 +0x5e5e 0x8b95 +0x5e5f 0x8b9c +0x5e60 0x8b9e +0x5e61 0x8b9f +0x5e62 0x8c38 +0x5e63 0x8c39 +0x5e64 0x8c3d +0x5e65 0x8c3e +0x5e66 0x8c45 +0x5e67 0x8c47 +0x5e68 0x8c49 +0x5e69 0x8c4b +0x5e6a 0x8c4f +0x5e6b 0x8c51 +0x5e6c 0x8c53 +0x5e6d 0x8c54 +0x5e6e 0x8c57 +0x5e6f 0x8c58 +0x5e70 0x8c5b +0x5e71 0x8c5d +0x5e72 0x8c59 +0x5e73 0x8c63 +0x5e74 0x8c64 +0x5e75 0x8c66 +0x5e76 0x8c68 +0x5e77 0x8c69 +0x5e78 0x8c6d +0x5e79 0x8c73 +0x5e7a 0x8c75 +0x5e7b 0x8c76 +0x5e7c 0x8c7b +0x5e7d 0x8c7e +0x5e7e 0x8c86 +0x5f21 0x8c87 +0x5f22 0x8c8b +0x5f23 0x8c90 +0x5f24 0x8c92 +0x5f25 0x8c93 +0x5f26 0x8c99 +0x5f27 0x8c9b +0x5f28 0x8c9c +0x5f29 0x8ca4 +0x5f2a 0x8cb9 +0x5f2b 0x8cba +0x5f2c 0x8cc5 +0x5f2d 0x8cc6 +0x5f2e 0x8cc9 +0x5f2f 0x8ccb +0x5f30 0x8ccf +0x5f31 0x8cd6 +0x5f32 0x8cd5 +0x5f33 0x8cd9 +0x5f34 0x8cdd +0x5f35 0x8ce1 +0x5f36 0x8ce8 +0x5f37 0x8cec +0x5f38 0x8cef +0x5f39 0x8cf0 +0x5f3a 0x8cf2 +0x5f3b 0x8cf5 +0x5f3c 0x8cf7 +0x5f3d 0x8cf8 +0x5f3e 0x8cfe +0x5f3f 0x8cff +0x5f40 0x8d01 +0x5f41 0x8d03 +0x5f42 0x8d09 +0x5f43 0x8d12 +0x5f44 0x8d17 +0x5f45 0x8d1b +0x5f46 0x8d65 +0x5f47 0x8d69 +0x5f48 0x8d6c +0x5f49 0x8d6e +0x5f4a 0x8d7f +0x5f4b 0x8d82 +0x5f4c 0x8d84 +0x5f4d 0x8d88 +0x5f4e 0x8d8d +0x5f4f 0x8d90 +0x5f50 0x8d91 +0x5f51 0x8d95 +0x5f52 0x8d9e +0x5f53 0x8d9f +0x5f54 0x8da0 +0x5f55 0x8da6 +0x5f56 0x8dab +0x5f57 0x8dac +0x5f58 0x8daf +0x5f59 0x8db2 +0x5f5a 0x8db5 +0x5f5b 0x8db7 +0x5f5c 0x8db9 +0x5f5d 0x8dbb +0x5f5e 0x8dc0 +0x5f5f 0x8dc5 +0x5f60 0x8dc6 +0x5f61 0x8dc7 +0x5f62 0x8dc8 +0x5f63 0x8dca +0x5f64 0x8dce +0x5f65 0x8dd1 +0x5f66 0x8dd4 +0x5f67 0x8dd5 +0x5f68 0x8dd7 +0x5f69 0x8dd9 +0x5f6a 0x8de4 +0x5f6b 0x8de5 +0x5f6c 0x8de7 +0x5f6d 0x8dec +0x5f6e 0x8df0 +0x5f6f 0x8dbc +0x5f70 0x8df1 +0x5f71 0x8df2 +0x5f72 0x8df4 +0x5f73 0x8dfd +0x5f74 0x8e01 +0x5f75 0x8e04 +0x5f76 0x8e05 +0x5f77 0x8e06 +0x5f78 0x8e0b +0x5f79 0x8e11 +0x5f7a 0x8e14 +0x5f7b 0x8e16 +0x5f7c 0x8e20 +0x5f7d 0x8e21 +0x5f7e 0x8e22 +0x6021 0x8e23 +0x6022 0x8e26 +0x6023 0x8e27 +0x6024 0x8e31 +0x6025 0x8e33 +0x6026 0x8e36 +0x6027 0x8e37 +0x6028 0x8e38 +0x6029 0x8e39 +0x602a 0x8e3d +0x602b 0x8e40 +0x602c 0x8e41 +0x602d 0x8e4b +0x602e 0x8e4d +0x602f 0x8e4e +0x6030 0x8e4f +0x6031 0x8e54 +0x6032 0x8e5b +0x6033 0x8e5c +0x6034 0x8e5d +0x6035 0x8e5e +0x6036 0x8e61 +0x6037 0x8e62 +0x6038 0x8e69 +0x6039 0x8e6c +0x603a 0x8e6d +0x603b 0x8e6f +0x603c 0x8e70 +0x603d 0x8e71 +0x603e 0x8e79 +0x603f 0x8e7a +0x6040 0x8e7b +0x6041 0x8e82 +0x6042 0x8e83 +0x6043 0x8e89 +0x6044 0x8e90 +0x6045 0x8e92 +0x6046 0x8e95 +0x6047 0x8e9a +0x6048 0x8e9b +0x6049 0x8e9d +0x604a 0x8e9e +0x604b 0x8ea2 +0x604c 0x8ea7 +0x604d 0x8ea9 +0x604e 0x8ead +0x604f 0x8eae +0x6050 0x8eb3 +0x6051 0x8eb5 +0x6052 0x8eba +0x6053 0x8ebb +0x6054 0x8ec0 +0x6055 0x8ec1 +0x6056 0x8ec3 +0x6057 0x8ec4 +0x6058 0x8ec7 +0x6059 0x8ecf +0x605a 0x8ed1 +0x605b 0x8ed4 +0x605c 0x8edc +0x605d 0x8ee8 +0x605e 0x8eee +0x605f 0x8ef0 +0x6060 0x8ef1 +0x6061 0x8ef7 +0x6062 0x8ef9 +0x6063 0x8efa +0x6064 0x8eed +0x6065 0x8f00 +0x6066 0x8f02 +0x6067 0x8f07 +0x6068 0x8f08 +0x6069 0x8f0f +0x606a 0x8f10 +0x606b 0x8f16 +0x606c 0x8f17 +0x606d 0x8f18 +0x606e 0x8f1e +0x606f 0x8f20 +0x6070 0x8f21 +0x6071 0x8f23 +0x6072 0x8f25 +0x6073 0x8f27 +0x6074 0x8f28 +0x6075 0x8f2c +0x6076 0x8f2d +0x6077 0x8f2e +0x6078 0x8f34 +0x6079 0x8f35 +0x607a 0x8f36 +0x607b 0x8f37 +0x607c 0x8f3a +0x607d 0x8f40 +0x607e 0x8f41 +0x6121 0x8f43 +0x6122 0x8f47 +0x6123 0x8f4f +0x6124 0x8f51 +0x6125 0x8f52 +0x6126 0x8f53 +0x6127 0x8f54 +0x6128 0x8f55 +0x6129 0x8f58 +0x612a 0x8f5d +0x612b 0x8f5e +0x612c 0x8f65 +0x612d 0x8f9d +0x612e 0x8fa0 +0x612f 0x8fa1 +0x6130 0x8fa4 +0x6131 0x8fa5 +0x6132 0x8fa6 +0x6133 0x8fb5 +0x6134 0x8fb6 +0x6135 0x8fb8 +0x6136 0x8fbe +0x6137 0x8fc0 +0x6138 0x8fc1 +0x6139 0x8fc6 +0x613a 0x8fca +0x613b 0x8fcb +0x613c 0x8fcd +0x613d 0x8fd0 +0x613e 0x8fd2 +0x613f 0x8fd3 +0x6140 0x8fd5 +0x6141 0x8fe0 +0x6142 0x8fe3 +0x6143 0x8fe4 +0x6144 0x8fe8 +0x6145 0x8fee +0x6146 0x8ff1 +0x6147 0x8ff5 +0x6148 0x8ff6 +0x6149 0x8ffb +0x614a 0x8ffe +0x614b 0x9002 +0x614c 0x9004 +0x614d 0x9008 +0x614e 0x900c +0x614f 0x9018 +0x6150 0x901b +0x6151 0x9028 +0x6152 0x9029 +0x6153 0x902f +0x6154 0x902a +0x6155 0x902c +0x6156 0x902d +0x6157 0x9033 +0x6158 0x9034 +0x6159 0x9037 +0x615a 0x903f +0x615b 0x9043 +0x615c 0x9044 +0x615d 0x904c +0x615e 0x905b +0x615f 0x905d +0x6160 0x9062 +0x6161 0x9066 +0x6162 0x9067 +0x6163 0x906c +0x6164 0x9070 +0x6165 0x9074 +0x6166 0x9079 +0x6167 0x9085 +0x6168 0x9088 +0x6169 0x908b +0x616a 0x908c +0x616b 0x908e +0x616c 0x9090 +0x616d 0x9095 +0x616e 0x9097 +0x616f 0x9098 +0x6170 0x9099 +0x6171 0x909b +0x6172 0x90a0 +0x6173 0x90a1 +0x6174 0x90a2 +0x6175 0x90a5 +0x6176 0x90b0 +0x6177 0x90b2 +0x6178 0x90b3 +0x6179 0x90b4 +0x617a 0x90b6 +0x617b 0x90bd +0x617c 0x90cc +0x617d 0x90be +0x617e 0x90c3 +0x6221 0x90c4 +0x6222 0x90c5 +0x6223 0x90c7 +0x6224 0x90c8 +0x6225 0x90d5 +0x6226 0x90d7 +0x6227 0x90d8 +0x6228 0x90d9 +0x6229 0x90dc +0x622a 0x90dd +0x622b 0x90df +0x622c 0x90e5 +0x622d 0x90d2 +0x622e 0x90f6 +0x622f 0x90eb +0x6230 0x90ef +0x6231 0x90f0 +0x6232 0x90f4 +0x6233 0x90fe +0x6234 0x90ff +0x6235 0x9100 +0x6236 0x9104 +0x6237 0x9105 +0x6238 0x9106 +0x6239 0x9108 +0x623a 0x910d +0x623b 0x9110 +0x623c 0x9114 +0x623d 0x9116 +0x623e 0x9117 +0x623f 0x9118 +0x6240 0x911a +0x6241 0x911c +0x6242 0x911e +0x6243 0x9120 +0x6244 0x9125 +0x6245 0x9122 +0x6246 0x9123 +0x6247 0x9127 +0x6248 0x9129 +0x6249 0x912e +0x624a 0x912f +0x624b 0x9131 +0x624c 0x9134 +0x624d 0x9136 +0x624e 0x9137 +0x624f 0x9139 +0x6250 0x913a +0x6251 0x913c +0x6252 0x913d +0x6253 0x9143 +0x6254 0x9147 +0x6255 0x9148 +0x6256 0x914f +0x6257 0x9153 +0x6258 0x9157 +0x6259 0x9159 +0x625a 0x915a +0x625b 0x915b +0x625c 0x9161 +0x625d 0x9164 +0x625e 0x9167 +0x625f 0x916d +0x6260 0x9174 +0x6261 0x9179 +0x6262 0x917a +0x6263 0x917b +0x6264 0x9181 +0x6265 0x9183 +0x6266 0x9185 +0x6267 0x9186 +0x6268 0x918a +0x6269 0x918e +0x626a 0x9191 +0x626b 0x9193 +0x626c 0x9194 +0x626d 0x9195 +0x626e 0x9198 +0x626f 0x919e +0x6270 0x91a1 +0x6271 0x91a6 +0x6272 0x91a8 +0x6273 0x91ac +0x6274 0x91ad +0x6275 0x91ae +0x6276 0x91b0 +0x6277 0x91b1 +0x6278 0x91b2 +0x6279 0x91b3 +0x627a 0x91b6 +0x627b 0x91bb +0x627c 0x91bc +0x627d 0x91bd +0x627e 0x91bf +0x6321 0x91c2 +0x6322 0x91c3 +0x6323 0x91c5 +0x6324 0x91d3 +0x6325 0x91d4 +0x6326 0x91d7 +0x6327 0x91d9 +0x6328 0x91da +0x6329 0x91de +0x632a 0x91e4 +0x632b 0x91e5 +0x632c 0x91e9 +0x632d 0x91ea +0x632e 0x91ec +0x632f 0x91ed +0x6330 0x91ee +0x6331 0x91ef +0x6332 0x91f0 +0x6333 0x91f1 +0x6334 0x91f7 +0x6335 0x91f9 +0x6336 0x91fb +0x6337 0x91fd +0x6338 0x9200 +0x6339 0x9201 +0x633a 0x9204 +0x633b 0x9205 +0x633c 0x9206 +0x633d 0x9207 +0x633e 0x9209 +0x633f 0x920a +0x6340 0x920c +0x6341 0x9210 +0x6342 0x9212 +0x6343 0x9213 +0x6344 0x9216 +0x6345 0x9218 +0x6346 0x921c +0x6347 0x921d +0x6348 0x9223 +0x6349 0x9224 +0x634a 0x9225 +0x634b 0x9226 +0x634c 0x9228 +0x634d 0x922e +0x634e 0x922f +0x634f 0x9230 +0x6350 0x9233 +0x6351 0x9235 +0x6352 0x9236 +0x6353 0x9238 +0x6354 0x9239 +0x6355 0x923a +0x6356 0x923c +0x6357 0x923e +0x6358 0x9240 +0x6359 0x9242 +0x635a 0x9243 +0x635b 0x9246 +0x635c 0x9247 +0x635d 0x924a +0x635e 0x924d +0x635f 0x924e +0x6360 0x924f +0x6361 0x9251 +0x6362 0x9258 +0x6363 0x9259 +0x6364 0x925c +0x6365 0x925d +0x6366 0x9260 +0x6367 0x9261 +0x6368 0x9265 +0x6369 0x9267 +0x636a 0x9268 +0x636b 0x9269 +0x636c 0x926e +0x636d 0x926f +0x636e 0x9270 +0x636f 0x9275 +0x6370 0x9276 +0x6371 0x9277 +0x6372 0x9278 +0x6373 0x9279 +0x6374 0x927b +0x6375 0x927c +0x6376 0x927d +0x6377 0x927f +0x6378 0x9288 +0x6379 0x9289 +0x637a 0x928a +0x637b 0x928d +0x637c 0x928e +0x637d 0x9292 +0x637e 0x9297 +0x6421 0x9299 +0x6422 0x929f +0x6423 0x92a0 +0x6424 0x92a4 +0x6425 0x92a5 +0x6426 0x92a7 +0x6427 0x92a8 +0x6428 0x92ab +0x6429 0x92af +0x642a 0x92b2 +0x642b 0x92b6 +0x642c 0x92b8 +0x642d 0x92ba +0x642e 0x92bb +0x642f 0x92bc +0x6430 0x92bd +0x6431 0x92bf +0x6432 0x92c0 +0x6433 0x92c1 +0x6434 0x92c2 +0x6435 0x92c3 +0x6436 0x92c5 +0x6437 0x92c6 +0x6438 0x92c7 +0x6439 0x92c8 +0x643a 0x92cb +0x643b 0x92cc +0x643c 0x92cd +0x643d 0x92ce +0x643e 0x92d0 +0x643f 0x92d3 +0x6440 0x92d5 +0x6441 0x92d7 +0x6442 0x92d8 +0x6443 0x92d9 +0x6444 0x92dc +0x6445 0x92dd +0x6446 0x92df +0x6447 0x92e0 +0x6448 0x92e1 +0x6449 0x92e3 +0x644a 0x92e5 +0x644b 0x92e7 +0x644c 0x92e8 +0x644d 0x92ec +0x644e 0x92ee +0x644f 0x92f0 +0x6450 0x92f9 +0x6451 0x92fb +0x6452 0x92ff +0x6453 0x9300 +0x6454 0x9302 +0x6455 0x9308 +0x6456 0x930d +0x6457 0x9311 +0x6458 0x9314 +0x6459 0x9315 +0x645a 0x931c +0x645b 0x931d +0x645c 0x931e +0x645d 0x931f +0x645e 0x9321 +0x645f 0x9324 +0x6460 0x9325 +0x6461 0x9327 +0x6462 0x9329 +0x6463 0x932a +0x6464 0x9333 +0x6465 0x9334 +0x6466 0x9336 +0x6467 0x9337 +0x6468 0x9347 +0x6469 0x9348 +0x646a 0x9349 +0x646b 0x9350 +0x646c 0x9351 +0x646d 0x9352 +0x646e 0x9355 +0x646f 0x9357 +0x6470 0x9358 +0x6471 0x935a +0x6472 0x935e +0x6473 0x9364 +0x6474 0x9365 +0x6475 0x9367 +0x6476 0x9369 +0x6477 0x936a +0x6478 0x936d +0x6479 0x936f +0x647a 0x9370 +0x647b 0x9371 +0x647c 0x9373 +0x647d 0x9374 +0x647e 0x9376 +0x6521 0x937a +0x6522 0x937d +0x6523 0x937f +0x6524 0x9380 +0x6525 0x9381 +0x6526 0x9382 +0x6527 0x9388 +0x6528 0x938a +0x6529 0x938b +0x652a 0x938d +0x652b 0x938f +0x652c 0x9392 +0x652d 0x9395 +0x652e 0x9398 +0x652f 0x939b +0x6530 0x939e +0x6531 0x93a1 +0x6532 0x93a3 +0x6533 0x93a4 +0x6534 0x93a6 +0x6535 0x93a8 +0x6536 0x93ab +0x6537 0x93b4 +0x6538 0x93b5 +0x6539 0x93b6 +0x653a 0x93ba +0x653b 0x93a9 +0x653c 0x93c1 +0x653d 0x93c4 +0x653e 0x93c5 +0x653f 0x93c6 +0x6540 0x93c7 +0x6541 0x93c9 +0x6542 0x93ca +0x6543 0x93cb +0x6544 0x93cc +0x6545 0x93cd +0x6546 0x93d3 +0x6547 0x93d9 +0x6548 0x93dc +0x6549 0x93de +0x654a 0x93df +0x654b 0x93e2 +0x654c 0x93e6 +0x654d 0x93e7 +0x654e 0x93f9 +0x654f 0x93f7 +0x6550 0x93f8 +0x6551 0x93fa +0x6552 0x93fb +0x6553 0x93fd +0x6554 0x9401 +0x6555 0x9402 +0x6556 0x9404 +0x6557 0x9408 +0x6558 0x9409 +0x6559 0x940d +0x655a 0x940e +0x655b 0x940f +0x655c 0x9415 +0x655d 0x9416 +0x655e 0x9417 +0x655f 0x941f +0x6560 0x942e +0x6561 0x942f +0x6562 0x9431 +0x6563 0x9432 +0x6564 0x9433 +0x6565 0x9434 +0x6566 0x943b +0x6567 0x943f +0x6568 0x943d +0x6569 0x9443 +0x656a 0x9445 +0x656b 0x9448 +0x656c 0x944a +0x656d 0x944c +0x656e 0x9455 +0x656f 0x9459 +0x6570 0x945c +0x6571 0x945f +0x6572 0x9461 +0x6573 0x9463 +0x6574 0x9468 +0x6575 0x946b +0x6576 0x946d +0x6577 0x946e +0x6578 0x946f +0x6579 0x9471 +0x657a 0x9472 +0x657b 0x9484 +0x657c 0x9483 +0x657d 0x9578 +0x657e 0x9579 +0x6621 0x957e +0x6622 0x9584 +0x6623 0x9588 +0x6624 0x958c +0x6625 0x958d +0x6626 0x958e +0x6627 0x959d +0x6628 0x959e +0x6629 0x959f +0x662a 0x95a1 +0x662b 0x95a6 +0x662c 0x95a9 +0x662d 0x95ab +0x662e 0x95ac +0x662f 0x95b4 +0x6630 0x95b6 +0x6631 0x95ba +0x6632 0x95bd +0x6633 0x95bf +0x6634 0x95c6 +0x6635 0x95c8 +0x6636 0x95c9 +0x6637 0x95cb +0x6638 0x95d0 +0x6639 0x95d1 +0x663a 0x95d2 +0x663b 0x95d3 +0x663c 0x95d9 +0x663d 0x95da +0x663e 0x95dd +0x663f 0x95de +0x6640 0x95df +0x6641 0x95e0 +0x6642 0x95e4 +0x6643 0x95e6 +0x6644 0x961d +0x6645 0x961e +0x6646 0x9622 +0x6647 0x9624 +0x6648 0x9625 +0x6649 0x9626 +0x664a 0x962c +0x664b 0x9631 +0x664c 0x9633 +0x664d 0x9637 +0x664e 0x9638 +0x664f 0x9639 +0x6650 0x963a +0x6651 0x963c +0x6652 0x963d +0x6653 0x9641 +0x6654 0x9652 +0x6655 0x9654 +0x6656 0x9656 +0x6657 0x9657 +0x6658 0x9658 +0x6659 0x9661 +0x665a 0x966e +0x665b 0x9674 +0x665c 0x967b +0x665d 0x967c +0x665e 0x967e +0x665f 0x967f +0x6660 0x9681 +0x6661 0x9682 +0x6662 0x9683 +0x6663 0x9684 +0x6664 0x9689 +0x6665 0x9691 +0x6666 0x9696 +0x6667 0x969a +0x6668 0x969d +0x6669 0x969f +0x666a 0x96a4 +0x666b 0x96a5 +0x666c 0x96a6 +0x666d 0x96a9 +0x666e 0x96ae +0x666f 0x96af +0x6670 0x96b3 +0x6671 0x96ba +0x6672 0x96ca +0x6673 0x96d2 +0x6674 0x5db2 +0x6675 0x96d8 +0x6676 0x96da +0x6677 0x96dd +0x6678 0x96de +0x6679 0x96df +0x667a 0x96e9 +0x667b 0x96ef +0x667c 0x96f1 +0x667d 0x96fa +0x667e 0x9702 +0x6721 0x9703 +0x6722 0x9705 +0x6723 0x9709 +0x6724 0x971a +0x6725 0x971b +0x6726 0x971d +0x6727 0x9721 +0x6728 0x9722 +0x6729 0x9723 +0x672a 0x9728 +0x672b 0x9731 +0x672c 0x9733 +0x672d 0x9741 +0x672e 0x9743 +0x672f 0x974a +0x6730 0x974e +0x6731 0x974f +0x6732 0x9755 +0x6733 0x9757 +0x6734 0x9758 +0x6735 0x975a +0x6736 0x975b +0x6737 0x9763 +0x6738 0x9767 +0x6739 0x976a +0x673a 0x976e +0x673b 0x9773 +0x673c 0x9776 +0x673d 0x9777 +0x673e 0x9778 +0x673f 0x977b +0x6740 0x977d +0x6741 0x977f +0x6742 0x9780 +0x6743 0x9789 +0x6744 0x9795 +0x6745 0x9796 +0x6746 0x9797 +0x6747 0x9799 +0x6748 0x979a +0x6749 0x979e +0x674a 0x979f +0x674b 0x97a2 +0x674c 0x97ac +0x674d 0x97ae +0x674e 0x97b1 +0x674f 0x97b2 +0x6750 0x97b5 +0x6751 0x97b6 +0x6752 0x97b8 +0x6753 0x97b9 +0x6754 0x97ba +0x6755 0x97bc +0x6756 0x97be +0x6757 0x97bf +0x6758 0x97c1 +0x6759 0x97c4 +0x675a 0x97c5 +0x675b 0x97c7 +0x675c 0x97c9 +0x675d 0x97ca +0x675e 0x97cc +0x675f 0x97cd +0x6760 0x97ce +0x6761 0x97d0 +0x6762 0x97d1 +0x6763 0x97d4 +0x6764 0x97d7 +0x6765 0x97d8 +0x6766 0x97d9 +0x6767 0x97dd +0x6768 0x97de +0x6769 0x97e0 +0x676a 0x97db +0x676b 0x97e1 +0x676c 0x97e4 +0x676d 0x97ef +0x676e 0x97f1 +0x676f 0x97f4 +0x6770 0x97f7 +0x6771 0x97f8 +0x6772 0x97fa +0x6773 0x9807 +0x6774 0x980a +0x6775 0x9819 +0x6776 0x980d +0x6777 0x980e +0x6778 0x9814 +0x6779 0x9816 +0x677a 0x981c +0x677b 0x981e +0x677c 0x9820 +0x677d 0x9823 +0x677e 0x9826 +0x6821 0x982b +0x6822 0x982e +0x6823 0x982f +0x6824 0x9830 +0x6825 0x9832 +0x6826 0x9833 +0x6827 0x9835 +0x6828 0x9825 +0x6829 0x983e +0x682a 0x9844 +0x682b 0x9847 +0x682c 0x984a +0x682d 0x9851 +0x682e 0x9852 +0x682f 0x9853 +0x6830 0x9856 +0x6831 0x9857 +0x6832 0x9859 +0x6833 0x985a +0x6834 0x9862 +0x6835 0x9863 +0x6836 0x9865 +0x6837 0x9866 +0x6838 0x986a +0x6839 0x986c +0x683a 0x98ab +0x683b 0x98ad +0x683c 0x98ae +0x683d 0x98b0 +0x683e 0x98b4 +0x683f 0x98b7 +0x6840 0x98b8 +0x6841 0x98ba +0x6842 0x98bb +0x6843 0x98bf +0x6844 0x98c2 +0x6845 0x98c5 +0x6846 0x98c8 +0x6847 0x98cc +0x6848 0x98e1 +0x6849 0x98e3 +0x684a 0x98e5 +0x684b 0x98e6 +0x684c 0x98e7 +0x684d 0x98ea +0x684e 0x98f3 +0x684f 0x98f6 +0x6850 0x9902 +0x6851 0x9907 +0x6852 0x9908 +0x6853 0x9911 +0x6854 0x9915 +0x6855 0x9916 +0x6856 0x9917 +0x6857 0x991a +0x6858 0x991b +0x6859 0x991c +0x685a 0x991f +0x685b 0x9922 +0x685c 0x9926 +0x685d 0x9927 +0x685e 0x992b +0x685f 0x9931 +0x6860 0x9932 +0x6861 0x9933 +0x6862 0x9934 +0x6863 0x9935 +0x6864 0x9939 +0x6865 0x993a +0x6866 0x993b +0x6867 0x993c +0x6868 0x9940 +0x6869 0x9941 +0x686a 0x9946 +0x686b 0x9947 +0x686c 0x9948 +0x686d 0x994d +0x686e 0x994e +0x686f 0x9954 +0x6870 0x9958 +0x6871 0x9959 +0x6872 0x995b +0x6873 0x995c +0x6874 0x995e +0x6875 0x995f +0x6876 0x9960 +0x6877 0x999b +0x6878 0x999d +0x6879 0x999f +0x687a 0x99a6 +0x687b 0x99b0 +0x687c 0x99b1 +0x687d 0x99b2 +0x687e 0x99b5 +0x6921 0x99b9 +0x6922 0x99ba +0x6923 0x99bd +0x6924 0x99bf +0x6925 0x99c3 +0x6926 0x99c9 +0x6927 0x99d3 +0x6928 0x99d4 +0x6929 0x99d9 +0x692a 0x99da +0x692b 0x99dc +0x692c 0x99de +0x692d 0x99e7 +0x692e 0x99ea +0x692f 0x99eb +0x6930 0x99ec +0x6931 0x99f0 +0x6932 0x99f4 +0x6933 0x99f5 +0x6934 0x99f9 +0x6935 0x99fd +0x6936 0x99fe +0x6937 0x9a02 +0x6938 0x9a03 +0x6939 0x9a04 +0x693a 0x9a0b +0x693b 0x9a0c +0x693c 0x9a10 +0x693d 0x9a11 +0x693e 0x9a16 +0x693f 0x9a1e +0x6940 0x9a20 +0x6941 0x9a22 +0x6942 0x9a23 +0x6943 0x9a24 +0x6944 0x9a27 +0x6945 0x9a2d +0x6946 0x9a2e +0x6947 0x9a33 +0x6948 0x9a35 +0x6949 0x9a36 +0x694a 0x9a38 +0x694b 0x9a47 +0x694c 0x9a41 +0x694d 0x9a44 +0x694e 0x9a4a +0x694f 0x9a4b +0x6950 0x9a4c +0x6951 0x9a4e +0x6952 0x9a51 +0x6953 0x9a54 +0x6954 0x9a56 +0x6955 0x9a5d +0x6956 0x9aaa +0x6957 0x9aac +0x6958 0x9aae +0x6959 0x9aaf +0x695a 0x9ab2 +0x695b 0x9ab4 +0x695c 0x9ab5 +0x695d 0x9ab6 +0x695e 0x9ab9 +0x695f 0x9abb +0x6960 0x9abe +0x6961 0x9abf +0x6962 0x9ac1 +0x6963 0x9ac3 +0x6964 0x9ac6 +0x6965 0x9ac8 +0x6966 0x9ace +0x6967 0x9ad0 +0x6968 0x9ad2 +0x6969 0x9ad5 +0x696a 0x9ad6 +0x696b 0x9ad7 +0x696c 0x9adb +0x696d 0x9adc +0x696e 0x9ae0 +0x696f 0x9ae4 +0x6970 0x9ae5 +0x6971 0x9ae7 +0x6972 0x9ae9 +0x6973 0x9aec +0x6974 0x9af2 +0x6975 0x9af3 +0x6976 0x9af5 +0x6977 0x9af9 +0x6978 0x9afa +0x6979 0x9afd +0x697a 0x9aff +0x697b 0x9b00 +0x697c 0x9b01 +0x697d 0x9b02 +0x697e 0x9b03 +0x6a21 0x9b04 +0x6a22 0x9b05 +0x6a23 0x9b08 +0x6a24 0x9b09 +0x6a25 0x9b0b +0x6a26 0x9b0c +0x6a27 0x9b0d +0x6a28 0x9b0e +0x6a29 0x9b10 +0x6a2a 0x9b12 +0x6a2b 0x9b16 +0x6a2c 0x9b19 +0x6a2d 0x9b1b +0x6a2e 0x9b1c +0x6a2f 0x9b20 +0x6a30 0x9b26 +0x6a31 0x9b2b +0x6a32 0x9b2d +0x6a33 0x9b33 +0x6a34 0x9b34 +0x6a35 0x9b35 +0x6a36 0x9b37 +0x6a37 0x9b39 +0x6a38 0x9b3a +0x6a39 0x9b3d +0x6a3a 0x9b48 +0x6a3b 0x9b4b +0x6a3c 0x9b4c +0x6a3d 0x9b55 +0x6a3e 0x9b56 +0x6a3f 0x9b57 +0x6a40 0x9b5b +0x6a41 0x9b5e +0x6a42 0x9b61 +0x6a43 0x9b63 +0x6a44 0x9b65 +0x6a45 0x9b66 +0x6a46 0x9b68 +0x6a47 0x9b6a +0x6a48 0x9b6b +0x6a49 0x9b6c +0x6a4a 0x9b6d +0x6a4b 0x9b6e +0x6a4c 0x9b73 +0x6a4d 0x9b75 +0x6a4e 0x9b77 +0x6a4f 0x9b78 +0x6a50 0x9b79 +0x6a51 0x9b7f +0x6a52 0x9b80 +0x6a53 0x9b84 +0x6a54 0x9b85 +0x6a55 0x9b86 +0x6a56 0x9b87 +0x6a57 0x9b89 +0x6a58 0x9b8a +0x6a59 0x9b8b +0x6a5a 0x9b8d +0x6a5b 0x9b8f +0x6a5c 0x9b90 +0x6a5d 0x9b94 +0x6a5e 0x9b9a +0x6a5f 0x9b9d +0x6a60 0x9b9e +0x6a61 0x9ba6 +0x6a62 0x9ba7 +0x6a63 0x9ba9 +0x6a64 0x9bac +0x6a65 0x9bb0 +0x6a66 0x9bb1 +0x6a67 0x9bb2 +0x6a68 0x9bb7 +0x6a69 0x9bb8 +0x6a6a 0x9bbb +0x6a6b 0x9bbc +0x6a6c 0x9bbe +0x6a6d 0x9bbf +0x6a6e 0x9bc1 +0x6a6f 0x9bc7 +0x6a70 0x9bc8 +0x6a71 0x9bce +0x6a72 0x9bd0 +0x6a73 0x9bd7 +0x6a74 0x9bd8 +0x6a75 0x9bdd +0x6a76 0x9bdf +0x6a77 0x9be5 +0x6a78 0x9be7 +0x6a79 0x9bea +0x6a7a 0x9beb +0x6a7b 0x9bef +0x6a7c 0x9bf3 +0x6a7d 0x9bf7 +0x6a7e 0x9bf8 +0x6b21 0x9bf9 +0x6b22 0x9bfa +0x6b23 0x9bfd +0x6b24 0x9bff +0x6b25 0x9c00 +0x6b26 0x9c02 +0x6b27 0x9c0b +0x6b28 0x9c0f +0x6b29 0x9c11 +0x6b2a 0x9c16 +0x6b2b 0x9c18 +0x6b2c 0x9c19 +0x6b2d 0x9c1a +0x6b2e 0x9c1c +0x6b2f 0x9c1e +0x6b30 0x9c22 +0x6b31 0x9c23 +0x6b32 0x9c26 +0x6b33 0x9c27 +0x6b34 0x9c28 +0x6b35 0x9c29 +0x6b36 0x9c2a +0x6b37 0x9c31 +0x6b38 0x9c35 +0x6b39 0x9c36 +0x6b3a 0x9c37 +0x6b3b 0x9c3d +0x6b3c 0x9c41 +0x6b3d 0x9c43 +0x6b3e 0x9c44 +0x6b3f 0x9c45 +0x6b40 0x9c49 +0x6b41 0x9c4a +0x6b42 0x9c4e +0x6b43 0x9c4f +0x6b44 0x9c50 +0x6b45 0x9c53 +0x6b46 0x9c54 +0x6b47 0x9c56 +0x6b48 0x9c58 +0x6b49 0x9c5b +0x6b4a 0x9c5d +0x6b4b 0x9c5e +0x6b4c 0x9c5f +0x6b4d 0x9c63 +0x6b4e 0x9c69 +0x6b4f 0x9c6a +0x6b50 0x9c5c +0x6b51 0x9c6b +0x6b52 0x9c68 +0x6b53 0x9c6e +0x6b54 0x9c70 +0x6b55 0x9c72 +0x6b56 0x9c75 +0x6b57 0x9c77 +0x6b58 0x9c7b +0x6b59 0x9ce6 +0x6b5a 0x9cf2 +0x6b5b 0x9cf7 +0x6b5c 0x9cf9 +0x6b5d 0x9d0b +0x6b5e 0x9d02 +0x6b5f 0x9d11 +0x6b60 0x9d17 +0x6b61 0x9d18 +0x6b62 0x9d1c +0x6b63 0x9d1d +0x6b64 0x9d1e +0x6b65 0x9d2f +0x6b66 0x9d30 +0x6b67 0x9d32 +0x6b68 0x9d33 +0x6b69 0x9d34 +0x6b6a 0x9d3a +0x6b6b 0x9d3c +0x6b6c 0x9d45 +0x6b6d 0x9d3d +0x6b6e 0x9d42 +0x6b6f 0x9d43 +0x6b70 0x9d47 +0x6b71 0x9d4a +0x6b72 0x9d53 +0x6b73 0x9d54 +0x6b74 0x9d5f +0x6b75 0x9d63 +0x6b76 0x9d62 +0x6b77 0x9d65 +0x6b78 0x9d69 +0x6b79 0x9d6a +0x6b7a 0x9d6b +0x6b7b 0x9d70 +0x6b7c 0x9d76 +0x6b7d 0x9d77 +0x6b7e 0x9d7b +0x6c21 0x9d7c +0x6c22 0x9d7e +0x6c23 0x9d83 +0x6c24 0x9d84 +0x6c25 0x9d86 +0x6c26 0x9d8a +0x6c27 0x9d8d +0x6c28 0x9d8e +0x6c29 0x9d92 +0x6c2a 0x9d93 +0x6c2b 0x9d95 +0x6c2c 0x9d96 +0x6c2d 0x9d97 +0x6c2e 0x9d98 +0x6c2f 0x9da1 +0x6c30 0x9daa +0x6c31 0x9dac +0x6c32 0x9dae +0x6c33 0x9db1 +0x6c34 0x9db5 +0x6c35 0x9db9 +0x6c36 0x9dbc +0x6c37 0x9dbf +0x6c38 0x9dc3 +0x6c39 0x9dc7 +0x6c3a 0x9dc9 +0x6c3b 0x9dca +0x6c3c 0x9dd4 +0x6c3d 0x9dd5 +0x6c3e 0x9dd6 +0x6c3f 0x9dd7 +0x6c40 0x9dda +0x6c41 0x9dde +0x6c42 0x9ddf +0x6c43 0x9de0 +0x6c44 0x9de5 +0x6c45 0x9de7 +0x6c46 0x9de9 +0x6c47 0x9deb +0x6c48 0x9dee +0x6c49 0x9df0 +0x6c4a 0x9df3 +0x6c4b 0x9df4 +0x6c4c 0x9dfe +0x6c4d 0x9e0a +0x6c4e 0x9e02 +0x6c4f 0x9e07 +0x6c50 0x9e0e +0x6c51 0x9e10 +0x6c52 0x9e11 +0x6c53 0x9e12 +0x6c54 0x9e15 +0x6c55 0x9e16 +0x6c56 0x9e19 +0x6c57 0x9e1c +0x6c58 0x9e1d +0x6c59 0x9e7a +0x6c5a 0x9e7b +0x6c5b 0x9e7c +0x6c5c 0x9e80 +0x6c5d 0x9e82 +0x6c5e 0x9e83 +0x6c5f 0x9e84 +0x6c60 0x9e85 +0x6c61 0x9e87 +0x6c62 0x9e8e +0x6c63 0x9e8f +0x6c64 0x9e96 +0x6c65 0x9e98 +0x6c66 0x9e9b +0x6c67 0x9e9e +0x6c68 0x9ea4 +0x6c69 0x9ea8 +0x6c6a 0x9eac +0x6c6b 0x9eae +0x6c6c 0x9eaf +0x6c6d 0x9eb0 +0x6c6e 0x9eb3 +0x6c6f 0x9eb4 +0x6c70 0x9eb5 +0x6c71 0x9ec6 +0x6c72 0x9ec8 +0x6c73 0x9ecb +0x6c74 0x9ed5 +0x6c75 0x9edf +0x6c76 0x9ee4 +0x6c77 0x9ee7 +0x6c78 0x9eec +0x6c79 0x9eed +0x6c7a 0x9eee +0x6c7b 0x9ef0 +0x6c7c 0x9ef1 +0x6c7d 0x9ef2 +0x6c7e 0x9ef5 +0x6d21 0x9ef8 +0x6d22 0x9eff +0x6d23 0x9f02 +0x6d24 0x9f03 +0x6d25 0x9f09 +0x6d26 0x9f0f +0x6d27 0x9f10 +0x6d28 0x9f11 +0x6d29 0x9f12 +0x6d2a 0x9f14 +0x6d2b 0x9f16 +0x6d2c 0x9f17 +0x6d2d 0x9f19 +0x6d2e 0x9f1a +0x6d2f 0x9f1b +0x6d30 0x9f1f +0x6d31 0x9f22 +0x6d32 0x9f26 +0x6d33 0x9f2a +0x6d34 0x9f2b +0x6d35 0x9f2f +0x6d36 0x9f31 +0x6d37 0x9f32 +0x6d38 0x9f34 +0x6d39 0x9f37 +0x6d3a 0x9f39 +0x6d3b 0x9f3a +0x6d3c 0x9f3c +0x6d3d 0x9f3d +0x6d3e 0x9f3f +0x6d3f 0x9f41 +0x6d40 0x9f43 +0x6d41 0x9f44 +0x6d42 0x9f45 +0x6d43 0x9f46 +0x6d44 0x9f47 +0x6d45 0x9f53 +0x6d46 0x9f55 +0x6d47 0x9f56 +0x6d48 0x9f57 +0x6d49 0x9f58 +0x6d4a 0x9f5a +0x6d4b 0x9f5d +0x6d4c 0x9f5e +0x6d4d 0x9f68 +0x6d4e 0x9f69 +0x6d4f 0x9f6d +0x6d50 0x9f6e +0x6d51 0x9f6f +0x6d52 0x9f70 +0x6d53 0x9f71 +0x6d54 0x9f73 +0x6d55 0x9f75 +0x6d56 0x9f7a +0x6d57 0x9f7d +0x6d58 0x9f8f +0x6d59 0x9f90 +0x6d5a 0x9f91 +0x6d5b 0x9f92 +0x6d5c 0x9f94 +0x6d5d 0x9f96 +0x6d5e 0x9f97 +0x6d5f 0x9f9e +0x6d60 0x9fa1 +0x6d61 0x9fa2 +0x6d62 0x9fa3 +0x6d63 0x9fa5 diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/JIS_X_0212_MS5022X.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/JIS_X_0212_MS5022X.map Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,7105 @@ +# +# +# Entries after 0x6d63 only exist in c2b mappting table +# generated from JIS_X_0212_MS5022X_Encoder. Added here +# to make them round-trip +# +0x222f 0x02d8 +0x2230 0x02c7 +0x2231 0x00b8 +0x2232 0x02d9 +0x2233 0x02dd +0x2234 0x00af +0x2235 0x02db +0x2236 0x02da +0x2237 0xff5e +0x2238 0x0384 +0x2239 0x0385 +0x2242 0x00a1 +0x2243 0x00a6 +0x2244 0x00bf +0x226b 0x00ba +0x226c 0x00aa +0x226d 0x00a9 +0x226e 0x00ae +0x226f 0x2122 +0x2270 0x00a4 +0x2271 0x2116 +0x2661 0x0386 +0x2662 0x0388 +0x2663 0x0389 +0x2664 0x038a +0x2665 0x03aa +0x2667 0x038c +0x2669 0x038e +0x266a 0x03ab +0x266c 0x038f +0x2671 0x03ac +0x2672 0x03ad +0x2673 0x03ae +0x2674 0x03af +0x2675 0x03ca +0x2676 0x0390 +0x2677 0x03cc +0x2678 0x03c2 +0x2679 0x03cd +0x267a 0x03cb +0x267b 0x03b0 +0x267c 0x03ce +0x2742 0x0402 +0x2743 0x0403 +0x2744 0x0404 +0x2745 0x0405 +0x2746 0x0406 +0x2747 0x0407 +0x2748 0x0408 +0x2749 0x0409 +0x274a 0x040a +0x274b 0x040b +0x274c 0x040c +0x274d 0x040e +0x274e 0x040f +0x2772 0x0452 +0x2773 0x0453 +0x2774 0x0454 +0x2775 0x0455 +0x2776 0x0456 +0x2777 0x0457 +0x2778 0x0458 +0x2779 0x0459 +0x277a 0x045a +0x277b 0x045b +0x277c 0x045c +0x277d 0x045e +0x277e 0x045f +0x2921 0x00c6 +0x2922 0x0110 +0x2924 0x0126 +0x2926 0x0132 +0x2928 0x0141 +0x2929 0x013f +0x292b 0x014a +0x292c 0x00d8 +0x292d 0x0152 +0x292f 0x0166 +0x2930 0x00de +0x2941 0x00e6 +0x2942 0x0111 +0x2943 0x00f0 +0x2944 0x0127 +0x2945 0x0131 +0x2946 0x0133 +0x2947 0x0138 +0x2948 0x0142 +0x2949 0x0140 +0x294a 0x0149 +0x294b 0x014b +0x294c 0x00f8 +0x294d 0x0153 +0x294e 0x00df +0x294f 0x0167 +0x2950 0x00fe +0x2a21 0x00c1 +0x2a22 0x00c0 +0x2a23 0x00c4 +0x2a24 0x00c2 +0x2a25 0x0102 +0x2a26 0x01cd +0x2a27 0x0100 +0x2a28 0x0104 +0x2a29 0x00c5 +0x2a2a 0x00c3 +0x2a2b 0x0106 +0x2a2c 0x0108 +0x2a2d 0x010c +0x2a2e 0x00c7 +0x2a2f 0x010a +0x2a30 0x010e +0x2a31 0x00c9 +0x2a32 0x00c8 +0x2a33 0x00cb +0x2a34 0x00ca +0x2a35 0x011a +0x2a36 0x0116 +0x2a37 0x0112 +0x2a38 0x0118 +0x2a3a 0x011c +0x2a3b 0x011e +0x2a3c 0x0122 +0x2a3d 0x0120 +0x2a3e 0x0124 +0x2a3f 0x00cd +0x2a40 0x00cc +0x2a41 0x00cf +0x2a42 0x00ce +0x2a43 0x01cf +0x2a44 0x0130 +0x2a45 0x012a +0x2a46 0x012e +0x2a47 0x0128 +0x2a48 0x0134 +0x2a49 0x0136 +0x2a4a 0x0139 +0x2a4b 0x013d +0x2a4c 0x013b +0x2a4d 0x0143 +0x2a4e 0x0147 +0x2a4f 0x0145 +0x2a50 0x00d1 +0x2a51 0x00d3 +0x2a52 0x00d2 +0x2a53 0x00d6 +0x2a54 0x00d4 +0x2a55 0x01d1 +0x2a56 0x0150 +0x2a57 0x014c +0x2a58 0x00d5 +0x2a59 0x0154 +0x2a5a 0x0158 +0x2a5b 0x0156 +0x2a5c 0x015a +0x2a5d 0x015c +0x2a5e 0x0160 +0x2a5f 0x015e +0x2a60 0x0164 +0x2a61 0x0162 +0x2a62 0x00da +0x2a63 0x00d9 +0x2a64 0x00dc +0x2a65 0x00db +0x2a66 0x016c +0x2a67 0x01d3 +0x2a68 0x0170 +0x2a69 0x016a +0x2a6a 0x0172 +0x2a6b 0x016e +0x2a6c 0x0168 +0x2a6d 0x01d7 +0x2a6e 0x01db +0x2a6f 0x01d9 +0x2a70 0x01d5 +0x2a71 0x0174 +0x2a72 0x00dd +0x2a73 0x0178 +0x2a74 0x0176 +0x2a75 0x0179 +0x2a76 0x017d +0x2a77 0x017b +0x2b21 0x00e1 +0x2b22 0x00e0 +0x2b23 0x00e4 +0x2b24 0x00e2 +0x2b25 0x0103 +0x2b26 0x01ce +0x2b27 0x0101 +0x2b28 0x0105 +0x2b29 0x00e5 +0x2b2a 0x00e3 +0x2b2b 0x0107 +0x2b2c 0x0109 +0x2b2d 0x010d +0x2b2e 0x00e7 +0x2b2f 0x010b +0x2b30 0x010f +0x2b31 0x00e9 +0x2b32 0x00e8 +0x2b33 0x00eb +0x2b34 0x00ea +0x2b35 0x011b +0x2b36 0x0117 +0x2b37 0x0113 +0x2b38 0x0119 +0x2b39 0x01f5 +0x2b3a 0x011d +0x2b3b 0x011f +0x2b3d 0x0121 +0x2b3e 0x0125 +0x2b3f 0x00ed +0x2b40 0x00ec +0x2b41 0x00ef +0x2b42 0x00ee +0x2b43 0x01d0 +0x2b45 0x012b +0x2b46 0x012f +0x2b47 0x0129 +0x2b48 0x0135 +0x2b49 0x0137 +0x2b4a 0x013a +0x2b4b 0x013e +0x2b4c 0x013c +0x2b4d 0x0144 +0x2b4e 0x0148 +0x2b4f 0x0146 +0x2b50 0x00f1 +0x2b51 0x00f3 +0x2b52 0x00f2 +0x2b53 0x00f6 +0x2b54 0x00f4 +0x2b55 0x01d2 +0x2b56 0x0151 +0x2b57 0x014d +0x2b58 0x00f5 +0x2b59 0x0155 +0x2b5a 0x0159 +0x2b5b 0x0157 +0x2b5c 0x015b +0x2b5d 0x015d +0x2b5e 0x0161 +0x2b5f 0x015f +0x2b60 0x0165 +0x2b61 0x0163 +0x2b62 0x00fa +0x2b63 0x00f9 +0x2b64 0x00fc +0x2b65 0x00fb +0x2b66 0x016d +0x2b67 0x01d4 +0x2b68 0x0171 +0x2b69 0x016b +0x2b6a 0x0173 +0x2b6b 0x016f +0x2b6c 0x0169 +0x2b6d 0x01d8 +0x2b6e 0x01dc +0x2b6f 0x01da +0x2b70 0x01d6 +0x2b71 0x0175 +0x2b72 0x00fd +0x2b73 0x00ff +0x2b74 0x0177 +0x2b75 0x017a +0x2b76 0x017e +0x2b77 0x017c +0x3021 0x4e02 +0x3022 0x4e04 +0x3023 0x4e05 +0x3024 0x4e0c +0x3025 0x4e12 +0x3026 0x4e1f +0x3027 0x4e23 +0x3028 0x4e24 +0x3029 0x4e28 +0x302a 0x4e2b +0x302b 0x4e2e +0x302c 0x4e2f +0x302d 0x4e30 +0x302e 0x4e35 +0x302f 0x4e40 +0x3030 0x4e41 +0x3031 0x4e44 +0x3032 0x4e47 +0x3033 0x4e51 +0x3034 0x4e5a +0x3035 0x4e5c +0x3036 0x4e63 +0x3037 0x4e68 +0x3038 0x4e69 +0x3039 0x4e74 +0x303a 0x4e75 +0x303b 0x4e79 +0x303c 0x4e7f +0x303d 0x4e8d +0x303e 0x4e96 +0x303f 0x4e97 +0x3040 0x4e9d +0x3041 0x4eaf +0x3042 0x4eb9 +0x3043 0x4ec3 +0x3044 0x4ed0 +0x3045 0x4eda +0x3046 0x4edb +0x3047 0x4ee0 +0x3048 0x4ee1 +0x3049 0x4ee2 +0x304a 0x4ee8 +0x304b 0x4eef +0x304c 0x4ef1 +0x304d 0x4ef3 +0x304e 0x4ef5 +0x304f 0x4efd +0x3050 0x4efe +0x3051 0x4eff +0x3052 0x4f00 +0x3053 0x4f02 +0x3054 0x4f03 +0x3055 0x4f08 +0x3056 0x4f0b +0x3057 0x4f0c +0x3058 0x4f12 +0x3059 0x4f15 +0x305a 0x4f16 +0x305b 0x4f17 +0x305c 0x4f19 +0x305d 0x4f2e +0x305e 0x4f31 +0x305f 0x4f60 +0x3060 0x4f33 +0x3061 0x4f35 +0x3062 0x4f37 +0x3063 0x4f39 +0x3064 0x4f3b +0x3065 0x4f3e +0x3066 0x4f40 +0x3067 0x4f42 +0x3068 0x4f48 +0x3069 0x4f49 +0x306a 0x4f4b +0x306b 0x4f4c +0x306c 0x4f52 +0x306d 0x4f54 +0x306e 0x4f56 +0x306f 0x4f58 +0x3070 0x4f5f +0x3071 0x4f63 +0x3072 0x4f6a +0x3073 0x4f6c +0x3074 0x4f6e +0x3075 0x4f71 +0x3076 0x4f77 +0x3077 0x4f78 +0x3078 0x4f79 +0x3079 0x4f7a +0x307a 0x4f7d +0x307b 0x4f7e +0x307c 0x4f81 +0x307d 0x4f82 +0x307e 0x4f84 +0x3121 0x4f85 +0x3122 0x4f89 +0x3123 0x4f8a +0x3124 0x4f8c +0x3125 0x4f8e +0x3126 0x4f90 +0x3127 0x4f92 +0x3128 0x4f93 +0x3129 0x4f94 +0x312a 0x4f97 +0x312b 0x4f99 +0x312c 0x4f9a +0x312d 0x4f9e +0x312e 0x4f9f +0x312f 0x4fb2 +0x3130 0x4fb7 +0x3131 0x4fb9 +0x3132 0x4fbb +0x3133 0x4fbc +0x3134 0x4fbd +0x3135 0x4fbe +0x3136 0x4fc0 +0x3137 0x4fc1 +0x3138 0x4fc5 +0x3139 0x4fc6 +0x313a 0x4fc8 +0x313b 0x4fc9 +0x313c 0x4fcb +0x313d 0x4fcc +0x313e 0x4fcd +0x313f 0x4fcf +0x3140 0x4fd2 +0x3141 0x4fdc +0x3142 0x4fe0 +0x3143 0x4fe2 +0x3144 0x4ff0 +0x3145 0x4ff2 +0x3146 0x4ffc +0x3147 0x4ffd +0x3148 0x4fff +0x3149 0x5000 +0x314a 0x5001 +0x314b 0x5004 +0x314c 0x5007 +0x314d 0x500a +0x314e 0x500c +0x314f 0x500e +0x3150 0x5010 +0x3151 0x5013 +0x3152 0x5017 +0x3153 0x5018 +0x3154 0x501b +0x3155 0x501c +0x3156 0x501d +0x3157 0x501e +0x3158 0x5022 +0x3159 0x5027 +0x315a 0x502e +0x315b 0x5030 +0x315c 0x5032 +0x315d 0x5033 +0x315e 0x5035 +0x315f 0x5040 +0x3160 0x5041 +0x3161 0x5042 +0x3162 0x5045 +0x3163 0x5046 +0x3164 0x504a +0x3165 0x504c +0x3166 0x504e +0x3167 0x5051 +0x3168 0x5052 +0x3169 0x5053 +0x316a 0x5057 +0x316b 0x5059 +0x316c 0x505f +0x316d 0x5060 +0x316e 0x5062 +0x316f 0x5063 +0x3170 0x5066 +0x3171 0x5067 +0x3172 0x506a +0x3173 0x506d +0x3174 0x5070 +0x3175 0x5071 +0x3176 0x503b +0x3177 0x5081 +0x3178 0x5083 +0x3179 0x5084 +0x317a 0x5086 +0x317b 0x508a +0x317c 0x508e +0x317d 0x508f +0x317e 0x5090 +0x3221 0x5092 +0x3222 0x5093 +0x3223 0x5094 +0x3224 0x5096 +0x3225 0x509b +0x3226 0x509c +0x3227 0x509e +0x3228 0x509f +0x3229 0x50a0 +0x322a 0x50a1 +0x322b 0x50a2 +0x322c 0x50aa +0x322d 0x50af +0x322e 0x50b0 +0x322f 0x50b9 +0x3230 0x50ba +0x3231 0x50bd +0x3232 0x50c0 +0x3233 0x50c3 +0x3234 0x50c4 +0x3235 0x50c7 +0x3236 0x50cc +0x3237 0x50ce +0x3238 0x50d0 +0x3239 0x50d3 +0x323a 0x50d4 +0x323b 0x50d8 +0x323c 0x50dc +0x323d 0x50dd +0x323e 0x50df +0x323f 0x50e2 +0x3240 0x50e4 +0x3241 0x50e6 +0x3242 0x50e8 +0x3243 0x50e9 +0x3244 0x50ef +0x3245 0x50f1 +0x3246 0x50f6 +0x3247 0x50fa +0x3248 0x50fe +0x3249 0x5103 +0x324a 0x5106 +0x324b 0x5107 +0x324c 0x5108 +0x324d 0x510b +0x324e 0x510c +0x324f 0x510d +0x3250 0x510e +0x3251 0x50f2 +0x3252 0x5110 +0x3253 0x5117 +0x3254 0x5119 +0x3255 0x511b +0x3256 0x511c +0x3257 0x511d +0x3258 0x511e +0x3259 0x5123 +0x325a 0x5127 +0x325b 0x5128 +0x325c 0x512c +0x325d 0x512d +0x325e 0x512f +0x325f 0x5131 +0x3260 0x5133 +0x3261 0x5134 +0x3262 0x5135 +0x3263 0x5138 +0x3264 0x5139 +0x3265 0x5142 +0x3266 0x514a +0x3267 0x514f +0x3268 0x5153 +0x3269 0x5155 +0x326a 0x5157 +0x326b 0x5158 +0x326c 0x515f +0x326d 0x5164 +0x326e 0x5166 +0x326f 0x517e +0x3270 0x5183 +0x3271 0x5184 +0x3272 0x518b +0x3273 0x518e +0x3274 0x5198 +0x3275 0x519d +0x3276 0x51a1 +0x3277 0x51a3 +0x3278 0x51ad +0x3279 0x51b8 +0x327a 0x51ba +0x327b 0x51bc +0x327c 0x51be +0x327d 0x51bf +0x327e 0x51c2 +0x3321 0x51c8 +0x3322 0x51cf +0x3323 0x51d1 +0x3324 0x51d2 +0x3325 0x51d3 +0x3326 0x51d5 +0x3327 0x51d8 +0x3328 0x51de +0x3329 0x51e2 +0x332a 0x51e5 +0x332b 0x51ee +0x332c 0x51f2 +0x332d 0x51f3 +0x332e 0x51f4 +0x332f 0x51f7 +0x3330 0x5201 +0x3331 0x5202 +0x3332 0x5205 +0x3333 0x5212 +0x3334 0x5213 +0x3335 0x5215 +0x3336 0x5216 +0x3337 0x5218 +0x3338 0x5222 +0x3339 0x5228 +0x333a 0x5231 +0x333b 0x5232 +0x333c 0x5235 +0x333d 0x523c +0x333e 0x5245 +0x333f 0x5249 +0x3340 0x5255 +0x3341 0x5257 +0x3342 0x5258 +0x3343 0x525a +0x3344 0x525c +0x3345 0x525f +0x3346 0x5260 +0x3347 0x5261 +0x3348 0x5266 +0x3349 0x526e +0x334a 0x5277 +0x334b 0x5278 +0x334c 0x5279 +0x334d 0x5280 +0x334e 0x5282 +0x334f 0x5285 +0x3350 0x528a +0x3351 0x528c +0x3352 0x5293 +0x3353 0x5295 +0x3354 0x5296 +0x3355 0x5297 +0x3356 0x5298 +0x3357 0x529a +0x3358 0x529c +0x3359 0x52a4 +0x335a 0x52a5 +0x335b 0x52a6 +0x335c 0x52a7 +0x335d 0x52af +0x335e 0x52b0 +0x335f 0x52b6 +0x3360 0x52b7 +0x3361 0x52b8 +0x3362 0x52ba +0x3363 0x52bb +0x3364 0x52bd +0x3365 0x52c0 +0x3366 0x52c4 +0x3367 0x52c6 +0x3368 0x52c8 +0x3369 0x52cc +0x336a 0x52cf +0x336b 0x52d1 +0x336c 0x52d4 +0x336d 0x52d6 +0x336e 0x52db +0x336f 0x52dc +0x3370 0x52e1 +0x3371 0x52e5 +0x3372 0x52e8 +0x3373 0x52e9 +0x3374 0x52ea +0x3375 0x52ec +0x3376 0x52f0 +0x3377 0x52f1 +0x3378 0x52f4 +0x3379 0x52f6 +0x337a 0x52f7 +0x337b 0x5300 +0x337c 0x5303 +0x337d 0x530a +0x337e 0x530b +0x3421 0x530c +0x3422 0x5311 +0x3423 0x5313 +0x3424 0x5318 +0x3425 0x531b +0x3426 0x531c +0x3427 0x531e +0x3428 0x531f +0x3429 0x5325 +0x342a 0x5327 +0x342b 0x5328 +0x342c 0x5329 +0x342d 0x532b +0x342e 0x532c +0x342f 0x532d +0x3430 0x5330 +0x3431 0x5332 +0x3432 0x5335 +0x3433 0x533c +0x3434 0x533d +0x3435 0x533e +0x3436 0x5342 +0x3437 0x534c +0x3438 0x534b +0x3439 0x5359 +0x343a 0x535b +0x343b 0x5361 +0x343c 0x5363 +0x343d 0x5365 +0x343e 0x536c +0x343f 0x536d +0x3440 0x5372 +0x3441 0x5379 +0x3442 0x537e +0x3443 0x5383 +0x3444 0x5387 +0x3445 0x5388 +0x3446 0x538e +0x3447 0x5393 +0x3448 0x5394 +0x3449 0x5399 +0x344a 0x539d +0x344b 0x53a1 +0x344c 0x53a4 +0x344d 0x53aa +0x344e 0x53ab +0x344f 0x53af +0x3450 0x53b2 +0x3451 0x53b4 +0x3452 0x53b5 +0x3453 0x53b7 +0x3454 0x53b8 +0x3455 0x53ba +0x3456 0x53bd +0x3457 0x53c0 +0x3458 0x53c5 +0x3459 0x53cf +0x345a 0x53d2 +0x345b 0x53d3 +0x345c 0x53d5 +0x345d 0x53da +0x345e 0x53dd +0x345f 0x53de +0x3460 0x53e0 +0x3461 0x53e6 +0x3462 0x53e7 +0x3463 0x53f5 +0x3464 0x5402 +0x3465 0x5413 +0x3466 0x541a +0x3467 0x5421 +0x3468 0x5427 +0x3469 0x5428 +0x346a 0x542a +0x346b 0x542f +0x346c 0x5431 +0x346d 0x5434 +0x346e 0x5435 +0x346f 0x5443 +0x3470 0x5444 +0x3471 0x5447 +0x3472 0x544d +0x3473 0x544f +0x3474 0x545e +0x3475 0x5462 +0x3476 0x5464 +0x3477 0x5466 +0x3478 0x5467 +0x3479 0x5469 +0x347a 0x546b +0x347b 0x546d +0x347c 0x546e +0x347d 0x5474 +0x347e 0x547f +0x3521 0x5481 +0x3522 0x5483 +0x3523 0x5485 +0x3524 0x5488 +0x3525 0x5489 +0x3526 0x548d +0x3527 0x5491 +0x3528 0x5495 +0x3529 0x5496 +0x352a 0x549c +0x352b 0x549f +0x352c 0x54a1 +0x352d 0x54a6 +0x352e 0x54a7 +0x352f 0x54a9 +0x3530 0x54aa +0x3531 0x54ad +0x3532 0x54ae +0x3533 0x54b1 +0x3534 0x54b7 +0x3535 0x54b9 +0x3536 0x54ba +0x3537 0x54bb +0x3538 0x54bf +0x3539 0x54c6 +0x353a 0x54ca +0x353b 0x54cd +0x353c 0x54ce +0x353d 0x54e0 +0x353e 0x54ea +0x353f 0x54ec +0x3540 0x54ef +0x3541 0x54f6 +0x3542 0x54fc +0x3543 0x54fe +0x3544 0x54ff +0x3545 0x5500 +0x3546 0x5501 +0x3547 0x5505 +0x3548 0x5508 +0x3549 0x5509 +0x354a 0x550c +0x354b 0x550d +0x354c 0x550e +0x354d 0x5515 +0x354e 0x552a +0x354f 0x552b +0x3550 0x5532 +0x3551 0x5535 +0x3552 0x5536 +0x3553 0x553b +0x3554 0x553c +0x3555 0x553d +0x3556 0x5541 +0x3557 0x5547 +0x3558 0x5549 +0x3559 0x554a +0x355a 0x554d +0x355b 0x5550 +0x355c 0x5551 +0x355d 0x5558 +0x355e 0x555a +0x355f 0x555b +0x3560 0x555e +0x3561 0x5560 +0x3562 0x5561 +0x3563 0x5564 +0x3564 0x5566 +0x3565 0x557f +0x3566 0x5581 +0x3567 0x5582 +0x3568 0x5586 +0x3569 0x5588 +0x356a 0x558e +0x356b 0x558f +0x356c 0x5591 +0x356d 0x5592 +0x356e 0x5593 +0x356f 0x5594 +0x3570 0x5597 +0x3571 0x55a3 +0x3572 0x55a4 +0x3573 0x55ad +0x3574 0x55b2 +0x3575 0x55bf +0x3576 0x55c1 +0x3577 0x55c3 +0x3578 0x55c6 +0x3579 0x55c9 +0x357a 0x55cb +0x357b 0x55cc +0x357c 0x55ce +0x357d 0x55d1 +0x357e 0x55d2 +0x3621 0x55d3 +0x3622 0x55d7 +0x3623 0x55d8 +0x3624 0x55db +0x3625 0x55de +0x3626 0x55e2 +0x3627 0x55e9 +0x3628 0x55f6 +0x3629 0x55ff +0x362a 0x5605 +0x362b 0x5608 +0x362c 0x560a +0x362d 0x560d +0x362e 0x560e +0x362f 0x560f +0x3630 0x5610 +0x3631 0x5611 +0x3632 0x5612 +0x3633 0x5619 +0x3634 0x562c +0x3635 0x5630 +0x3636 0x5633 +0x3637 0x5635 +0x3638 0x5637 +0x3639 0x5639 +0x363a 0x563b +0x363b 0x563c +0x363c 0x563d +0x363d 0x563f +0x363e 0x5640 +0x363f 0x5641 +0x3640 0x5643 +0x3641 0x5644 +0x3642 0x5646 +0x3643 0x5649 +0x3644 0x564b +0x3645 0x564d +0x3646 0x564f +0x3647 0x5654 +0x3648 0x565e +0x3649 0x5660 +0x364a 0x5661 +0x364b 0x5662 +0x364c 0x5663 +0x364d 0x5666 +0x364e 0x5669 +0x364f 0x566d +0x3650 0x566f +0x3651 0x5671 +0x3652 0x5672 +0x3653 0x5675 +0x3654 0x5684 +0x3655 0x5685 +0x3656 0x5688 +0x3657 0x568b +0x3658 0x568c +0x3659 0x5695 +0x365a 0x5699 +0x365b 0x569a +0x365c 0x569d +0x365d 0x569e +0x365e 0x569f +0x365f 0x56a6 +0x3660 0x56a7 +0x3661 0x56a8 +0x3662 0x56a9 +0x3663 0x56ab +0x3664 0x56ac +0x3665 0x56ad +0x3666 0x56b1 +0x3667 0x56b3 +0x3668 0x56b7 +0x3669 0x56be +0x366a 0x56c5 +0x366b 0x56c9 +0x366c 0x56ca +0x366d 0x56cb +0x366e 0x56cf +0x366f 0x56d0 +0x3670 0x56cc +0x3671 0x56cd +0x3672 0x56d9 +0x3673 0x56dc +0x3674 0x56dd +0x3675 0x56df +0x3676 0x56e1 +0x3677 0x56e4 +0x3678 0x56e5 +0x3679 0x56e6 +0x367a 0x56e7 +0x367b 0x56e8 +0x367c 0x56f1 +0x367d 0x56eb +0x367e 0x56ed +0x3721 0x56f6 +0x3722 0x56f7 +0x3723 0x5701 +0x3724 0x5702 +0x3725 0x5707 +0x3726 0x570a +0x3727 0x570c +0x3728 0x5711 +0x3729 0x5715 +0x372a 0x571a +0x372b 0x571b +0x372c 0x571d +0x372d 0x5720 +0x372e 0x5722 +0x372f 0x5723 +0x3730 0x5724 +0x3731 0x5725 +0x3732 0x5729 +0x3733 0x572a +0x3734 0x572c +0x3735 0x572e +0x3736 0x572f +0x3737 0x5733 +0x3738 0x5734 +0x3739 0x573d +0x373a 0x573e +0x373b 0x573f +0x373c 0x5745 +0x373d 0x5746 +0x373e 0x574c +0x373f 0x574d +0x3740 0x5752 +0x3741 0x5762 +0x3742 0x5765 +0x3743 0x5767 +0x3744 0x5768 +0x3745 0x576b +0x3746 0x576d +0x3747 0x576e +0x3748 0x576f +0x3749 0x5770 +0x374a 0x5771 +0x374b 0x5773 +0x374c 0x5774 +0x374d 0x5775 +0x374e 0x5777 +0x374f 0x5779 +0x3750 0x577a +0x3751 0x577b +0x3752 0x577c +0x3753 0x577e +0x3754 0x5781 +0x3755 0x5783 +0x3756 0x578c +0x3757 0x5794 +0x3758 0x5797 +0x3759 0x5799 +0x375a 0x579a +0x375b 0x579c +0x375c 0x579d +0x375d 0x579e +0x375e 0x579f +0x375f 0x57a1 +0x3760 0x5795 +0x3761 0x57a7 +0x3762 0x57a8 +0x3763 0x57a9 +0x3764 0x57ac +0x3765 0x57b8 +0x3766 0x57bd +0x3767 0x57c7 +0x3768 0x57c8 +0x3769 0x57cc +0x376a 0x57cf +0x376b 0x57d5 +0x376c 0x57dd +0x376d 0x57de +0x376e 0x57e4 +0x376f 0x57e6 +0x3770 0x57e7 +0x3771 0x57e9 +0x3772 0x57ed +0x3773 0x57f0 +0x3774 0x57f5 +0x3775 0x57f6 +0x3776 0x57f8 +0x3777 0x57fd +0x3778 0x57fe +0x3779 0x57ff +0x377a 0x5803 +0x377b 0x5804 +0x377c 0x5808 +0x377d 0x5809 +0x377e 0x57e1 +0x3821 0x580c +0x3822 0x580d +0x3823 0x581b +0x3824 0x581e +0x3825 0x581f +0x3826 0x5820 +0x3827 0x5826 +0x3828 0x5827 +0x3829 0x582d +0x382a 0x5832 +0x382b 0x5839 +0x382c 0x583f +0x382d 0x5849 +0x382e 0x584c +0x382f 0x584d +0x3830 0x584f +0x3831 0x5850 +0x3832 0x5855 +0x3833 0x585f +0x3834 0x5861 +0x3835 0x5864 +0x3836 0x5867 +0x3837 0x5868 +0x3838 0x5878 +0x3839 0x587c +0x383a 0x587f +0x383b 0x5880 +0x383c 0x5881 +0x383d 0x5887 +0x383e 0x5888 +0x383f 0x5889 +0x3840 0x588a +0x3841 0x588c +0x3842 0x588d +0x3843 0x588f +0x3844 0x5890 +0x3845 0x5894 +0x3846 0x5896 +0x3847 0x589d +0x3848 0x58a0 +0x3849 0x58a1 +0x384a 0x58a2 +0x384b 0x58a6 +0x384c 0x58a9 +0x384d 0x58b1 +0x384e 0x58b2 +0x384f 0x58c4 +0x3850 0x58bc +0x3851 0x58c2 +0x3852 0x58c8 +0x3853 0x58cd +0x3854 0x58ce +0x3855 0x58d0 +0x3856 0x58d2 +0x3857 0x58d4 +0x3858 0x58d6 +0x3859 0x58da +0x385a 0x58dd +0x385b 0x58e1 +0x385c 0x58e2 +0x385d 0x58e9 +0x385e 0x58f3 +0x385f 0x5905 +0x3860 0x5906 +0x3861 0x590b +0x3862 0x590c +0x3863 0x5912 +0x3864 0x5913 +0x3865 0x5914 +0x3866 0x8641 +0x3867 0x591d +0x3868 0x5921 +0x3869 0x5923 +0x386a 0x5924 +0x386b 0x5928 +0x386c 0x592f +0x386d 0x5930 +0x386e 0x5933 +0x386f 0x5935 +0x3870 0x5936 +0x3871 0x593f +0x3872 0x5943 +0x3873 0x5946 +0x3874 0x5952 +0x3875 0x5953 +0x3876 0x5959 +0x3877 0x595b +0x3878 0x595d +0x3879 0x595e +0x387a 0x595f +0x387b 0x5961 +0x387c 0x5963 +0x387d 0x596b +0x387e 0x596d +0x3921 0x596f +0x3922 0x5972 +0x3923 0x5975 +0x3924 0x5976 +0x3925 0x5979 +0x3926 0x597b +0x3927 0x597c +0x3928 0x598b +0x3929 0x598c +0x392a 0x598e +0x392b 0x5992 +0x392c 0x5995 +0x392d 0x5997 +0x392e 0x599f +0x392f 0x59a4 +0x3930 0x59a7 +0x3931 0x59ad +0x3932 0x59ae +0x3933 0x59af +0x3934 0x59b0 +0x3935 0x59b3 +0x3936 0x59b7 +0x3937 0x59ba +0x3938 0x59bc +0x3939 0x59c1 +0x393a 0x59c3 +0x393b 0x59c4 +0x393c 0x59c8 +0x393d 0x59ca +0x393e 0x59cd +0x393f 0x59d2 +0x3940 0x59dd +0x3941 0x59de +0x3942 0x59df +0x3943 0x59e3 +0x3944 0x59e4 +0x3945 0x59e7 +0x3946 0x59ee +0x3947 0x59ef +0x3948 0x59f1 +0x3949 0x59f2 +0x394a 0x59f4 +0x394b 0x59f7 +0x394c 0x5a00 +0x394d 0x5a04 +0x394e 0x5a0c +0x394f 0x5a0d +0x3950 0x5a0e +0x3951 0x5a12 +0x3952 0x5a13 +0x3953 0x5a1e +0x3954 0x5a23 +0x3955 0x5a24 +0x3956 0x5a27 +0x3957 0x5a28 +0x3958 0x5a2a +0x3959 0x5a2d +0x395a 0x5a30 +0x395b 0x5a44 +0x395c 0x5a45 +0x395d 0x5a47 +0x395e 0x5a48 +0x395f 0x5a4c +0x3960 0x5a50 +0x3961 0x5a55 +0x3962 0x5a5e +0x3963 0x5a63 +0x3964 0x5a65 +0x3965 0x5a67 +0x3966 0x5a6d +0x3967 0x5a77 +0x3968 0x5a7a +0x3969 0x5a7b +0x396a 0x5a7e +0x396b 0x5a8b +0x396c 0x5a90 +0x396d 0x5a93 +0x396e 0x5a96 +0x396f 0x5a99 +0x3970 0x5a9c +0x3971 0x5a9e +0x3972 0x5a9f +0x3973 0x5aa0 +0x3974 0x5aa2 +0x3975 0x5aa7 +0x3976 0x5aac +0x3977 0x5ab1 +0x3978 0x5ab2 +0x3979 0x5ab3 +0x397a 0x5ab5 +0x397b 0x5ab8 +0x397c 0x5aba +0x397d 0x5abb +0x397e 0x5abf +0x3a21 0x5ac4 +0x3a22 0x5ac6 +0x3a23 0x5ac8 +0x3a24 0x5acf +0x3a25 0x5ada +0x3a26 0x5adc +0x3a27 0x5ae0 +0x3a28 0x5ae5 +0x3a29 0x5aea +0x3a2a 0x5aee +0x3a2b 0x5af5 +0x3a2c 0x5af6 +0x3a2d 0x5afd +0x3a2e 0x5b00 +0x3a2f 0x5b01 +0x3a30 0x5b08 +0x3a31 0x5b17 +0x3a32 0x5b34 +0x3a33 0x5b19 +0x3a34 0x5b1b +0x3a35 0x5b1d +0x3a36 0x5b21 +0x3a37 0x5b25 +0x3a38 0x5b2d +0x3a39 0x5b38 +0x3a3a 0x5b41 +0x3a3b 0x5b4b +0x3a3c 0x5b4c +0x3a3d 0x5b52 +0x3a3e 0x5b56 +0x3a3f 0x5b5e +0x3a40 0x5b68 +0x3a41 0x5b6e +0x3a42 0x5b6f +0x3a43 0x5b7c +0x3a44 0x5b7d +0x3a45 0x5b7e +0x3a46 0x5b7f +0x3a47 0x5b81 +0x3a48 0x5b84 +0x3a49 0x5b86 +0x3a4a 0x5b8a +0x3a4b 0x5b8e +0x3a4c 0x5b90 +0x3a4d 0x5b91 +0x3a4e 0x5b93 +0x3a4f 0x5b94 +0x3a50 0x5b96 +0x3a51 0x5ba8 +0x3a52 0x5ba9 +0x3a53 0x5bac +0x3a54 0x5bad +0x3a55 0x5baf +0x3a56 0x5bb1 +0x3a57 0x5bb2 +0x3a58 0x5bb7 +0x3a59 0x5bba +0x3a5a 0x5bbc +0x3a5b 0x5bc0 +0x3a5c 0x5bc1 +0x3a5d 0x5bcd +0x3a5e 0x5bcf +0x3a5f 0x5bd6 +0x3a60 0x5bd7 +0x3a61 0x5bd8 +0x3a62 0x5bd9 +0x3a63 0x5bda +0x3a64 0x5be0 +0x3a65 0x5bef +0x3a66 0x5bf1 +0x3a67 0x5bf4 +0x3a68 0x5bfd +0x3a69 0x5c0c +0x3a6a 0x5c17 +0x3a6b 0x5c1e +0x3a6c 0x5c1f +0x3a6d 0x5c23 +0x3a6e 0x5c26 +0x3a6f 0x5c29 +0x3a70 0x5c2b +0x3a71 0x5c2c +0x3a72 0x5c2e +0x3a73 0x5c30 +0x3a74 0x5c32 +0x3a75 0x5c35 +0x3a76 0x5c36 +0x3a77 0x5c59 +0x3a78 0x5c5a +0x3a79 0x5c5c +0x3a7a 0x5c62 +0x3a7b 0x5c63 +0x3a7c 0x5c67 +0x3a7d 0x5c68 +0x3a7e 0x5c69 +0x3b21 0x5c6d +0x3b22 0x5c70 +0x3b23 0x5c74 +0x3b24 0x5c75 +0x3b25 0x5c7a +0x3b26 0x5c7b +0x3b27 0x5c7c +0x3b28 0x5c7d +0x3b29 0x5c87 +0x3b2a 0x5c88 +0x3b2b 0x5c8a +0x3b2c 0x5c8f +0x3b2d 0x5c92 +0x3b2e 0x5c9d +0x3b2f 0x5c9f +0x3b30 0x5ca0 +0x3b31 0x5ca2 +0x3b32 0x5ca3 +0x3b33 0x5ca6 +0x3b34 0x5caa +0x3b35 0x5cb2 +0x3b36 0x5cb4 +0x3b37 0x5cb5 +0x3b38 0x5cba +0x3b39 0x5cc9 +0x3b3a 0x5ccb +0x3b3b 0x5cd2 +0x3b3c 0x5cdd +0x3b3d 0x5cd7 +0x3b3e 0x5cee +0x3b3f 0x5cf1 +0x3b40 0x5cf2 +0x3b41 0x5cf4 +0x3b42 0x5d01 +0x3b43 0x5d06 +0x3b44 0x5d0d +0x3b45 0x5d12 +0x3b46 0x5d2b +0x3b47 0x5d23 +0x3b48 0x5d24 +0x3b49 0x5d26 +0x3b4a 0x5d27 +0x3b4b 0x5d31 +0x3b4c 0x5d34 +0x3b4d 0x5d39 +0x3b4e 0x5d3d +0x3b4f 0x5d3f +0x3b50 0x5d42 +0x3b51 0x5d43 +0x3b52 0x5d46 +0x3b53 0x5d48 +0x3b54 0x5d55 +0x3b55 0x5d51 +0x3b56 0x5d59 +0x3b57 0x5d4a +0x3b58 0x5d5f +0x3b59 0x5d60 +0x3b5a 0x5d61 +0x3b5b 0x5d62 +0x3b5c 0x5d64 +0x3b5d 0x5d6a +0x3b5e 0x5d6d +0x3b5f 0x5d70 +0x3b60 0x5d79 +0x3b61 0x5d7a +0x3b62 0x5d7e +0x3b63 0x5d7f +0x3b64 0x5d81 +0x3b65 0x5d83 +0x3b66 0x5d88 +0x3b67 0x5d8a +0x3b68 0x5d92 +0x3b69 0x5d93 +0x3b6a 0x5d94 +0x3b6b 0x5d95 +0x3b6c 0x5d99 +0x3b6d 0x5d9b +0x3b6e 0x5d9f +0x3b6f 0x5da0 +0x3b70 0x5da7 +0x3b71 0x5dab +0x3b72 0x5db0 +0x3b73 0x5db4 +0x3b74 0x5db8 +0x3b75 0x5db9 +0x3b76 0x5dc3 +0x3b77 0x5dc7 +0x3b78 0x5dcb +0x3b79 0x5dd0 +0x3b7a 0x5dce +0x3b7b 0x5dd8 +0x3b7c 0x5dd9 +0x3b7d 0x5de0 +0x3b7e 0x5de4 +0x3c21 0x5de9 +0x3c22 0x5df8 +0x3c23 0x5df9 +0x3c24 0x5e00 +0x3c25 0x5e07 +0x3c26 0x5e0d +0x3c27 0x5e12 +0x3c28 0x5e14 +0x3c29 0x5e15 +0x3c2a 0x5e18 +0x3c2b 0x5e1f +0x3c2c 0x5e20 +0x3c2d 0x5e2e +0x3c2e 0x5e28 +0x3c2f 0x5e32 +0x3c30 0x5e35 +0x3c31 0x5e3e +0x3c32 0x5e4b +0x3c33 0x5e50 +0x3c34 0x5e49 +0x3c35 0x5e51 +0x3c36 0x5e56 +0x3c37 0x5e58 +0x3c38 0x5e5b +0x3c39 0x5e5c +0x3c3a 0x5e5e +0x3c3b 0x5e68 +0x3c3c 0x5e6a +0x3c3d 0x5e6b +0x3c3e 0x5e6c +0x3c3f 0x5e6d +0x3c40 0x5e6e +0x3c41 0x5e70 +0x3c42 0x5e80 +0x3c43 0x5e8b +0x3c44 0x5e8e +0x3c45 0x5ea2 +0x3c46 0x5ea4 +0x3c47 0x5ea5 +0x3c48 0x5ea8 +0x3c49 0x5eaa +0x3c4a 0x5eac +0x3c4b 0x5eb1 +0x3c4c 0x5eb3 +0x3c4d 0x5ebd +0x3c4e 0x5ebe +0x3c4f 0x5ebf +0x3c50 0x5ec6 +0x3c51 0x5ecc +0x3c52 0x5ecb +0x3c53 0x5ece +0x3c54 0x5ed1 +0x3c55 0x5ed2 +0x3c56 0x5ed4 +0x3c57 0x5ed5 +0x3c58 0x5edc +0x3c59 0x5ede +0x3c5a 0x5ee5 +0x3c5b 0x5eeb +0x3c5c 0x5f02 +0x3c5d 0x5f06 +0x3c5e 0x5f07 +0x3c5f 0x5f08 +0x3c60 0x5f0e +0x3c61 0x5f19 +0x3c62 0x5f1c +0x3c63 0x5f1d +0x3c64 0x5f21 +0x3c65 0x5f22 +0x3c66 0x5f23 +0x3c67 0x5f24 +0x3c68 0x5f28 +0x3c69 0x5f2b +0x3c6a 0x5f2c +0x3c6b 0x5f2e +0x3c6c 0x5f30 +0x3c6d 0x5f34 +0x3c6e 0x5f36 +0x3c6f 0x5f3b +0x3c70 0x5f3d +0x3c71 0x5f3f +0x3c72 0x5f40 +0x3c73 0x5f44 +0x3c74 0x5f45 +0x3c75 0x5f47 +0x3c76 0x5f4d +0x3c77 0x5f50 +0x3c78 0x5f54 +0x3c79 0x5f58 +0x3c7a 0x5f5b +0x3c7b 0x5f60 +0x3c7c 0x5f63 +0x3c7d 0x5f64 +0x3c7e 0x5f67 +0x3d21 0x5f6f +0x3d22 0x5f72 +0x3d23 0x5f74 +0x3d24 0x5f75 +0x3d25 0x5f78 +0x3d26 0x5f7a +0x3d27 0x5f7d +0x3d28 0x5f7e +0x3d29 0x5f89 +0x3d2a 0x5f8d +0x3d2b 0x5f8f +0x3d2c 0x5f96 +0x3d2d 0x5f9c +0x3d2e 0x5f9d +0x3d2f 0x5fa2 +0x3d30 0x5fa7 +0x3d31 0x5fab +0x3d32 0x5fa4 +0x3d33 0x5fac +0x3d34 0x5faf +0x3d35 0x5fb0 +0x3d36 0x5fb1 +0x3d37 0x5fb8 +0x3d38 0x5fc4 +0x3d39 0x5fc7 +0x3d3a 0x5fc8 +0x3d3b 0x5fc9 +0x3d3c 0x5fcb +0x3d3d 0x5fd0 +0x3d3e 0x5fd1 +0x3d3f 0x5fd2 +0x3d40 0x5fd3 +0x3d41 0x5fd4 +0x3d42 0x5fde +0x3d43 0x5fe1 +0x3d44 0x5fe2 +0x3d45 0x5fe8 +0x3d46 0x5fe9 +0x3d47 0x5fea +0x3d48 0x5fec +0x3d49 0x5fed +0x3d4a 0x5fee +0x3d4b 0x5fef +0x3d4c 0x5ff2 +0x3d4d 0x5ff3 +0x3d4e 0x5ff6 +0x3d4f 0x5ffa +0x3d50 0x5ffc +0x3d51 0x6007 +0x3d52 0x600a +0x3d53 0x600d +0x3d54 0x6013 +0x3d55 0x6014 +0x3d56 0x6017 +0x3d57 0x6018 +0x3d58 0x601a +0x3d59 0x601f +0x3d5a 0x6024 +0x3d5b 0x602d +0x3d5c 0x6033 +0x3d5d 0x6035 +0x3d5e 0x6040 +0x3d5f 0x6047 +0x3d60 0x6048 +0x3d61 0x6049 +0x3d62 0x604c +0x3d63 0x6051 +0x3d64 0x6054 +0x3d65 0x6056 +0x3d66 0x6057 +0x3d67 0x605d +0x3d68 0x6061 +0x3d69 0x6067 +0x3d6a 0x6071 +0x3d6b 0x607e +0x3d6c 0x607f +0x3d6d 0x6082 +0x3d6e 0x6086 +0x3d6f 0x6088 +0x3d70 0x608a +0x3d71 0x608e +0x3d72 0x6091 +0x3d73 0x6093 +0x3d74 0x6095 +0x3d75 0x6098 +0x3d76 0x609d +0x3d77 0x609e +0x3d78 0x60a2 +0x3d79 0x60a4 +0x3d7a 0x60a5 +0x3d7b 0x60a8 +0x3d7c 0x60b0 +0x3d7d 0x60b1 +0x3d7e 0x60b7 +0x3e21 0x60bb +0x3e22 0x60be +0x3e23 0x60c2 +0x3e24 0x60c4 +0x3e25 0x60c8 +0x3e26 0x60c9 +0x3e27 0x60ca +0x3e28 0x60cb +0x3e29 0x60ce +0x3e2a 0x60cf +0x3e2b 0x60d4 +0x3e2c 0x60d5 +0x3e2d 0x60d9 +0x3e2e 0x60db +0x3e2f 0x60dd +0x3e30 0x60de +0x3e31 0x60e2 +0x3e32 0x60e5 +0x3e33 0x60f2 +0x3e34 0x60f5 +0x3e35 0x60f8 +0x3e36 0x60fc +0x3e37 0x60fd +0x3e38 0x6102 +0x3e39 0x6107 +0x3e3a 0x610a +0x3e3b 0x610c +0x3e3c 0x6110 +0x3e3d 0x6111 +0x3e3e 0x6112 +0x3e3f 0x6113 +0x3e40 0x6114 +0x3e41 0x6116 +0x3e42 0x6117 +0x3e43 0x6119 +0x3e44 0x611c +0x3e45 0x611e +0x3e46 0x6122 +0x3e47 0x612a +0x3e48 0x612b +0x3e49 0x6130 +0x3e4a 0x6131 +0x3e4b 0x6135 +0x3e4c 0x6136 +0x3e4d 0x6137 +0x3e4e 0x6139 +0x3e4f 0x6141 +0x3e50 0x6145 +0x3e51 0x6146 +0x3e52 0x6149 +0x3e53 0x615e +0x3e54 0x6160 +0x3e55 0x616c +0x3e56 0x6172 +0x3e57 0x6178 +0x3e58 0x617b +0x3e59 0x617c +0x3e5a 0x617f +0x3e5b 0x6180 +0x3e5c 0x6181 +0x3e5d 0x6183 +0x3e5e 0x6184 +0x3e5f 0x618b +0x3e60 0x618d +0x3e61 0x6192 +0x3e62 0x6193 +0x3e63 0x6197 +0x3e64 0x6198 +0x3e65 0x619c +0x3e66 0x619d +0x3e67 0x619f +0x3e68 0x61a0 +0x3e69 0x61a5 +0x3e6a 0x61a8 +0x3e6b 0x61aa +0x3e6c 0x61ad +0x3e6d 0x61b8 +0x3e6e 0x61b9 +0x3e6f 0x61bc +0x3e70 0x61c0 +0x3e71 0x61c1 +0x3e72 0x61c2 +0x3e73 0x61ce +0x3e74 0x61cf +0x3e75 0x61d5 +0x3e76 0x61dc +0x3e77 0x61dd +0x3e78 0x61de +0x3e79 0x61df +0x3e7a 0x61e1 +0x3e7b 0x61e2 +0x3e7c 0x61e7 +0x3e7d 0x61e9 +0x3e7e 0x61e5 +0x3f21 0x61ec +0x3f22 0x61ed +0x3f23 0x61ef +0x3f24 0x6201 +0x3f25 0x6203 +0x3f26 0x6204 +0x3f27 0x6207 +0x3f28 0x6213 +0x3f29 0x6215 +0x3f2a 0x621c +0x3f2b 0x6220 +0x3f2c 0x6222 +0x3f2d 0x6223 +0x3f2e 0x6227 +0x3f2f 0x6229 +0x3f30 0x622b +0x3f31 0x6239 +0x3f32 0x623d +0x3f33 0x6242 +0x3f34 0x6243 +0x3f35 0x6244 +0x3f36 0x6246 +0x3f37 0x624c +0x3f38 0x6250 +0x3f39 0x6251 +0x3f3a 0x6252 +0x3f3b 0x6254 +0x3f3c 0x6256 +0x3f3d 0x625a +0x3f3e 0x625c +0x3f3f 0x6264 +0x3f40 0x626d +0x3f41 0x626f +0x3f42 0x6273 +0x3f43 0x627a +0x3f44 0x627d +0x3f45 0x628d +0x3f46 0x628e +0x3f47 0x628f +0x3f48 0x6290 +0x3f49 0x62a6 +0x3f4a 0x62a8 +0x3f4b 0x62b3 +0x3f4c 0x62b6 +0x3f4d 0x62b7 +0x3f4e 0x62ba +0x3f4f 0x62be +0x3f50 0x62bf +0x3f51 0x62c4 +0x3f52 0x62ce +0x3f53 0x62d5 +0x3f54 0x62d6 +0x3f55 0x62da +0x3f56 0x62ea +0x3f57 0x62f2 +0x3f58 0x62f4 +0x3f59 0x62fc +0x3f5a 0x62fd +0x3f5b 0x6303 +0x3f5c 0x6304 +0x3f5d 0x630a +0x3f5e 0x630b +0x3f5f 0x630d +0x3f60 0x6310 +0x3f61 0x6313 +0x3f62 0x6316 +0x3f63 0x6318 +0x3f64 0x6329 +0x3f65 0x632a +0x3f66 0x632d +0x3f67 0x6335 +0x3f68 0x6336 +0x3f69 0x6339 +0x3f6a 0x633c +0x3f6b 0x6341 +0x3f6c 0x6342 +0x3f6d 0x6343 +0x3f6e 0x6344 +0x3f6f 0x6346 +0x3f70 0x634a +0x3f71 0x634b +0x3f72 0x634e +0x3f73 0x6352 +0x3f74 0x6353 +0x3f75 0x6354 +0x3f76 0x6358 +0x3f77 0x635b +0x3f78 0x6365 +0x3f79 0x6366 +0x3f7a 0x636c +0x3f7b 0x636d +0x3f7c 0x6371 +0x3f7d 0x6374 +0x3f7e 0x6375 +0x4021 0x6378 +0x4022 0x637c +0x4023 0x637d +0x4024 0x637f +0x4025 0x6382 +0x4026 0x6384 +0x4027 0x6387 +0x4028 0x638a +0x4029 0x6390 +0x402a 0x6394 +0x402b 0x6395 +0x402c 0x6399 +0x402d 0x639a +0x402e 0x639e +0x402f 0x63a4 +0x4030 0x63a6 +0x4031 0x63ad +0x4032 0x63ae +0x4033 0x63af +0x4034 0x63bd +0x4035 0x63c1 +0x4036 0x63c5 +0x4037 0x63c8 +0x4038 0x63ce +0x4039 0x63d1 +0x403a 0x63d3 +0x403b 0x63d4 +0x403c 0x63d5 +0x403d 0x63dc +0x403e 0x63e0 +0x403f 0x63e5 +0x4040 0x63ea +0x4041 0x63ec +0x4042 0x63f2 +0x4043 0x63f3 +0x4044 0x63f5 +0x4045 0x63f8 +0x4046 0x63f9 +0x4047 0x6409 +0x4048 0x640a +0x4049 0x6410 +0x404a 0x6412 +0x404b 0x6414 +0x404c 0x6418 +0x404d 0x641e +0x404e 0x6420 +0x404f 0x6422 +0x4050 0x6424 +0x4051 0x6425 +0x4052 0x6429 +0x4053 0x642a +0x4054 0x642f +0x4055 0x6430 +0x4056 0x6435 +0x4057 0x643d +0x4058 0x643f +0x4059 0x644b +0x405a 0x644f +0x405b 0x6451 +0x405c 0x6452 +0x405d 0x6453 +0x405e 0x6454 +0x405f 0x645a +0x4060 0x645b +0x4061 0x645c +0x4062 0x645d +0x4063 0x645f +0x4064 0x6460 +0x4065 0x6461 +0x4066 0x6463 +0x4067 0x646d +0x4068 0x6473 +0x4069 0x6474 +0x406a 0x647b +0x406b 0x647d +0x406c 0x6485 +0x406d 0x6487 +0x406e 0x648f +0x406f 0x6490 +0x4070 0x6491 +0x4071 0x6498 +0x4072 0x6499 +0x4073 0x649b +0x4074 0x649d +0x4075 0x649f +0x4076 0x64a1 +0x4077 0x64a3 +0x4078 0x64a6 +0x4079 0x64a8 +0x407a 0x64ac +0x407b 0x64b3 +0x407c 0x64bd +0x407d 0x64be +0x407e 0x64bf +0x4121 0x64c4 +0x4122 0x64c9 +0x4123 0x64ca +0x4124 0x64cb +0x4125 0x64cc +0x4126 0x64ce +0x4127 0x64d0 +0x4128 0x64d1 +0x4129 0x64d5 +0x412a 0x64d7 +0x412b 0x64e4 +0x412c 0x64e5 +0x412d 0x64e9 +0x412e 0x64ea +0x412f 0x64ed +0x4130 0x64f0 +0x4131 0x64f5 +0x4132 0x64f7 +0x4133 0x64fb +0x4134 0x64ff +0x4135 0x6501 +0x4136 0x6504 +0x4137 0x6508 +0x4138 0x6509 +0x4139 0x650a +0x413a 0x650f +0x413b 0x6513 +0x413c 0x6514 +0x413d 0x6516 +0x413e 0x6519 +0x413f 0x651b +0x4140 0x651e +0x4141 0x651f +0x4142 0x6522 +0x4143 0x6526 +0x4144 0x6529 +0x4145 0x652e +0x4146 0x6531 +0x4147 0x653a +0x4148 0x653c +0x4149 0x653d +0x414a 0x6543 +0x414b 0x6547 +0x414c 0x6549 +0x414d 0x6550 +0x414e 0x6552 +0x414f 0x6554 +0x4150 0x655f +0x4151 0x6560 +0x4152 0x6567 +0x4153 0x656b +0x4154 0x657a +0x4155 0x657d +0x4156 0x6581 +0x4157 0x6585 +0x4158 0x658a +0x4159 0x6592 +0x415a 0x6595 +0x415b 0x6598 +0x415c 0x659d +0x415d 0x65a0 +0x415e 0x65a3 +0x415f 0x65a6 +0x4160 0x65ae +0x4161 0x65b2 +0x4162 0x65b3 +0x4163 0x65b4 +0x4164 0x65bf +0x4165 0x65c2 +0x4166 0x65c8 +0x4167 0x65c9 +0x4168 0x65ce +0x4169 0x65d0 +0x416a 0x65d4 +0x416b 0x65d6 +0x416c 0x65d8 +0x416d 0x65df +0x416e 0x65f0 +0x416f 0x65f2 +0x4170 0x65f4 +0x4171 0x65f5 +0x4172 0x65f9 +0x4173 0x65fe +0x4174 0x65ff +0x4175 0x6600 +0x4176 0x6604 +0x4177 0x6608 +0x4178 0x6609 +0x4179 0x660d +0x417a 0x6611 +0x417b 0x6612 +0x417c 0x6615 +0x417d 0x6616 +0x417e 0x661d +0x4221 0x661e +0x4222 0x6621 +0x4223 0x6622 +0x4224 0x6623 +0x4225 0x6624 +0x4226 0x6626 +0x4227 0x6629 +0x4228 0x662a +0x4229 0x662b +0x422a 0x662c +0x422b 0x662e +0x422c 0x6630 +0x422d 0x6631 +0x422e 0x6633 +0x422f 0x6639 +0x4230 0x6637 +0x4231 0x6640 +0x4232 0x6645 +0x4233 0x6646 +0x4234 0x664a +0x4235 0x664c +0x4236 0x6651 +0x4237 0x664e +0x4238 0x6657 +0x4239 0x6658 +0x423a 0x6659 +0x423b 0x665b +0x423c 0x665c +0x423d 0x6660 +0x423e 0x6661 +0x423f 0x66fb +0x4240 0x666a +0x4241 0x666b +0x4242 0x666c +0x4243 0x667e +0x4244 0x6673 +0x4245 0x6675 +0x4246 0x667f +0x4247 0x6677 +0x4248 0x6678 +0x4249 0x6679 +0x424a 0x667b +0x424b 0x6680 +0x424c 0x667c +0x424d 0x668b +0x424e 0x668c +0x424f 0x668d +0x4250 0x6690 +0x4251 0x6692 +0x4252 0x6699 +0x4253 0x669a +0x4254 0x669b +0x4255 0x669c +0x4256 0x669f +0x4257 0x66a0 +0x4258 0x66a4 +0x4259 0x66ad +0x425a 0x66b1 +0x425b 0x66b2 +0x425c 0x66b5 +0x425d 0x66bb +0x425e 0x66bf +0x425f 0x66c0 +0x4260 0x66c2 +0x4261 0x66c3 +0x4262 0x66c8 +0x4263 0x66cc +0x4264 0x66ce +0x4265 0x66cf +0x4266 0x66d4 +0x4267 0x66db +0x4268 0x66df +0x4269 0x66e8 +0x426a 0x66eb +0x426b 0x66ec +0x426c 0x66ee +0x426d 0x66fa +0x426e 0x6705 +0x426f 0x6707 +0x4270 0x670e +0x4271 0x6713 +0x4272 0x6719 +0x4273 0x671c +0x4274 0x6720 +0x4275 0x6722 +0x4276 0x6733 +0x4277 0x673e +0x4278 0x6745 +0x4279 0x6747 +0x427a 0x6748 +0x427b 0x674c +0x427c 0x6754 +0x427d 0x6755 +0x427e 0x675d +0x4321 0x6766 +0x4322 0x676c +0x4323 0x676e +0x4324 0x6774 +0x4325 0x6776 +0x4326 0x677b +0x4327 0x6781 +0x4328 0x6784 +0x4329 0x678e +0x432a 0x678f +0x432b 0x6791 +0x432c 0x6793 +0x432d 0x6796 +0x432e 0x6798 +0x432f 0x6799 +0x4330 0x679b +0x4331 0x67b0 +0x4332 0x67b1 +0x4333 0x67b2 +0x4334 0x67b5 +0x4335 0x67bb +0x4336 0x67bc +0x4337 0x67bd +0x4338 0x67f9 +0x4339 0x67c0 +0x433a 0x67c2 +0x433b 0x67c3 +0x433c 0x67c5 +0x433d 0x67c8 +0x433e 0x67c9 +0x433f 0x67d2 +0x4340 0x67d7 +0x4341 0x67d9 +0x4342 0x67dc +0x4343 0x67e1 +0x4344 0x67e6 +0x4345 0x67f0 +0x4346 0x67f2 +0x4347 0x67f6 +0x4348 0x67f7 +0x4349 0x6852 +0x434a 0x6814 +0x434b 0x6819 +0x434c 0x681d +0x434d 0x681f +0x434e 0x6828 +0x434f 0x6827 +0x4350 0x682c +0x4351 0x682d +0x4352 0x682f +0x4353 0x6830 +0x4354 0x6831 +0x4355 0x6833 +0x4356 0x683b +0x4357 0x683f +0x4358 0x6844 +0x4359 0x6845 +0x435a 0x684a +0x435b 0x684c +0x435c 0x6855 +0x435d 0x6857 +0x435e 0x6858 +0x435f 0x685b +0x4360 0x686b +0x4361 0x686e +0x4362 0x686f +0x4363 0x6870 +0x4364 0x6871 +0x4365 0x6872 +0x4366 0x6875 +0x4367 0x6879 +0x4368 0x687a +0x4369 0x687b +0x436a 0x687c +0x436b 0x6882 +0x436c 0x6884 +0x436d 0x6886 +0x436e 0x6888 +0x436f 0x6896 +0x4370 0x6898 +0x4371 0x689a +0x4372 0x689c +0x4373 0x68a1 +0x4374 0x68a3 +0x4375 0x68a5 +0x4376 0x68a9 +0x4377 0x68aa +0x4378 0x68ae +0x4379 0x68b2 +0x437a 0x68bb +0x437b 0x68c5 +0x437c 0x68c8 +0x437d 0x68cc +0x437e 0x68cf +0x4421 0x68d0 +0x4422 0x68d1 +0x4423 0x68d3 +0x4424 0x68d6 +0x4425 0x68d9 +0x4426 0x68dc +0x4427 0x68dd +0x4428 0x68e5 +0x4429 0x68e8 +0x442a 0x68ea +0x442b 0x68eb +0x442c 0x68ec +0x442d 0x68ed +0x442e 0x68f0 +0x442f 0x68f1 +0x4430 0x68f5 +0x4431 0x68f6 +0x4432 0x68fb +0x4433 0x68fc +0x4434 0x68fd +0x4435 0x6906 +0x4436 0x6909 +0x4437 0x690a +0x4438 0x6910 +0x4439 0x6911 +0x443a 0x6913 +0x443b 0x6916 +0x443c 0x6917 +0x443d 0x6931 +0x443e 0x6933 +0x443f 0x6935 +0x4440 0x6938 +0x4441 0x693b +0x4442 0x6942 +0x4443 0x6945 +0x4444 0x6949 +0x4445 0x694e +0x4446 0x6957 +0x4447 0x695b +0x4448 0x6963 +0x4449 0x6964 +0x444a 0x6965 +0x444b 0x6966 +0x444c 0x6968 +0x444d 0x6969 +0x444e 0x696c +0x444f 0x6970 +0x4450 0x6971 +0x4451 0x6972 +0x4452 0x697a +0x4453 0x697b +0x4454 0x697f +0x4455 0x6980 +0x4456 0x698d +0x4457 0x6992 +0x4458 0x6996 +0x4459 0x6998 +0x445a 0x69a1 +0x445b 0x69a5 +0x445c 0x69a6 +0x445d 0x69a8 +0x445e 0x69ab +0x445f 0x69ad +0x4460 0x69af +0x4461 0x69b7 +0x4462 0x69b8 +0x4463 0x69ba +0x4464 0x69bc +0x4465 0x69c5 +0x4466 0x69c8 +0x4467 0x69d1 +0x4468 0x69d6 +0x4469 0x69d7 +0x446a 0x69e2 +0x446b 0x69e5 +0x446c 0x69ee +0x446d 0x69ef +0x446e 0x69f1 +0x446f 0x69f3 +0x4470 0x69f5 +0x4471 0x69fe +0x4472 0x6a00 +0x4473 0x6a01 +0x4474 0x6a03 +0x4475 0x6a0f +0x4476 0x6a11 +0x4477 0x6a15 +0x4478 0x6a1a +0x4479 0x6a1d +0x447a 0x6a20 +0x447b 0x6a24 +0x447c 0x6a28 +0x447d 0x6a30 +0x447e 0x6a32 +0x4521 0x6a34 +0x4522 0x6a37 +0x4523 0x6a3b +0x4524 0x6a3e +0x4525 0x6a3f +0x4526 0x6a45 +0x4527 0x6a46 +0x4528 0x6a49 +0x4529 0x6a4a +0x452a 0x6a4e +0x452b 0x6a50 +0x452c 0x6a51 +0x452d 0x6a52 +0x452e 0x6a55 +0x452f 0x6a56 +0x4530 0x6a5b +0x4531 0x6a64 +0x4532 0x6a67 +0x4533 0x6a6a +0x4534 0x6a71 +0x4535 0x6a73 +0x4536 0x6a7e +0x4537 0x6a81 +0x4538 0x6a83 +0x4539 0x6a86 +0x453a 0x6a87 +0x453b 0x6a89 +0x453c 0x6a8b +0x453d 0x6a91 +0x453e 0x6a9b +0x453f 0x6a9d +0x4540 0x6a9e +0x4541 0x6a9f +0x4542 0x6aa5 +0x4543 0x6aab +0x4544 0x6aaf +0x4545 0x6ab0 +0x4546 0x6ab1 +0x4547 0x6ab4 +0x4548 0x6abd +0x4549 0x6abe +0x454a 0x6abf +0x454b 0x6ac6 +0x454c 0x6ac9 +0x454d 0x6ac8 +0x454e 0x6acc +0x454f 0x6ad0 +0x4550 0x6ad4 +0x4551 0x6ad5 +0x4552 0x6ad6 +0x4553 0x6adc +0x4554 0x6add +0x4555 0x6ae4 +0x4556 0x6ae7 +0x4557 0x6aec +0x4558 0x6af0 +0x4559 0x6af1 +0x455a 0x6af2 +0x455b 0x6afc +0x455c 0x6afd +0x455d 0x6b02 +0x455e 0x6b03 +0x455f 0x6b06 +0x4560 0x6b07 +0x4561 0x6b09 +0x4562 0x6b0f +0x4563 0x6b10 +0x4564 0x6b11 +0x4565 0x6b17 +0x4566 0x6b1b +0x4567 0x6b1e +0x4568 0x6b24 +0x4569 0x6b28 +0x456a 0x6b2b +0x456b 0x6b2c +0x456c 0x6b2f +0x456d 0x6b35 +0x456e 0x6b36 +0x456f 0x6b3b +0x4570 0x6b3f +0x4571 0x6b46 +0x4572 0x6b4a +0x4573 0x6b4d +0x4574 0x6b52 +0x4575 0x6b56 +0x4576 0x6b58 +0x4577 0x6b5d +0x4578 0x6b60 +0x4579 0x6b67 +0x457a 0x6b6b +0x457b 0x6b6e +0x457c 0x6b70 +0x457d 0x6b75 +0x457e 0x6b7d +0x4621 0x6b7e +0x4622 0x6b82 +0x4623 0x6b85 +0x4624 0x6b97 +0x4625 0x6b9b +0x4626 0x6b9f +0x4627 0x6ba0 +0x4628 0x6ba2 +0x4629 0x6ba3 +0x462a 0x6ba8 +0x462b 0x6ba9 +0x462c 0x6bac +0x462d 0x6bad +0x462e 0x6bae +0x462f 0x6bb0 +0x4630 0x6bb8 +0x4631 0x6bb9 +0x4632 0x6bbd +0x4633 0x6bbe +0x4634 0x6bc3 +0x4635 0x6bc4 +0x4636 0x6bc9 +0x4637 0x6bcc +0x4638 0x6bd6 +0x4639 0x6bda +0x463a 0x6be1 +0x463b 0x6be3 +0x463c 0x6be6 +0x463d 0x6be7 +0x463e 0x6bee +0x463f 0x6bf1 +0x4640 0x6bf7 +0x4641 0x6bf9 +0x4642 0x6bff +0x4643 0x6c02 +0x4644 0x6c04 +0x4645 0x6c05 +0x4646 0x6c09 +0x4647 0x6c0d +0x4648 0x6c0e +0x4649 0x6c10 +0x464a 0x6c12 +0x464b 0x6c19 +0x464c 0x6c1f +0x464d 0x6c26 +0x464e 0x6c27 +0x464f 0x6c28 +0x4650 0x6c2c +0x4651 0x6c2e +0x4652 0x6c33 +0x4653 0x6c35 +0x4654 0x6c36 +0x4655 0x6c3a +0x4656 0x6c3b +0x4657 0x6c3f +0x4658 0x6c4a +0x4659 0x6c4b +0x465a 0x6c4d +0x465b 0x6c4f +0x465c 0x6c52 +0x465d 0x6c54 +0x465e 0x6c59 +0x465f 0x6c5b +0x4660 0x6c5c +0x4661 0x6c6b +0x4662 0x6c6d +0x4663 0x6c6f +0x4664 0x6c74 +0x4665 0x6c76 +0x4666 0x6c78 +0x4667 0x6c79 +0x4668 0x6c7b +0x4669 0x6c85 +0x466a 0x6c86 +0x466b 0x6c87 +0x466c 0x6c89 +0x466d 0x6c94 +0x466e 0x6c95 +0x466f 0x6c97 +0x4670 0x6c98 +0x4671 0x6c9c +0x4672 0x6c9f +0x4673 0x6cb0 +0x4674 0x6cb2 +0x4675 0x6cb4 +0x4676 0x6cc2 +0x4677 0x6cc6 +0x4678 0x6ccd +0x4679 0x6ccf +0x467a 0x6cd0 +0x467b 0x6cd1 +0x467c 0x6cd2 +0x467d 0x6cd4 +0x467e 0x6cd6 +0x4721 0x6cda +0x4722 0x6cdc +0x4723 0x6ce0 +0x4724 0x6ce7 +0x4725 0x6ce9 +0x4726 0x6ceb +0x4727 0x6cec +0x4728 0x6cee +0x4729 0x6cf2 +0x472a 0x6cf4 +0x472b 0x6d04 +0x472c 0x6d07 +0x472d 0x6d0a +0x472e 0x6d0e +0x472f 0x6d0f +0x4730 0x6d11 +0x4731 0x6d13 +0x4732 0x6d1a +0x4733 0x6d26 +0x4734 0x6d27 +0x4735 0x6d28 +0x4736 0x6c67 +0x4737 0x6d2e +0x4738 0x6d2f +0x4739 0x6d31 +0x473a 0x6d39 +0x473b 0x6d3c +0x473c 0x6d3f +0x473d 0x6d57 +0x473e 0x6d5e +0x473f 0x6d5f +0x4740 0x6d61 +0x4741 0x6d65 +0x4742 0x6d67 +0x4743 0x6d6f +0x4744 0x6d70 +0x4745 0x6d7c +0x4746 0x6d82 +0x4747 0x6d87 +0x4748 0x6d91 +0x4749 0x6d92 +0x474a 0x6d94 +0x474b 0x6d96 +0x474c 0x6d97 +0x474d 0x6d98 +0x474e 0x6daa +0x474f 0x6dac +0x4750 0x6db4 +0x4751 0x6db7 +0x4752 0x6db9 +0x4753 0x6dbd +0x4754 0x6dbf +0x4755 0x6dc4 +0x4756 0x6dc8 +0x4757 0x6dca +0x4758 0x6dce +0x4759 0x6dcf +0x475a 0x6dd6 +0x475b 0x6ddb +0x475c 0x6ddd +0x475d 0x6ddf +0x475e 0x6de0 +0x475f 0x6de2 +0x4760 0x6de5 +0x4761 0x6de9 +0x4762 0x6def +0x4763 0x6df0 +0x4764 0x6df4 +0x4765 0x6df6 +0x4766 0x6dfc +0x4767 0x6e00 +0x4768 0x6e04 +0x4769 0x6e1e +0x476a 0x6e22 +0x476b 0x6e27 +0x476c 0x6e32 +0x476d 0x6e36 +0x476e 0x6e39 +0x476f 0x6e3b +0x4770 0x6e3c +0x4771 0x6e44 +0x4772 0x6e45 +0x4773 0x6e48 +0x4774 0x6e49 +0x4775 0x6e4b +0x4776 0x6e4f +0x4777 0x6e51 +0x4778 0x6e52 +0x4779 0x6e53 +0x477a 0x6e54 +0x477b 0x6e57 +0x477c 0x6e5c +0x477d 0x6e5d +0x477e 0x6e5e +0x4821 0x6e62 +0x4822 0x6e63 +0x4823 0x6e68 +0x4824 0x6e73 +0x4825 0x6e7b +0x4826 0x6e7d +0x4827 0x6e8d +0x4828 0x6e93 +0x4829 0x6e99 +0x482a 0x6ea0 +0x482b 0x6ea7 +0x482c 0x6ead +0x482d 0x6eae +0x482e 0x6eb1 +0x482f 0x6eb3 +0x4830 0x6ebb +0x4831 0x6ebf +0x4832 0x6ec0 +0x4833 0x6ec1 +0x4834 0x6ec3 +0x4835 0x6ec7 +0x4836 0x6ec8 +0x4837 0x6eca +0x4838 0x6ecd +0x4839 0x6ece +0x483a 0x6ecf +0x483b 0x6eeb +0x483c 0x6eed +0x483d 0x6eee +0x483e 0x6ef9 +0x483f 0x6efb +0x4840 0x6efd +0x4841 0x6f04 +0x4842 0x6f08 +0x4843 0x6f0a +0x4844 0x6f0c +0x4845 0x6f0d +0x4846 0x6f16 +0x4847 0x6f18 +0x4848 0x6f1a +0x4849 0x6f1b +0x484a 0x6f26 +0x484b 0x6f29 +0x484c 0x6f2a +0x484d 0x6f2f +0x484e 0x6f30 +0x484f 0x6f33 +0x4850 0x6f36 +0x4851 0x6f3b +0x4852 0x6f3c +0x4853 0x6f2d +0x4854 0x6f4f +0x4855 0x6f51 +0x4856 0x6f52 +0x4857 0x6f53 +0x4858 0x6f57 +0x4859 0x6f59 +0x485a 0x6f5a +0x485b 0x6f5d +0x485c 0x6f5e +0x485d 0x6f61 +0x485e 0x6f62 +0x485f 0x6f68 +0x4860 0x6f6c +0x4861 0x6f7d +0x4862 0x6f7e +0x4863 0x6f83 +0x4864 0x6f87 +0x4865 0x6f88 +0x4866 0x6f8b +0x4867 0x6f8c +0x4868 0x6f8d +0x4869 0x6f90 +0x486a 0x6f92 +0x486b 0x6f93 +0x486c 0x6f94 +0x486d 0x6f96 +0x486e 0x6f9a +0x486f 0x6f9f +0x4870 0x6fa0 +0x4871 0x6fa5 +0x4872 0x6fa6 +0x4873 0x6fa7 +0x4874 0x6fa8 +0x4875 0x6fae +0x4876 0x6faf +0x4877 0x6fb0 +0x4878 0x6fb5 +0x4879 0x6fb6 +0x487a 0x6fbc +0x487b 0x6fc5 +0x487c 0x6fc7 +0x487d 0x6fc8 +0x487e 0x6fca +0x4921 0x6fda +0x4922 0x6fde +0x4923 0x6fe8 +0x4924 0x6fe9 +0x4925 0x6ff0 +0x4926 0x6ff5 +0x4927 0x6ff9 +0x4928 0x6ffc +0x4929 0x6ffd +0x492a 0x7000 +0x492b 0x7005 +0x492c 0x7006 +0x492d 0x7007 +0x492e 0x700d +0x492f 0x7017 +0x4930 0x7020 +0x4931 0x7023 +0x4932 0x702f +0x4933 0x7034 +0x4934 0x7037 +0x4935 0x7039 +0x4936 0x703c +0x4937 0x7043 +0x4938 0x7044 +0x4939 0x7048 +0x493a 0x7049 +0x493b 0x704a +0x493c 0x704b +0x493d 0x7054 +0x493e 0x7055 +0x493f 0x705d +0x4940 0x705e +0x4941 0x704e +0x4942 0x7064 +0x4943 0x7065 +0x4944 0x706c +0x4945 0x706e +0x4946 0x7075 +0x4947 0x7076 +0x4948 0x707e +0x4949 0x7081 +0x494a 0x7085 +0x494b 0x7086 +0x494c 0x7094 +0x494d 0x7095 +0x494e 0x7096 +0x494f 0x7097 +0x4950 0x7098 +0x4951 0x709b +0x4952 0x70a4 +0x4953 0x70ab +0x4954 0x70b0 +0x4955 0x70b1 +0x4956 0x70b4 +0x4957 0x70b7 +0x4958 0x70ca +0x4959 0x70d1 +0x495a 0x70d3 +0x495b 0x70d4 +0x495c 0x70d5 +0x495d 0x70d6 +0x495e 0x70d8 +0x495f 0x70dc +0x4960 0x70e4 +0x4961 0x70fa +0x4962 0x7103 +0x4963 0x7104 +0x4964 0x7105 +0x4965 0x7106 +0x4966 0x7107 +0x4967 0x710b +0x4968 0x710c +0x4969 0x710f +0x496a 0x711e +0x496b 0x7120 +0x496c 0x712b +0x496d 0x712d +0x496e 0x712f +0x496f 0x7130 +0x4970 0x7131 +0x4971 0x7138 +0x4972 0x7141 +0x4973 0x7145 +0x4974 0x7146 +0x4975 0x7147 +0x4976 0x714a +0x4977 0x714b +0x4978 0x7150 +0x4979 0x7152 +0x497a 0x7157 +0x497b 0x715a +0x497c 0x715c +0x497d 0x715e +0x497e 0x7160 +0x4a21 0x7168 +0x4a22 0x7179 +0x4a23 0x7180 +0x4a24 0x7185 +0x4a25 0x7187 +0x4a26 0x718c +0x4a27 0x7192 +0x4a28 0x719a +0x4a29 0x719b +0x4a2a 0x71a0 +0x4a2b 0x71a2 +0x4a2c 0x71af +0x4a2d 0x71b0 +0x4a2e 0x71b2 +0x4a2f 0x71b3 +0x4a30 0x71ba +0x4a31 0x71bf +0x4a32 0x71c0 +0x4a33 0x71c1 +0x4a34 0x71c4 +0x4a35 0x71cb +0x4a36 0x71cc +0x4a37 0x71d3 +0x4a38 0x71d6 +0x4a39 0x71d9 +0x4a3a 0x71da +0x4a3b 0x71dc +0x4a3c 0x71f8 +0x4a3d 0x71fe +0x4a3e 0x7200 +0x4a3f 0x7207 +0x4a40 0x7208 +0x4a41 0x7209 +0x4a42 0x7213 +0x4a43 0x7217 +0x4a44 0x721a +0x4a45 0x721d +0x4a46 0x721f +0x4a47 0x7224 +0x4a48 0x722b +0x4a49 0x722f +0x4a4a 0x7234 +0x4a4b 0x7238 +0x4a4c 0x7239 +0x4a4d 0x7241 +0x4a4e 0x7242 +0x4a4f 0x7243 +0x4a50 0x7245 +0x4a51 0x724e +0x4a52 0x724f +0x4a53 0x7250 +0x4a54 0x7253 +0x4a55 0x7255 +0x4a56 0x7256 +0x4a57 0x725a +0x4a58 0x725c +0x4a59 0x725e +0x4a5a 0x7260 +0x4a5b 0x7263 +0x4a5c 0x7268 +0x4a5d 0x726b +0x4a5e 0x726e +0x4a5f 0x726f +0x4a60 0x7271 +0x4a61 0x7277 +0x4a62 0x7278 +0x4a63 0x727b +0x4a64 0x727c +0x4a65 0x727f +0x4a66 0x7284 +0x4a67 0x7289 +0x4a68 0x728d +0x4a69 0x728e +0x4a6a 0x7293 +0x4a6b 0x729b +0x4a6c 0x72a8 +0x4a6d 0x72ad +0x4a6e 0x72ae +0x4a6f 0x72b1 +0x4a70 0x72b4 +0x4a71 0x72be +0x4a72 0x72c1 +0x4a73 0x72c7 +0x4a74 0x72c9 +0x4a75 0x72cc +0x4a76 0x72d5 +0x4a77 0x72d6 +0x4a78 0x72d8 +0x4a79 0x72df +0x4a7a 0x72e5 +0x4a7b 0x72f3 +0x4a7c 0x72f4 +0x4a7d 0x72fa +0x4a7e 0x72fb +0x4b21 0x72fe +0x4b22 0x7302 +0x4b23 0x7304 +0x4b24 0x7305 +0x4b25 0x7307 +0x4b26 0x730b +0x4b27 0x730d +0x4b28 0x7312 +0x4b29 0x7313 +0x4b2a 0x7318 +0x4b2b 0x7319 +0x4b2c 0x731e +0x4b2d 0x7322 +0x4b2e 0x7324 +0x4b2f 0x7327 +0x4b30 0x7328 +0x4b31 0x732c +0x4b32 0x7331 +0x4b33 0x7332 +0x4b34 0x7335 +0x4b35 0x733a +0x4b36 0x733b +0x4b37 0x733d +0x4b38 0x7343 +0x4b39 0x734d +0x4b3a 0x7350 +0x4b3b 0x7352 +0x4b3c 0x7356 +0x4b3d 0x7358 +0x4b3e 0x735d +0x4b3f 0x735e +0x4b40 0x735f +0x4b41 0x7360 +0x4b42 0x7366 +0x4b43 0x7367 +0x4b44 0x7369 +0x4b45 0x736b +0x4b46 0x736c +0x4b47 0x736e +0x4b48 0x736f +0x4b49 0x7371 +0x4b4a 0x7377 +0x4b4b 0x7379 +0x4b4c 0x737c +0x4b4d 0x7380 +0x4b4e 0x7381 +0x4b4f 0x7383 +0x4b50 0x7385 +0x4b51 0x7386 +0x4b52 0x738e +0x4b53 0x7390 +0x4b54 0x7393 +0x4b55 0x7395 +0x4b56 0x7397 +0x4b57 0x7398 +0x4b58 0x739c +0x4b59 0x739e +0x4b5a 0x739f +0x4b5b 0x73a0 +0x4b5c 0x73a2 +0x4b5d 0x73a5 +0x4b5e 0x73a6 +0x4b5f 0x73aa +0x4b60 0x73ab +0x4b61 0x73ad +0x4b62 0x73b5 +0x4b63 0x73b7 +0x4b64 0x73b9 +0x4b65 0x73bc +0x4b66 0x73bd +0x4b67 0x73bf +0x4b68 0x73c5 +0x4b69 0x73c6 +0x4b6a 0x73c9 +0x4b6b 0x73cb +0x4b6c 0x73cc +0x4b6d 0x73cf +0x4b6e 0x73d2 +0x4b6f 0x73d3 +0x4b70 0x73d6 +0x4b71 0x73d9 +0x4b72 0x73dd +0x4b73 0x73e1 +0x4b74 0x73e3 +0x4b75 0x73e6 +0x4b76 0x73e7 +0x4b77 0x73e9 +0x4b78 0x73f4 +0x4b79 0x73f5 +0x4b7a 0x73f7 +0x4b7b 0x73f9 +0x4b7c 0x73fa +0x4b7d 0x73fb +0x4b7e 0x73fd +0x4c21 0x73ff +0x4c22 0x7400 +0x4c23 0x7401 +0x4c24 0x7404 +0x4c25 0x7407 +0x4c26 0x740a +0x4c27 0x7411 +0x4c28 0x741a +0x4c29 0x741b +0x4c2a 0x7424 +0x4c2b 0x7426 +0x4c2c 0x7428 +0x4c2d 0x7429 +0x4c2e 0x742a +0x4c2f 0x742b +0x4c30 0x742c +0x4c31 0x742d +0x4c32 0x742e +0x4c33 0x742f +0x4c34 0x7430 +0x4c35 0x7431 +0x4c36 0x7439 +0x4c37 0x7440 +0x4c38 0x7443 +0x4c39 0x7444 +0x4c3a 0x7446 +0x4c3b 0x7447 +0x4c3c 0x744b +0x4c3d 0x744d +0x4c3e 0x7451 +0x4c3f 0x7452 +0x4c40 0x7457 +0x4c41 0x745d +0x4c42 0x7462 +0x4c43 0x7466 +0x4c44 0x7467 +0x4c45 0x7468 +0x4c46 0x746b +0x4c47 0x746d +0x4c48 0x746e +0x4c49 0x7471 +0x4c4a 0x7472 +0x4c4b 0x7480 +0x4c4c 0x7481 +0x4c4d 0x7485 +0x4c4e 0x7486 +0x4c4f 0x7487 +0x4c50 0x7489 +0x4c51 0x748f +0x4c52 0x7490 +0x4c53 0x7491 +0x4c54 0x7492 +0x4c55 0x7498 +0x4c56 0x7499 +0x4c57 0x749a +0x4c58 0x749c +0x4c59 0x749f +0x4c5a 0x74a0 +0x4c5b 0x74a1 +0x4c5c 0x74a3 +0x4c5d 0x74a6 +0x4c5e 0x74a8 +0x4c5f 0x74a9 +0x4c60 0x74aa +0x4c61 0x74ab +0x4c62 0x74ae +0x4c63 0x74af +0x4c64 0x74b1 +0x4c65 0x74b2 +0x4c66 0x74b5 +0x4c67 0x74b9 +0x4c68 0x74bb +0x4c69 0x74bf +0x4c6a 0x74c8 +0x4c6b 0x74c9 +0x4c6c 0x74cc +0x4c6d 0x74d0 +0x4c6e 0x74d3 +0x4c6f 0x74d8 +0x4c70 0x74da +0x4c71 0x74db +0x4c72 0x74de +0x4c73 0x74df +0x4c74 0x74e4 +0x4c75 0x74e8 +0x4c76 0x74ea +0x4c77 0x74eb +0x4c78 0x74ef +0x4c79 0x74f4 +0x4c7a 0x74fa +0x4c7b 0x74fb +0x4c7c 0x74fc +0x4c7d 0x74ff +0x4c7e 0x7506 +0x4d21 0x7512 +0x4d22 0x7516 +0x4d23 0x7517 +0x4d24 0x7520 +0x4d25 0x7521 +0x4d26 0x7524 +0x4d27 0x7527 +0x4d28 0x7529 +0x4d29 0x752a +0x4d2a 0x752f +0x4d2b 0x7536 +0x4d2c 0x7539 +0x4d2d 0x753d +0x4d2e 0x753e +0x4d2f 0x753f +0x4d30 0x7540 +0x4d31 0x7543 +0x4d32 0x7547 +0x4d33 0x7548 +0x4d34 0x754e +0x4d35 0x7550 +0x4d36 0x7552 +0x4d37 0x7557 +0x4d38 0x755e +0x4d39 0x755f +0x4d3a 0x7561 +0x4d3b 0x756f +0x4d3c 0x7571 +0x4d3d 0x7579 +0x4d3e 0x757a +0x4d3f 0x757b +0x4d40 0x757c +0x4d41 0x757d +0x4d42 0x757e +0x4d43 0x7581 +0x4d44 0x7585 +0x4d45 0x7590 +0x4d46 0x7592 +0x4d47 0x7593 +0x4d48 0x7595 +0x4d49 0x7599 +0x4d4a 0x759c +0x4d4b 0x75a2 +0x4d4c 0x75a4 +0x4d4d 0x75b4 +0x4d4e 0x75ba +0x4d4f 0x75bf +0x4d50 0x75c0 +0x4d51 0x75c1 +0x4d52 0x75c4 +0x4d53 0x75c6 +0x4d54 0x75cc +0x4d55 0x75ce +0x4d56 0x75cf +0x4d57 0x75d7 +0x4d58 0x75dc +0x4d59 0x75df +0x4d5a 0x75e0 +0x4d5b 0x75e1 +0x4d5c 0x75e4 +0x4d5d 0x75e7 +0x4d5e 0x75ec +0x4d5f 0x75ee +0x4d60 0x75ef +0x4d61 0x75f1 +0x4d62 0x75f9 +0x4d63 0x7600 +0x4d64 0x7602 +0x4d65 0x7603 +0x4d66 0x7604 +0x4d67 0x7607 +0x4d68 0x7608 +0x4d69 0x760a +0x4d6a 0x760c +0x4d6b 0x760f +0x4d6c 0x7612 +0x4d6d 0x7613 +0x4d6e 0x7615 +0x4d6f 0x7616 +0x4d70 0x7619 +0x4d71 0x761b +0x4d72 0x761c +0x4d73 0x761d +0x4d74 0x761e +0x4d75 0x7623 +0x4d76 0x7625 +0x4d77 0x7626 +0x4d78 0x7629 +0x4d79 0x762d +0x4d7a 0x7632 +0x4d7b 0x7633 +0x4d7c 0x7635 +0x4d7d 0x7638 +0x4d7e 0x7639 +0x4e21 0x763a +0x4e22 0x763c +0x4e23 0x764a +0x4e24 0x7640 +0x4e25 0x7641 +0x4e26 0x7643 +0x4e27 0x7644 +0x4e28 0x7645 +0x4e29 0x7649 +0x4e2a 0x764b +0x4e2b 0x7655 +0x4e2c 0x7659 +0x4e2d 0x765f +0x4e2e 0x7664 +0x4e2f 0x7665 +0x4e30 0x766d +0x4e31 0x766e +0x4e32 0x766f +0x4e33 0x7671 +0x4e34 0x7674 +0x4e35 0x7681 +0x4e36 0x7685 +0x4e37 0x768c +0x4e38 0x768d +0x4e39 0x7695 +0x4e3a 0x769b +0x4e3b 0x769c +0x4e3c 0x769d +0x4e3d 0x769f +0x4e3e 0x76a0 +0x4e3f 0x76a2 +0x4e40 0x76a3 +0x4e41 0x76a4 +0x4e42 0x76a5 +0x4e43 0x76a6 +0x4e44 0x76a7 +0x4e45 0x76a8 +0x4e46 0x76aa +0x4e47 0x76ad +0x4e48 0x76bd +0x4e49 0x76c1 +0x4e4a 0x76c5 +0x4e4b 0x76c9 +0x4e4c 0x76cb +0x4e4d 0x76cc +0x4e4e 0x76ce +0x4e4f 0x76d4 +0x4e50 0x76d9 +0x4e51 0x76e0 +0x4e52 0x76e6 +0x4e53 0x76e8 +0x4e54 0x76ec +0x4e55 0x76f0 +0x4e56 0x76f1 +0x4e57 0x76f6 +0x4e58 0x76f9 +0x4e59 0x76fc +0x4e5a 0x7700 +0x4e5b 0x7706 +0x4e5c 0x770a +0x4e5d 0x770e +0x4e5e 0x7712 +0x4e5f 0x7714 +0x4e60 0x7715 +0x4e61 0x7717 +0x4e62 0x7719 +0x4e63 0x771a +0x4e64 0x771c +0x4e65 0x7722 +0x4e66 0x7728 +0x4e67 0x772d +0x4e68 0x772e +0x4e69 0x772f +0x4e6a 0x7734 +0x4e6b 0x7735 +0x4e6c 0x7736 +0x4e6d 0x7739 +0x4e6e 0x773d +0x4e6f 0x773e +0x4e70 0x7742 +0x4e71 0x7745 +0x4e72 0x7746 +0x4e73 0x774a +0x4e74 0x774d +0x4e75 0x774e +0x4e76 0x774f +0x4e77 0x7752 +0x4e78 0x7756 +0x4e79 0x7757 +0x4e7a 0x775c +0x4e7b 0x775e +0x4e7c 0x775f +0x4e7d 0x7760 +0x4e7e 0x7762 +0x4f21 0x7764 +0x4f22 0x7767 +0x4f23 0x776a +0x4f24 0x776c +0x4f25 0x7770 +0x4f26 0x7772 +0x4f27 0x7773 +0x4f28 0x7774 +0x4f29 0x777a +0x4f2a 0x777d +0x4f2b 0x7780 +0x4f2c 0x7784 +0x4f2d 0x778c +0x4f2e 0x778d +0x4f2f 0x7794 +0x4f30 0x7795 +0x4f31 0x7796 +0x4f32 0x779a +0x4f33 0x779f +0x4f34 0x77a2 +0x4f35 0x77a7 +0x4f36 0x77aa +0x4f37 0x77ae +0x4f38 0x77af +0x4f39 0x77b1 +0x4f3a 0x77b5 +0x4f3b 0x77be +0x4f3c 0x77c3 +0x4f3d 0x77c9 +0x4f3e 0x77d1 +0x4f3f 0x77d2 +0x4f40 0x77d5 +0x4f41 0x77d9 +0x4f42 0x77de +0x4f43 0x77df +0x4f44 0x77e0 +0x4f45 0x77e4 +0x4f46 0x77e6 +0x4f47 0x77ea +0x4f48 0x77ec +0x4f49 0x77f0 +0x4f4a 0x77f1 +0x4f4b 0x77f4 +0x4f4c 0x77f8 +0x4f4d 0x77fb +0x4f4e 0x7805 +0x4f4f 0x7806 +0x4f50 0x7809 +0x4f51 0x780d +0x4f52 0x780e +0x4f53 0x7811 +0x4f54 0x781d +0x4f55 0x7821 +0x4f56 0x7822 +0x4f57 0x7823 +0x4f58 0x782d +0x4f59 0x782e +0x4f5a 0x7830 +0x4f5b 0x7835 +0x4f5c 0x7837 +0x4f5d 0x7843 +0x4f5e 0x7844 +0x4f5f 0x7847 +0x4f60 0x7848 +0x4f61 0x784c +0x4f62 0x784e +0x4f63 0x7852 +0x4f64 0x785c +0x4f65 0x785e +0x4f66 0x7860 +0x4f67 0x7861 +0x4f68 0x7863 +0x4f69 0x7864 +0x4f6a 0x7868 +0x4f6b 0x786a +0x4f6c 0x786e +0x4f6d 0x787a +0x4f6e 0x787e +0x4f6f 0x788a +0x4f70 0x788f +0x4f71 0x7894 +0x4f72 0x7898 +0x4f73 0x78a1 +0x4f74 0x789d +0x4f75 0x789e +0x4f76 0x789f +0x4f77 0x78a4 +0x4f78 0x78a8 +0x4f79 0x78ac +0x4f7a 0x78ad +0x4f7b 0x78b0 +0x4f7c 0x78b1 +0x4f7d 0x78b2 +0x4f7e 0x78b3 +0x5021 0x78bb +0x5022 0x78bd +0x5023 0x78bf +0x5024 0x78c7 +0x5025 0x78c8 +0x5026 0x78c9 +0x5027 0x78cc +0x5028 0x78ce +0x5029 0x78d2 +0x502a 0x78d3 +0x502b 0x78d5 +0x502c 0x78d6 +0x502d 0x78e4 +0x502e 0x78db +0x502f 0x78df +0x5030 0x78e0 +0x5031 0x78e1 +0x5032 0x78e6 +0x5033 0x78ea +0x5034 0x78f2 +0x5035 0x78f3 +0x5036 0x7900 +0x5037 0x78f6 +0x5038 0x78f7 +0x5039 0x78fa +0x503a 0x78fb +0x503b 0x78ff +0x503c 0x7906 +0x503d 0x790c +0x503e 0x7910 +0x503f 0x791a +0x5040 0x791c +0x5041 0x791e +0x5042 0x791f +0x5043 0x7920 +0x5044 0x7925 +0x5045 0x7927 +0x5046 0x7929 +0x5047 0x792d +0x5048 0x7931 +0x5049 0x7934 +0x504a 0x7935 +0x504b 0x793b +0x504c 0x793d +0x504d 0x793f +0x504e 0x7944 +0x504f 0x7945 +0x5050 0x7946 +0x5051 0x794a +0x5052 0x794b +0x5053 0x794f +0x5054 0x7951 +0x5055 0x7954 +0x5056 0x7958 +0x5057 0x795b +0x5058 0x795c +0x5059 0x7967 +0x505a 0x7969 +0x505b 0x796b +0x505c 0x7972 +0x505d 0x7979 +0x505e 0x797b +0x505f 0x797c +0x5060 0x797e +0x5061 0x798b +0x5062 0x798c +0x5063 0x7991 +0x5064 0x7993 +0x5065 0x7994 +0x5066 0x7995 +0x5067 0x7996 +0x5068 0x7998 +0x5069 0x799b +0x506a 0x799c +0x506b 0x79a1 +0x506c 0x79a8 +0x506d 0x79a9 +0x506e 0x79ab +0x506f 0x79af +0x5070 0x79b1 +0x5071 0x79b4 +0x5072 0x79b8 +0x5073 0x79bb +0x5074 0x79c2 +0x5075 0x79c4 +0x5076 0x79c7 +0x5077 0x79c8 +0x5078 0x79ca +0x5079 0x79cf +0x507a 0x79d4 +0x507b 0x79d6 +0x507c 0x79da +0x507d 0x79dd +0x507e 0x79de +0x5121 0x79e0 +0x5122 0x79e2 +0x5123 0x79e5 +0x5124 0x79ea +0x5125 0x79eb +0x5126 0x79ed +0x5127 0x79f1 +0x5128 0x79f8 +0x5129 0x79fc +0x512a 0x7a02 +0x512b 0x7a03 +0x512c 0x7a07 +0x512d 0x7a09 +0x512e 0x7a0a +0x512f 0x7a0c +0x5130 0x7a11 +0x5131 0x7a15 +0x5132 0x7a1b +0x5133 0x7a1e +0x5134 0x7a21 +0x5135 0x7a27 +0x5136 0x7a2b +0x5137 0x7a2d +0x5138 0x7a2f +0x5139 0x7a30 +0x513a 0x7a34 +0x513b 0x7a35 +0x513c 0x7a38 +0x513d 0x7a39 +0x513e 0x7a3a +0x513f 0x7a44 +0x5140 0x7a45 +0x5141 0x7a47 +0x5142 0x7a48 +0x5143 0x7a4c +0x5144 0x7a55 +0x5145 0x7a56 +0x5146 0x7a59 +0x5147 0x7a5c +0x5148 0x7a5d +0x5149 0x7a5f +0x514a 0x7a60 +0x514b 0x7a65 +0x514c 0x7a67 +0x514d 0x7a6a +0x514e 0x7a6d +0x514f 0x7a75 +0x5150 0x7a78 +0x5151 0x7a7e +0x5152 0x7a80 +0x5153 0x7a82 +0x5154 0x7a85 +0x5155 0x7a86 +0x5156 0x7a8a +0x5157 0x7a8b +0x5158 0x7a90 +0x5159 0x7a91 +0x515a 0x7a94 +0x515b 0x7a9e +0x515c 0x7aa0 +0x515d 0x7aa3 +0x515e 0x7aac +0x515f 0x7ab3 +0x5160 0x7ab5 +0x5161 0x7ab9 +0x5162 0x7abb +0x5163 0x7abc +0x5164 0x7ac6 +0x5165 0x7ac9 +0x5166 0x7acc +0x5167 0x7ace +0x5168 0x7ad1 +0x5169 0x7adb +0x516a 0x7ae8 +0x516b 0x7ae9 +0x516c 0x7aeb +0x516d 0x7aec +0x516e 0x7af1 +0x516f 0x7af4 +0x5170 0x7afb +0x5171 0x7afd +0x5172 0x7afe +0x5173 0x7b07 +0x5174 0x7b14 +0x5175 0x7b1f +0x5176 0x7b23 +0x5177 0x7b27 +0x5178 0x7b29 +0x5179 0x7b2a +0x517a 0x7b2b +0x517b 0x7b2d +0x517c 0x7b2e +0x517d 0x7b2f +0x517e 0x7b30 +0x5221 0x7b31 +0x5222 0x7b34 +0x5223 0x7b3d +0x5224 0x7b3f +0x5225 0x7b40 +0x5226 0x7b41 +0x5227 0x7b47 +0x5228 0x7b4e +0x5229 0x7b55 +0x522a 0x7b60 +0x522b 0x7b64 +0x522c 0x7b66 +0x522d 0x7b69 +0x522e 0x7b6a +0x522f 0x7b6d +0x5230 0x7b6f +0x5231 0x7b72 +0x5232 0x7b73 +0x5233 0x7b77 +0x5234 0x7b84 +0x5235 0x7b89 +0x5236 0x7b8e +0x5237 0x7b90 +0x5238 0x7b91 +0x5239 0x7b96 +0x523a 0x7b9b +0x523b 0x7b9e +0x523c 0x7ba0 +0x523d 0x7ba5 +0x523e 0x7bac +0x523f 0x7baf +0x5240 0x7bb0 +0x5241 0x7bb2 +0x5242 0x7bb5 +0x5243 0x7bb6 +0x5244 0x7bba +0x5245 0x7bbb +0x5246 0x7bbc +0x5247 0x7bbd +0x5248 0x7bc2 +0x5249 0x7bc5 +0x524a 0x7bc8 +0x524b 0x7bca +0x524c 0x7bd4 +0x524d 0x7bd6 +0x524e 0x7bd7 +0x524f 0x7bd9 +0x5250 0x7bda +0x5251 0x7bdb +0x5252 0x7be8 +0x5253 0x7bea +0x5254 0x7bf2 +0x5255 0x7bf4 +0x5256 0x7bf5 +0x5257 0x7bf8 +0x5258 0x7bf9 +0x5259 0x7bfa +0x525a 0x7bfc +0x525b 0x7bfe +0x525c 0x7c01 +0x525d 0x7c02 +0x525e 0x7c03 +0x525f 0x7c04 +0x5260 0x7c06 +0x5261 0x7c09 +0x5262 0x7c0b +0x5263 0x7c0c +0x5264 0x7c0e +0x5265 0x7c0f +0x5266 0x7c19 +0x5267 0x7c1b +0x5268 0x7c20 +0x5269 0x7c25 +0x526a 0x7c26 +0x526b 0x7c28 +0x526c 0x7c2c +0x526d 0x7c31 +0x526e 0x7c33 +0x526f 0x7c34 +0x5270 0x7c36 +0x5271 0x7c39 +0x5272 0x7c3a +0x5273 0x7c46 +0x5274 0x7c4a +0x5275 0x7c55 +0x5276 0x7c51 +0x5277 0x7c52 +0x5278 0x7c53 +0x5279 0x7c59 +0x527a 0x7c5a +0x527b 0x7c5b +0x527c 0x7c5c +0x527d 0x7c5d +0x527e 0x7c5e +0x5321 0x7c61 +0x5322 0x7c63 +0x5323 0x7c67 +0x5324 0x7c69 +0x5325 0x7c6d +0x5326 0x7c6e +0x5327 0x7c70 +0x5328 0x7c72 +0x5329 0x7c79 +0x532a 0x7c7c +0x532b 0x7c7d +0x532c 0x7c86 +0x532d 0x7c87 +0x532e 0x7c8f +0x532f 0x7c94 +0x5330 0x7c9e +0x5331 0x7ca0 +0x5332 0x7ca6 +0x5333 0x7cb0 +0x5334 0x7cb6 +0x5335 0x7cb7 +0x5336 0x7cba +0x5337 0x7cbb +0x5338 0x7cbc +0x5339 0x7cbf +0x533a 0x7cc4 +0x533b 0x7cc7 +0x533c 0x7cc8 +0x533d 0x7cc9 +0x533e 0x7ccd +0x533f 0x7ccf +0x5340 0x7cd3 +0x5341 0x7cd4 +0x5342 0x7cd5 +0x5343 0x7cd7 +0x5344 0x7cd9 +0x5345 0x7cda +0x5346 0x7cdd +0x5347 0x7ce6 +0x5348 0x7ce9 +0x5349 0x7ceb +0x534a 0x7cf5 +0x534b 0x7d03 +0x534c 0x7d07 +0x534d 0x7d08 +0x534e 0x7d09 +0x534f 0x7d0f +0x5350 0x7d11 +0x5351 0x7d12 +0x5352 0x7d13 +0x5353 0x7d16 +0x5354 0x7d1d +0x5355 0x7d1e +0x5356 0x7d23 +0x5357 0x7d26 +0x5358 0x7d2a +0x5359 0x7d2d +0x535a 0x7d31 +0x535b 0x7d3c +0x535c 0x7d3d +0x535d 0x7d3e +0x535e 0x7d40 +0x535f 0x7d41 +0x5360 0x7d47 +0x5361 0x7d48 +0x5362 0x7d4d +0x5363 0x7d51 +0x5364 0x7d53 +0x5365 0x7d57 +0x5366 0x7d59 +0x5367 0x7d5a +0x5368 0x7d5c +0x5369 0x7d5d +0x536a 0x7d65 +0x536b 0x7d67 +0x536c 0x7d6a +0x536d 0x7d70 +0x536e 0x7d78 +0x536f 0x7d7a +0x5370 0x7d7b +0x5371 0x7d7f +0x5372 0x7d81 +0x5373 0x7d82 +0x5374 0x7d83 +0x5375 0x7d85 +0x5376 0x7d86 +0x5377 0x7d88 +0x5378 0x7d8b +0x5379 0x7d8c +0x537a 0x7d8d +0x537b 0x7d91 +0x537c 0x7d96 +0x537d 0x7d97 +0x537e 0x7d9d +0x5421 0x7d9e +0x5422 0x7da6 +0x5423 0x7da7 +0x5424 0x7daa +0x5425 0x7db3 +0x5426 0x7db6 +0x5427 0x7db7 +0x5428 0x7db9 +0x5429 0x7dc2 +0x542a 0x7dc3 +0x542b 0x7dc4 +0x542c 0x7dc5 +0x542d 0x7dc6 +0x542e 0x7dcc +0x542f 0x7dcd +0x5430 0x7dce +0x5431 0x7dd7 +0x5432 0x7dd9 +0x5433 0x7e00 +0x5434 0x7de2 +0x5435 0x7de5 +0x5436 0x7de6 +0x5437 0x7dea +0x5438 0x7deb +0x5439 0x7ded +0x543a 0x7df1 +0x543b 0x7df5 +0x543c 0x7df6 +0x543d 0x7df9 +0x543e 0x7dfa +0x543f 0x7e08 +0x5440 0x7e10 +0x5441 0x7e11 +0x5442 0x7e15 +0x5443 0x7e17 +0x5444 0x7e1c +0x5445 0x7e1d +0x5446 0x7e20 +0x5447 0x7e27 +0x5448 0x7e28 +0x5449 0x7e2c +0x544a 0x7e2d +0x544b 0x7e2f +0x544c 0x7e33 +0x544d 0x7e36 +0x544e 0x7e3f +0x544f 0x7e44 +0x5450 0x7e45 +0x5451 0x7e47 +0x5452 0x7e4e +0x5453 0x7e50 +0x5454 0x7e52 +0x5455 0x7e58 +0x5456 0x7e5f +0x5457 0x7e61 +0x5458 0x7e62 +0x5459 0x7e65 +0x545a 0x7e6b +0x545b 0x7e6e +0x545c 0x7e6f +0x545d 0x7e73 +0x545e 0x7e78 +0x545f 0x7e7e +0x5460 0x7e81 +0x5461 0x7e86 +0x5462 0x7e87 +0x5463 0x7e8a +0x5464 0x7e8d +0x5465 0x7e91 +0x5466 0x7e95 +0x5467 0x7e98 +0x5468 0x7e9a +0x5469 0x7e9d +0x546a 0x7e9e +0x546b 0x7f3c +0x546c 0x7f3b +0x546d 0x7f3d +0x546e 0x7f3e +0x546f 0x7f3f +0x5470 0x7f43 +0x5471 0x7f44 +0x5472 0x7f47 +0x5473 0x7f4f +0x5474 0x7f52 +0x5475 0x7f53 +0x5476 0x7f5b +0x5477 0x7f5c +0x5478 0x7f5d +0x5479 0x7f61 +0x547a 0x7f63 +0x547b 0x7f64 +0x547c 0x7f65 +0x547d 0x7f66 +0x547e 0x7f6d +0x5521 0x7f71 +0x5522 0x7f7d +0x5523 0x7f7e +0x5524 0x7f7f +0x5525 0x7f80 +0x5526 0x7f8b +0x5527 0x7f8d +0x5528 0x7f8f +0x5529 0x7f90 +0x552a 0x7f91 +0x552b 0x7f96 +0x552c 0x7f97 +0x552d 0x7f9c +0x552e 0x7fa1 +0x552f 0x7fa2 +0x5530 0x7fa6 +0x5531 0x7faa +0x5532 0x7fad +0x5533 0x7fb4 +0x5534 0x7fbc +0x5535 0x7fbf +0x5536 0x7fc0 +0x5537 0x7fc3 +0x5538 0x7fc8 +0x5539 0x7fce +0x553a 0x7fcf +0x553b 0x7fdb +0x553c 0x7fdf +0x553d 0x7fe3 +0x553e 0x7fe5 +0x553f 0x7fe8 +0x5540 0x7fec +0x5541 0x7fee +0x5542 0x7fef +0x5543 0x7ff2 +0x5544 0x7ffa +0x5545 0x7ffd +0x5546 0x7ffe +0x5547 0x7fff +0x5548 0x8007 +0x5549 0x8008 +0x554a 0x800a +0x554b 0x800d +0x554c 0x800e +0x554d 0x800f +0x554e 0x8011 +0x554f 0x8013 +0x5550 0x8014 +0x5551 0x8016 +0x5552 0x801d +0x5553 0x801e +0x5554 0x801f +0x5555 0x8020 +0x5556 0x8024 +0x5557 0x8026 +0x5558 0x802c +0x5559 0x802e +0x555a 0x8030 +0x555b 0x8034 +0x555c 0x8035 +0x555d 0x8037 +0x555e 0x8039 +0x555f 0x803a +0x5560 0x803c +0x5561 0x803e +0x5562 0x8040 +0x5563 0x8044 +0x5564 0x8060 +0x5565 0x8064 +0x5566 0x8066 +0x5567 0x806d +0x5568 0x8071 +0x5569 0x8075 +0x556a 0x8081 +0x556b 0x8088 +0x556c 0x808e +0x556d 0x809c +0x556e 0x809e +0x556f 0x80a6 +0x5570 0x80a7 +0x5571 0x80ab +0x5572 0x80b8 +0x5573 0x80b9 +0x5574 0x80c8 +0x5575 0x80cd +0x5576 0x80cf +0x5577 0x80d2 +0x5578 0x80d4 +0x5579 0x80d5 +0x557a 0x80d7 +0x557b 0x80d8 +0x557c 0x80e0 +0x557d 0x80ed +0x557e 0x80ee +0x5621 0x80f0 +0x5622 0x80f2 +0x5623 0x80f3 +0x5624 0x80f6 +0x5625 0x80f9 +0x5626 0x80fa +0x5627 0x80fe +0x5628 0x8103 +0x5629 0x810b +0x562a 0x8116 +0x562b 0x8117 +0x562c 0x8118 +0x562d 0x811c +0x562e 0x811e +0x562f 0x8120 +0x5630 0x8124 +0x5631 0x8127 +0x5632 0x812c +0x5633 0x8130 +0x5634 0x8135 +0x5635 0x813a +0x5636 0x813c +0x5637 0x8145 +0x5638 0x8147 +0x5639 0x814a +0x563a 0x814c +0x563b 0x8152 +0x563c 0x8157 +0x563d 0x8160 +0x563e 0x8161 +0x563f 0x8167 +0x5640 0x8168 +0x5641 0x8169 +0x5642 0x816d +0x5643 0x816f +0x5644 0x8177 +0x5645 0x8181 +0x5646 0x8190 +0x5647 0x8184 +0x5648 0x8185 +0x5649 0x8186 +0x564a 0x818b +0x564b 0x818e +0x564c 0x8196 +0x564d 0x8198 +0x564e 0x819b +0x564f 0x819e +0x5650 0x81a2 +0x5651 0x81ae +0x5652 0x81b2 +0x5653 0x81b4 +0x5654 0x81bb +0x5655 0x81cb +0x5656 0x81c3 +0x5657 0x81c5 +0x5658 0x81ca +0x5659 0x81ce +0x565a 0x81cf +0x565b 0x81d5 +0x565c 0x81d7 +0x565d 0x81db +0x565e 0x81dd +0x565f 0x81de +0x5660 0x81e1 +0x5661 0x81e4 +0x5662 0x81eb +0x5663 0x81ec +0x5664 0x81f0 +0x5665 0x81f1 +0x5666 0x81f2 +0x5667 0x81f5 +0x5668 0x81f6 +0x5669 0x81f8 +0x566a 0x81f9 +0x566b 0x81fd +0x566c 0x81ff +0x566d 0x8200 +0x566e 0x8203 +0x566f 0x820f +0x5670 0x8213 +0x5671 0x8214 +0x5672 0x8219 +0x5673 0x821a +0x5674 0x821d +0x5675 0x8221 +0x5676 0x8222 +0x5677 0x8228 +0x5678 0x8232 +0x5679 0x8234 +0x567a 0x823a +0x567b 0x8243 +0x567c 0x8244 +0x567d 0x8245 +0x567e 0x8246 +0x5721 0x824b +0x5722 0x824e +0x5723 0x824f +0x5724 0x8251 +0x5725 0x8256 +0x5726 0x825c +0x5727 0x8260 +0x5728 0x8263 +0x5729 0x8267 +0x572a 0x826d +0x572b 0x8274 +0x572c 0x827b +0x572d 0x827d +0x572e 0x827f +0x572f 0x8280 +0x5730 0x8281 +0x5731 0x8283 +0x5732 0x8284 +0x5733 0x8287 +0x5734 0x8289 +0x5735 0x828a +0x5736 0x828e +0x5737 0x8291 +0x5738 0x8294 +0x5739 0x8296 +0x573a 0x8298 +0x573b 0x829a +0x573c 0x829b +0x573d 0x82a0 +0x573e 0x82a1 +0x573f 0x82a3 +0x5740 0x82a4 +0x5741 0x82a7 +0x5742 0x82a8 +0x5743 0x82a9 +0x5744 0x82aa +0x5745 0x82ae +0x5746 0x82b0 +0x5747 0x82b2 +0x5748 0x82b4 +0x5749 0x82b7 +0x574a 0x82ba +0x574b 0x82bc +0x574c 0x82be +0x574d 0x82bf +0x574e 0x82c6 +0x574f 0x82d0 +0x5750 0x82d5 +0x5751 0x82da +0x5752 0x82e0 +0x5753 0x82e2 +0x5754 0x82e4 +0x5755 0x82e8 +0x5756 0x82ea +0x5757 0x82ed +0x5758 0x82ef +0x5759 0x82f6 +0x575a 0x82f7 +0x575b 0x82fd +0x575c 0x82fe +0x575d 0x8300 +0x575e 0x8301 +0x575f 0x8307 +0x5760 0x8308 +0x5761 0x830a +0x5762 0x830b +0x5763 0x8354 +0x5764 0x831b +0x5765 0x831d +0x5766 0x831e +0x5767 0x831f +0x5768 0x8321 +0x5769 0x8322 +0x576a 0x832c +0x576b 0x832d +0x576c 0x832e +0x576d 0x8330 +0x576e 0x8333 +0x576f 0x8337 +0x5770 0x833a +0x5771 0x833c +0x5772 0x833d +0x5773 0x8342 +0x5774 0x8343 +0x5775 0x8344 +0x5776 0x8347 +0x5777 0x834d +0x5778 0x834e +0x5779 0x8351 +0x577a 0x8355 +0x577b 0x8356 +0x577c 0x8357 +0x577d 0x8370 +0x577e 0x8378 +0x5821 0x837d +0x5822 0x837f +0x5823 0x8380 +0x5824 0x8382 +0x5825 0x8384 +0x5826 0x8386 +0x5827 0x838d +0x5828 0x8392 +0x5829 0x8394 +0x582a 0x8395 +0x582b 0x8398 +0x582c 0x8399 +0x582d 0x839b +0x582e 0x839c +0x582f 0x839d +0x5830 0x83a6 +0x5831 0x83a7 +0x5832 0x83a9 +0x5833 0x83ac +0x5834 0x83be +0x5835 0x83bf +0x5836 0x83c0 +0x5837 0x83c7 +0x5838 0x83c9 +0x5839 0x83cf +0x583a 0x83d0 +0x583b 0x83d1 +0x583c 0x83d4 +0x583d 0x83dd +0x583e 0x8353 +0x583f 0x83e8 +0x5840 0x83ea +0x5841 0x83f6 +0x5842 0x83f8 +0x5843 0x83f9 +0x5844 0x83fc +0x5845 0x8401 +0x5846 0x8406 +0x5847 0x840a +0x5848 0x840f +0x5849 0x8411 +0x584a 0x8415 +0x584b 0x8419 +0x584c 0x83ad +0x584d 0x842f +0x584e 0x8439 +0x584f 0x8445 +0x5850 0x8447 +0x5851 0x8448 +0x5852 0x844a +0x5853 0x844d +0x5854 0x844f +0x5855 0x8451 +0x5856 0x8452 +0x5857 0x8456 +0x5858 0x8458 +0x5859 0x8459 +0x585a 0x845a +0x585b 0x845c +0x585c 0x8460 +0x585d 0x8464 +0x585e 0x8465 +0x585f 0x8467 +0x5860 0x846a +0x5861 0x8470 +0x5862 0x8473 +0x5863 0x8474 +0x5864 0x8476 +0x5865 0x8478 +0x5866 0x847c +0x5867 0x847d +0x5868 0x8481 +0x5869 0x8485 +0x586a 0x8492 +0x586b 0x8493 +0x586c 0x8495 +0x586d 0x849e +0x586e 0x84a6 +0x586f 0x84a8 +0x5870 0x84a9 +0x5871 0x84aa +0x5872 0x84af +0x5873 0x84b1 +0x5874 0x84b4 +0x5875 0x84ba +0x5876 0x84bd +0x5877 0x84be +0x5878 0x84c0 +0x5879 0x84c2 +0x587a 0x84c7 +0x587b 0x84c8 +0x587c 0x84cc +0x587d 0x84cf +0x587e 0x84d3 +0x5921 0x84dc +0x5922 0x84e7 +0x5923 0x84ea +0x5924 0x84ef +0x5925 0x84f0 +0x5926 0x84f1 +0x5927 0x84f2 +0x5928 0x84f7 +0x5929 0x8532 +0x592a 0x84fa +0x592b 0x84fb +0x592c 0x84fd +0x592d 0x8502 +0x592e 0x8503 +0x592f 0x8507 +0x5930 0x850c +0x5931 0x850e +0x5932 0x8510 +0x5933 0x851c +0x5934 0x851e +0x5935 0x8522 +0x5936 0x8523 +0x5937 0x8524 +0x5938 0x8525 +0x5939 0x8527 +0x593a 0x852a +0x593b 0x852b +0x593c 0x852f +0x593d 0x8533 +0x593e 0x8534 +0x593f 0x8536 +0x5940 0x853f +0x5941 0x8546 +0x5942 0x854f +0x5943 0x8550 +0x5944 0x8551 +0x5945 0x8552 +0x5946 0x8553 +0x5947 0x8556 +0x5948 0x8559 +0x5949 0x855c +0x594a 0x855d +0x594b 0x855e +0x594c 0x855f +0x594d 0x8560 +0x594e 0x8561 +0x594f 0x8562 +0x5950 0x8564 +0x5951 0x856b +0x5952 0x856f +0x5953 0x8579 +0x5954 0x857a +0x5955 0x857b +0x5956 0x857d +0x5957 0x857f +0x5958 0x8581 +0x5959 0x8585 +0x595a 0x8586 +0x595b 0x8589 +0x595c 0x858b +0x595d 0x858c +0x595e 0x858f +0x595f 0x8593 +0x5960 0x8598 +0x5961 0x859d +0x5962 0x859f +0x5963 0x85a0 +0x5964 0x85a2 +0x5965 0x85a5 +0x5966 0x85a7 +0x5967 0x85b4 +0x5968 0x85b6 +0x5969 0x85b7 +0x596a 0x85b8 +0x596b 0x85bc +0x596c 0x85bd +0x596d 0x85be +0x596e 0x85bf +0x596f 0x85c2 +0x5970 0x85c7 +0x5971 0x85ca +0x5972 0x85cb +0x5973 0x85ce +0x5974 0x85ad +0x5975 0x85d8 +0x5976 0x85da +0x5977 0x85df +0x5978 0x85e0 +0x5979 0x85e6 +0x597a 0x85e8 +0x597b 0x85ed +0x597c 0x85f3 +0x597d 0x85f6 +0x597e 0x85fc +0x5a21 0x85ff +0x5a22 0x8600 +0x5a23 0x8604 +0x5a24 0x8605 +0x5a25 0x860d +0x5a26 0x860e +0x5a27 0x8610 +0x5a28 0x8611 +0x5a29 0x8612 +0x5a2a 0x8618 +0x5a2b 0x8619 +0x5a2c 0x861b +0x5a2d 0x861e +0x5a2e 0x8621 +0x5a2f 0x8627 +0x5a30 0x8629 +0x5a31 0x8636 +0x5a32 0x8638 +0x5a33 0x863a +0x5a34 0x863c +0x5a35 0x863d +0x5a36 0x8640 +0x5a37 0x8642 +0x5a38 0x8646 +0x5a39 0x8652 +0x5a3a 0x8653 +0x5a3b 0x8656 +0x5a3c 0x8657 +0x5a3d 0x8658 +0x5a3e 0x8659 +0x5a3f 0x865d +0x5a40 0x8660 +0x5a41 0x8661 +0x5a42 0x8662 +0x5a43 0x8663 +0x5a44 0x8664 +0x5a45 0x8669 +0x5a46 0x866c +0x5a47 0x866f +0x5a48 0x8675 +0x5a49 0x8676 +0x5a4a 0x8677 +0x5a4b 0x867a +0x5a4c 0x868d +0x5a4d 0x8691 +0x5a4e 0x8696 +0x5a4f 0x8698 +0x5a50 0x869a +0x5a51 0x869c +0x5a52 0x86a1 +0x5a53 0x86a6 +0x5a54 0x86a7 +0x5a55 0x86a8 +0x5a56 0x86ad +0x5a57 0x86b1 +0x5a58 0x86b3 +0x5a59 0x86b4 +0x5a5a 0x86b5 +0x5a5b 0x86b7 +0x5a5c 0x86b8 +0x5a5d 0x86b9 +0x5a5e 0x86bf +0x5a5f 0x86c0 +0x5a60 0x86c1 +0x5a61 0x86c3 +0x5a62 0x86c5 +0x5a63 0x86d1 +0x5a64 0x86d2 +0x5a65 0x86d5 +0x5a66 0x86d7 +0x5a67 0x86da +0x5a68 0x86dc +0x5a69 0x86e0 +0x5a6a 0x86e3 +0x5a6b 0x86e5 +0x5a6c 0x86e7 +0x5a6d 0x8688 +0x5a6e 0x86fa +0x5a6f 0x86fc +0x5a70 0x86fd +0x5a71 0x8704 +0x5a72 0x8705 +0x5a73 0x8707 +0x5a74 0x870b +0x5a75 0x870e +0x5a76 0x870f +0x5a77 0x8710 +0x5a78 0x8713 +0x5a79 0x8714 +0x5a7a 0x8719 +0x5a7b 0x871e +0x5a7c 0x871f +0x5a7d 0x8721 +0x5a7e 0x8723 +0x5b21 0x8728 +0x5b22 0x872e +0x5b23 0x872f +0x5b24 0x8731 +0x5b25 0x8732 +0x5b26 0x8739 +0x5b27 0x873a +0x5b28 0x873c +0x5b29 0x873d +0x5b2a 0x873e +0x5b2b 0x8740 +0x5b2c 0x8743 +0x5b2d 0x8745 +0x5b2e 0x874d +0x5b2f 0x8758 +0x5b30 0x875d +0x5b31 0x8761 +0x5b32 0x8764 +0x5b33 0x8765 +0x5b34 0x876f +0x5b35 0x8771 +0x5b36 0x8772 +0x5b37 0x877b +0x5b38 0x8783 +0x5b39 0x8784 +0x5b3a 0x8785 +0x5b3b 0x8786 +0x5b3c 0x8787 +0x5b3d 0x8788 +0x5b3e 0x8789 +0x5b3f 0x878b +0x5b40 0x878c +0x5b41 0x8790 +0x5b42 0x8793 +0x5b43 0x8795 +0x5b44 0x8797 +0x5b45 0x8798 +0x5b46 0x8799 +0x5b47 0x879e +0x5b48 0x87a0 +0x5b49 0x87a3 +0x5b4a 0x87a7 +0x5b4b 0x87ac +0x5b4c 0x87ad +0x5b4d 0x87ae +0x5b4e 0x87b1 +0x5b4f 0x87b5 +0x5b50 0x87be +0x5b51 0x87bf +0x5b52 0x87c1 +0x5b53 0x87c8 +0x5b54 0x87c9 +0x5b55 0x87ca +0x5b56 0x87ce +0x5b57 0x87d5 +0x5b58 0x87d6 +0x5b59 0x87d9 +0x5b5a 0x87da +0x5b5b 0x87dc +0x5b5c 0x87df +0x5b5d 0x87e2 +0x5b5e 0x87e3 +0x5b5f 0x87e4 +0x5b60 0x87ea +0x5b61 0x87eb +0x5b62 0x87ed +0x5b63 0x87f1 +0x5b64 0x87f3 +0x5b65 0x87f8 +0x5b66 0x87fa +0x5b67 0x87ff +0x5b68 0x8801 +0x5b69 0x8803 +0x5b6a 0x8806 +0x5b6b 0x8809 +0x5b6c 0x880a +0x5b6d 0x880b +0x5b6e 0x8810 +0x5b6f 0x8819 +0x5b70 0x8812 +0x5b71 0x8813 +0x5b72 0x8814 +0x5b73 0x8818 +0x5b74 0x881a +0x5b75 0x881b +0x5b76 0x881c +0x5b77 0x881e +0x5b78 0x881f +0x5b79 0x8828 +0x5b7a 0x882d +0x5b7b 0x882e +0x5b7c 0x8830 +0x5b7d 0x8832 +0x5b7e 0x8835 +0x5c21 0x883a +0x5c22 0x883c +0x5c23 0x8841 +0x5c24 0x8843 +0x5c25 0x8845 +0x5c26 0x8848 +0x5c27 0x8849 +0x5c28 0x884a +0x5c29 0x884b +0x5c2a 0x884e +0x5c2b 0x8851 +0x5c2c 0x8855 +0x5c2d 0x8856 +0x5c2e 0x8858 +0x5c2f 0x885a +0x5c30 0x885c +0x5c31 0x885f +0x5c32 0x8860 +0x5c33 0x8864 +0x5c34 0x8869 +0x5c35 0x8871 +0x5c36 0x8879 +0x5c37 0x887b +0x5c38 0x8880 +0x5c39 0x8898 +0x5c3a 0x889a +0x5c3b 0x889b +0x5c3c 0x889c +0x5c3d 0x889f +0x5c3e 0x88a0 +0x5c3f 0x88a8 +0x5c40 0x88aa +0x5c41 0x88ba +0x5c42 0x88bd +0x5c43 0x88be +0x5c44 0x88c0 +0x5c45 0x88ca +0x5c46 0x88cb +0x5c47 0x88cc +0x5c48 0x88cd +0x5c49 0x88ce +0x5c4a 0x88d1 +0x5c4b 0x88d2 +0x5c4c 0x88d3 +0x5c4d 0x88db +0x5c4e 0x88de +0x5c4f 0x88e7 +0x5c50 0x88ef +0x5c51 0x88f0 +0x5c52 0x88f1 +0x5c53 0x88f5 +0x5c54 0x88f7 +0x5c55 0x8901 +0x5c56 0x8906 +0x5c57 0x890d +0x5c58 0x890e +0x5c59 0x890f +0x5c5a 0x8915 +0x5c5b 0x8916 +0x5c5c 0x8918 +0x5c5d 0x8919 +0x5c5e 0x891a +0x5c5f 0x891c +0x5c60 0x8920 +0x5c61 0x8926 +0x5c62 0x8927 +0x5c63 0x8928 +0x5c64 0x8930 +0x5c65 0x8931 +0x5c66 0x8932 +0x5c67 0x8935 +0x5c68 0x8939 +0x5c69 0x893a +0x5c6a 0x893e +0x5c6b 0x8940 +0x5c6c 0x8942 +0x5c6d 0x8945 +0x5c6e 0x8946 +0x5c6f 0x8949 +0x5c70 0x894f +0x5c71 0x8952 +0x5c72 0x8957 +0x5c73 0x895a +0x5c74 0x895b +0x5c75 0x895c +0x5c76 0x8961 +0x5c77 0x8962 +0x5c78 0x8963 +0x5c79 0x896b +0x5c7a 0x896e +0x5c7b 0x8970 +0x5c7c 0x8973 +0x5c7d 0x8975 +0x5c7e 0x897a +0x5d21 0x897b +0x5d22 0x897c +0x5d23 0x897d +0x5d24 0x8989 +0x5d25 0x898d +0x5d26 0x8990 +0x5d27 0x8994 +0x5d28 0x8995 +0x5d29 0x899b +0x5d2a 0x899c +0x5d2b 0x899f +0x5d2c 0x89a0 +0x5d2d 0x89a5 +0x5d2e 0x89b0 +0x5d2f 0x89b4 +0x5d30 0x89b5 +0x5d31 0x89b6 +0x5d32 0x89b7 +0x5d33 0x89bc +0x5d34 0x89d4 +0x5d35 0x89d5 +0x5d36 0x89d6 +0x5d37 0x89d7 +0x5d38 0x89d8 +0x5d39 0x89e5 +0x5d3a 0x89e9 +0x5d3b 0x89eb +0x5d3c 0x89ed +0x5d3d 0x89f1 +0x5d3e 0x89f3 +0x5d3f 0x89f6 +0x5d40 0x89f9 +0x5d41 0x89fd +0x5d42 0x89ff +0x5d43 0x8a04 +0x5d44 0x8a05 +0x5d45 0x8a07 +0x5d46 0x8a0f +0x5d47 0x8a11 +0x5d48 0x8a12 +0x5d49 0x8a14 +0x5d4a 0x8a15 +0x5d4b 0x8a1e +0x5d4c 0x8a20 +0x5d4d 0x8a22 +0x5d4e 0x8a24 +0x5d4f 0x8a26 +0x5d50 0x8a2b +0x5d51 0x8a2c +0x5d52 0x8a2f +0x5d53 0x8a35 +0x5d54 0x8a37 +0x5d55 0x8a3d +0x5d56 0x8a3e +0x5d57 0x8a40 +0x5d58 0x8a43 +0x5d59 0x8a45 +0x5d5a 0x8a47 +0x5d5b 0x8a49 +0x5d5c 0x8a4d +0x5d5d 0x8a4e +0x5d5e 0x8a53 +0x5d5f 0x8a56 +0x5d60 0x8a57 +0x5d61 0x8a58 +0x5d62 0x8a5c +0x5d63 0x8a5d +0x5d64 0x8a61 +0x5d65 0x8a65 +0x5d66 0x8a67 +0x5d67 0x8a75 +0x5d68 0x8a76 +0x5d69 0x8a77 +0x5d6a 0x8a79 +0x5d6b 0x8a7a +0x5d6c 0x8a7b +0x5d6d 0x8a7e +0x5d6e 0x8a7f +0x5d6f 0x8a80 +0x5d70 0x8a83 +0x5d71 0x8a86 +0x5d72 0x8a8b +0x5d73 0x8a8f +0x5d74 0x8a90 +0x5d75 0x8a92 +0x5d76 0x8a96 +0x5d77 0x8a97 +0x5d78 0x8a99 +0x5d79 0x8a9f +0x5d7a 0x8aa7 +0x5d7b 0x8aa9 +0x5d7c 0x8aae +0x5d7d 0x8aaf +0x5d7e 0x8ab3 +0x5e21 0x8ab6 +0x5e22 0x8ab7 +0x5e23 0x8abb +0x5e24 0x8abe +0x5e25 0x8ac3 +0x5e26 0x8ac6 +0x5e27 0x8ac8 +0x5e28 0x8ac9 +0x5e29 0x8aca +0x5e2a 0x8ad1 +0x5e2b 0x8ad3 +0x5e2c 0x8ad4 +0x5e2d 0x8ad5 +0x5e2e 0x8ad7 +0x5e2f 0x8add +0x5e30 0x8adf +0x5e31 0x8aec +0x5e32 0x8af0 +0x5e33 0x8af4 +0x5e34 0x8af5 +0x5e35 0x8af6 +0x5e36 0x8afc +0x5e37 0x8aff +0x5e38 0x8b05 +0x5e39 0x8b06 +0x5e3a 0x8b0b +0x5e3b 0x8b11 +0x5e3c 0x8b1c +0x5e3d 0x8b1e +0x5e3e 0x8b1f +0x5e3f 0x8b0a +0x5e40 0x8b2d +0x5e41 0x8b30 +0x5e42 0x8b37 +0x5e43 0x8b3c +0x5e44 0x8b42 +0x5e45 0x8b43 +0x5e46 0x8b44 +0x5e47 0x8b45 +0x5e48 0x8b46 +0x5e49 0x8b48 +0x5e4a 0x8b52 +0x5e4b 0x8b53 +0x5e4c 0x8b54 +0x5e4d 0x8b59 +0x5e4e 0x8b4d +0x5e4f 0x8b5e +0x5e50 0x8b63 +0x5e51 0x8b6d +0x5e52 0x8b76 +0x5e53 0x8b78 +0x5e54 0x8b79 +0x5e55 0x8b7c +0x5e56 0x8b7e +0x5e57 0x8b81 +0x5e58 0x8b84 +0x5e59 0x8b85 +0x5e5a 0x8b8b +0x5e5b 0x8b8d +0x5e5c 0x8b8f +0x5e5d 0x8b94 +0x5e5e 0x8b95 +0x5e5f 0x8b9c +0x5e60 0x8b9e +0x5e61 0x8b9f +0x5e62 0x8c38 +0x5e63 0x8c39 +0x5e64 0x8c3d +0x5e65 0x8c3e +0x5e66 0x8c45 +0x5e67 0x8c47 +0x5e68 0x8c49 +0x5e69 0x8c4b +0x5e6a 0x8c4f +0x5e6b 0x8c51 +0x5e6c 0x8c53 +0x5e6d 0x8c54 +0x5e6e 0x8c57 +0x5e6f 0x8c58 +0x5e70 0x8c5b +0x5e71 0x8c5d +0x5e72 0x8c59 +0x5e73 0x8c63 +0x5e74 0x8c64 +0x5e75 0x8c66 +0x5e76 0x8c68 +0x5e77 0x8c69 +0x5e78 0x8c6d +0x5e79 0x8c73 +0x5e7a 0x8c75 +0x5e7b 0x8c76 +0x5e7c 0x8c7b +0x5e7d 0x8c7e +0x5e7e 0x8c86 +0x5f21 0x8c87 +0x5f22 0x8c8b +0x5f23 0x8c90 +0x5f24 0x8c92 +0x5f25 0x8c93 +0x5f26 0x8c99 +0x5f27 0x8c9b +0x5f28 0x8c9c +0x5f29 0x8ca4 +0x5f2a 0x8cb9 +0x5f2b 0x8cba +0x5f2c 0x8cc5 +0x5f2d 0x8cc6 +0x5f2e 0x8cc9 +0x5f2f 0x8ccb +0x5f30 0x8ccf +0x5f31 0x8cd6 +0x5f32 0x8cd5 +0x5f33 0x8cd9 +0x5f34 0x8cdd +0x5f35 0x8ce1 +0x5f36 0x8ce8 +0x5f37 0x8cec +0x5f38 0x8cef +0x5f39 0x8cf0 +0x5f3a 0x8cf2 +0x5f3b 0x8cf5 +0x5f3c 0x8cf7 +0x5f3d 0x8cf8 +0x5f3e 0x8cfe +0x5f3f 0x8cff +0x5f40 0x8d01 +0x5f41 0x8d03 +0x5f42 0x8d09 +0x5f43 0x8d12 +0x5f44 0x8d17 +0x5f45 0x8d1b +0x5f46 0x8d65 +0x5f47 0x8d69 +0x5f48 0x8d6c +0x5f49 0x8d6e +0x5f4a 0x8d7f +0x5f4b 0x8d82 +0x5f4c 0x8d84 +0x5f4d 0x8d88 +0x5f4e 0x8d8d +0x5f4f 0x8d90 +0x5f50 0x8d91 +0x5f51 0x8d95 +0x5f52 0x8d9e +0x5f53 0x8d9f +0x5f54 0x8da0 +0x5f55 0x8da6 +0x5f56 0x8dab +0x5f57 0x8dac +0x5f58 0x8daf +0x5f59 0x8db2 +0x5f5a 0x8db5 +0x5f5b 0x8db7 +0x5f5c 0x8db9 +0x5f5d 0x8dbb +0x5f5e 0x8dc0 +0x5f5f 0x8dc5 +0x5f60 0x8dc6 +0x5f61 0x8dc7 +0x5f62 0x8dc8 +0x5f63 0x8dca +0x5f64 0x8dce +0x5f65 0x8dd1 +0x5f66 0x8dd4 +0x5f67 0x8dd5 +0x5f68 0x8dd7 +0x5f69 0x8dd9 +0x5f6a 0x8de4 +0x5f6b 0x8de5 +0x5f6c 0x8de7 +0x5f6d 0x8dec +0x5f6e 0x8df0 +0x5f6f 0x8dbc +0x5f70 0x8df1 +0x5f71 0x8df2 +0x5f72 0x8df4 +0x5f73 0x8dfd +0x5f74 0x8e01 +0x5f75 0x8e04 +0x5f76 0x8e05 +0x5f77 0x8e06 +0x5f78 0x8e0b +0x5f79 0x8e11 +0x5f7a 0x8e14 +0x5f7b 0x8e16 +0x5f7c 0x8e20 +0x5f7d 0x8e21 +0x5f7e 0x8e22 +0x6021 0x8e23 +0x6022 0x8e26 +0x6023 0x8e27 +0x6024 0x8e31 +0x6025 0x8e33 +0x6026 0x8e36 +0x6027 0x8e37 +0x6028 0x8e38 +0x6029 0x8e39 +0x602a 0x8e3d +0x602b 0x8e40 +0x602c 0x8e41 +0x602d 0x8e4b +0x602e 0x8e4d +0x602f 0x8e4e +0x6030 0x8e4f +0x6031 0x8e54 +0x6032 0x8e5b +0x6033 0x8e5c +0x6034 0x8e5d +0x6035 0x8e5e +0x6036 0x8e61 +0x6037 0x8e62 +0x6038 0x8e69 +0x6039 0x8e6c +0x603a 0x8e6d +0x603b 0x8e6f +0x603c 0x8e70 +0x603d 0x8e71 +0x603e 0x8e79 +0x603f 0x8e7a +0x6040 0x8e7b +0x6041 0x8e82 +0x6042 0x8e83 +0x6043 0x8e89 +0x6044 0x8e90 +0x6045 0x8e92 +0x6046 0x8e95 +0x6047 0x8e9a +0x6048 0x8e9b +0x6049 0x8e9d +0x604a 0x8e9e +0x604b 0x8ea2 +0x604c 0x8ea7 +0x604d 0x8ea9 +0x604e 0x8ead +0x604f 0x8eae +0x6050 0x8eb3 +0x6051 0x8eb5 +0x6052 0x8eba +0x6053 0x8ebb +0x6054 0x8ec0 +0x6055 0x8ec1 +0x6056 0x8ec3 +0x6057 0x8ec4 +0x6058 0x8ec7 +0x6059 0x8ecf +0x605a 0x8ed1 +0x605b 0x8ed4 +0x605c 0x8edc +0x605d 0x8ee8 +0x605e 0x8eee +0x605f 0x8ef0 +0x6060 0x8ef1 +0x6061 0x8ef7 +0x6062 0x8ef9 +0x6063 0x8efa +0x6064 0x8eed +0x6065 0x8f00 +0x6066 0x8f02 +0x6067 0x8f07 +0x6068 0x8f08 +0x6069 0x8f0f +0x606a 0x8f10 +0x606b 0x8f16 +0x606c 0x8f17 +0x606d 0x8f18 +0x606e 0x8f1e +0x606f 0x8f20 +0x6070 0x8f21 +0x6071 0x8f23 +0x6072 0x8f25 +0x6073 0x8f27 +0x6074 0x8f28 +0x6075 0x8f2c +0x6076 0x8f2d +0x6077 0x8f2e +0x6078 0x8f34 +0x6079 0x8f35 +0x607a 0x8f36 +0x607b 0x8f37 +0x607c 0x8f3a +0x607d 0x8f40 +0x607e 0x8f41 +0x6121 0x8f43 +0x6122 0x8f47 +0x6123 0x8f4f +0x6124 0x8f51 +0x6125 0x8f52 +0x6126 0x8f53 +0x6127 0x8f54 +0x6128 0x8f55 +0x6129 0x8f58 +0x612a 0x8f5d +0x612b 0x8f5e +0x612c 0x8f65 +0x612d 0x8f9d +0x612e 0x8fa0 +0x612f 0x8fa1 +0x6130 0x8fa4 +0x6131 0x8fa5 +0x6132 0x8fa6 +0x6133 0x8fb5 +0x6134 0x8fb6 +0x6135 0x8fb8 +0x6136 0x8fbe +0x6137 0x8fc0 +0x6138 0x8fc1 +0x6139 0x8fc6 +0x613a 0x8fca +0x613b 0x8fcb +0x613c 0x8fcd +0x613d 0x8fd0 +0x613e 0x8fd2 +0x613f 0x8fd3 +0x6140 0x8fd5 +0x6141 0x8fe0 +0x6142 0x8fe3 +0x6143 0x8fe4 +0x6144 0x8fe8 +0x6145 0x8fee +0x6146 0x8ff1 +0x6147 0x8ff5 +0x6148 0x8ff6 +0x6149 0x8ffb +0x614a 0x8ffe +0x614b 0x9002 +0x614c 0x9004 +0x614d 0x9008 +0x614e 0x900c +0x614f 0x9018 +0x6150 0x901b +0x6151 0x9028 +0x6152 0x9029 +0x6153 0x902f +0x6154 0x902a +0x6155 0x902c +0x6156 0x902d +0x6157 0x9033 +0x6158 0x9034 +0x6159 0x9037 +0x615a 0x903f +0x615b 0x9043 +0x615c 0x9044 +0x615d 0x904c +0x615e 0x905b +0x615f 0x905d +0x6160 0x9062 +0x6161 0x9066 +0x6162 0x9067 +0x6163 0x906c +0x6164 0x9070 +0x6165 0x9074 +0x6166 0x9079 +0x6167 0x9085 +0x6168 0x9088 +0x6169 0x908b +0x616a 0x908c +0x616b 0x908e +0x616c 0x9090 +0x616d 0x9095 +0x616e 0x9097 +0x616f 0x9098 +0x6170 0x9099 +0x6171 0x909b +0x6172 0x90a0 +0x6173 0x90a1 +0x6174 0x90a2 +0x6175 0x90a5 +0x6176 0x90b0 +0x6177 0x90b2 +0x6178 0x90b3 +0x6179 0x90b4 +0x617a 0x90b6 +0x617b 0x90bd +0x617c 0x90cc +0x617d 0x90be +0x617e 0x90c3 +0x6221 0x90c4 +0x6222 0x90c5 +0x6223 0x90c7 +0x6224 0x90c8 +0x6225 0x90d5 +0x6226 0x90d7 +0x6227 0x90d8 +0x6228 0x90d9 +0x6229 0x90dc +0x622a 0x90dd +0x622b 0x90df +0x622c 0x90e5 +0x622d 0x90d2 +0x622e 0x90f6 +0x622f 0x90eb +0x6230 0x90ef +0x6231 0x90f0 +0x6232 0x90f4 +0x6233 0x90fe +0x6234 0x90ff +0x6235 0x9100 +0x6236 0x9104 +0x6237 0x9105 +0x6238 0x9106 +0x6239 0x9108 +0x623a 0x910d +0x623b 0x9110 +0x623c 0x9114 +0x623d 0x9116 +0x623e 0x9117 +0x623f 0x9118 +0x6240 0x911a +0x6241 0x911c +0x6242 0x911e +0x6243 0x9120 +0x6244 0x9125 +0x6245 0x9122 +0x6246 0x9123 +0x6247 0x9127 +0x6248 0x9129 +0x6249 0x912e +0x624a 0x912f +0x624b 0x9131 +0x624c 0x9134 +0x624d 0x9136 +0x624e 0x9137 +0x624f 0x9139 +0x6250 0x913a +0x6251 0x913c +0x6252 0x913d +0x6253 0x9143 +0x6254 0x9147 +0x6255 0x9148 +0x6256 0x914f +0x6257 0x9153 +0x6258 0x9157 +0x6259 0x9159 +0x625a 0x915a +0x625b 0x915b +0x625c 0x9161 +0x625d 0x9164 +0x625e 0x9167 +0x625f 0x916d +0x6260 0x9174 +0x6261 0x9179 +0x6262 0x917a +0x6263 0x917b +0x6264 0x9181 +0x6265 0x9183 +0x6266 0x9185 +0x6267 0x9186 +0x6268 0x918a +0x6269 0x918e +0x626a 0x9191 +0x626b 0x9193 +0x626c 0x9194 +0x626d 0x9195 +0x626e 0x9198 +0x626f 0x919e +0x6270 0x91a1 +0x6271 0x91a6 +0x6272 0x91a8 +0x6273 0x91ac +0x6274 0x91ad +0x6275 0x91ae +0x6276 0x91b0 +0x6277 0x91b1 +0x6278 0x91b2 +0x6279 0x91b3 +0x627a 0x91b6 +0x627b 0x91bb +0x627c 0x91bc +0x627d 0x91bd +0x627e 0x91bf +0x6321 0x91c2 +0x6322 0x91c3 +0x6323 0x91c5 +0x6324 0x91d3 +0x6325 0x91d4 +0x6326 0x91d7 +0x6327 0x91d9 +0x6328 0x91da +0x6329 0x91de +0x632a 0x91e4 +0x632b 0x91e5 +0x632c 0x91e9 +0x632d 0x91ea +0x632e 0x91ec +0x632f 0x91ed +0x6330 0x91ee +0x6331 0x91ef +0x6332 0x91f0 +0x6333 0x91f1 +0x6334 0x91f7 +0x6335 0x91f9 +0x6336 0x91fb +0x6337 0x91fd +0x6338 0x9200 +0x6339 0x9201 +0x633a 0x9204 +0x633b 0x9205 +0x633c 0x9206 +0x633d 0x9207 +0x633e 0x9209 +0x633f 0x920a +0x6340 0x920c +0x6341 0x9210 +0x6342 0x9212 +0x6343 0x9213 +0x6344 0x9216 +0x6345 0x9218 +0x6346 0x921c +0x6347 0x921d +0x6348 0x9223 +0x6349 0x9224 +0x634a 0x9225 +0x634b 0x9226 +0x634c 0x9228 +0x634d 0x922e +0x634e 0x922f +0x634f 0x9230 +0x6350 0x9233 +0x6351 0x9235 +0x6352 0x9236 +0x6353 0x9238 +0x6354 0x9239 +0x6355 0x923a +0x6356 0x923c +0x6357 0x923e +0x6358 0x9240 +0x6359 0x9242 +0x635a 0x9243 +0x635b 0x9246 +0x635c 0x9247 +0x635d 0x924a +0x635e 0x924d +0x635f 0x924e +0x6360 0x924f +0x6361 0x9251 +0x6362 0x9258 +0x6363 0x9259 +0x6364 0x925c +0x6365 0x925d +0x6366 0x9260 +0x6367 0x9261 +0x6368 0x9265 +0x6369 0x9267 +0x636a 0x9268 +0x636b 0x9269 +0x636c 0x926e +0x636d 0x926f +0x636e 0x9270 +0x636f 0x9275 +0x6370 0x9276 +0x6371 0x9277 +0x6372 0x9278 +0x6373 0x9279 +0x6374 0x927b +0x6375 0x927c +0x6376 0x927d +0x6377 0x927f +0x6378 0x9288 +0x6379 0x9289 +0x637a 0x928a +0x637b 0x928d +0x637c 0x928e +0x637d 0x9292 +0x637e 0x9297 +0x6421 0x9299 +0x6422 0x929f +0x6423 0x92a0 +0x6424 0x92a4 +0x6425 0x92a5 +0x6426 0x92a7 +0x6427 0x92a8 +0x6428 0x92ab +0x6429 0x92af +0x642a 0x92b2 +0x642b 0x92b6 +0x642c 0x92b8 +0x642d 0x92ba +0x642e 0x92bb +0x642f 0x92bc +0x6430 0x92bd +0x6431 0x92bf +0x6432 0x92c0 +0x6433 0x92c1 +0x6434 0x92c2 +0x6435 0x92c3 +0x6436 0x92c5 +0x6437 0x92c6 +0x6438 0x92c7 +0x6439 0x92c8 +0x643a 0x92cb +0x643b 0x92cc +0x643c 0x92cd +0x643d 0x92ce +0x643e 0x92d0 +0x643f 0x92d3 +0x6440 0x92d5 +0x6441 0x92d7 +0x6442 0x92d8 +0x6443 0x92d9 +0x6444 0x92dc +0x6445 0x92dd +0x6446 0x92df +0x6447 0x92e0 +0x6448 0x92e1 +0x6449 0x92e3 +0x644a 0x92e5 +0x644b 0x92e7 +0x644c 0x92e8 +0x644d 0x92ec +0x644e 0x92ee +0x644f 0x92f0 +0x6450 0x92f9 +0x6451 0x92fb +0x6452 0x92ff +0x6453 0x9300 +0x6454 0x9302 +0x6455 0x9308 +0x6456 0x930d +0x6457 0x9311 +0x6458 0x9314 +0x6459 0x9315 +0x645a 0x931c +0x645b 0x931d +0x645c 0x931e +0x645d 0x931f +0x645e 0x9321 +0x645f 0x9324 +0x6460 0x9325 +0x6461 0x9327 +0x6462 0x9329 +0x6463 0x932a +0x6464 0x9333 +0x6465 0x9334 +0x6466 0x9336 +0x6467 0x9337 +0x6468 0x9347 +0x6469 0x9348 +0x646a 0x9349 +0x646b 0x9350 +0x646c 0x9351 +0x646d 0x9352 +0x646e 0x9355 +0x646f 0x9357 +0x6470 0x9358 +0x6471 0x935a +0x6472 0x935e +0x6473 0x9364 +0x6474 0x9365 +0x6475 0x9367 +0x6476 0x9369 +0x6477 0x936a +0x6478 0x936d +0x6479 0x936f +0x647a 0x9370 +0x647b 0x9371 +0x647c 0x9373 +0x647d 0x9374 +0x647e 0x9376 +0x6521 0x937a +0x6522 0x937d +0x6523 0x937f +0x6524 0x9380 +0x6525 0x9381 +0x6526 0x9382 +0x6527 0x9388 +0x6528 0x938a +0x6529 0x938b +0x652a 0x938d +0x652b 0x938f +0x652c 0x9392 +0x652d 0x9395 +0x652e 0x9398 +0x652f 0x939b +0x6530 0x939e +0x6531 0x93a1 +0x6532 0x93a3 +0x6533 0x93a4 +0x6534 0x93a6 +0x6535 0x93a8 +0x6536 0x93ab +0x6537 0x93b4 +0x6538 0x93b5 +0x6539 0x93b6 +0x653a 0x93ba +0x653b 0x93a9 +0x653c 0x93c1 +0x653d 0x93c4 +0x653e 0x93c5 +0x653f 0x93c6 +0x6540 0x93c7 +0x6541 0x93c9 +0x6542 0x93ca +0x6543 0x93cb +0x6544 0x93cc +0x6545 0x93cd +0x6546 0x93d3 +0x6547 0x93d9 +0x6548 0x93dc +0x6549 0x93de +0x654a 0x93df +0x654b 0x93e2 +0x654c 0x93e6 +0x654d 0x93e7 +0x654e 0x93f9 +0x654f 0x93f7 +0x6550 0x93f8 +0x6551 0x93fa +0x6552 0x93fb +0x6553 0x93fd +0x6554 0x9401 +0x6555 0x9402 +0x6556 0x9404 +0x6557 0x9408 +0x6558 0x9409 +0x6559 0x940d +0x655a 0x940e +0x655b 0x940f +0x655c 0x9415 +0x655d 0x9416 +0x655e 0x9417 +0x655f 0x941f +0x6560 0x942e +0x6561 0x942f +0x6562 0x9431 +0x6563 0x9432 +0x6564 0x9433 +0x6565 0x9434 +0x6566 0x943b +0x6567 0x943f +0x6568 0x943d +0x6569 0x9443 +0x656a 0x9445 +0x656b 0x9448 +0x656c 0x944a +0x656d 0x944c +0x656e 0x9455 +0x656f 0x9459 +0x6570 0x945c +0x6571 0x945f +0x6572 0x9461 +0x6573 0x9463 +0x6574 0x9468 +0x6575 0x946b +0x6576 0x946d +0x6577 0x946e +0x6578 0x946f +0x6579 0x9471 +0x657a 0x9472 +0x657b 0x9484 +0x657c 0x9483 +0x657d 0x9578 +0x657e 0x9579 +0x6621 0x957e +0x6622 0x9584 +0x6623 0x9588 +0x6624 0x958c +0x6625 0x958d +0x6626 0x958e +0x6627 0x959d +0x6628 0x959e +0x6629 0x959f +0x662a 0x95a1 +0x662b 0x95a6 +0x662c 0x95a9 +0x662d 0x95ab +0x662e 0x95ac +0x662f 0x95b4 +0x6630 0x95b6 +0x6631 0x95ba +0x6632 0x95bd +0x6633 0x95bf +0x6634 0x95c6 +0x6635 0x95c8 +0x6636 0x95c9 +0x6637 0x95cb +0x6638 0x95d0 +0x6639 0x95d1 +0x663a 0x95d2 +0x663b 0x95d3 +0x663c 0x95d9 +0x663d 0x95da +0x663e 0x95dd +0x663f 0x95de +0x6640 0x95df +0x6641 0x95e0 +0x6642 0x95e4 +0x6643 0x95e6 +0x6644 0x961d +0x6645 0x961e +0x6646 0x9622 +0x6647 0x9624 +0x6648 0x9625 +0x6649 0x9626 +0x664a 0x962c +0x664b 0x9631 +0x664c 0x9633 +0x664d 0x9637 +0x664e 0x9638 +0x664f 0x9639 +0x6650 0x963a +0x6651 0x963c +0x6652 0x963d +0x6653 0x9641 +0x6654 0x9652 +0x6655 0x9654 +0x6656 0x9656 +0x6657 0x9657 +0x6658 0x9658 +0x6659 0x9661 +0x665a 0x966e +0x665b 0x9674 +0x665c 0x967b +0x665d 0x967c +0x665e 0x967e +0x665f 0x967f +0x6660 0x9681 +0x6661 0x9682 +0x6662 0x9683 +0x6663 0x9684 +0x6664 0x9689 +0x6665 0x9691 +0x6666 0x9696 +0x6667 0x969a +0x6668 0x969d +0x6669 0x969f +0x666a 0x96a4 +0x666b 0x96a5 +0x666c 0x96a6 +0x666d 0x96a9 +0x666e 0x96ae +0x666f 0x96af +0x6670 0x96b3 +0x6671 0x96ba +0x6672 0x96ca +0x6673 0x96d2 +0x6674 0x5db2 +0x6675 0x96d8 +0x6676 0x96da +0x6677 0x96dd +0x6678 0x96de +0x6679 0x96df +0x667a 0x96e9 +0x667b 0x96ef +0x667c 0x96f1 +0x667d 0x96fa +0x667e 0x9702 +0x6721 0x9703 +0x6722 0x9705 +0x6723 0x9709 +0x6724 0x971a +0x6725 0x971b +0x6726 0x971d +0x6727 0x9721 +0x6728 0x9722 +0x6729 0x9723 +0x672a 0x9728 +0x672b 0x9731 +0x672c 0x9733 +0x672d 0x9741 +0x672e 0x9743 +0x672f 0x974a +0x6730 0x974e +0x6731 0x974f +0x6732 0x9755 +0x6733 0x9757 +0x6734 0x9758 +0x6735 0x975a +0x6736 0x975b +0x6737 0x9763 +0x6738 0x9767 +0x6739 0x976a +0x673a 0x976e +0x673b 0x9773 +0x673c 0x9776 +0x673d 0x9777 +0x673e 0x9778 +0x673f 0x977b +0x6740 0x977d +0x6741 0x977f +0x6742 0x9780 +0x6743 0x9789 +0x6744 0x9795 +0x6745 0x9796 +0x6746 0x9797 +0x6747 0x9799 +0x6748 0x979a +0x6749 0x979e +0x674a 0x979f +0x674b 0x97a2 +0x674c 0x97ac +0x674d 0x97ae +0x674e 0x97b1 +0x674f 0x97b2 +0x6750 0x97b5 +0x6751 0x97b6 +0x6752 0x97b8 +0x6753 0x97b9 +0x6754 0x97ba +0x6755 0x97bc +0x6756 0x97be +0x6757 0x97bf +0x6758 0x97c1 +0x6759 0x97c4 +0x675a 0x97c5 +0x675b 0x97c7 +0x675c 0x97c9 +0x675d 0x97ca +0x675e 0x97cc +0x675f 0x97cd +0x6760 0x97ce +0x6761 0x97d0 +0x6762 0x97d1 +0x6763 0x97d4 +0x6764 0x97d7 +0x6765 0x97d8 +0x6766 0x97d9 +0x6767 0x97dd +0x6768 0x97de +0x6769 0x97e0 +0x676a 0x97db +0x676b 0x97e1 +0x676c 0x97e4 +0x676d 0x97ef +0x676e 0x97f1 +0x676f 0x97f4 +0x6770 0x97f7 +0x6771 0x97f8 +0x6772 0x97fa +0x6773 0x9807 +0x6774 0x980a +0x6775 0x9819 +0x6776 0x980d +0x6777 0x980e +0x6778 0x9814 +0x6779 0x9816 +0x677a 0x981c +0x677b 0x981e +0x677c 0x9820 +0x677d 0x9823 +0x677e 0x9826 +0x6821 0x982b +0x6822 0x982e +0x6823 0x982f +0x6824 0x9830 +0x6825 0x9832 +0x6826 0x9833 +0x6827 0x9835 +0x6828 0x9825 +0x6829 0x983e +0x682a 0x9844 +0x682b 0x9847 +0x682c 0x984a +0x682d 0x9851 +0x682e 0x9852 +0x682f 0x9853 +0x6830 0x9856 +0x6831 0x9857 +0x6832 0x9859 +0x6833 0x985a +0x6834 0x9862 +0x6835 0x9863 +0x6836 0x9865 +0x6837 0x9866 +0x6838 0x986a +0x6839 0x986c +0x683a 0x98ab +0x683b 0x98ad +0x683c 0x98ae +0x683d 0x98b0 +0x683e 0x98b4 +0x683f 0x98b7 +0x6840 0x98b8 +0x6841 0x98ba +0x6842 0x98bb +0x6843 0x98bf +0x6844 0x98c2 +0x6845 0x98c5 +0x6846 0x98c8 +0x6847 0x98cc +0x6848 0x98e1 +0x6849 0x98e3 +0x684a 0x98e5 +0x684b 0x98e6 +0x684c 0x98e7 +0x684d 0x98ea +0x684e 0x98f3 +0x684f 0x98f6 +0x6850 0x9902 +0x6851 0x9907 +0x6852 0x9908 +0x6853 0x9911 +0x6854 0x9915 +0x6855 0x9916 +0x6856 0x9917 +0x6857 0x991a +0x6858 0x991b +0x6859 0x991c +0x685a 0x991f +0x685b 0x9922 +0x685c 0x9926 +0x685d 0x9927 +0x685e 0x992b +0x685f 0x9931 +0x6860 0x9932 +0x6861 0x9933 +0x6862 0x9934 +0x6863 0x9935 +0x6864 0x9939 +0x6865 0x993a +0x6866 0x993b +0x6867 0x993c +0x6868 0x9940 +0x6869 0x9941 +0x686a 0x9946 +0x686b 0x9947 +0x686c 0x9948 +0x686d 0x994d +0x686e 0x994e +0x686f 0x9954 +0x6870 0x9958 +0x6871 0x9959 +0x6872 0x995b +0x6873 0x995c +0x6874 0x995e +0x6875 0x995f +0x6876 0x9960 +0x6877 0x999b +0x6878 0x999d +0x6879 0x999f +0x687a 0x99a6 +0x687b 0x99b0 +0x687c 0x99b1 +0x687d 0x99b2 +0x687e 0x99b5 +0x6921 0x99b9 +0x6922 0x99ba +0x6923 0x99bd +0x6924 0x99bf +0x6925 0x99c3 +0x6926 0x99c9 +0x6927 0x99d3 +0x6928 0x99d4 +0x6929 0x99d9 +0x692a 0x99da +0x692b 0x99dc +0x692c 0x99de +0x692d 0x99e7 +0x692e 0x99ea +0x692f 0x99eb +0x6930 0x99ec +0x6931 0x99f0 +0x6932 0x99f4 +0x6933 0x99f5 +0x6934 0x99f9 +0x6935 0x99fd +0x6936 0x99fe +0x6937 0x9a02 +0x6938 0x9a03 +0x6939 0x9a04 +0x693a 0x9a0b +0x693b 0x9a0c +0x693c 0x9a10 +0x693d 0x9a11 +0x693e 0x9a16 +0x693f 0x9a1e +0x6940 0x9a20 +0x6941 0x9a22 +0x6942 0x9a23 +0x6943 0x9a24 +0x6944 0x9a27 +0x6945 0x9a2d +0x6946 0x9a2e +0x6947 0x9a33 +0x6948 0x9a35 +0x6949 0x9a36 +0x694a 0x9a38 +0x694b 0x9a47 +0x694c 0x9a41 +0x694d 0x9a44 +0x694e 0x9a4a +0x694f 0x9a4b +0x6950 0x9a4c +0x6951 0x9a4e +0x6952 0x9a51 +0x6953 0x9a54 +0x6954 0x9a56 +0x6955 0x9a5d +0x6956 0x9aaa +0x6957 0x9aac +0x6958 0x9aae +0x6959 0x9aaf +0x695a 0x9ab2 +0x695b 0x9ab4 +0x695c 0x9ab5 +0x695d 0x9ab6 +0x695e 0x9ab9 +0x695f 0x9abb +0x6960 0x9abe +0x6961 0x9abf +0x6962 0x9ac1 +0x6963 0x9ac3 +0x6964 0x9ac6 +0x6965 0x9ac8 +0x6966 0x9ace +0x6967 0x9ad0 +0x6968 0x9ad2 +0x6969 0x9ad5 +0x696a 0x9ad6 +0x696b 0x9ad7 +0x696c 0x9adb +0x696d 0x9adc +0x696e 0x9ae0 +0x696f 0x9ae4 +0x6970 0x9ae5 +0x6971 0x9ae7 +0x6972 0x9ae9 +0x6973 0x9aec +0x6974 0x9af2 +0x6975 0x9af3 +0x6976 0x9af5 +0x6977 0x9af9 +0x6978 0x9afa +0x6979 0x9afd +0x697a 0x9aff +0x697b 0x9b00 +0x697c 0x9b01 +0x697d 0x9b02 +0x697e 0x9b03 +0x6a21 0x9b04 +0x6a22 0x9b05 +0x6a23 0x9b08 +0x6a24 0x9b09 +0x6a25 0x9b0b +0x6a26 0x9b0c +0x6a27 0x9b0d +0x6a28 0x9b0e +0x6a29 0x9b10 +0x6a2a 0x9b12 +0x6a2b 0x9b16 +0x6a2c 0x9b19 +0x6a2d 0x9b1b +0x6a2e 0x9b1c +0x6a2f 0x9b20 +0x6a30 0x9b26 +0x6a31 0x9b2b +0x6a32 0x9b2d +0x6a33 0x9b33 +0x6a34 0x9b34 +0x6a35 0x9b35 +0x6a36 0x9b37 +0x6a37 0x9b39 +0x6a38 0x9b3a +0x6a39 0x9b3d +0x6a3a 0x9b48 +0x6a3b 0x9b4b +0x6a3c 0x9b4c +0x6a3d 0x9b55 +0x6a3e 0x9b56 +0x6a3f 0x9b57 +0x6a40 0x9b5b +0x6a41 0x9b5e +0x6a42 0x9b61 +0x6a43 0x9b63 +0x6a44 0x9b65 +0x6a45 0x9b66 +0x6a46 0x9b68 +0x6a47 0x9b6a +0x6a48 0x9b6b +0x6a49 0x9b6c +0x6a4a 0x9b6d +0x6a4b 0x9b6e +0x6a4c 0x9b73 +0x6a4d 0x9b75 +0x6a4e 0x9b77 +0x6a4f 0x9b78 +0x6a50 0x9b79 +0x6a51 0x9b7f +0x6a52 0x9b80 +0x6a53 0x9b84 +0x6a54 0x9b85 +0x6a55 0x9b86 +0x6a56 0x9b87 +0x6a57 0x9b89 +0x6a58 0x9b8a +0x6a59 0x9b8b +0x6a5a 0x9b8d +0x6a5b 0x9b8f +0x6a5c 0x9b90 +0x6a5d 0x9b94 +0x6a5e 0x9b9a +0x6a5f 0x9b9d +0x6a60 0x9b9e +0x6a61 0x9ba6 +0x6a62 0x9ba7 +0x6a63 0x9ba9 +0x6a64 0x9bac +0x6a65 0x9bb0 +0x6a66 0x9bb1 +0x6a67 0x9bb2 +0x6a68 0x9bb7 +0x6a69 0x9bb8 +0x6a6a 0x9bbb +0x6a6b 0x9bbc +0x6a6c 0x9bbe +0x6a6d 0x9bbf +0x6a6e 0x9bc1 +0x6a6f 0x9bc7 +0x6a70 0x9bc8 +0x6a71 0x9bce +0x6a72 0x9bd0 +0x6a73 0x9bd7 +0x6a74 0x9bd8 +0x6a75 0x9bdd +0x6a76 0x9bdf +0x6a77 0x9be5 +0x6a78 0x9be7 +0x6a79 0x9bea +0x6a7a 0x9beb +0x6a7b 0x9bef +0x6a7c 0x9bf3 +0x6a7d 0x9bf7 +0x6a7e 0x9bf8 +0x6b21 0x9bf9 +0x6b22 0x9bfa +0x6b23 0x9bfd +0x6b24 0x9bff +0x6b25 0x9c00 +0x6b26 0x9c02 +0x6b27 0x9c0b +0x6b28 0x9c0f +0x6b29 0x9c11 +0x6b2a 0x9c16 +0x6b2b 0x9c18 +0x6b2c 0x9c19 +0x6b2d 0x9c1a +0x6b2e 0x9c1c +0x6b2f 0x9c1e +0x6b30 0x9c22 +0x6b31 0x9c23 +0x6b32 0x9c26 +0x6b33 0x9c27 +0x6b34 0x9c28 +0x6b35 0x9c29 +0x6b36 0x9c2a +0x6b37 0x9c31 +0x6b38 0x9c35 +0x6b39 0x9c36 +0x6b3a 0x9c37 +0x6b3b 0x9c3d +0x6b3c 0x9c41 +0x6b3d 0x9c43 +0x6b3e 0x9c44 +0x6b3f 0x9c45 +0x6b40 0x9c49 +0x6b41 0x9c4a +0x6b42 0x9c4e +0x6b43 0x9c4f +0x6b44 0x9c50 +0x6b45 0x9c53 +0x6b46 0x9c54 +0x6b47 0x9c56 +0x6b48 0x9c58 +0x6b49 0x9c5b +0x6b4a 0x9c5d +0x6b4b 0x9c5e +0x6b4c 0x9c5f +0x6b4d 0x9c63 +0x6b4e 0x9c69 +0x6b4f 0x9c6a +0x6b50 0x9c5c +0x6b51 0x9c6b +0x6b52 0x9c68 +0x6b53 0x9c6e +0x6b54 0x9c70 +0x6b55 0x9c72 +0x6b56 0x9c75 +0x6b57 0x9c77 +0x6b58 0x9c7b +0x6b59 0x9ce6 +0x6b5a 0x9cf2 +0x6b5b 0x9cf7 +0x6b5c 0x9cf9 +0x6b5d 0x9d0b +0x6b5e 0x9d02 +0x6b5f 0x9d11 +0x6b60 0x9d17 +0x6b61 0x9d18 +0x6b62 0x9d1c +0x6b63 0x9d1d +0x6b64 0x9d1e +0x6b65 0x9d2f +0x6b66 0x9d30 +0x6b67 0x9d32 +0x6b68 0x9d33 +0x6b69 0x9d34 +0x6b6a 0x9d3a +0x6b6b 0x9d3c +0x6b6c 0x9d45 +0x6b6d 0x9d3d +0x6b6e 0x9d42 +0x6b6f 0x9d43 +0x6b70 0x9d47 +0x6b71 0x9d4a +0x6b72 0x9d53 +0x6b73 0x9d54 +0x6b74 0x9d5f +0x6b75 0x9d63 +0x6b76 0x9d62 +0x6b77 0x9d65 +0x6b78 0x9d69 +0x6b79 0x9d6a +0x6b7a 0x9d6b +0x6b7b 0x9d70 +0x6b7c 0x9d76 +0x6b7d 0x9d77 +0x6b7e 0x9d7b +0x6c21 0x9d7c +0x6c22 0x9d7e +0x6c23 0x9d83 +0x6c24 0x9d84 +0x6c25 0x9d86 +0x6c26 0x9d8a +0x6c27 0x9d8d +0x6c28 0x9d8e +0x6c29 0x9d92 +0x6c2a 0x9d93 +0x6c2b 0x9d95 +0x6c2c 0x9d96 +0x6c2d 0x9d97 +0x6c2e 0x9d98 +0x6c2f 0x9da1 +0x6c30 0x9daa +0x6c31 0x9dac +0x6c32 0x9dae +0x6c33 0x9db1 +0x6c34 0x9db5 +0x6c35 0x9db9 +0x6c36 0x9dbc +0x6c37 0x9dbf +0x6c38 0x9dc3 +0x6c39 0x9dc7 +0x6c3a 0x9dc9 +0x6c3b 0x9dca +0x6c3c 0x9dd4 +0x6c3d 0x9dd5 +0x6c3e 0x9dd6 +0x6c3f 0x9dd7 +0x6c40 0x9dda +0x6c41 0x9dde +0x6c42 0x9ddf +0x6c43 0x9de0 +0x6c44 0x9de5 +0x6c45 0x9de7 +0x6c46 0x9de9 +0x6c47 0x9deb +0x6c48 0x9dee +0x6c49 0x9df0 +0x6c4a 0x9df3 +0x6c4b 0x9df4 +0x6c4c 0x9dfe +0x6c4d 0x9e0a +0x6c4e 0x9e02 +0x6c4f 0x9e07 +0x6c50 0x9e0e +0x6c51 0x9e10 +0x6c52 0x9e11 +0x6c53 0x9e12 +0x6c54 0x9e15 +0x6c55 0x9e16 +0x6c56 0x9e19 +0x6c57 0x9e1c +0x6c58 0x9e1d +0x6c59 0x9e7a +0x6c5a 0x9e7b +0x6c5b 0x9e7c +0x6c5c 0x9e80 +0x6c5d 0x9e82 +0x6c5e 0x9e83 +0x6c5f 0x9e84 +0x6c60 0x9e85 +0x6c61 0x9e87 +0x6c62 0x9e8e +0x6c63 0x9e8f +0x6c64 0x9e96 +0x6c65 0x9e98 +0x6c66 0x9e9b +0x6c67 0x9e9e +0x6c68 0x9ea4 +0x6c69 0x9ea8 +0x6c6a 0x9eac +0x6c6b 0x9eae +0x6c6c 0x9eaf +0x6c6d 0x9eb0 +0x6c6e 0x9eb3 +0x6c6f 0x9eb4 +0x6c70 0x9eb5 +0x6c71 0x9ec6 +0x6c72 0x9ec8 +0x6c73 0x9ecb +0x6c74 0x9ed5 +0x6c75 0x9edf +0x6c76 0x9ee4 +0x6c77 0x9ee7 +0x6c78 0x9eec +0x6c79 0x9eed +0x6c7a 0x9eee +0x6c7b 0x9ef0 +0x6c7c 0x9ef1 +0x6c7d 0x9ef2 +0x6c7e 0x9ef5 +0x6d21 0x9ef8 +0x6d22 0x9eff +0x6d23 0x9f02 +0x6d24 0x9f03 +0x6d25 0x9f09 +0x6d26 0x9f0f +0x6d27 0x9f10 +0x6d28 0x9f11 +0x6d29 0x9f12 +0x6d2a 0x9f14 +0x6d2b 0x9f16 +0x6d2c 0x9f17 +0x6d2d 0x9f19 +0x6d2e 0x9f1a +0x6d2f 0x9f1b +0x6d30 0x9f1f +0x6d31 0x9f22 +0x6d32 0x9f26 +0x6d33 0x9f2a +0x6d34 0x9f2b +0x6d35 0x9f2f +0x6d36 0x9f31 +0x6d37 0x9f32 +0x6d38 0x9f34 +0x6d39 0x9f37 +0x6d3a 0x9f39 +0x6d3b 0x9f3a +0x6d3c 0x9f3c +0x6d3d 0x9f3d +0x6d3e 0x9f3f +0x6d3f 0x9f41 +0x6d40 0x9f43 +0x6d41 0x9f44 +0x6d42 0x9f45 +0x6d43 0x9f46 +0x6d44 0x9f47 +0x6d45 0x9f53 +0x6d46 0x9f55 +0x6d47 0x9f56 +0x6d48 0x9f57 +0x6d49 0x9f58 +0x6d4a 0x9f5a +0x6d4b 0x9f5d +0x6d4c 0x9f5e +0x6d4d 0x9f68 +0x6d4e 0x9f69 +0x6d4f 0x9f6d +0x6d50 0x9f6e +0x6d51 0x9f6f +0x6d52 0x9f70 +0x6d53 0x9f71 +0x6d54 0x9f73 +0x6d55 0x9f75 +0x6d56 0x9f7a +0x6d57 0x9f7d +0x6d58 0x9f8f +0x6d59 0x9f90 +0x6d5a 0x9f91 +0x6d5b 0x9f92 +0x6d5c 0x9f94 +0x6d5d 0x9f96 +0x6d5e 0x9f97 +0x6d5f 0x9f9e +0x6d60 0x9fa1 +0x6d61 0x9fa2 +0x6d62 0x9fa3 +0x6d63 0x9fa5 +0x7321 0x2170 +0x7322 0x2171 +0x7323 0x2172 +0x7324 0x2173 +0x7325 0x2174 +0x7326 0x2175 +0x7327 0x2176 +0x7328 0x2177 +0x7329 0x2178 +0x732a 0x2179 +0x7335 0xff07 +0x7336 0xff02 +0x733a 0x70bb +0x733b 0x4efc +0x733c 0x50f4 +0x733d 0x51ec +0x733e 0x5307 +0x733f 0x5324 +0x7340 0xfa0e +0x7341 0x548a +0x7342 0x5759 +0x7343 0xfa0f +0x7344 0xfa10 +0x7345 0x589e +0x7346 0x5bec +0x7347 0x5cf5 +0x7348 0x5d53 +0x7349 0xfa11 +0x734a 0x5fb7 +0x734b 0x6085 +0x734c 0x6120 +0x734d 0x654e +0x734f 0x6665 +0x7350 0xfa12 +0x7351 0xf929 +0x7352 0x6801 +0x7353 0xfa13 +0x7354 0xfa14 +0x7355 0x6a6b +0x7356 0x6ae2 +0x7357 0x6df8 +0x7358 0x6df2 +0x7359 0x7028 +0x735a 0xfa15 +0x735b 0xfa16 +0x735c 0x7501 +0x735d 0x7682 +0x735e 0x769e +0x735f 0xfa17 +0x7360 0x7930 +0x7361 0xfa18 +0x7362 0xfa19 +0x7363 0xfa1a +0x7364 0xfa1b +0x7365 0x7ae7 +0x7366 0xfa1c +0x7367 0xfa1d +0x7368 0x7da0 +0x7369 0x7dd6 +0x736a 0xfa1e +0x736b 0x8362 +0x736c 0xfa1f +0x736d 0x85b0 +0x736e 0xfa20 +0x736f 0xfa21 +0x7370 0x8807 +0x7371 0xfa22 +0x7372 0x8b7f +0x7373 0x8cf4 +0x7374 0x8d76 +0x7375 0xfa23 +0x7376 0xfa24 +0x7377 0xfa25 +0x7378 0x90de +0x7379 0xfa26 +0x737a 0x9115 +0x737b 0xfa27 +0x737c 0xfa28 +0x737d 0x9592 +0x737e 0xf9dc +0x7421 0xfa29 +0x7422 0x973b +0x7424 0x9751 +0x7425 0xfa2a +0x7426 0xfa2b +0x7427 0xfa2c +0x7428 0x999e +0x7429 0x9ad9 +0x742a 0x9b72 +0x742b 0xfa2d +0x742c 0x9ed1 +0x7463 0x974d +0x7521 0xe3ac +0x7522 0xe3ad +0x7523 0xe3ae +0x7524 0xe3af +0x7525 0xe3b0 +0x7526 0xe3b1 +0x7527 0xe3b2 +0x7528 0xe3b3 +0x7529 0xe3b4 +0x752a 0xe3b5 +0x752b 0xe3b6 +0x752c 0xe3b7 +0x752d 0xe3b8 +0x752e 0xe3b9 +0x752f 0xe3ba +0x7530 0xe3bb +0x7531 0xe3bc +0x7532 0xe3bd +0x7533 0xe3be +0x7534 0xe3bf +0x7535 0xe3c0 +0x7536 0xe3c1 +0x7537 0xe3c2 +0x7538 0xe3c3 +0x7539 0xe3c4 +0x753a 0xe3c5 +0x753b 0xe3c6 +0x753c 0xe3c7 +0x753d 0xe3c8 +0x753e 0xe3c9 +0x753f 0xe3ca +0x7540 0xe3cb +0x7541 0xe3cc +0x7542 0xe3cd +0x7543 0xe3ce +0x7544 0xe3cf +0x7545 0xe3d0 +0x7546 0xe3d1 +0x7547 0xe3d2 +0x7548 0xe3d3 +0x7549 0xe3d4 +0x754a 0xe3d5 +0x754b 0xe3d6 +0x754c 0xe3d7 +0x754d 0xe3d8 +0x754e 0xe3d9 +0x754f 0xe3da +0x7550 0xe3db +0x7551 0xe3dc +0x7552 0xe3dd +0x7553 0xe3de +0x7554 0xe3df +0x7555 0xe3e0 +0x7556 0xe3e1 +0x7557 0xe3e2 +0x7558 0xe3e3 +0x7559 0xe3e4 +0x755a 0xe3e5 +0x755b 0xe3e6 +0x755c 0xe3e7 +0x755d 0xe3e8 +0x755e 0xe3e9 +0x755f 0xe3ea +0x7560 0xe3eb +0x7561 0xe3ec +0x7562 0xe3ed +0x7563 0xe3ee +0x7564 0xe3ef +0x7565 0xe3f0 +0x7566 0xe3f1 +0x7567 0xe3f2 +0x7568 0xe3f3 +0x7569 0xe3f4 +0x756a 0xe3f5 +0x756b 0xe3f6 +0x756c 0xe3f7 +0x756d 0xe3f8 +0x756e 0xe3f9 +0x756f 0xe3fa +0x7570 0xe3fb +0x7571 0xe3fc +0x7572 0xe3fd +0x7573 0xe3fe +0x7574 0xe3ff +0x7575 0xe400 +0x7576 0xe401 +0x7577 0xe402 +0x7578 0xe403 +0x7579 0xe404 +0x757a 0xe405 +0x757b 0xe406 +0x757c 0xe407 +0x757d 0xe408 +0x757e 0xe409 +0x7621 0xe40a +0x7622 0xe40b +0x7623 0xe40c +0x7624 0xe40d +0x7625 0xe40e +0x7626 0xe40f +0x7627 0xe410 +0x7628 0xe411 +0x7629 0xe412 +0x762a 0xe413 +0x762b 0xe414 +0x762c 0xe415 +0x762d 0xe416 +0x762e 0xe417 +0x762f 0xe418 +0x7630 0xe419 +0x7631 0xe41a +0x7632 0xe41b +0x7633 0xe41c +0x7634 0xe41d +0x7635 0xe41e +0x7636 0xe41f +0x7637 0xe420 +0x7638 0xe421 +0x7639 0xe422 +0x763a 0xe423 +0x763b 0xe424 +0x763c 0xe425 +0x763d 0xe426 +0x763e 0xe427 +0x763f 0xe428 +0x7640 0xe429 +0x7641 0xe42a +0x7642 0xe42b +0x7643 0xe42c +0x7644 0xe42d +0x7645 0xe42e +0x7646 0xe42f +0x7647 0xe430 +0x7648 0xe431 +0x7649 0xe432 +0x764a 0xe433 +0x764b 0xe434 +0x764c 0xe435 +0x764d 0xe436 +0x764e 0xe437 +0x764f 0xe438 +0x7650 0xe439 +0x7651 0xe43a +0x7652 0xe43b +0x7653 0xe43c +0x7654 0xe43d +0x7655 0xe43e +0x7656 0xe43f +0x7657 0xe440 +0x7658 0xe441 +0x7659 0xe442 +0x765a 0xe443 +0x765b 0xe444 +0x765c 0xe445 +0x765d 0xe446 +0x765e 0xe447 +0x765f 0xe448 +0x7660 0xe449 +0x7661 0xe44a +0x7662 0xe44b +0x7663 0xe44c +0x7664 0xe44d +0x7665 0xe44e +0x7666 0xe44f +0x7667 0xe450 +0x7668 0xe451 +0x7669 0xe452 +0x766a 0xe453 +0x766b 0xe454 +0x766c 0xe455 +0x766d 0xe456 +0x766e 0xe457 +0x766f 0xe458 +0x7670 0xe459 +0x7671 0xe45a +0x7672 0xe45b +0x7673 0xe45c +0x7674 0xe45d +0x7675 0xe45e +0x7676 0xe45f +0x7677 0xe460 +0x7678 0xe461 +0x7679 0xe462 +0x767a 0xe463 +0x767b 0xe464 +0x767c 0xe465 +0x767d 0xe466 +0x767e 0xe467 +0x7721 0xe468 +0x7722 0xe469 +0x7723 0xe46a +0x7724 0xe46b +0x7725 0xe46c +0x7726 0xe46d +0x7727 0xe46e +0x7728 0xe46f +0x7729 0xe470 +0x772a 0xe471 +0x772b 0xe472 +0x772c 0xe473 +0x772d 0xe474 +0x772e 0xe475 +0x772f 0xe476 +0x7730 0xe477 +0x7731 0xe478 +0x7732 0xe479 +0x7733 0xe47a +0x7734 0xe47b +0x7735 0xe47c +0x7736 0xe47d +0x7737 0xe47e +0x7738 0xe47f +0x7739 0xe480 +0x773a 0xe481 +0x773b 0xe482 +0x773c 0xe483 +0x773d 0xe484 +0x773e 0xe485 +0x773f 0xe486 +0x7740 0xe487 +0x7741 0xe488 +0x7742 0xe489 +0x7743 0xe48a +0x7744 0xe48b +0x7745 0xe48c +0x7746 0xe48d +0x7747 0xe48e +0x7748 0xe48f +0x7749 0xe490 +0x774a 0xe491 +0x774b 0xe492 +0x774c 0xe493 +0x774d 0xe494 +0x774e 0xe495 +0x774f 0xe496 +0x7750 0xe497 +0x7751 0xe498 +0x7752 0xe499 +0x7753 0xe49a +0x7754 0xe49b +0x7755 0xe49c +0x7756 0xe49d +0x7757 0xe49e +0x7758 0xe49f +0x7759 0xe4a0 +0x775a 0xe4a1 +0x775b 0xe4a2 +0x775c 0xe4a3 +0x775d 0xe4a4 +0x775e 0xe4a5 +0x775f 0xe4a6 +0x7760 0xe4a7 +0x7761 0xe4a8 +0x7762 0xe4a9 +0x7763 0xe4aa +0x7764 0xe4ab +0x7765 0xe4ac +0x7766 0xe4ad +0x7767 0xe4ae +0x7768 0xe4af +0x7769 0xe4b0 +0x776a 0xe4b1 +0x776b 0xe4b2 +0x776c 0xe4b3 +0x776d 0xe4b4 +0x776e 0xe4b5 +0x776f 0xe4b6 +0x7770 0xe4b7 +0x7771 0xe4b8 +0x7772 0xe4b9 +0x7773 0xe4ba +0x7774 0xe4bb +0x7775 0xe4bc +0x7776 0xe4bd +0x7777 0xe4be +0x7778 0xe4bf +0x7779 0xe4c0 +0x777a 0xe4c1 +0x777b 0xe4c2 +0x777c 0xe4c3 +0x777d 0xe4c4 +0x777e 0xe4c5 +0x7821 0xe4c6 +0x7822 0xe4c7 +0x7823 0xe4c8 +0x7824 0xe4c9 +0x7825 0xe4ca +0x7826 0xe4cb +0x7827 0xe4cc +0x7828 0xe4cd +0x7829 0xe4ce +0x782a 0xe4cf +0x782b 0xe4d0 +0x782c 0xe4d1 +0x782d 0xe4d2 +0x782e 0xe4d3 +0x782f 0xe4d4 +0x7830 0xe4d5 +0x7831 0xe4d6 +0x7832 0xe4d7 +0x7833 0xe4d8 +0x7834 0xe4d9 +0x7835 0xe4da +0x7836 0xe4db +0x7837 0xe4dc +0x7838 0xe4dd +0x7839 0xe4de +0x783a 0xe4df +0x783b 0xe4e0 +0x783c 0xe4e1 +0x783d 0xe4e2 +0x783e 0xe4e3 +0x783f 0xe4e4 +0x7840 0xe4e5 +0x7841 0xe4e6 +0x7842 0xe4e7 +0x7843 0xe4e8 +0x7844 0xe4e9 +0x7845 0xe4ea +0x7846 0xe4eb +0x7847 0xe4ec +0x7848 0xe4ed +0x7849 0xe4ee +0x784a 0xe4ef +0x784b 0xe4f0 +0x784c 0xe4f1 +0x784d 0xe4f2 +0x784e 0xe4f3 +0x784f 0xe4f4 +0x7850 0xe4f5 +0x7851 0xe4f6 +0x7852 0xe4f7 +0x7853 0xe4f8 +0x7854 0xe4f9 +0x7855 0xe4fa +0x7856 0xe4fb +0x7857 0xe4fc +0x7858 0xe4fd +0x7859 0xe4fe +0x785a 0xe4ff +0x785b 0xe500 +0x785c 0xe501 +0x785d 0xe502 +0x785e 0xe503 +0x785f 0xe504 +0x7860 0xe505 +0x7861 0xe506 +0x7862 0xe507 +0x7863 0xe508 +0x7864 0xe509 +0x7865 0xe50a +0x7866 0xe50b +0x7867 0xe50c +0x7868 0xe50d +0x7869 0xe50e +0x786a 0xe50f +0x786b 0xe510 +0x786c 0xe511 +0x786d 0xe512 +0x786e 0xe513 +0x786f 0xe514 +0x7870 0xe515 +0x7871 0xe516 +0x7872 0xe517 +0x7873 0xe518 +0x7874 0xe519 +0x7875 0xe51a +0x7876 0xe51b +0x7877 0xe51c +0x7878 0xe51d +0x7879 0xe51e +0x787a 0xe51f +0x787b 0xe520 +0x787c 0xe521 +0x787d 0xe522 +0x787e 0xe523 +0x7921 0xe524 +0x7922 0xe525 +0x7923 0xe526 +0x7924 0xe527 +0x7925 0xe528 +0x7926 0xe529 +0x7927 0xe52a +0x7928 0xe52b +0x7929 0xe52c +0x792a 0xe52d +0x792b 0xe52e +0x792c 0xe52f +0x792d 0xe530 +0x792e 0xe531 +0x792f 0xe532 +0x7930 0xe533 +0x7931 0xe534 +0x7932 0xe535 +0x7933 0xe536 +0x7934 0xe537 +0x7935 0xe538 +0x7936 0xe539 +0x7937 0xe53a +0x7938 0xe53b +0x7939 0xe53c +0x793a 0xe53d +0x793b 0xe53e +0x793c 0xe53f +0x793d 0xe540 +0x793e 0xe541 +0x793f 0xe542 +0x7940 0xe543 +0x7941 0xe544 +0x7942 0xe545 +0x7943 0xe546 +0x7944 0xe547 +0x7945 0xe548 +0x7946 0xe549 +0x7947 0xe54a +0x7948 0xe54b +0x7949 0xe54c +0x794a 0xe54d +0x794b 0xe54e +0x794c 0xe54f +0x794d 0xe550 +0x794e 0xe551 +0x794f 0xe552 +0x7950 0xe553 +0x7951 0xe554 +0x7952 0xe555 +0x7953 0xe556 +0x7954 0xe557 +0x7955 0xe558 +0x7956 0xe559 +0x7957 0xe55a +0x7958 0xe55b +0x7959 0xe55c +0x795a 0xe55d +0x795b 0xe55e +0x795c 0xe55f +0x795d 0xe560 +0x795e 0xe561 +0x795f 0xe562 +0x7960 0xe563 +0x7961 0xe564 +0x7962 0xe565 +0x7963 0xe566 +0x7964 0xe567 +0x7965 0xe568 +0x7966 0xe569 +0x7967 0xe56a +0x7968 0xe56b +0x7969 0xe56c +0x796a 0xe56d +0x796b 0xe56e +0x796c 0xe56f +0x796d 0xe570 +0x796e 0xe571 +0x796f 0xe572 +0x7970 0xe573 +0x7971 0xe574 +0x7972 0xe575 +0x7973 0xe576 +0x7974 0xe577 +0x7975 0xe578 +0x7976 0xe579 +0x7977 0xe57a +0x7978 0xe57b +0x7979 0xe57c +0x797a 0xe57d +0x797b 0xe57e +0x797c 0xe57f +0x797d 0xe580 +0x797e 0xe581 +0x7a21 0xe582 +0x7a22 0xe583 +0x7a23 0xe584 +0x7a24 0xe585 +0x7a25 0xe586 +0x7a26 0xe587 +0x7a27 0xe588 +0x7a28 0xe589 +0x7a29 0xe58a +0x7a2a 0xe58b +0x7a2b 0xe58c +0x7a2c 0xe58d +0x7a2d 0xe58e +0x7a2e 0xe58f +0x7a2f 0xe590 +0x7a30 0xe591 +0x7a31 0xe592 +0x7a32 0xe593 +0x7a33 0xe594 +0x7a34 0xe595 +0x7a35 0xe596 +0x7a36 0xe597 +0x7a37 0xe598 +0x7a38 0xe599 +0x7a39 0xe59a +0x7a3a 0xe59b +0x7a3b 0xe59c +0x7a3c 0xe59d +0x7a3d 0xe59e +0x7a3e 0xe59f +0x7a3f 0xe5a0 +0x7a40 0xe5a1 +0x7a41 0xe5a2 +0x7a42 0xe5a3 +0x7a43 0xe5a4 +0x7a44 0xe5a5 +0x7a45 0xe5a6 +0x7a46 0xe5a7 +0x7a47 0xe5a8 +0x7a48 0xe5a9 +0x7a49 0xe5aa +0x7a4a 0xe5ab +0x7a4b 0xe5ac +0x7a4c 0xe5ad +0x7a4d 0xe5ae +0x7a4e 0xe5af +0x7a4f 0xe5b0 +0x7a50 0xe5b1 +0x7a51 0xe5b2 +0x7a52 0xe5b3 +0x7a53 0xe5b4 +0x7a54 0xe5b5 +0x7a55 0xe5b6 +0x7a56 0xe5b7 +0x7a57 0xe5b8 +0x7a58 0xe5b9 +0x7a59 0xe5ba +0x7a5a 0xe5bb +0x7a5b 0xe5bc +0x7a5c 0xe5bd +0x7a5d 0xe5be +0x7a5e 0xe5bf +0x7a5f 0xe5c0 +0x7a60 0xe5c1 +0x7a61 0xe5c2 +0x7a62 0xe5c3 +0x7a63 0xe5c4 +0x7a64 0xe5c5 +0x7a65 0xe5c6 +0x7a66 0xe5c7 +0x7a67 0xe5c8 +0x7a68 0xe5c9 +0x7a69 0xe5ca +0x7a6a 0xe5cb +0x7a6b 0xe5cc +0x7a6c 0xe5cd +0x7a6d 0xe5ce +0x7a6e 0xe5cf +0x7a6f 0xe5d0 +0x7a70 0xe5d1 +0x7a71 0xe5d2 +0x7a72 0xe5d3 +0x7a73 0xe5d4 +0x7a74 0xe5d5 +0x7a75 0xe5d6 +0x7a76 0xe5d7 +0x7a77 0xe5d8 +0x7a78 0xe5d9 +0x7a79 0xe5da +0x7a7a 0xe5db +0x7a7b 0xe5dc +0x7a7c 0xe5dd +0x7a7d 0xe5de +0x7a7e 0xe5df +0x7b21 0xe5e0 +0x7b22 0xe5e1 +0x7b23 0xe5e2 +0x7b24 0xe5e3 +0x7b25 0xe5e4 +0x7b26 0xe5e5 +0x7b27 0xe5e6 +0x7b28 0xe5e7 +0x7b29 0xe5e8 +0x7b2a 0xe5e9 +0x7b2b 0xe5ea +0x7b2c 0xe5eb +0x7b2d 0xe5ec +0x7b2e 0xe5ed +0x7b2f 0xe5ee +0x7b30 0xe5ef +0x7b31 0xe5f0 +0x7b32 0xe5f1 +0x7b33 0xe5f2 +0x7b34 0xe5f3 +0x7b35 0xe5f4 +0x7b36 0xe5f5 +0x7b37 0xe5f6 +0x7b38 0xe5f7 +0x7b39 0xe5f8 +0x7b3a 0xe5f9 +0x7b3b 0xe5fa +0x7b3c 0xe5fb +0x7b3d 0xe5fc +0x7b3e 0xe5fd +0x7b3f 0xe5fe +0x7b40 0xe5ff +0x7b41 0xe600 +0x7b42 0xe601 +0x7b43 0xe602 +0x7b44 0xe603 +0x7b45 0xe604 +0x7b46 0xe605 +0x7b47 0xe606 +0x7b48 0xe607 +0x7b49 0xe608 +0x7b4a 0xe609 +0x7b4b 0xe60a +0x7b4c 0xe60b +0x7b4d 0xe60c +0x7b4e 0xe60d +0x7b4f 0xe60e +0x7b50 0xe60f +0x7b51 0xe610 +0x7b52 0xe611 +0x7b53 0xe612 +0x7b54 0xe613 +0x7b55 0xe614 +0x7b56 0xe615 +0x7b57 0xe616 +0x7b58 0xe617 +0x7b59 0xe618 +0x7b5a 0xe619 +0x7b5b 0xe61a +0x7b5c 0xe61b +0x7b5d 0xe61c +0x7b5e 0xe61d +0x7b5f 0xe61e +0x7b60 0xe61f +0x7b61 0xe620 +0x7b62 0xe621 +0x7b63 0xe622 +0x7b64 0xe623 +0x7b65 0xe624 +0x7b66 0xe625 +0x7b67 0xe626 +0x7b68 0xe627 +0x7b69 0xe628 +0x7b6a 0xe629 +0x7b6b 0xe62a +0x7b6c 0xe62b +0x7b6d 0xe62c +0x7b6e 0xe62d +0x7b6f 0xe62e +0x7b70 0xe62f +0x7b71 0xe630 +0x7b72 0xe631 +0x7b73 0xe632 +0x7b74 0xe633 +0x7b75 0xe634 +0x7b76 0xe635 +0x7b77 0xe636 +0x7b78 0xe637 +0x7b79 0xe638 +0x7b7a 0xe639 +0x7b7b 0xe63a +0x7b7c 0xe63b +0x7b7d 0xe63c +0x7b7e 0xe63d +0x7c21 0xe63e +0x7c22 0xe63f +0x7c23 0xe640 +0x7c24 0xe641 +0x7c25 0xe642 +0x7c26 0xe643 +0x7c27 0xe644 +0x7c28 0xe645 +0x7c29 0xe646 +0x7c2a 0xe647 +0x7c2b 0xe648 +0x7c2c 0xe649 +0x7c2d 0xe64a +0x7c2e 0xe64b +0x7c2f 0xe64c +0x7c30 0xe64d +0x7c31 0xe64e +0x7c32 0xe64f +0x7c33 0xe650 +0x7c34 0xe651 +0x7c35 0xe652 +0x7c36 0xe653 +0x7c37 0xe654 +0x7c38 0xe655 +0x7c39 0xe656 +0x7c3a 0xe657 +0x7c3b 0xe658 +0x7c3c 0xe659 +0x7c3d 0xe65a +0x7c3e 0xe65b +0x7c3f 0xe65c +0x7c40 0xe65d +0x7c41 0xe65e +0x7c42 0xe65f +0x7c43 0xe660 +0x7c44 0xe661 +0x7c45 0xe662 +0x7c46 0xe663 +0x7c47 0xe664 +0x7c48 0xe665 +0x7c49 0xe666 +0x7c4a 0xe667 +0x7c4b 0xe668 +0x7c4c 0xe669 +0x7c4d 0xe66a +0x7c4e 0xe66b +0x7c4f 0xe66c +0x7c50 0xe66d +0x7c51 0xe66e +0x7c52 0xe66f +0x7c53 0xe670 +0x7c54 0xe671 +0x7c55 0xe672 +0x7c56 0xe673 +0x7c57 0xe674 +0x7c58 0xe675 +0x7c59 0xe676 +0x7c5a 0xe677 +0x7c5b 0xe678 +0x7c5c 0xe679 +0x7c5d 0xe67a +0x7c5e 0xe67b +0x7c5f 0xe67c +0x7c60 0xe67d +0x7c61 0xe67e +0x7c62 0xe67f +0x7c63 0xe680 +0x7c64 0xe681 +0x7c65 0xe682 +0x7c66 0xe683 +0x7c67 0xe684 +0x7c68 0xe685 +0x7c69 0xe686 +0x7c6a 0xe687 +0x7c6b 0xe688 +0x7c6c 0xe689 +0x7c6d 0xe68a +0x7c6e 0xe68b +0x7c6f 0xe68c +0x7c70 0xe68d +0x7c71 0xe68e +0x7c72 0xe68f +0x7c73 0xe690 +0x7c74 0xe691 +0x7c75 0xe692 +0x7c76 0xe693 +0x7c77 0xe694 +0x7c78 0xe695 +0x7c79 0xe696 +0x7c7a 0xe697 +0x7c7b 0xe698 +0x7c7c 0xe699 +0x7c7d 0xe69a +0x7c7e 0xe69b +0x7d21 0xe69c +0x7d22 0xe69d +0x7d23 0xe69e +0x7d24 0xe69f +0x7d25 0xe6a0 +0x7d26 0xe6a1 +0x7d27 0xe6a2 +0x7d28 0xe6a3 +0x7d29 0xe6a4 +0x7d2a 0xe6a5 +0x7d2b 0xe6a6 +0x7d2c 0xe6a7 +0x7d2d 0xe6a8 +0x7d2e 0xe6a9 +0x7d2f 0xe6aa +0x7d30 0xe6ab +0x7d31 0xe6ac +0x7d32 0xe6ad +0x7d33 0xe6ae +0x7d34 0xe6af +0x7d35 0xe6b0 +0x7d36 0xe6b1 +0x7d37 0xe6b2 +0x7d38 0xe6b3 +0x7d39 0xe6b4 +0x7d3a 0xe6b5 +0x7d3b 0xe6b6 +0x7d3c 0xe6b7 +0x7d3d 0xe6b8 +0x7d3e 0xe6b9 +0x7d3f 0xe6ba +0x7d40 0xe6bb +0x7d41 0xe6bc +0x7d42 0xe6bd +0x7d43 0xe6be +0x7d44 0xe6bf +0x7d45 0xe6c0 +0x7d46 0xe6c1 +0x7d47 0xe6c2 +0x7d48 0xe6c3 +0x7d49 0xe6c4 +0x7d4a 0xe6c5 +0x7d4b 0xe6c6 +0x7d4c 0xe6c7 +0x7d4d 0xe6c8 +0x7d4e 0xe6c9 +0x7d4f 0xe6ca +0x7d50 0xe6cb +0x7d51 0xe6cc +0x7d52 0xe6cd +0x7d53 0xe6ce +0x7d54 0xe6cf +0x7d55 0xe6d0 +0x7d56 0xe6d1 +0x7d57 0xe6d2 +0x7d58 0xe6d3 +0x7d59 0xe6d4 +0x7d5a 0xe6d5 +0x7d5b 0xe6d6 +0x7d5c 0xe6d7 +0x7d5d 0xe6d8 +0x7d5e 0xe6d9 +0x7d5f 0xe6da +0x7d60 0xe6db +0x7d61 0xe6dc +0x7d62 0xe6dd +0x7d63 0xe6de +0x7d64 0xe6df +0x7d65 0xe6e0 +0x7d66 0xe6e1 +0x7d67 0xe6e2 +0x7d68 0xe6e3 +0x7d69 0xe6e4 +0x7d6a 0xe6e5 +0x7d6b 0xe6e6 +0x7d6c 0xe6e7 +0x7d6d 0xe6e8 +0x7d6e 0xe6e9 +0x7d6f 0xe6ea +0x7d70 0xe6eb +0x7d71 0xe6ec +0x7d72 0xe6ed +0x7d73 0xe6ee +0x7d74 0xe6ef +0x7d75 0xe6f0 +0x7d76 0xe6f1 +0x7d77 0xe6f2 +0x7d78 0xe6f3 +0x7d79 0xe6f4 +0x7d7a 0xe6f5 +0x7d7b 0xe6f6 +0x7d7c 0xe6f7 +0x7d7d 0xe6f8 +0x7d7e 0xe6f9 +0x7e21 0xe6fa +0x7e22 0xe6fb +0x7e23 0xe6fc +0x7e24 0xe6fd +0x7e25 0xe6fe +0x7e26 0xe6ff +0x7e27 0xe700 +0x7e28 0xe701 +0x7e29 0xe702 +0x7e2a 0xe703 +0x7e2b 0xe704 +0x7e2c 0xe705 +0x7e2d 0xe706 +0x7e2e 0xe707 +0x7e2f 0xe708 +0x7e30 0xe709 +0x7e31 0xe70a +0x7e32 0xe70b +0x7e33 0xe70c +0x7e34 0xe70d +0x7e35 0xe70e +0x7e36 0xe70f +0x7e37 0xe710 +0x7e38 0xe711 +0x7e39 0xe712 +0x7e3a 0xe713 +0x7e3b 0xe714 +0x7e3c 0xe715 +0x7e3d 0xe716 +0x7e3e 0xe717 +0x7e3f 0xe718 +0x7e40 0xe719 +0x7e41 0xe71a +0x7e42 0xe71b +0x7e43 0xe71c +0x7e44 0xe71d +0x7e45 0xe71e +0x7e46 0xe71f +0x7e47 0xe720 +0x7e48 0xe721 +0x7e49 0xe722 +0x7e4a 0xe723 +0x7e4b 0xe724 +0x7e4c 0xe725 +0x7e4d 0xe726 +0x7e4e 0xe727 +0x7e4f 0xe728 +0x7e50 0xe729 +0x7e51 0xe72a +0x7e52 0xe72b +0x7e53 0xe72c +0x7e54 0xe72d +0x7e55 0xe72e +0x7e56 0xe72f +0x7e57 0xe730 +0x7e58 0xe731 +0x7e59 0xe732 +0x7e5a 0xe733 +0x7e5b 0xe734 +0x7e5c 0xe735 +0x7e5d 0xe736 +0x7e5e 0xe737 +0x7e5f 0xe738 +0x7e60 0xe739 +0x7e61 0xe73a +0x7e62 0xe73b +0x7e63 0xe73c +0x7e64 0xe73d +0x7e65 0xe73e +0x7e66 0xe73f +0x7e67 0xe740 +0x7e68 0xe741 +0x7e69 0xe742 +0x7e6a 0xe743 +0x7e6b 0xe744 +0x7e6c 0xe745 +0x7e6d 0xe746 +0x7e6e 0xe747 +0x7e6f 0xe748 +0x7e70 0xe749 +0x7e71 0xe74a +0x7e72 0xe74b +0x7e73 0xe74c +0x7e74 0xe74d +0x7e75 0xe74e +0x7e76 0xe74f +0x7e77 0xe750 +0x7e78 0xe751 +0x7e79 0xe752 +0x7e7a 0xe753 +0x7e7b 0xe754 +0x7e7c 0xe755 +0x7e7d 0xe756 +0x7e7e 0xe757 diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/JIS_X_0212_Solaris.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/JIS_X_0212_Solaris.map Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,6211 @@ +# This mapping table is based on two mappings (b2c and c2b) from +# from JIS_X_0212_Solaris_Decoder and JIS_X_0212_Solaris_Encoder. +# +# mapping b2c (from JIS_X_0212_Solaris_Decoder) has following +# entries that don't exist in c2b. +# +# 0x737d 0x2160 +# 0x737e 0x2161 +# 0x7421 0x2162 +# 0x7422 0x2163 +# 0x7423 0x2164 +# 0x7424 0x2165 +# 0x7425 0x2166 +# 0x7426 0x2167 +# 0x7427 0x2168 +# 0x7428 0x2169 +# 0x742b 0x3231 +# 0x742c 0x2116 +# 0x742d 0x2121 +# +# except the "0x742c -> 0x2116" entry, it appears these +# entries are just missed from the c2b, I added them in +# as the round-trip entries. +# +# b2c and c2b all have entry "0x2271 <-> 0x2116", so the +# "0x742c -> 0x2116" entry is moved to the .nr table. +# +# mapping (c2b) generated from JIS_X_0212_Solaris_Encoder has +# two "dup" entries +# +# 0x2271 <- 0xf600 +# 0x2271 <- 0x2116 +# +# 0xf600 is in Unicode private area. This actually is the only +# code point in private area, I would assume this is a mistake +# from the early day. The 0x2271 <- 0xf600 is removed from this +# mapping table +# +0x222f 0x02d8 +0x2230 0x02c7 +0x2231 0x00b8 +0x2232 0x02d9 +0x2233 0x02dd +0x2234 0x00af +0x2235 0x02db +0x2236 0x02da +0x2237 0xff5e +0x2238 0x0384 +0x2239 0x0385 +0x2242 0x00a1 +0x2243 0x00a6 +0x2244 0x00bf +0x226b 0x00ba +0x226c 0x00aa +0x226d 0x00a9 +0x226e 0x00ae +0x226f 0x2122 +0x2270 0x00a4 +0x2271 0x2116 +0x2661 0x0386 +0x2662 0x0388 +0x2663 0x0389 +0x2664 0x038a +0x2665 0x03aa +0x2667 0x038c +0x2669 0x038e +0x266a 0x03ab +0x266c 0x038f +0x2671 0x03ac +0x2672 0x03ad +0x2673 0x03ae +0x2674 0x03af +0x2675 0x03ca +0x2676 0x0390 +0x2677 0x03cc +0x2678 0x03c2 +0x2679 0x03cd +0x267a 0x03cb +0x267b 0x03b0 +0x267c 0x03ce +0x2742 0x0402 +0x2743 0x0403 +0x2744 0x0404 +0x2745 0x0405 +0x2746 0x0406 +0x2747 0x0407 +0x2748 0x0408 +0x2749 0x0409 +0x274a 0x040a +0x274b 0x040b +0x274c 0x040c +0x274d 0x040e +0x274e 0x040f +0x2772 0x0452 +0x2773 0x0453 +0x2774 0x0454 +0x2775 0x0455 +0x2776 0x0456 +0x2777 0x0457 +0x2778 0x0458 +0x2779 0x0459 +0x277a 0x045a +0x277b 0x045b +0x277c 0x045c +0x277d 0x045e +0x277e 0x045f +0x2921 0x00c6 +0x2922 0x0110 +0x2924 0x0126 +0x2926 0x0132 +0x2928 0x0141 +0x2929 0x013f +0x292b 0x014a +0x292c 0x00d8 +0x292d 0x0152 +0x292f 0x0166 +0x2930 0x00de +0x2941 0x00e6 +0x2942 0x0111 +0x2943 0x00f0 +0x2944 0x0127 +0x2945 0x0131 +0x2946 0x0133 +0x2947 0x0138 +0x2948 0x0142 +0x2949 0x0140 +0x294a 0x0149 +0x294b 0x014b +0x294c 0x00f8 +0x294d 0x0153 +0x294e 0x00df +0x294f 0x0167 +0x2950 0x00fe +0x2a21 0x00c1 +0x2a22 0x00c0 +0x2a23 0x00c4 +0x2a24 0x00c2 +0x2a25 0x0102 +0x2a26 0x01cd +0x2a27 0x0100 +0x2a28 0x0104 +0x2a29 0x00c5 +0x2a2a 0x00c3 +0x2a2b 0x0106 +0x2a2c 0x0108 +0x2a2d 0x010c +0x2a2e 0x00c7 +0x2a2f 0x010a +0x2a30 0x010e +0x2a31 0x00c9 +0x2a32 0x00c8 +0x2a33 0x00cb +0x2a34 0x00ca +0x2a35 0x011a +0x2a36 0x0116 +0x2a37 0x0112 +0x2a38 0x0118 +0x2a3a 0x011c +0x2a3b 0x011e +0x2a3c 0x0122 +0x2a3d 0x0120 +0x2a3e 0x0124 +0x2a3f 0x00cd +0x2a40 0x00cc +0x2a41 0x00cf +0x2a42 0x00ce +0x2a43 0x01cf +0x2a44 0x0130 +0x2a45 0x012a +0x2a46 0x012e +0x2a47 0x0128 +0x2a48 0x0134 +0x2a49 0x0136 +0x2a4a 0x0139 +0x2a4b 0x013d +0x2a4c 0x013b +0x2a4d 0x0143 +0x2a4e 0x0147 +0x2a4f 0x0145 +0x2a50 0x00d1 +0x2a51 0x00d3 +0x2a52 0x00d2 +0x2a53 0x00d6 +0x2a54 0x00d4 +0x2a55 0x01d1 +0x2a56 0x0150 +0x2a57 0x014c +0x2a58 0x00d5 +0x2a59 0x0154 +0x2a5a 0x0158 +0x2a5b 0x0156 +0x2a5c 0x015a +0x2a5d 0x015c +0x2a5e 0x0160 +0x2a5f 0x015e +0x2a60 0x0164 +0x2a61 0x0162 +0x2a62 0x00da +0x2a63 0x00d9 +0x2a64 0x00dc +0x2a65 0x00db +0x2a66 0x016c +0x2a67 0x01d3 +0x2a68 0x0170 +0x2a69 0x016a +0x2a6a 0x0172 +0x2a6b 0x016e +0x2a6c 0x0168 +0x2a6d 0x01d7 +0x2a6e 0x01db +0x2a6f 0x01d9 +0x2a70 0x01d5 +0x2a71 0x0174 +0x2a72 0x00dd +0x2a73 0x0178 +0x2a74 0x0176 +0x2a75 0x0179 +0x2a76 0x017d +0x2a77 0x017b +0x2b21 0x00e1 +0x2b22 0x00e0 +0x2b23 0x00e4 +0x2b24 0x00e2 +0x2b25 0x0103 +0x2b26 0x01ce +0x2b27 0x0101 +0x2b28 0x0105 +0x2b29 0x00e5 +0x2b2a 0x00e3 +0x2b2b 0x0107 +0x2b2c 0x0109 +0x2b2d 0x010d +0x2b2e 0x00e7 +0x2b2f 0x010b +0x2b30 0x010f +0x2b31 0x00e9 +0x2b32 0x00e8 +0x2b33 0x00eb +0x2b34 0x00ea +0x2b35 0x011b +0x2b36 0x0117 +0x2b37 0x0113 +0x2b38 0x0119 +0x2b39 0x01f5 +0x2b3a 0x011d +0x2b3b 0x011f +0x2b3d 0x0121 +0x2b3e 0x0125 +0x2b3f 0x00ed +0x2b40 0x00ec +0x2b41 0x00ef +0x2b42 0x00ee +0x2b43 0x01d0 +0x2b45 0x012b +0x2b46 0x012f +0x2b47 0x0129 +0x2b48 0x0135 +0x2b49 0x0137 +0x2b4a 0x013a +0x2b4b 0x013e +0x2b4c 0x013c +0x2b4d 0x0144 +0x2b4e 0x0148 +0x2b4f 0x0146 +0x2b50 0x00f1 +0x2b51 0x00f3 +0x2b52 0x00f2 +0x2b53 0x00f6 +0x2b54 0x00f4 +0x2b55 0x01d2 +0x2b56 0x0151 +0x2b57 0x014d +0x2b58 0x00f5 +0x2b59 0x0155 +0x2b5a 0x0159 +0x2b5b 0x0157 +0x2b5c 0x015b +0x2b5d 0x015d +0x2b5e 0x0161 +0x2b5f 0x015f +0x2b60 0x0165 +0x2b61 0x0163 +0x2b62 0x00fa +0x2b63 0x00f9 +0x2b64 0x00fc +0x2b65 0x00fb +0x2b66 0x016d +0x2b67 0x01d4 +0x2b68 0x0171 +0x2b69 0x016b +0x2b6a 0x0173 +0x2b6b 0x016f +0x2b6c 0x0169 +0x2b6d 0x01d8 +0x2b6e 0x01dc +0x2b6f 0x01da +0x2b70 0x01d6 +0x2b71 0x0175 +0x2b72 0x00fd +0x2b73 0x00ff +0x2b74 0x0177 +0x2b75 0x017a +0x2b76 0x017e +0x2b77 0x017c +0x3021 0x4e02 +0x3022 0x4e04 +0x3023 0x4e05 +0x3024 0x4e0c +0x3025 0x4e12 +0x3026 0x4e1f +0x3027 0x4e23 +0x3028 0x4e24 +0x3029 0x4e28 +0x302a 0x4e2b +0x302b 0x4e2e +0x302c 0x4e2f +0x302d 0x4e30 +0x302e 0x4e35 +0x302f 0x4e40 +0x3030 0x4e41 +0x3031 0x4e44 +0x3032 0x4e47 +0x3033 0x4e51 +0x3034 0x4e5a +0x3035 0x4e5c +0x3036 0x4e63 +0x3037 0x4e68 +0x3038 0x4e69 +0x3039 0x4e74 +0x303a 0x4e75 +0x303b 0x4e79 +0x303c 0x4e7f +0x303d 0x4e8d +0x303e 0x4e96 +0x303f 0x4e97 +0x3040 0x4e9d +0x3041 0x4eaf +0x3042 0x4eb9 +0x3043 0x4ec3 +0x3044 0x4ed0 +0x3045 0x4eda +0x3046 0x4edb +0x3047 0x4ee0 +0x3048 0x4ee1 +0x3049 0x4ee2 +0x304a 0x4ee8 +0x304b 0x4eef +0x304c 0x4ef1 +0x304d 0x4ef3 +0x304e 0x4ef5 +0x304f 0x4efd +0x3050 0x4efe +0x3051 0x4eff +0x3052 0x4f00 +0x3053 0x4f02 +0x3054 0x4f03 +0x3055 0x4f08 +0x3056 0x4f0b +0x3057 0x4f0c +0x3058 0x4f12 +0x3059 0x4f15 +0x305a 0x4f16 +0x305b 0x4f17 +0x305c 0x4f19 +0x305d 0x4f2e +0x305e 0x4f31 +0x305f 0x4f60 +0x3060 0x4f33 +0x3061 0x4f35 +0x3062 0x4f37 +0x3063 0x4f39 +0x3064 0x4f3b +0x3065 0x4f3e +0x3066 0x4f40 +0x3067 0x4f42 +0x3068 0x4f48 +0x3069 0x4f49 +0x306a 0x4f4b +0x306b 0x4f4c +0x306c 0x4f52 +0x306d 0x4f54 +0x306e 0x4f56 +0x306f 0x4f58 +0x3070 0x4f5f +0x3071 0x4f63 +0x3072 0x4f6a +0x3073 0x4f6c +0x3074 0x4f6e +0x3075 0x4f71 +0x3076 0x4f77 +0x3077 0x4f78 +0x3078 0x4f79 +0x3079 0x4f7a +0x307a 0x4f7d +0x307b 0x4f7e +0x307c 0x4f81 +0x307d 0x4f82 +0x307e 0x4f84 +0x3121 0x4f85 +0x3122 0x4f89 +0x3123 0x4f8a +0x3124 0x4f8c +0x3125 0x4f8e +0x3126 0x4f90 +0x3127 0x4f92 +0x3128 0x4f93 +0x3129 0x4f94 +0x312a 0x4f97 +0x312b 0x4f99 +0x312c 0x4f9a +0x312d 0x4f9e +0x312e 0x4f9f +0x312f 0x4fb2 +0x3130 0x4fb7 +0x3131 0x4fb9 +0x3132 0x4fbb +0x3133 0x4fbc +0x3134 0x4fbd +0x3135 0x4fbe +0x3136 0x4fc0 +0x3137 0x4fc1 +0x3138 0x4fc5 +0x3139 0x4fc6 +0x313a 0x4fc8 +0x313b 0x4fc9 +0x313c 0x4fcb +0x313d 0x4fcc +0x313e 0x4fcd +0x313f 0x4fcf +0x3140 0x4fd2 +0x3141 0x4fdc +0x3142 0x4fe0 +0x3143 0x4fe2 +0x3144 0x4ff0 +0x3145 0x4ff2 +0x3146 0x4ffc +0x3147 0x4ffd +0x3148 0x4fff +0x3149 0x5000 +0x314a 0x5001 +0x314b 0x5004 +0x314c 0x5007 +0x314d 0x500a +0x314e 0x500c +0x314f 0x500e +0x3150 0x5010 +0x3151 0x5013 +0x3152 0x5017 +0x3153 0x5018 +0x3154 0x501b +0x3155 0x501c +0x3156 0x501d +0x3157 0x501e +0x3158 0x5022 +0x3159 0x5027 +0x315a 0x502e +0x315b 0x5030 +0x315c 0x5032 +0x315d 0x5033 +0x315e 0x5035 +0x315f 0x5040 +0x3160 0x5041 +0x3161 0x5042 +0x3162 0x5045 +0x3163 0x5046 +0x3164 0x504a +0x3165 0x504c +0x3166 0x504e +0x3167 0x5051 +0x3168 0x5052 +0x3169 0x5053 +0x316a 0x5057 +0x316b 0x5059 +0x316c 0x505f +0x316d 0x5060 +0x316e 0x5062 +0x316f 0x5063 +0x3170 0x5066 +0x3171 0x5067 +0x3172 0x506a +0x3173 0x506d +0x3174 0x5070 +0x3175 0x5071 +0x3176 0x503b +0x3177 0x5081 +0x3178 0x5083 +0x3179 0x5084 +0x317a 0x5086 +0x317b 0x508a +0x317c 0x508e +0x317d 0x508f +0x317e 0x5090 +0x3221 0x5092 +0x3222 0x5093 +0x3223 0x5094 +0x3224 0x5096 +0x3225 0x509b +0x3226 0x509c +0x3227 0x509e +0x3228 0x509f +0x3229 0x50a0 +0x322a 0x50a1 +0x322b 0x50a2 +0x322c 0x50aa +0x322d 0x50af +0x322e 0x50b0 +0x322f 0x50b9 +0x3230 0x50ba +0x3231 0x50bd +0x3232 0x50c0 +0x3233 0x50c3 +0x3234 0x50c4 +0x3235 0x50c7 +0x3236 0x50cc +0x3237 0x50ce +0x3238 0x50d0 +0x3239 0x50d3 +0x323a 0x50d4 +0x323b 0x50d8 +0x323c 0x50dc +0x323d 0x50dd +0x323e 0x50df +0x323f 0x50e2 +0x3240 0x50e4 +0x3241 0x50e6 +0x3242 0x50e8 +0x3243 0x50e9 +0x3244 0x50ef +0x3245 0x50f1 +0x3246 0x50f6 +0x3247 0x50fa +0x3248 0x50fe +0x3249 0x5103 +0x324a 0x5106 +0x324b 0x5107 +0x324c 0x5108 +0x324d 0x510b +0x324e 0x510c +0x324f 0x510d +0x3250 0x510e +0x3251 0x50f2 +0x3252 0x5110 +0x3253 0x5117 +0x3254 0x5119 +0x3255 0x511b +0x3256 0x511c +0x3257 0x511d +0x3258 0x511e +0x3259 0x5123 +0x325a 0x5127 +0x325b 0x5128 +0x325c 0x512c +0x325d 0x512d +0x325e 0x512f +0x325f 0x5131 +0x3260 0x5133 +0x3261 0x5134 +0x3262 0x5135 +0x3263 0x5138 +0x3264 0x5139 +0x3265 0x5142 +0x3266 0x514a +0x3267 0x514f +0x3268 0x5153 +0x3269 0x5155 +0x326a 0x5157 +0x326b 0x5158 +0x326c 0x515f +0x326d 0x5164 +0x326e 0x5166 +0x326f 0x517e +0x3270 0x5183 +0x3271 0x5184 +0x3272 0x518b +0x3273 0x518e +0x3274 0x5198 +0x3275 0x519d +0x3276 0x51a1 +0x3277 0x51a3 +0x3278 0x51ad +0x3279 0x51b8 +0x327a 0x51ba +0x327b 0x51bc +0x327c 0x51be +0x327d 0x51bf +0x327e 0x51c2 +0x3321 0x51c8 +0x3322 0x51cf +0x3323 0x51d1 +0x3324 0x51d2 +0x3325 0x51d3 +0x3326 0x51d5 +0x3327 0x51d8 +0x3328 0x51de +0x3329 0x51e2 +0x332a 0x51e5 +0x332b 0x51ee +0x332c 0x51f2 +0x332d 0x51f3 +0x332e 0x51f4 +0x332f 0x51f7 +0x3330 0x5201 +0x3331 0x5202 +0x3332 0x5205 +0x3333 0x5212 +0x3334 0x5213 +0x3335 0x5215 +0x3336 0x5216 +0x3337 0x5218 +0x3338 0x5222 +0x3339 0x5228 +0x333a 0x5231 +0x333b 0x5232 +0x333c 0x5235 +0x333d 0x523c +0x333e 0x5245 +0x333f 0x5249 +0x3340 0x5255 +0x3341 0x5257 +0x3342 0x5258 +0x3343 0x525a +0x3344 0x525c +0x3345 0x525f +0x3346 0x5260 +0x3347 0x5261 +0x3348 0x5266 +0x3349 0x526e +0x334a 0x5277 +0x334b 0x5278 +0x334c 0x5279 +0x334d 0x5280 +0x334e 0x5282 +0x334f 0x5285 +0x3350 0x528a +0x3351 0x528c +0x3352 0x5293 +0x3353 0x5295 +0x3354 0x5296 +0x3355 0x5297 +0x3356 0x5298 +0x3357 0x529a +0x3358 0x529c +0x3359 0x52a4 +0x335a 0x52a5 +0x335b 0x52a6 +0x335c 0x52a7 +0x335d 0x52af +0x335e 0x52b0 +0x335f 0x52b6 +0x3360 0x52b7 +0x3361 0x52b8 +0x3362 0x52ba +0x3363 0x52bb +0x3364 0x52bd +0x3365 0x52c0 +0x3366 0x52c4 +0x3367 0x52c6 +0x3368 0x52c8 +0x3369 0x52cc +0x336a 0x52cf +0x336b 0x52d1 +0x336c 0x52d4 +0x336d 0x52d6 +0x336e 0x52db +0x336f 0x52dc +0x3370 0x52e1 +0x3371 0x52e5 +0x3372 0x52e8 +0x3373 0x52e9 +0x3374 0x52ea +0x3375 0x52ec +0x3376 0x52f0 +0x3377 0x52f1 +0x3378 0x52f4 +0x3379 0x52f6 +0x337a 0x52f7 +0x337b 0x5300 +0x337c 0x5303 +0x337d 0x530a +0x337e 0x530b +0x3421 0x530c +0x3422 0x5311 +0x3423 0x5313 +0x3424 0x5318 +0x3425 0x531b +0x3426 0x531c +0x3427 0x531e +0x3428 0x531f +0x3429 0x5325 +0x342a 0x5327 +0x342b 0x5328 +0x342c 0x5329 +0x342d 0x532b +0x342e 0x532c +0x342f 0x532d +0x3430 0x5330 +0x3431 0x5332 +0x3432 0x5335 +0x3433 0x533c +0x3434 0x533d +0x3435 0x533e +0x3436 0x5342 +0x3437 0x534c +0x3438 0x534b +0x3439 0x5359 +0x343a 0x535b +0x343b 0x5361 +0x343c 0x5363 +0x343d 0x5365 +0x343e 0x536c +0x343f 0x536d +0x3440 0x5372 +0x3441 0x5379 +0x3442 0x537e +0x3443 0x5383 +0x3444 0x5387 +0x3445 0x5388 +0x3446 0x538e +0x3447 0x5393 +0x3448 0x5394 +0x3449 0x5399 +0x344a 0x539d +0x344b 0x53a1 +0x344c 0x53a4 +0x344d 0x53aa +0x344e 0x53ab +0x344f 0x53af +0x3450 0x53b2 +0x3451 0x53b4 +0x3452 0x53b5 +0x3453 0x53b7 +0x3454 0x53b8 +0x3455 0x53ba +0x3456 0x53bd +0x3457 0x53c0 +0x3458 0x53c5 +0x3459 0x53cf +0x345a 0x53d2 +0x345b 0x53d3 +0x345c 0x53d5 +0x345d 0x53da +0x345e 0x53dd +0x345f 0x53de +0x3460 0x53e0 +0x3461 0x53e6 +0x3462 0x53e7 +0x3463 0x53f5 +0x3464 0x5402 +0x3465 0x5413 +0x3466 0x541a +0x3467 0x5421 +0x3468 0x5427 +0x3469 0x5428 +0x346a 0x542a +0x346b 0x542f +0x346c 0x5431 +0x346d 0x5434 +0x346e 0x5435 +0x346f 0x5443 +0x3470 0x5444 +0x3471 0x5447 +0x3472 0x544d +0x3473 0x544f +0x3474 0x545e +0x3475 0x5462 +0x3476 0x5464 +0x3477 0x5466 +0x3478 0x5467 +0x3479 0x5469 +0x347a 0x546b +0x347b 0x546d +0x347c 0x546e +0x347d 0x5474 +0x347e 0x547f +0x3521 0x5481 +0x3522 0x5483 +0x3523 0x5485 +0x3524 0x5488 +0x3525 0x5489 +0x3526 0x548d +0x3527 0x5491 +0x3528 0x5495 +0x3529 0x5496 +0x352a 0x549c +0x352b 0x549f +0x352c 0x54a1 +0x352d 0x54a6 +0x352e 0x54a7 +0x352f 0x54a9 +0x3530 0x54aa +0x3531 0x54ad +0x3532 0x54ae +0x3533 0x54b1 +0x3534 0x54b7 +0x3535 0x54b9 +0x3536 0x54ba +0x3537 0x54bb +0x3538 0x54bf +0x3539 0x54c6 +0x353a 0x54ca +0x353b 0x54cd +0x353c 0x54ce +0x353d 0x54e0 +0x353e 0x54ea +0x353f 0x54ec +0x3540 0x54ef +0x3541 0x54f6 +0x3542 0x54fc +0x3543 0x54fe +0x3544 0x54ff +0x3545 0x5500 +0x3546 0x5501 +0x3547 0x5505 +0x3548 0x5508 +0x3549 0x5509 +0x354a 0x550c +0x354b 0x550d +0x354c 0x550e +0x354d 0x5515 +0x354e 0x552a +0x354f 0x552b +0x3550 0x5532 +0x3551 0x5535 +0x3552 0x5536 +0x3553 0x553b +0x3554 0x553c +0x3555 0x553d +0x3556 0x5541 +0x3557 0x5547 +0x3558 0x5549 +0x3559 0x554a +0x355a 0x554d +0x355b 0x5550 +0x355c 0x5551 +0x355d 0x5558 +0x355e 0x555a +0x355f 0x555b +0x3560 0x555e +0x3561 0x5560 +0x3562 0x5561 +0x3563 0x5564 +0x3564 0x5566 +0x3565 0x557f +0x3566 0x5581 +0x3567 0x5582 +0x3568 0x5586 +0x3569 0x5588 +0x356a 0x558e +0x356b 0x558f +0x356c 0x5591 +0x356d 0x5592 +0x356e 0x5593 +0x356f 0x5594 +0x3570 0x5597 +0x3571 0x55a3 +0x3572 0x55a4 +0x3573 0x55ad +0x3574 0x55b2 +0x3575 0x55bf +0x3576 0x55c1 +0x3577 0x55c3 +0x3578 0x55c6 +0x3579 0x55c9 +0x357a 0x55cb +0x357b 0x55cc +0x357c 0x55ce +0x357d 0x55d1 +0x357e 0x55d2 +0x3621 0x55d3 +0x3622 0x55d7 +0x3623 0x55d8 +0x3624 0x55db +0x3625 0x55de +0x3626 0x55e2 +0x3627 0x55e9 +0x3628 0x55f6 +0x3629 0x55ff +0x362a 0x5605 +0x362b 0x5608 +0x362c 0x560a +0x362d 0x560d +0x362e 0x560e +0x362f 0x560f +0x3630 0x5610 +0x3631 0x5611 +0x3632 0x5612 +0x3633 0x5619 +0x3634 0x562c +0x3635 0x5630 +0x3636 0x5633 +0x3637 0x5635 +0x3638 0x5637 +0x3639 0x5639 +0x363a 0x563b +0x363b 0x563c +0x363c 0x563d +0x363d 0x563f +0x363e 0x5640 +0x363f 0x5641 +0x3640 0x5643 +0x3641 0x5644 +0x3642 0x5646 +0x3643 0x5649 +0x3644 0x564b +0x3645 0x564d +0x3646 0x564f +0x3647 0x5654 +0x3648 0x565e +0x3649 0x5660 +0x364a 0x5661 +0x364b 0x5662 +0x364c 0x5663 +0x364d 0x5666 +0x364e 0x5669 +0x364f 0x566d +0x3650 0x566f +0x3651 0x5671 +0x3652 0x5672 +0x3653 0x5675 +0x3654 0x5684 +0x3655 0x5685 +0x3656 0x5688 +0x3657 0x568b +0x3658 0x568c +0x3659 0x5695 +0x365a 0x5699 +0x365b 0x569a +0x365c 0x569d +0x365d 0x569e +0x365e 0x569f +0x365f 0x56a6 +0x3660 0x56a7 +0x3661 0x56a8 +0x3662 0x56a9 +0x3663 0x56ab +0x3664 0x56ac +0x3665 0x56ad +0x3666 0x56b1 +0x3667 0x56b3 +0x3668 0x56b7 +0x3669 0x56be +0x366a 0x56c5 +0x366b 0x56c9 +0x366c 0x56ca +0x366d 0x56cb +0x366e 0x56cf +0x366f 0x56d0 +0x3670 0x56cc +0x3671 0x56cd +0x3672 0x56d9 +0x3673 0x56dc +0x3674 0x56dd +0x3675 0x56df +0x3676 0x56e1 +0x3677 0x56e4 +0x3678 0x56e5 +0x3679 0x56e6 +0x367a 0x56e7 +0x367b 0x56e8 +0x367c 0x56f1 +0x367d 0x56eb +0x367e 0x56ed +0x3721 0x56f6 +0x3722 0x56f7 +0x3723 0x5701 +0x3724 0x5702 +0x3725 0x5707 +0x3726 0x570a +0x3727 0x570c +0x3728 0x5711 +0x3729 0x5715 +0x372a 0x571a +0x372b 0x571b +0x372c 0x571d +0x372d 0x5720 +0x372e 0x5722 +0x372f 0x5723 +0x3730 0x5724 +0x3731 0x5725 +0x3732 0x5729 +0x3733 0x572a +0x3734 0x572c +0x3735 0x572e +0x3736 0x572f +0x3737 0x5733 +0x3738 0x5734 +0x3739 0x573d +0x373a 0x573e +0x373b 0x573f +0x373c 0x5745 +0x373d 0x5746 +0x373e 0x574c +0x373f 0x574d +0x3740 0x5752 +0x3741 0x5762 +0x3742 0x5765 +0x3743 0x5767 +0x3744 0x5768 +0x3745 0x576b +0x3746 0x576d +0x3747 0x576e +0x3748 0x576f +0x3749 0x5770 +0x374a 0x5771 +0x374b 0x5773 +0x374c 0x5774 +0x374d 0x5775 +0x374e 0x5777 +0x374f 0x5779 +0x3750 0x577a +0x3751 0x577b +0x3752 0x577c +0x3753 0x577e +0x3754 0x5781 +0x3755 0x5783 +0x3756 0x578c +0x3757 0x5794 +0x3758 0x5797 +0x3759 0x5799 +0x375a 0x579a +0x375b 0x579c +0x375c 0x579d +0x375d 0x579e +0x375e 0x579f +0x375f 0x57a1 +0x3760 0x5795 +0x3761 0x57a7 +0x3762 0x57a8 +0x3763 0x57a9 +0x3764 0x57ac +0x3765 0x57b8 +0x3766 0x57bd +0x3767 0x57c7 +0x3768 0x57c8 +0x3769 0x57cc +0x376a 0x57cf +0x376b 0x57d5 +0x376c 0x57dd +0x376d 0x57de +0x376e 0x57e4 +0x376f 0x57e6 +0x3770 0x57e7 +0x3771 0x57e9 +0x3772 0x57ed +0x3773 0x57f0 +0x3774 0x57f5 +0x3775 0x57f6 +0x3776 0x57f8 +0x3777 0x57fd +0x3778 0x57fe +0x3779 0x57ff +0x377a 0x5803 +0x377b 0x5804 +0x377c 0x5808 +0x377d 0x5809 +0x377e 0x57e1 +0x3821 0x580c +0x3822 0x580d +0x3823 0x581b +0x3824 0x581e +0x3825 0x581f +0x3826 0x5820 +0x3827 0x5826 +0x3828 0x5827 +0x3829 0x582d +0x382a 0x5832 +0x382b 0x5839 +0x382c 0x583f +0x382d 0x5849 +0x382e 0x584c +0x382f 0x584d +0x3830 0x584f +0x3831 0x5850 +0x3832 0x5855 +0x3833 0x585f +0x3834 0x5861 +0x3835 0x5864 +0x3836 0x5867 +0x3837 0x5868 +0x3838 0x5878 +0x3839 0x587c +0x383a 0x587f +0x383b 0x5880 +0x383c 0x5881 +0x383d 0x5887 +0x383e 0x5888 +0x383f 0x5889 +0x3840 0x588a +0x3841 0x588c +0x3842 0x588d +0x3843 0x588f +0x3844 0x5890 +0x3845 0x5894 +0x3846 0x5896 +0x3847 0x589d +0x3848 0x58a0 +0x3849 0x58a1 +0x384a 0x58a2 +0x384b 0x58a6 +0x384c 0x58a9 +0x384d 0x58b1 +0x384e 0x58b2 +0x384f 0x58c4 +0x3850 0x58bc +0x3851 0x58c2 +0x3852 0x58c8 +0x3853 0x58cd +0x3854 0x58ce +0x3855 0x58d0 +0x3856 0x58d2 +0x3857 0x58d4 +0x3858 0x58d6 +0x3859 0x58da +0x385a 0x58dd +0x385b 0x58e1 +0x385c 0x58e2 +0x385d 0x58e9 +0x385e 0x58f3 +0x385f 0x5905 +0x3860 0x5906 +0x3861 0x590b +0x3862 0x590c +0x3863 0x5912 +0x3864 0x5913 +0x3865 0x5914 +0x3866 0x8641 +0x3867 0x591d +0x3868 0x5921 +0x3869 0x5923 +0x386a 0x5924 +0x386b 0x5928 +0x386c 0x592f +0x386d 0x5930 +0x386e 0x5933 +0x386f 0x5935 +0x3870 0x5936 +0x3871 0x593f +0x3872 0x5943 +0x3873 0x5946 +0x3874 0x5952 +0x3875 0x5953 +0x3876 0x5959 +0x3877 0x595b +0x3878 0x595d +0x3879 0x595e +0x387a 0x595f +0x387b 0x5961 +0x387c 0x5963 +0x387d 0x596b +0x387e 0x596d +0x3921 0x596f +0x3922 0x5972 +0x3923 0x5975 +0x3924 0x5976 +0x3925 0x5979 +0x3926 0x597b +0x3927 0x597c +0x3928 0x598b +0x3929 0x598c +0x392a 0x598e +0x392b 0x5992 +0x392c 0x5995 +0x392d 0x5997 +0x392e 0x599f +0x392f 0x59a4 +0x3930 0x59a7 +0x3931 0x59ad +0x3932 0x59ae +0x3933 0x59af +0x3934 0x59b0 +0x3935 0x59b3 +0x3936 0x59b7 +0x3937 0x59ba +0x3938 0x59bc +0x3939 0x59c1 +0x393a 0x59c3 +0x393b 0x59c4 +0x393c 0x59c8 +0x393d 0x59ca +0x393e 0x59cd +0x393f 0x59d2 +0x3940 0x59dd +0x3941 0x59de +0x3942 0x59df +0x3943 0x59e3 +0x3944 0x59e4 +0x3945 0x59e7 +0x3946 0x59ee +0x3947 0x59ef +0x3948 0x59f1 +0x3949 0x59f2 +0x394a 0x59f4 +0x394b 0x59f7 +0x394c 0x5a00 +0x394d 0x5a04 +0x394e 0x5a0c +0x394f 0x5a0d +0x3950 0x5a0e +0x3951 0x5a12 +0x3952 0x5a13 +0x3953 0x5a1e +0x3954 0x5a23 +0x3955 0x5a24 +0x3956 0x5a27 +0x3957 0x5a28 +0x3958 0x5a2a +0x3959 0x5a2d +0x395a 0x5a30 +0x395b 0x5a44 +0x395c 0x5a45 +0x395d 0x5a47 +0x395e 0x5a48 +0x395f 0x5a4c +0x3960 0x5a50 +0x3961 0x5a55 +0x3962 0x5a5e +0x3963 0x5a63 +0x3964 0x5a65 +0x3965 0x5a67 +0x3966 0x5a6d +0x3967 0x5a77 +0x3968 0x5a7a +0x3969 0x5a7b +0x396a 0x5a7e +0x396b 0x5a8b +0x396c 0x5a90 +0x396d 0x5a93 +0x396e 0x5a96 +0x396f 0x5a99 +0x3970 0x5a9c +0x3971 0x5a9e +0x3972 0x5a9f +0x3973 0x5aa0 +0x3974 0x5aa2 +0x3975 0x5aa7 +0x3976 0x5aac +0x3977 0x5ab1 +0x3978 0x5ab2 +0x3979 0x5ab3 +0x397a 0x5ab5 +0x397b 0x5ab8 +0x397c 0x5aba +0x397d 0x5abb +0x397e 0x5abf +0x3a21 0x5ac4 +0x3a22 0x5ac6 +0x3a23 0x5ac8 +0x3a24 0x5acf +0x3a25 0x5ada +0x3a26 0x5adc +0x3a27 0x5ae0 +0x3a28 0x5ae5 +0x3a29 0x5aea +0x3a2a 0x5aee +0x3a2b 0x5af5 +0x3a2c 0x5af6 +0x3a2d 0x5afd +0x3a2e 0x5b00 +0x3a2f 0x5b01 +0x3a30 0x5b08 +0x3a31 0x5b17 +0x3a32 0x5b34 +0x3a33 0x5b19 +0x3a34 0x5b1b +0x3a35 0x5b1d +0x3a36 0x5b21 +0x3a37 0x5b25 +0x3a38 0x5b2d +0x3a39 0x5b38 +0x3a3a 0x5b41 +0x3a3b 0x5b4b +0x3a3c 0x5b4c +0x3a3d 0x5b52 +0x3a3e 0x5b56 +0x3a3f 0x5b5e +0x3a40 0x5b68 +0x3a41 0x5b6e +0x3a42 0x5b6f +0x3a43 0x5b7c +0x3a44 0x5b7d +0x3a45 0x5b7e +0x3a46 0x5b7f +0x3a47 0x5b81 +0x3a48 0x5b84 +0x3a49 0x5b86 +0x3a4a 0x5b8a +0x3a4b 0x5b8e +0x3a4c 0x5b90 +0x3a4d 0x5b91 +0x3a4e 0x5b93 +0x3a4f 0x5b94 +0x3a50 0x5b96 +0x3a51 0x5ba8 +0x3a52 0x5ba9 +0x3a53 0x5bac +0x3a54 0x5bad +0x3a55 0x5baf +0x3a56 0x5bb1 +0x3a57 0x5bb2 +0x3a58 0x5bb7 +0x3a59 0x5bba +0x3a5a 0x5bbc +0x3a5b 0x5bc0 +0x3a5c 0x5bc1 +0x3a5d 0x5bcd +0x3a5e 0x5bcf +0x3a5f 0x5bd6 +0x3a60 0x5bd7 +0x3a61 0x5bd8 +0x3a62 0x5bd9 +0x3a63 0x5bda +0x3a64 0x5be0 +0x3a65 0x5bef +0x3a66 0x5bf1 +0x3a67 0x5bf4 +0x3a68 0x5bfd +0x3a69 0x5c0c +0x3a6a 0x5c17 +0x3a6b 0x5c1e +0x3a6c 0x5c1f +0x3a6d 0x5c23 +0x3a6e 0x5c26 +0x3a6f 0x5c29 +0x3a70 0x5c2b +0x3a71 0x5c2c +0x3a72 0x5c2e +0x3a73 0x5c30 +0x3a74 0x5c32 +0x3a75 0x5c35 +0x3a76 0x5c36 +0x3a77 0x5c59 +0x3a78 0x5c5a +0x3a79 0x5c5c +0x3a7a 0x5c62 +0x3a7b 0x5c63 +0x3a7c 0x5c67 +0x3a7d 0x5c68 +0x3a7e 0x5c69 +0x3b21 0x5c6d +0x3b22 0x5c70 +0x3b23 0x5c74 +0x3b24 0x5c75 +0x3b25 0x5c7a +0x3b26 0x5c7b +0x3b27 0x5c7c +0x3b28 0x5c7d +0x3b29 0x5c87 +0x3b2a 0x5c88 +0x3b2b 0x5c8a +0x3b2c 0x5c8f +0x3b2d 0x5c92 +0x3b2e 0x5c9d +0x3b2f 0x5c9f +0x3b30 0x5ca0 +0x3b31 0x5ca2 +0x3b32 0x5ca3 +0x3b33 0x5ca6 +0x3b34 0x5caa +0x3b35 0x5cb2 +0x3b36 0x5cb4 +0x3b37 0x5cb5 +0x3b38 0x5cba +0x3b39 0x5cc9 +0x3b3a 0x5ccb +0x3b3b 0x5cd2 +0x3b3c 0x5cdd +0x3b3d 0x5cd7 +0x3b3e 0x5cee +0x3b3f 0x5cf1 +0x3b40 0x5cf2 +0x3b41 0x5cf4 +0x3b42 0x5d01 +0x3b43 0x5d06 +0x3b44 0x5d0d +0x3b45 0x5d12 +0x3b46 0x5d2b +0x3b47 0x5d23 +0x3b48 0x5d24 +0x3b49 0x5d26 +0x3b4a 0x5d27 +0x3b4b 0x5d31 +0x3b4c 0x5d34 +0x3b4d 0x5d39 +0x3b4e 0x5d3d +0x3b4f 0x5d3f +0x3b50 0x5d42 +0x3b51 0x5d43 +0x3b52 0x5d46 +0x3b53 0x5d48 +0x3b54 0x5d55 +0x3b55 0x5d51 +0x3b56 0x5d59 +0x3b57 0x5d4a +0x3b58 0x5d5f +0x3b59 0x5d60 +0x3b5a 0x5d61 +0x3b5b 0x5d62 +0x3b5c 0x5d64 +0x3b5d 0x5d6a +0x3b5e 0x5d6d +0x3b5f 0x5d70 +0x3b60 0x5d79 +0x3b61 0x5d7a +0x3b62 0x5d7e +0x3b63 0x5d7f +0x3b64 0x5d81 +0x3b65 0x5d83 +0x3b66 0x5d88 +0x3b67 0x5d8a +0x3b68 0x5d92 +0x3b69 0x5d93 +0x3b6a 0x5d94 +0x3b6b 0x5d95 +0x3b6c 0x5d99 +0x3b6d 0x5d9b +0x3b6e 0x5d9f +0x3b6f 0x5da0 +0x3b70 0x5da7 +0x3b71 0x5dab +0x3b72 0x5db0 +0x3b73 0x5db4 +0x3b74 0x5db8 +0x3b75 0x5db9 +0x3b76 0x5dc3 +0x3b77 0x5dc7 +0x3b78 0x5dcb +0x3b79 0x5dd0 +0x3b7a 0x5dce +0x3b7b 0x5dd8 +0x3b7c 0x5dd9 +0x3b7d 0x5de0 +0x3b7e 0x5de4 +0x3c21 0x5de9 +0x3c22 0x5df8 +0x3c23 0x5df9 +0x3c24 0x5e00 +0x3c25 0x5e07 +0x3c26 0x5e0d +0x3c27 0x5e12 +0x3c28 0x5e14 +0x3c29 0x5e15 +0x3c2a 0x5e18 +0x3c2b 0x5e1f +0x3c2c 0x5e20 +0x3c2d 0x5e2e +0x3c2e 0x5e28 +0x3c2f 0x5e32 +0x3c30 0x5e35 +0x3c31 0x5e3e +0x3c32 0x5e4b +0x3c33 0x5e50 +0x3c34 0x5e49 +0x3c35 0x5e51 +0x3c36 0x5e56 +0x3c37 0x5e58 +0x3c38 0x5e5b +0x3c39 0x5e5c +0x3c3a 0x5e5e +0x3c3b 0x5e68 +0x3c3c 0x5e6a +0x3c3d 0x5e6b +0x3c3e 0x5e6c +0x3c3f 0x5e6d +0x3c40 0x5e6e +0x3c41 0x5e70 +0x3c42 0x5e80 +0x3c43 0x5e8b +0x3c44 0x5e8e +0x3c45 0x5ea2 +0x3c46 0x5ea4 +0x3c47 0x5ea5 +0x3c48 0x5ea8 +0x3c49 0x5eaa +0x3c4a 0x5eac +0x3c4b 0x5eb1 +0x3c4c 0x5eb3 +0x3c4d 0x5ebd +0x3c4e 0x5ebe +0x3c4f 0x5ebf +0x3c50 0x5ec6 +0x3c51 0x5ecc +0x3c52 0x5ecb +0x3c53 0x5ece +0x3c54 0x5ed1 +0x3c55 0x5ed2 +0x3c56 0x5ed4 +0x3c57 0x5ed5 +0x3c58 0x5edc +0x3c59 0x5ede +0x3c5a 0x5ee5 +0x3c5b 0x5eeb +0x3c5c 0x5f02 +0x3c5d 0x5f06 +0x3c5e 0x5f07 +0x3c5f 0x5f08 +0x3c60 0x5f0e +0x3c61 0x5f19 +0x3c62 0x5f1c +0x3c63 0x5f1d +0x3c64 0x5f21 +0x3c65 0x5f22 +0x3c66 0x5f23 +0x3c67 0x5f24 +0x3c68 0x5f28 +0x3c69 0x5f2b +0x3c6a 0x5f2c +0x3c6b 0x5f2e +0x3c6c 0x5f30 +0x3c6d 0x5f34 +0x3c6e 0x5f36 +0x3c6f 0x5f3b +0x3c70 0x5f3d +0x3c71 0x5f3f +0x3c72 0x5f40 +0x3c73 0x5f44 +0x3c74 0x5f45 +0x3c75 0x5f47 +0x3c76 0x5f4d +0x3c77 0x5f50 +0x3c78 0x5f54 +0x3c79 0x5f58 +0x3c7a 0x5f5b +0x3c7b 0x5f60 +0x3c7c 0x5f63 +0x3c7d 0x5f64 +0x3c7e 0x5f67 +0x3d21 0x5f6f +0x3d22 0x5f72 +0x3d23 0x5f74 +0x3d24 0x5f75 +0x3d25 0x5f78 +0x3d26 0x5f7a +0x3d27 0x5f7d +0x3d28 0x5f7e +0x3d29 0x5f89 +0x3d2a 0x5f8d +0x3d2b 0x5f8f +0x3d2c 0x5f96 +0x3d2d 0x5f9c +0x3d2e 0x5f9d +0x3d2f 0x5fa2 +0x3d30 0x5fa7 +0x3d31 0x5fab +0x3d32 0x5fa4 +0x3d33 0x5fac +0x3d34 0x5faf +0x3d35 0x5fb0 +0x3d36 0x5fb1 +0x3d37 0x5fb8 +0x3d38 0x5fc4 +0x3d39 0x5fc7 +0x3d3a 0x5fc8 +0x3d3b 0x5fc9 +0x3d3c 0x5fcb +0x3d3d 0x5fd0 +0x3d3e 0x5fd1 +0x3d3f 0x5fd2 +0x3d40 0x5fd3 +0x3d41 0x5fd4 +0x3d42 0x5fde +0x3d43 0x5fe1 +0x3d44 0x5fe2 +0x3d45 0x5fe8 +0x3d46 0x5fe9 +0x3d47 0x5fea +0x3d48 0x5fec +0x3d49 0x5fed +0x3d4a 0x5fee +0x3d4b 0x5fef +0x3d4c 0x5ff2 +0x3d4d 0x5ff3 +0x3d4e 0x5ff6 +0x3d4f 0x5ffa +0x3d50 0x5ffc +0x3d51 0x6007 +0x3d52 0x600a +0x3d53 0x600d +0x3d54 0x6013 +0x3d55 0x6014 +0x3d56 0x6017 +0x3d57 0x6018 +0x3d58 0x601a +0x3d59 0x601f +0x3d5a 0x6024 +0x3d5b 0x602d +0x3d5c 0x6033 +0x3d5d 0x6035 +0x3d5e 0x6040 +0x3d5f 0x6047 +0x3d60 0x6048 +0x3d61 0x6049 +0x3d62 0x604c +0x3d63 0x6051 +0x3d64 0x6054 +0x3d65 0x6056 +0x3d66 0x6057 +0x3d67 0x605d +0x3d68 0x6061 +0x3d69 0x6067 +0x3d6a 0x6071 +0x3d6b 0x607e +0x3d6c 0x607f +0x3d6d 0x6082 +0x3d6e 0x6086 +0x3d6f 0x6088 +0x3d70 0x608a +0x3d71 0x608e +0x3d72 0x6091 +0x3d73 0x6093 +0x3d74 0x6095 +0x3d75 0x6098 +0x3d76 0x609d +0x3d77 0x609e +0x3d78 0x60a2 +0x3d79 0x60a4 +0x3d7a 0x60a5 +0x3d7b 0x60a8 +0x3d7c 0x60b0 +0x3d7d 0x60b1 +0x3d7e 0x60b7 +0x3e21 0x60bb +0x3e22 0x60be +0x3e23 0x60c2 +0x3e24 0x60c4 +0x3e25 0x60c8 +0x3e26 0x60c9 +0x3e27 0x60ca +0x3e28 0x60cb +0x3e29 0x60ce +0x3e2a 0x60cf +0x3e2b 0x60d4 +0x3e2c 0x60d5 +0x3e2d 0x60d9 +0x3e2e 0x60db +0x3e2f 0x60dd +0x3e30 0x60de +0x3e31 0x60e2 +0x3e32 0x60e5 +0x3e33 0x60f2 +0x3e34 0x60f5 +0x3e35 0x60f8 +0x3e36 0x60fc +0x3e37 0x60fd +0x3e38 0x6102 +0x3e39 0x6107 +0x3e3a 0x610a +0x3e3b 0x610c +0x3e3c 0x6110 +0x3e3d 0x6111 +0x3e3e 0x6112 +0x3e3f 0x6113 +0x3e40 0x6114 +0x3e41 0x6116 +0x3e42 0x6117 +0x3e43 0x6119 +0x3e44 0x611c +0x3e45 0x611e +0x3e46 0x6122 +0x3e47 0x612a +0x3e48 0x612b +0x3e49 0x6130 +0x3e4a 0x6131 +0x3e4b 0x6135 +0x3e4c 0x6136 +0x3e4d 0x6137 +0x3e4e 0x6139 +0x3e4f 0x6141 +0x3e50 0x6145 +0x3e51 0x6146 +0x3e52 0x6149 +0x3e53 0x615e +0x3e54 0x6160 +0x3e55 0x616c +0x3e56 0x6172 +0x3e57 0x6178 +0x3e58 0x617b +0x3e59 0x617c +0x3e5a 0x617f +0x3e5b 0x6180 +0x3e5c 0x6181 +0x3e5d 0x6183 +0x3e5e 0x6184 +0x3e5f 0x618b +0x3e60 0x618d +0x3e61 0x6192 +0x3e62 0x6193 +0x3e63 0x6197 +0x3e64 0x6198 +0x3e65 0x619c +0x3e66 0x619d +0x3e67 0x619f +0x3e68 0x61a0 +0x3e69 0x61a5 +0x3e6a 0x61a8 +0x3e6b 0x61aa +0x3e6c 0x61ad +0x3e6d 0x61b8 +0x3e6e 0x61b9 +0x3e6f 0x61bc +0x3e70 0x61c0 +0x3e71 0x61c1 +0x3e72 0x61c2 +0x3e73 0x61ce +0x3e74 0x61cf +0x3e75 0x61d5 +0x3e76 0x61dc +0x3e77 0x61dd +0x3e78 0x61de +0x3e79 0x61df +0x3e7a 0x61e1 +0x3e7b 0x61e2 +0x3e7c 0x61e7 +0x3e7d 0x61e9 +0x3e7e 0x61e5 +0x3f21 0x61ec +0x3f22 0x61ed +0x3f23 0x61ef +0x3f24 0x6201 +0x3f25 0x6203 +0x3f26 0x6204 +0x3f27 0x6207 +0x3f28 0x6213 +0x3f29 0x6215 +0x3f2a 0x621c +0x3f2b 0x6220 +0x3f2c 0x6222 +0x3f2d 0x6223 +0x3f2e 0x6227 +0x3f2f 0x6229 +0x3f30 0x622b +0x3f31 0x6239 +0x3f32 0x623d +0x3f33 0x6242 +0x3f34 0x6243 +0x3f35 0x6244 +0x3f36 0x6246 +0x3f37 0x624c +0x3f38 0x6250 +0x3f39 0x6251 +0x3f3a 0x6252 +0x3f3b 0x6254 +0x3f3c 0x6256 +0x3f3d 0x625a +0x3f3e 0x625c +0x3f3f 0x6264 +0x3f40 0x626d +0x3f41 0x626f +0x3f42 0x6273 +0x3f43 0x627a +0x3f44 0x627d +0x3f45 0x628d +0x3f46 0x628e +0x3f47 0x628f +0x3f48 0x6290 +0x3f49 0x62a6 +0x3f4a 0x62a8 +0x3f4b 0x62b3 +0x3f4c 0x62b6 +0x3f4d 0x62b7 +0x3f4e 0x62ba +0x3f4f 0x62be +0x3f50 0x62bf +0x3f51 0x62c4 +0x3f52 0x62ce +0x3f53 0x62d5 +0x3f54 0x62d6 +0x3f55 0x62da +0x3f56 0x62ea +0x3f57 0x62f2 +0x3f58 0x62f4 +0x3f59 0x62fc +0x3f5a 0x62fd +0x3f5b 0x6303 +0x3f5c 0x6304 +0x3f5d 0x630a +0x3f5e 0x630b +0x3f5f 0x630d +0x3f60 0x6310 +0x3f61 0x6313 +0x3f62 0x6316 +0x3f63 0x6318 +0x3f64 0x6329 +0x3f65 0x632a +0x3f66 0x632d +0x3f67 0x6335 +0x3f68 0x6336 +0x3f69 0x6339 +0x3f6a 0x633c +0x3f6b 0x6341 +0x3f6c 0x6342 +0x3f6d 0x6343 +0x3f6e 0x6344 +0x3f6f 0x6346 +0x3f70 0x634a +0x3f71 0x634b +0x3f72 0x634e +0x3f73 0x6352 +0x3f74 0x6353 +0x3f75 0x6354 +0x3f76 0x6358 +0x3f77 0x635b +0x3f78 0x6365 +0x3f79 0x6366 +0x3f7a 0x636c +0x3f7b 0x636d +0x3f7c 0x6371 +0x3f7d 0x6374 +0x3f7e 0x6375 +0x4021 0x6378 +0x4022 0x637c +0x4023 0x637d +0x4024 0x637f +0x4025 0x6382 +0x4026 0x6384 +0x4027 0x6387 +0x4028 0x638a +0x4029 0x6390 +0x402a 0x6394 +0x402b 0x6395 +0x402c 0x6399 +0x402d 0x639a +0x402e 0x639e +0x402f 0x63a4 +0x4030 0x63a6 +0x4031 0x63ad +0x4032 0x63ae +0x4033 0x63af +0x4034 0x63bd +0x4035 0x63c1 +0x4036 0x63c5 +0x4037 0x63c8 +0x4038 0x63ce +0x4039 0x63d1 +0x403a 0x63d3 +0x403b 0x63d4 +0x403c 0x63d5 +0x403d 0x63dc +0x403e 0x63e0 +0x403f 0x63e5 +0x4040 0x63ea +0x4041 0x63ec +0x4042 0x63f2 +0x4043 0x63f3 +0x4044 0x63f5 +0x4045 0x63f8 +0x4046 0x63f9 +0x4047 0x6409 +0x4048 0x640a +0x4049 0x6410 +0x404a 0x6412 +0x404b 0x6414 +0x404c 0x6418 +0x404d 0x641e +0x404e 0x6420 +0x404f 0x6422 +0x4050 0x6424 +0x4051 0x6425 +0x4052 0x6429 +0x4053 0x642a +0x4054 0x642f +0x4055 0x6430 +0x4056 0x6435 +0x4057 0x643d +0x4058 0x643f +0x4059 0x644b +0x405a 0x644f +0x405b 0x6451 +0x405c 0x6452 +0x405d 0x6453 +0x405e 0x6454 +0x405f 0x645a +0x4060 0x645b +0x4061 0x645c +0x4062 0x645d +0x4063 0x645f +0x4064 0x6460 +0x4065 0x6461 +0x4066 0x6463 +0x4067 0x646d +0x4068 0x6473 +0x4069 0x6474 +0x406a 0x647b +0x406b 0x647d +0x406c 0x6485 +0x406d 0x6487 +0x406e 0x648f +0x406f 0x6490 +0x4070 0x6491 +0x4071 0x6498 +0x4072 0x6499 +0x4073 0x649b +0x4074 0x649d +0x4075 0x649f +0x4076 0x64a1 +0x4077 0x64a3 +0x4078 0x64a6 +0x4079 0x64a8 +0x407a 0x64ac +0x407b 0x64b3 +0x407c 0x64bd +0x407d 0x64be +0x407e 0x64bf +0x4121 0x64c4 +0x4122 0x64c9 +0x4123 0x64ca +0x4124 0x64cb +0x4125 0x64cc +0x4126 0x64ce +0x4127 0x64d0 +0x4128 0x64d1 +0x4129 0x64d5 +0x412a 0x64d7 +0x412b 0x64e4 +0x412c 0x64e5 +0x412d 0x64e9 +0x412e 0x64ea +0x412f 0x64ed +0x4130 0x64f0 +0x4131 0x64f5 +0x4132 0x64f7 +0x4133 0x64fb +0x4134 0x64ff +0x4135 0x6501 +0x4136 0x6504 +0x4137 0x6508 +0x4138 0x6509 +0x4139 0x650a +0x413a 0x650f +0x413b 0x6513 +0x413c 0x6514 +0x413d 0x6516 +0x413e 0x6519 +0x413f 0x651b +0x4140 0x651e +0x4141 0x651f +0x4142 0x6522 +0x4143 0x6526 +0x4144 0x6529 +0x4145 0x652e +0x4146 0x6531 +0x4147 0x653a +0x4148 0x653c +0x4149 0x653d +0x414a 0x6543 +0x414b 0x6547 +0x414c 0x6549 +0x414d 0x6550 +0x414e 0x6552 +0x414f 0x6554 +0x4150 0x655f +0x4151 0x6560 +0x4152 0x6567 +0x4153 0x656b +0x4154 0x657a +0x4155 0x657d +0x4156 0x6581 +0x4157 0x6585 +0x4158 0x658a +0x4159 0x6592 +0x415a 0x6595 +0x415b 0x6598 +0x415c 0x659d +0x415d 0x65a0 +0x415e 0x65a3 +0x415f 0x65a6 +0x4160 0x65ae +0x4161 0x65b2 +0x4162 0x65b3 +0x4163 0x65b4 +0x4164 0x65bf +0x4165 0x65c2 +0x4166 0x65c8 +0x4167 0x65c9 +0x4168 0x65ce +0x4169 0x65d0 +0x416a 0x65d4 +0x416b 0x65d6 +0x416c 0x65d8 +0x416d 0x65df +0x416e 0x65f0 +0x416f 0x65f2 +0x4170 0x65f4 +0x4171 0x65f5 +0x4172 0x65f9 +0x4173 0x65fe +0x4174 0x65ff +0x4175 0x6600 +0x4176 0x6604 +0x4177 0x6608 +0x4178 0x6609 +0x4179 0x660d +0x417a 0x6611 +0x417b 0x6612 +0x417c 0x6615 +0x417d 0x6616 +0x417e 0x661d +0x4221 0x661e +0x4222 0x6621 +0x4223 0x6622 +0x4224 0x6623 +0x4225 0x6624 +0x4226 0x6626 +0x4227 0x6629 +0x4228 0x662a +0x4229 0x662b +0x422a 0x662c +0x422b 0x662e +0x422c 0x6630 +0x422d 0x6631 +0x422e 0x6633 +0x422f 0x6639 +0x4230 0x6637 +0x4231 0x6640 +0x4232 0x6645 +0x4233 0x6646 +0x4234 0x664a +0x4235 0x664c +0x4236 0x6651 +0x4237 0x664e +0x4238 0x6657 +0x4239 0x6658 +0x423a 0x6659 +0x423b 0x665b +0x423c 0x665c +0x423d 0x6660 +0x423e 0x6661 +0x423f 0x66fb +0x4240 0x666a +0x4241 0x666b +0x4242 0x666c +0x4243 0x667e +0x4244 0x6673 +0x4245 0x6675 +0x4246 0x667f +0x4247 0x6677 +0x4248 0x6678 +0x4249 0x6679 +0x424a 0x667b +0x424b 0x6680 +0x424c 0x667c +0x424d 0x668b +0x424e 0x668c +0x424f 0x668d +0x4250 0x6690 +0x4251 0x6692 +0x4252 0x6699 +0x4253 0x669a +0x4254 0x669b +0x4255 0x669c +0x4256 0x669f +0x4257 0x66a0 +0x4258 0x66a4 +0x4259 0x66ad +0x425a 0x66b1 +0x425b 0x66b2 +0x425c 0x66b5 +0x425d 0x66bb +0x425e 0x66bf +0x425f 0x66c0 +0x4260 0x66c2 +0x4261 0x66c3 +0x4262 0x66c8 +0x4263 0x66cc +0x4264 0x66ce +0x4265 0x66cf +0x4266 0x66d4 +0x4267 0x66db +0x4268 0x66df +0x4269 0x66e8 +0x426a 0x66eb +0x426b 0x66ec +0x426c 0x66ee +0x426d 0x66fa +0x426e 0x6705 +0x426f 0x6707 +0x4270 0x670e +0x4271 0x6713 +0x4272 0x6719 +0x4273 0x671c +0x4274 0x6720 +0x4275 0x6722 +0x4276 0x6733 +0x4277 0x673e +0x4278 0x6745 +0x4279 0x6747 +0x427a 0x6748 +0x427b 0x674c +0x427c 0x6754 +0x427d 0x6755 +0x427e 0x675d +0x4321 0x6766 +0x4322 0x676c +0x4323 0x676e +0x4324 0x6774 +0x4325 0x6776 +0x4326 0x677b +0x4327 0x6781 +0x4328 0x6784 +0x4329 0x678e +0x432a 0x678f +0x432b 0x6791 +0x432c 0x6793 +0x432d 0x6796 +0x432e 0x6798 +0x432f 0x6799 +0x4330 0x679b +0x4331 0x67b0 +0x4332 0x67b1 +0x4333 0x67b2 +0x4334 0x67b5 +0x4335 0x67bb +0x4336 0x67bc +0x4337 0x67bd +0x4338 0x67f9 +0x4339 0x67c0 +0x433a 0x67c2 +0x433b 0x67c3 +0x433c 0x67c5 +0x433d 0x67c8 +0x433e 0x67c9 +0x433f 0x67d2 +0x4340 0x67d7 +0x4341 0x67d9 +0x4342 0x67dc +0x4343 0x67e1 +0x4344 0x67e6 +0x4345 0x67f0 +0x4346 0x67f2 +0x4347 0x67f6 +0x4348 0x67f7 +0x4349 0x6852 +0x434a 0x6814 +0x434b 0x6819 +0x434c 0x681d +0x434d 0x681f +0x434e 0x6828 +0x434f 0x6827 +0x4350 0x682c +0x4351 0x682d +0x4352 0x682f +0x4353 0x6830 +0x4354 0x6831 +0x4355 0x6833 +0x4356 0x683b +0x4357 0x683f +0x4358 0x6844 +0x4359 0x6845 +0x435a 0x684a +0x435b 0x684c +0x435c 0x6855 +0x435d 0x6857 +0x435e 0x6858 +0x435f 0x685b +0x4360 0x686b +0x4361 0x686e +0x4362 0x686f +0x4363 0x6870 +0x4364 0x6871 +0x4365 0x6872 +0x4366 0x6875 +0x4367 0x6879 +0x4368 0x687a +0x4369 0x687b +0x436a 0x687c +0x436b 0x6882 +0x436c 0x6884 +0x436d 0x6886 +0x436e 0x6888 +0x436f 0x6896 +0x4370 0x6898 +0x4371 0x689a +0x4372 0x689c +0x4373 0x68a1 +0x4374 0x68a3 +0x4375 0x68a5 +0x4376 0x68a9 +0x4377 0x68aa +0x4378 0x68ae +0x4379 0x68b2 +0x437a 0x68bb +0x437b 0x68c5 +0x437c 0x68c8 +0x437d 0x68cc +0x437e 0x68cf +0x4421 0x68d0 +0x4422 0x68d1 +0x4423 0x68d3 +0x4424 0x68d6 +0x4425 0x68d9 +0x4426 0x68dc +0x4427 0x68dd +0x4428 0x68e5 +0x4429 0x68e8 +0x442a 0x68ea +0x442b 0x68eb +0x442c 0x68ec +0x442d 0x68ed +0x442e 0x68f0 +0x442f 0x68f1 +0x4430 0x68f5 +0x4431 0x68f6 +0x4432 0x68fb +0x4433 0x68fc +0x4434 0x68fd +0x4435 0x6906 +0x4436 0x6909 +0x4437 0x690a +0x4438 0x6910 +0x4439 0x6911 +0x443a 0x6913 +0x443b 0x6916 +0x443c 0x6917 +0x443d 0x6931 +0x443e 0x6933 +0x443f 0x6935 +0x4440 0x6938 +0x4441 0x693b +0x4442 0x6942 +0x4443 0x6945 +0x4444 0x6949 +0x4445 0x694e +0x4446 0x6957 +0x4447 0x695b +0x4448 0x6963 +0x4449 0x6964 +0x444a 0x6965 +0x444b 0x6966 +0x444c 0x6968 +0x444d 0x6969 +0x444e 0x696c +0x444f 0x6970 +0x4450 0x6971 +0x4451 0x6972 +0x4452 0x697a +0x4453 0x697b +0x4454 0x697f +0x4455 0x6980 +0x4456 0x698d +0x4457 0x6992 +0x4458 0x6996 +0x4459 0x6998 +0x445a 0x69a1 +0x445b 0x69a5 +0x445c 0x69a6 +0x445d 0x69a8 +0x445e 0x69ab +0x445f 0x69ad +0x4460 0x69af +0x4461 0x69b7 +0x4462 0x69b8 +0x4463 0x69ba +0x4464 0x69bc +0x4465 0x69c5 +0x4466 0x69c8 +0x4467 0x69d1 +0x4468 0x69d6 +0x4469 0x69d7 +0x446a 0x69e2 +0x446b 0x69e5 +0x446c 0x69ee +0x446d 0x69ef +0x446e 0x69f1 +0x446f 0x69f3 +0x4470 0x69f5 +0x4471 0x69fe +0x4472 0x6a00 +0x4473 0x6a01 +0x4474 0x6a03 +0x4475 0x6a0f +0x4476 0x6a11 +0x4477 0x6a15 +0x4478 0x6a1a +0x4479 0x6a1d +0x447a 0x6a20 +0x447b 0x6a24 +0x447c 0x6a28 +0x447d 0x6a30 +0x447e 0x6a32 +0x4521 0x6a34 +0x4522 0x6a37 +0x4523 0x6a3b +0x4524 0x6a3e +0x4525 0x6a3f +0x4526 0x6a45 +0x4527 0x6a46 +0x4528 0x6a49 +0x4529 0x6a4a +0x452a 0x6a4e +0x452b 0x6a50 +0x452c 0x6a51 +0x452d 0x6a52 +0x452e 0x6a55 +0x452f 0x6a56 +0x4530 0x6a5b +0x4531 0x6a64 +0x4532 0x6a67 +0x4533 0x6a6a +0x4534 0x6a71 +0x4535 0x6a73 +0x4536 0x6a7e +0x4537 0x6a81 +0x4538 0x6a83 +0x4539 0x6a86 +0x453a 0x6a87 +0x453b 0x6a89 +0x453c 0x6a8b +0x453d 0x6a91 +0x453e 0x6a9b +0x453f 0x6a9d +0x4540 0x6a9e +0x4541 0x6a9f +0x4542 0x6aa5 +0x4543 0x6aab +0x4544 0x6aaf +0x4545 0x6ab0 +0x4546 0x6ab1 +0x4547 0x6ab4 +0x4548 0x6abd +0x4549 0x6abe +0x454a 0x6abf +0x454b 0x6ac6 +0x454c 0x6ac9 +0x454d 0x6ac8 +0x454e 0x6acc +0x454f 0x6ad0 +0x4550 0x6ad4 +0x4551 0x6ad5 +0x4552 0x6ad6 +0x4553 0x6adc +0x4554 0x6add +0x4555 0x6ae4 +0x4556 0x6ae7 +0x4557 0x6aec +0x4558 0x6af0 +0x4559 0x6af1 +0x455a 0x6af2 +0x455b 0x6afc +0x455c 0x6afd +0x455d 0x6b02 +0x455e 0x6b03 +0x455f 0x6b06 +0x4560 0x6b07 +0x4561 0x6b09 +0x4562 0x6b0f +0x4563 0x6b10 +0x4564 0x6b11 +0x4565 0x6b17 +0x4566 0x6b1b +0x4567 0x6b1e +0x4568 0x6b24 +0x4569 0x6b28 +0x456a 0x6b2b +0x456b 0x6b2c +0x456c 0x6b2f +0x456d 0x6b35 +0x456e 0x6b36 +0x456f 0x6b3b +0x4570 0x6b3f +0x4571 0x6b46 +0x4572 0x6b4a +0x4573 0x6b4d +0x4574 0x6b52 +0x4575 0x6b56 +0x4576 0x6b58 +0x4577 0x6b5d +0x4578 0x6b60 +0x4579 0x6b67 +0x457a 0x6b6b +0x457b 0x6b6e +0x457c 0x6b70 +0x457d 0x6b75 +0x457e 0x6b7d +0x4621 0x6b7e +0x4622 0x6b82 +0x4623 0x6b85 +0x4624 0x6b97 +0x4625 0x6b9b +0x4626 0x6b9f +0x4627 0x6ba0 +0x4628 0x6ba2 +0x4629 0x6ba3 +0x462a 0x6ba8 +0x462b 0x6ba9 +0x462c 0x6bac +0x462d 0x6bad +0x462e 0x6bae +0x462f 0x6bb0 +0x4630 0x6bb8 +0x4631 0x6bb9 +0x4632 0x6bbd +0x4633 0x6bbe +0x4634 0x6bc3 +0x4635 0x6bc4 +0x4636 0x6bc9 +0x4637 0x6bcc +0x4638 0x6bd6 +0x4639 0x6bda +0x463a 0x6be1 +0x463b 0x6be3 +0x463c 0x6be6 +0x463d 0x6be7 +0x463e 0x6bee +0x463f 0x6bf1 +0x4640 0x6bf7 +0x4641 0x6bf9 +0x4642 0x6bff +0x4643 0x6c02 +0x4644 0x6c04 +0x4645 0x6c05 +0x4646 0x6c09 +0x4647 0x6c0d +0x4648 0x6c0e +0x4649 0x6c10 +0x464a 0x6c12 +0x464b 0x6c19 +0x464c 0x6c1f +0x464d 0x6c26 +0x464e 0x6c27 +0x464f 0x6c28 +0x4650 0x6c2c +0x4651 0x6c2e +0x4652 0x6c33 +0x4653 0x6c35 +0x4654 0x6c36 +0x4655 0x6c3a +0x4656 0x6c3b +0x4657 0x6c3f +0x4658 0x6c4a +0x4659 0x6c4b +0x465a 0x6c4d +0x465b 0x6c4f +0x465c 0x6c52 +0x465d 0x6c54 +0x465e 0x6c59 +0x465f 0x6c5b +0x4660 0x6c5c +0x4661 0x6c6b +0x4662 0x6c6d +0x4663 0x6c6f +0x4664 0x6c74 +0x4665 0x6c76 +0x4666 0x6c78 +0x4667 0x6c79 +0x4668 0x6c7b +0x4669 0x6c85 +0x466a 0x6c86 +0x466b 0x6c87 +0x466c 0x6c89 +0x466d 0x6c94 +0x466e 0x6c95 +0x466f 0x6c97 +0x4670 0x6c98 +0x4671 0x6c9c +0x4672 0x6c9f +0x4673 0x6cb0 +0x4674 0x6cb2 +0x4675 0x6cb4 +0x4676 0x6cc2 +0x4677 0x6cc6 +0x4678 0x6ccd +0x4679 0x6ccf +0x467a 0x6cd0 +0x467b 0x6cd1 +0x467c 0x6cd2 +0x467d 0x6cd4 +0x467e 0x6cd6 +0x4721 0x6cda +0x4722 0x6cdc +0x4723 0x6ce0 +0x4724 0x6ce7 +0x4725 0x6ce9 +0x4726 0x6ceb +0x4727 0x6cec +0x4728 0x6cee +0x4729 0x6cf2 +0x472a 0x6cf4 +0x472b 0x6d04 +0x472c 0x6d07 +0x472d 0x6d0a +0x472e 0x6d0e +0x472f 0x6d0f +0x4730 0x6d11 +0x4731 0x6d13 +0x4732 0x6d1a +0x4733 0x6d26 +0x4734 0x6d27 +0x4735 0x6d28 +0x4736 0x6c67 +0x4737 0x6d2e +0x4738 0x6d2f +0x4739 0x6d31 +0x473a 0x6d39 +0x473b 0x6d3c +0x473c 0x6d3f +0x473d 0x6d57 +0x473e 0x6d5e +0x473f 0x6d5f +0x4740 0x6d61 +0x4741 0x6d65 +0x4742 0x6d67 +0x4743 0x6d6f +0x4744 0x6d70 +0x4745 0x6d7c +0x4746 0x6d82 +0x4747 0x6d87 +0x4748 0x6d91 +0x4749 0x6d92 +0x474a 0x6d94 +0x474b 0x6d96 +0x474c 0x6d97 +0x474d 0x6d98 +0x474e 0x6daa +0x474f 0x6dac +0x4750 0x6db4 +0x4751 0x6db7 +0x4752 0x6db9 +0x4753 0x6dbd +0x4754 0x6dbf +0x4755 0x6dc4 +0x4756 0x6dc8 +0x4757 0x6dca +0x4758 0x6dce +0x4759 0x6dcf +0x475a 0x6dd6 +0x475b 0x6ddb +0x475c 0x6ddd +0x475d 0x6ddf +0x475e 0x6de0 +0x475f 0x6de2 +0x4760 0x6de5 +0x4761 0x6de9 +0x4762 0x6def +0x4763 0x6df0 +0x4764 0x6df4 +0x4765 0x6df6 +0x4766 0x6dfc +0x4767 0x6e00 +0x4768 0x6e04 +0x4769 0x6e1e +0x476a 0x6e22 +0x476b 0x6e27 +0x476c 0x6e32 +0x476d 0x6e36 +0x476e 0x6e39 +0x476f 0x6e3b +0x4770 0x6e3c +0x4771 0x6e44 +0x4772 0x6e45 +0x4773 0x6e48 +0x4774 0x6e49 +0x4775 0x6e4b +0x4776 0x6e4f +0x4777 0x6e51 +0x4778 0x6e52 +0x4779 0x6e53 +0x477a 0x6e54 +0x477b 0x6e57 +0x477c 0x6e5c +0x477d 0x6e5d +0x477e 0x6e5e +0x4821 0x6e62 +0x4822 0x6e63 +0x4823 0x6e68 +0x4824 0x6e73 +0x4825 0x6e7b +0x4826 0x6e7d +0x4827 0x6e8d +0x4828 0x6e93 +0x4829 0x6e99 +0x482a 0x6ea0 +0x482b 0x6ea7 +0x482c 0x6ead +0x482d 0x6eae +0x482e 0x6eb1 +0x482f 0x6eb3 +0x4830 0x6ebb +0x4831 0x6ebf +0x4832 0x6ec0 +0x4833 0x6ec1 +0x4834 0x6ec3 +0x4835 0x6ec7 +0x4836 0x6ec8 +0x4837 0x6eca +0x4838 0x6ecd +0x4839 0x6ece +0x483a 0x6ecf +0x483b 0x6eeb +0x483c 0x6eed +0x483d 0x6eee +0x483e 0x6ef9 +0x483f 0x6efb +0x4840 0x6efd +0x4841 0x6f04 +0x4842 0x6f08 +0x4843 0x6f0a +0x4844 0x6f0c +0x4845 0x6f0d +0x4846 0x6f16 +0x4847 0x6f18 +0x4848 0x6f1a +0x4849 0x6f1b +0x484a 0x6f26 +0x484b 0x6f29 +0x484c 0x6f2a +0x484d 0x6f2f +0x484e 0x6f30 +0x484f 0x6f33 +0x4850 0x6f36 +0x4851 0x6f3b +0x4852 0x6f3c +0x4853 0x6f2d +0x4854 0x6f4f +0x4855 0x6f51 +0x4856 0x6f52 +0x4857 0x6f53 +0x4858 0x6f57 +0x4859 0x6f59 +0x485a 0x6f5a +0x485b 0x6f5d +0x485c 0x6f5e +0x485d 0x6f61 +0x485e 0x6f62 +0x485f 0x6f68 +0x4860 0x6f6c +0x4861 0x6f7d +0x4862 0x6f7e +0x4863 0x6f83 +0x4864 0x6f87 +0x4865 0x6f88 +0x4866 0x6f8b +0x4867 0x6f8c +0x4868 0x6f8d +0x4869 0x6f90 +0x486a 0x6f92 +0x486b 0x6f93 +0x486c 0x6f94 +0x486d 0x6f96 +0x486e 0x6f9a +0x486f 0x6f9f +0x4870 0x6fa0 +0x4871 0x6fa5 +0x4872 0x6fa6 +0x4873 0x6fa7 +0x4874 0x6fa8 +0x4875 0x6fae +0x4876 0x6faf +0x4877 0x6fb0 +0x4878 0x6fb5 +0x4879 0x6fb6 +0x487a 0x6fbc +0x487b 0x6fc5 +0x487c 0x6fc7 +0x487d 0x6fc8 +0x487e 0x6fca +0x4921 0x6fda +0x4922 0x6fde +0x4923 0x6fe8 +0x4924 0x6fe9 +0x4925 0x6ff0 +0x4926 0x6ff5 +0x4927 0x6ff9 +0x4928 0x6ffc +0x4929 0x6ffd +0x492a 0x7000 +0x492b 0x7005 +0x492c 0x7006 +0x492d 0x7007 +0x492e 0x700d +0x492f 0x7017 +0x4930 0x7020 +0x4931 0x7023 +0x4932 0x702f +0x4933 0x7034 +0x4934 0x7037 +0x4935 0x7039 +0x4936 0x703c +0x4937 0x7043 +0x4938 0x7044 +0x4939 0x7048 +0x493a 0x7049 +0x493b 0x704a +0x493c 0x704b +0x493d 0x7054 +0x493e 0x7055 +0x493f 0x705d +0x4940 0x705e +0x4941 0x704e +0x4942 0x7064 +0x4943 0x7065 +0x4944 0x706c +0x4945 0x706e +0x4946 0x7075 +0x4947 0x7076 +0x4948 0x707e +0x4949 0x7081 +0x494a 0x7085 +0x494b 0x7086 +0x494c 0x7094 +0x494d 0x7095 +0x494e 0x7096 +0x494f 0x7097 +0x4950 0x7098 +0x4951 0x709b +0x4952 0x70a4 +0x4953 0x70ab +0x4954 0x70b0 +0x4955 0x70b1 +0x4956 0x70b4 +0x4957 0x70b7 +0x4958 0x70ca +0x4959 0x70d1 +0x495a 0x70d3 +0x495b 0x70d4 +0x495c 0x70d5 +0x495d 0x70d6 +0x495e 0x70d8 +0x495f 0x70dc +0x4960 0x70e4 +0x4961 0x70fa +0x4962 0x7103 +0x4963 0x7104 +0x4964 0x7105 +0x4965 0x7106 +0x4966 0x7107 +0x4967 0x710b +0x4968 0x710c +0x4969 0x710f +0x496a 0x711e +0x496b 0x7120 +0x496c 0x712b +0x496d 0x712d +0x496e 0x712f +0x496f 0x7130 +0x4970 0x7131 +0x4971 0x7138 +0x4972 0x7141 +0x4973 0x7145 +0x4974 0x7146 +0x4975 0x7147 +0x4976 0x714a +0x4977 0x714b +0x4978 0x7150 +0x4979 0x7152 +0x497a 0x7157 +0x497b 0x715a +0x497c 0x715c +0x497d 0x715e +0x497e 0x7160 +0x4a21 0x7168 +0x4a22 0x7179 +0x4a23 0x7180 +0x4a24 0x7185 +0x4a25 0x7187 +0x4a26 0x718c +0x4a27 0x7192 +0x4a28 0x719a +0x4a29 0x719b +0x4a2a 0x71a0 +0x4a2b 0x71a2 +0x4a2c 0x71af +0x4a2d 0x71b0 +0x4a2e 0x71b2 +0x4a2f 0x71b3 +0x4a30 0x71ba +0x4a31 0x71bf +0x4a32 0x71c0 +0x4a33 0x71c1 +0x4a34 0x71c4 +0x4a35 0x71cb +0x4a36 0x71cc +0x4a37 0x71d3 +0x4a38 0x71d6 +0x4a39 0x71d9 +0x4a3a 0x71da +0x4a3b 0x71dc +0x4a3c 0x71f8 +0x4a3d 0x71fe +0x4a3e 0x7200 +0x4a3f 0x7207 +0x4a40 0x7208 +0x4a41 0x7209 +0x4a42 0x7213 +0x4a43 0x7217 +0x4a44 0x721a +0x4a45 0x721d +0x4a46 0x721f +0x4a47 0x7224 +0x4a48 0x722b +0x4a49 0x722f +0x4a4a 0x7234 +0x4a4b 0x7238 +0x4a4c 0x7239 +0x4a4d 0x7241 +0x4a4e 0x7242 +0x4a4f 0x7243 +0x4a50 0x7245 +0x4a51 0x724e +0x4a52 0x724f +0x4a53 0x7250 +0x4a54 0x7253 +0x4a55 0x7255 +0x4a56 0x7256 +0x4a57 0x725a +0x4a58 0x725c +0x4a59 0x725e +0x4a5a 0x7260 +0x4a5b 0x7263 +0x4a5c 0x7268 +0x4a5d 0x726b +0x4a5e 0x726e +0x4a5f 0x726f +0x4a60 0x7271 +0x4a61 0x7277 +0x4a62 0x7278 +0x4a63 0x727b +0x4a64 0x727c +0x4a65 0x727f +0x4a66 0x7284 +0x4a67 0x7289 +0x4a68 0x728d +0x4a69 0x728e +0x4a6a 0x7293 +0x4a6b 0x729b +0x4a6c 0x72a8 +0x4a6d 0x72ad +0x4a6e 0x72ae +0x4a6f 0x72b1 +0x4a70 0x72b4 +0x4a71 0x72be +0x4a72 0x72c1 +0x4a73 0x72c7 +0x4a74 0x72c9 +0x4a75 0x72cc +0x4a76 0x72d5 +0x4a77 0x72d6 +0x4a78 0x72d8 +0x4a79 0x72df +0x4a7a 0x72e5 +0x4a7b 0x72f3 +0x4a7c 0x72f4 +0x4a7d 0x72fa +0x4a7e 0x72fb +0x4b21 0x72fe +0x4b22 0x7302 +0x4b23 0x7304 +0x4b24 0x7305 +0x4b25 0x7307 +0x4b26 0x730b +0x4b27 0x730d +0x4b28 0x7312 +0x4b29 0x7313 +0x4b2a 0x7318 +0x4b2b 0x7319 +0x4b2c 0x731e +0x4b2d 0x7322 +0x4b2e 0x7324 +0x4b2f 0x7327 +0x4b30 0x7328 +0x4b31 0x732c +0x4b32 0x7331 +0x4b33 0x7332 +0x4b34 0x7335 +0x4b35 0x733a +0x4b36 0x733b +0x4b37 0x733d +0x4b38 0x7343 +0x4b39 0x734d +0x4b3a 0x7350 +0x4b3b 0x7352 +0x4b3c 0x7356 +0x4b3d 0x7358 +0x4b3e 0x735d +0x4b3f 0x735e +0x4b40 0x735f +0x4b41 0x7360 +0x4b42 0x7366 +0x4b43 0x7367 +0x4b44 0x7369 +0x4b45 0x736b +0x4b46 0x736c +0x4b47 0x736e +0x4b48 0x736f +0x4b49 0x7371 +0x4b4a 0x7377 +0x4b4b 0x7379 +0x4b4c 0x737c +0x4b4d 0x7380 +0x4b4e 0x7381 +0x4b4f 0x7383 +0x4b50 0x7385 +0x4b51 0x7386 +0x4b52 0x738e +0x4b53 0x7390 +0x4b54 0x7393 +0x4b55 0x7395 +0x4b56 0x7397 +0x4b57 0x7398 +0x4b58 0x739c +0x4b59 0x739e +0x4b5a 0x739f +0x4b5b 0x73a0 +0x4b5c 0x73a2 +0x4b5d 0x73a5 +0x4b5e 0x73a6 +0x4b5f 0x73aa +0x4b60 0x73ab +0x4b61 0x73ad +0x4b62 0x73b5 +0x4b63 0x73b7 +0x4b64 0x73b9 +0x4b65 0x73bc +0x4b66 0x73bd +0x4b67 0x73bf +0x4b68 0x73c5 +0x4b69 0x73c6 +0x4b6a 0x73c9 +0x4b6b 0x73cb +0x4b6c 0x73cc +0x4b6d 0x73cf +0x4b6e 0x73d2 +0x4b6f 0x73d3 +0x4b70 0x73d6 +0x4b71 0x73d9 +0x4b72 0x73dd +0x4b73 0x73e1 +0x4b74 0x73e3 +0x4b75 0x73e6 +0x4b76 0x73e7 +0x4b77 0x73e9 +0x4b78 0x73f4 +0x4b79 0x73f5 +0x4b7a 0x73f7 +0x4b7b 0x73f9 +0x4b7c 0x73fa +0x4b7d 0x73fb +0x4b7e 0x73fd +0x4c21 0x73ff +0x4c22 0x7400 +0x4c23 0x7401 +0x4c24 0x7404 +0x4c25 0x7407 +0x4c26 0x740a +0x4c27 0x7411 +0x4c28 0x741a +0x4c29 0x741b +0x4c2a 0x7424 +0x4c2b 0x7426 +0x4c2c 0x7428 +0x4c2d 0x7429 +0x4c2e 0x742a +0x4c2f 0x742b +0x4c30 0x742c +0x4c31 0x742d +0x4c32 0x742e +0x4c33 0x742f +0x4c34 0x7430 +0x4c35 0x7431 +0x4c36 0x7439 +0x4c37 0x7440 +0x4c38 0x7443 +0x4c39 0x7444 +0x4c3a 0x7446 +0x4c3b 0x7447 +0x4c3c 0x744b +0x4c3d 0x744d +0x4c3e 0x7451 +0x4c3f 0x7452 +0x4c40 0x7457 +0x4c41 0x745d +0x4c42 0x7462 +0x4c43 0x7466 +0x4c44 0x7467 +0x4c45 0x7468 +0x4c46 0x746b +0x4c47 0x746d +0x4c48 0x746e +0x4c49 0x7471 +0x4c4a 0x7472 +0x4c4b 0x7480 +0x4c4c 0x7481 +0x4c4d 0x7485 +0x4c4e 0x7486 +0x4c4f 0x7487 +0x4c50 0x7489 +0x4c51 0x748f +0x4c52 0x7490 +0x4c53 0x7491 +0x4c54 0x7492 +0x4c55 0x7498 +0x4c56 0x7499 +0x4c57 0x749a +0x4c58 0x749c +0x4c59 0x749f +0x4c5a 0x74a0 +0x4c5b 0x74a1 +0x4c5c 0x74a3 +0x4c5d 0x74a6 +0x4c5e 0x74a8 +0x4c5f 0x74a9 +0x4c60 0x74aa +0x4c61 0x74ab +0x4c62 0x74ae +0x4c63 0x74af +0x4c64 0x74b1 +0x4c65 0x74b2 +0x4c66 0x74b5 +0x4c67 0x74b9 +0x4c68 0x74bb +0x4c69 0x74bf +0x4c6a 0x74c8 +0x4c6b 0x74c9 +0x4c6c 0x74cc +0x4c6d 0x74d0 +0x4c6e 0x74d3 +0x4c6f 0x74d8 +0x4c70 0x74da +0x4c71 0x74db +0x4c72 0x74de +0x4c73 0x74df +0x4c74 0x74e4 +0x4c75 0x74e8 +0x4c76 0x74ea +0x4c77 0x74eb +0x4c78 0x74ef +0x4c79 0x74f4 +0x4c7a 0x74fa +0x4c7b 0x74fb +0x4c7c 0x74fc +0x4c7d 0x74ff +0x4c7e 0x7506 +0x4d21 0x7512 +0x4d22 0x7516 +0x4d23 0x7517 +0x4d24 0x7520 +0x4d25 0x7521 +0x4d26 0x7524 +0x4d27 0x7527 +0x4d28 0x7529 +0x4d29 0x752a +0x4d2a 0x752f +0x4d2b 0x7536 +0x4d2c 0x7539 +0x4d2d 0x753d +0x4d2e 0x753e +0x4d2f 0x753f +0x4d30 0x7540 +0x4d31 0x7543 +0x4d32 0x7547 +0x4d33 0x7548 +0x4d34 0x754e +0x4d35 0x7550 +0x4d36 0x7552 +0x4d37 0x7557 +0x4d38 0x755e +0x4d39 0x755f +0x4d3a 0x7561 +0x4d3b 0x756f +0x4d3c 0x7571 +0x4d3d 0x7579 +0x4d3e 0x757a +0x4d3f 0x757b +0x4d40 0x757c +0x4d41 0x757d +0x4d42 0x757e +0x4d43 0x7581 +0x4d44 0x7585 +0x4d45 0x7590 +0x4d46 0x7592 +0x4d47 0x7593 +0x4d48 0x7595 +0x4d49 0x7599 +0x4d4a 0x759c +0x4d4b 0x75a2 +0x4d4c 0x75a4 +0x4d4d 0x75b4 +0x4d4e 0x75ba +0x4d4f 0x75bf +0x4d50 0x75c0 +0x4d51 0x75c1 +0x4d52 0x75c4 +0x4d53 0x75c6 +0x4d54 0x75cc +0x4d55 0x75ce +0x4d56 0x75cf +0x4d57 0x75d7 +0x4d58 0x75dc +0x4d59 0x75df +0x4d5a 0x75e0 +0x4d5b 0x75e1 +0x4d5c 0x75e4 +0x4d5d 0x75e7 +0x4d5e 0x75ec +0x4d5f 0x75ee +0x4d60 0x75ef +0x4d61 0x75f1 +0x4d62 0x75f9 +0x4d63 0x7600 +0x4d64 0x7602 +0x4d65 0x7603 +0x4d66 0x7604 +0x4d67 0x7607 +0x4d68 0x7608 +0x4d69 0x760a +0x4d6a 0x760c +0x4d6b 0x760f +0x4d6c 0x7612 +0x4d6d 0x7613 +0x4d6e 0x7615 +0x4d6f 0x7616 +0x4d70 0x7619 +0x4d71 0x761b +0x4d72 0x761c +0x4d73 0x761d +0x4d74 0x761e +0x4d75 0x7623 +0x4d76 0x7625 +0x4d77 0x7626 +0x4d78 0x7629 +0x4d79 0x762d +0x4d7a 0x7632 +0x4d7b 0x7633 +0x4d7c 0x7635 +0x4d7d 0x7638 +0x4d7e 0x7639 +0x4e21 0x763a +0x4e22 0x763c +0x4e23 0x764a +0x4e24 0x7640 +0x4e25 0x7641 +0x4e26 0x7643 +0x4e27 0x7644 +0x4e28 0x7645 +0x4e29 0x7649 +0x4e2a 0x764b +0x4e2b 0x7655 +0x4e2c 0x7659 +0x4e2d 0x765f +0x4e2e 0x7664 +0x4e2f 0x7665 +0x4e30 0x766d +0x4e31 0x766e +0x4e32 0x766f +0x4e33 0x7671 +0x4e34 0x7674 +0x4e35 0x7681 +0x4e36 0x7685 +0x4e37 0x768c +0x4e38 0x768d +0x4e39 0x7695 +0x4e3a 0x769b +0x4e3b 0x769c +0x4e3c 0x769d +0x4e3d 0x769f +0x4e3e 0x76a0 +0x4e3f 0x76a2 +0x4e40 0x76a3 +0x4e41 0x76a4 +0x4e42 0x76a5 +0x4e43 0x76a6 +0x4e44 0x76a7 +0x4e45 0x76a8 +0x4e46 0x76aa +0x4e47 0x76ad +0x4e48 0x76bd +0x4e49 0x76c1 +0x4e4a 0x76c5 +0x4e4b 0x76c9 +0x4e4c 0x76cb +0x4e4d 0x76cc +0x4e4e 0x76ce +0x4e4f 0x76d4 +0x4e50 0x76d9 +0x4e51 0x76e0 +0x4e52 0x76e6 +0x4e53 0x76e8 +0x4e54 0x76ec +0x4e55 0x76f0 +0x4e56 0x76f1 +0x4e57 0x76f6 +0x4e58 0x76f9 +0x4e59 0x76fc +0x4e5a 0x7700 +0x4e5b 0x7706 +0x4e5c 0x770a +0x4e5d 0x770e +0x4e5e 0x7712 +0x4e5f 0x7714 +0x4e60 0x7715 +0x4e61 0x7717 +0x4e62 0x7719 +0x4e63 0x771a +0x4e64 0x771c +0x4e65 0x7722 +0x4e66 0x7728 +0x4e67 0x772d +0x4e68 0x772e +0x4e69 0x772f +0x4e6a 0x7734 +0x4e6b 0x7735 +0x4e6c 0x7736 +0x4e6d 0x7739 +0x4e6e 0x773d +0x4e6f 0x773e +0x4e70 0x7742 +0x4e71 0x7745 +0x4e72 0x7746 +0x4e73 0x774a +0x4e74 0x774d +0x4e75 0x774e +0x4e76 0x774f +0x4e77 0x7752 +0x4e78 0x7756 +0x4e79 0x7757 +0x4e7a 0x775c +0x4e7b 0x775e +0x4e7c 0x775f +0x4e7d 0x7760 +0x4e7e 0x7762 +0x4f21 0x7764 +0x4f22 0x7767 +0x4f23 0x776a +0x4f24 0x776c +0x4f25 0x7770 +0x4f26 0x7772 +0x4f27 0x7773 +0x4f28 0x7774 +0x4f29 0x777a +0x4f2a 0x777d +0x4f2b 0x7780 +0x4f2c 0x7784 +0x4f2d 0x778c +0x4f2e 0x778d +0x4f2f 0x7794 +0x4f30 0x7795 +0x4f31 0x7796 +0x4f32 0x779a +0x4f33 0x779f +0x4f34 0x77a2 +0x4f35 0x77a7 +0x4f36 0x77aa +0x4f37 0x77ae +0x4f38 0x77af +0x4f39 0x77b1 +0x4f3a 0x77b5 +0x4f3b 0x77be +0x4f3c 0x77c3 +0x4f3d 0x77c9 +0x4f3e 0x77d1 +0x4f3f 0x77d2 +0x4f40 0x77d5 +0x4f41 0x77d9 +0x4f42 0x77de +0x4f43 0x77df +0x4f44 0x77e0 +0x4f45 0x77e4 +0x4f46 0x77e6 +0x4f47 0x77ea +0x4f48 0x77ec +0x4f49 0x77f0 +0x4f4a 0x77f1 +0x4f4b 0x77f4 +0x4f4c 0x77f8 +0x4f4d 0x77fb +0x4f4e 0x7805 +0x4f4f 0x7806 +0x4f50 0x7809 +0x4f51 0x780d +0x4f52 0x780e +0x4f53 0x7811 +0x4f54 0x781d +0x4f55 0x7821 +0x4f56 0x7822 +0x4f57 0x7823 +0x4f58 0x782d +0x4f59 0x782e +0x4f5a 0x7830 +0x4f5b 0x7835 +0x4f5c 0x7837 +0x4f5d 0x7843 +0x4f5e 0x7844 +0x4f5f 0x7847 +0x4f60 0x7848 +0x4f61 0x784c +0x4f62 0x784e +0x4f63 0x7852 +0x4f64 0x785c +0x4f65 0x785e +0x4f66 0x7860 +0x4f67 0x7861 +0x4f68 0x7863 +0x4f69 0x7864 +0x4f6a 0x7868 +0x4f6b 0x786a +0x4f6c 0x786e +0x4f6d 0x787a +0x4f6e 0x787e +0x4f6f 0x788a +0x4f70 0x788f +0x4f71 0x7894 +0x4f72 0x7898 +0x4f73 0x78a1 +0x4f74 0x789d +0x4f75 0x789e +0x4f76 0x789f +0x4f77 0x78a4 +0x4f78 0x78a8 +0x4f79 0x78ac +0x4f7a 0x78ad +0x4f7b 0x78b0 +0x4f7c 0x78b1 +0x4f7d 0x78b2 +0x4f7e 0x78b3 +0x5021 0x78bb +0x5022 0x78bd +0x5023 0x78bf +0x5024 0x78c7 +0x5025 0x78c8 +0x5026 0x78c9 +0x5027 0x78cc +0x5028 0x78ce +0x5029 0x78d2 +0x502a 0x78d3 +0x502b 0x78d5 +0x502c 0x78d6 +0x502d 0x78e4 +0x502e 0x78db +0x502f 0x78df +0x5030 0x78e0 +0x5031 0x78e1 +0x5032 0x78e6 +0x5033 0x78ea +0x5034 0x78f2 +0x5035 0x78f3 +0x5036 0x7900 +0x5037 0x78f6 +0x5038 0x78f7 +0x5039 0x78fa +0x503a 0x78fb +0x503b 0x78ff +0x503c 0x7906 +0x503d 0x790c +0x503e 0x7910 +0x503f 0x791a +0x5040 0x791c +0x5041 0x791e +0x5042 0x791f +0x5043 0x7920 +0x5044 0x7925 +0x5045 0x7927 +0x5046 0x7929 +0x5047 0x792d +0x5048 0x7931 +0x5049 0x7934 +0x504a 0x7935 +0x504b 0x793b +0x504c 0x793d +0x504d 0x793f +0x504e 0x7944 +0x504f 0x7945 +0x5050 0x7946 +0x5051 0x794a +0x5052 0x794b +0x5053 0x794f +0x5054 0x7951 +0x5055 0x7954 +0x5056 0x7958 +0x5057 0x795b +0x5058 0x795c +0x5059 0x7967 +0x505a 0x7969 +0x505b 0x796b +0x505c 0x7972 +0x505d 0x7979 +0x505e 0x797b +0x505f 0x797c +0x5060 0x797e +0x5061 0x798b +0x5062 0x798c +0x5063 0x7991 +0x5064 0x7993 +0x5065 0x7994 +0x5066 0x7995 +0x5067 0x7996 +0x5068 0x7998 +0x5069 0x799b +0x506a 0x799c +0x506b 0x79a1 +0x506c 0x79a8 +0x506d 0x79a9 +0x506e 0x79ab +0x506f 0x79af +0x5070 0x79b1 +0x5071 0x79b4 +0x5072 0x79b8 +0x5073 0x79bb +0x5074 0x79c2 +0x5075 0x79c4 +0x5076 0x79c7 +0x5077 0x79c8 +0x5078 0x79ca +0x5079 0x79cf +0x507a 0x79d4 +0x507b 0x79d6 +0x507c 0x79da +0x507d 0x79dd +0x507e 0x79de +0x5121 0x79e0 +0x5122 0x79e2 +0x5123 0x79e5 +0x5124 0x79ea +0x5125 0x79eb +0x5126 0x79ed +0x5127 0x79f1 +0x5128 0x79f8 +0x5129 0x79fc +0x512a 0x7a02 +0x512b 0x7a03 +0x512c 0x7a07 +0x512d 0x7a09 +0x512e 0x7a0a +0x512f 0x7a0c +0x5130 0x7a11 +0x5131 0x7a15 +0x5132 0x7a1b +0x5133 0x7a1e +0x5134 0x7a21 +0x5135 0x7a27 +0x5136 0x7a2b +0x5137 0x7a2d +0x5138 0x7a2f +0x5139 0x7a30 +0x513a 0x7a34 +0x513b 0x7a35 +0x513c 0x7a38 +0x513d 0x7a39 +0x513e 0x7a3a +0x513f 0x7a44 +0x5140 0x7a45 +0x5141 0x7a47 +0x5142 0x7a48 +0x5143 0x7a4c +0x5144 0x7a55 +0x5145 0x7a56 +0x5146 0x7a59 +0x5147 0x7a5c +0x5148 0x7a5d +0x5149 0x7a5f +0x514a 0x7a60 +0x514b 0x7a65 +0x514c 0x7a67 +0x514d 0x7a6a +0x514e 0x7a6d +0x514f 0x7a75 +0x5150 0x7a78 +0x5151 0x7a7e +0x5152 0x7a80 +0x5153 0x7a82 +0x5154 0x7a85 +0x5155 0x7a86 +0x5156 0x7a8a +0x5157 0x7a8b +0x5158 0x7a90 +0x5159 0x7a91 +0x515a 0x7a94 +0x515b 0x7a9e +0x515c 0x7aa0 +0x515d 0x7aa3 +0x515e 0x7aac +0x515f 0x7ab3 +0x5160 0x7ab5 +0x5161 0x7ab9 +0x5162 0x7abb +0x5163 0x7abc +0x5164 0x7ac6 +0x5165 0x7ac9 +0x5166 0x7acc +0x5167 0x7ace +0x5168 0x7ad1 +0x5169 0x7adb +0x516a 0x7ae8 +0x516b 0x7ae9 +0x516c 0x7aeb +0x516d 0x7aec +0x516e 0x7af1 +0x516f 0x7af4 +0x5170 0x7afb +0x5171 0x7afd +0x5172 0x7afe +0x5173 0x7b07 +0x5174 0x7b14 +0x5175 0x7b1f +0x5176 0x7b23 +0x5177 0x7b27 +0x5178 0x7b29 +0x5179 0x7b2a +0x517a 0x7b2b +0x517b 0x7b2d +0x517c 0x7b2e +0x517d 0x7b2f +0x517e 0x7b30 +0x5221 0x7b31 +0x5222 0x7b34 +0x5223 0x7b3d +0x5224 0x7b3f +0x5225 0x7b40 +0x5226 0x7b41 +0x5227 0x7b47 +0x5228 0x7b4e +0x5229 0x7b55 +0x522a 0x7b60 +0x522b 0x7b64 +0x522c 0x7b66 +0x522d 0x7b69 +0x522e 0x7b6a +0x522f 0x7b6d +0x5230 0x7b6f +0x5231 0x7b72 +0x5232 0x7b73 +0x5233 0x7b77 +0x5234 0x7b84 +0x5235 0x7b89 +0x5236 0x7b8e +0x5237 0x7b90 +0x5238 0x7b91 +0x5239 0x7b96 +0x523a 0x7b9b +0x523b 0x7b9e +0x523c 0x7ba0 +0x523d 0x7ba5 +0x523e 0x7bac +0x523f 0x7baf +0x5240 0x7bb0 +0x5241 0x7bb2 +0x5242 0x7bb5 +0x5243 0x7bb6 +0x5244 0x7bba +0x5245 0x7bbb +0x5246 0x7bbc +0x5247 0x7bbd +0x5248 0x7bc2 +0x5249 0x7bc5 +0x524a 0x7bc8 +0x524b 0x7bca +0x524c 0x7bd4 +0x524d 0x7bd6 +0x524e 0x7bd7 +0x524f 0x7bd9 +0x5250 0x7bda +0x5251 0x7bdb +0x5252 0x7be8 +0x5253 0x7bea +0x5254 0x7bf2 +0x5255 0x7bf4 +0x5256 0x7bf5 +0x5257 0x7bf8 +0x5258 0x7bf9 +0x5259 0x7bfa +0x525a 0x7bfc +0x525b 0x7bfe +0x525c 0x7c01 +0x525d 0x7c02 +0x525e 0x7c03 +0x525f 0x7c04 +0x5260 0x7c06 +0x5261 0x7c09 +0x5262 0x7c0b +0x5263 0x7c0c +0x5264 0x7c0e +0x5265 0x7c0f +0x5266 0x7c19 +0x5267 0x7c1b +0x5268 0x7c20 +0x5269 0x7c25 +0x526a 0x7c26 +0x526b 0x7c28 +0x526c 0x7c2c +0x526d 0x7c31 +0x526e 0x7c33 +0x526f 0x7c34 +0x5270 0x7c36 +0x5271 0x7c39 +0x5272 0x7c3a +0x5273 0x7c46 +0x5274 0x7c4a +0x5275 0x7c55 +0x5276 0x7c51 +0x5277 0x7c52 +0x5278 0x7c53 +0x5279 0x7c59 +0x527a 0x7c5a +0x527b 0x7c5b +0x527c 0x7c5c +0x527d 0x7c5d +0x527e 0x7c5e +0x5321 0x7c61 +0x5322 0x7c63 +0x5323 0x7c67 +0x5324 0x7c69 +0x5325 0x7c6d +0x5326 0x7c6e +0x5327 0x7c70 +0x5328 0x7c72 +0x5329 0x7c79 +0x532a 0x7c7c +0x532b 0x7c7d +0x532c 0x7c86 +0x532d 0x7c87 +0x532e 0x7c8f +0x532f 0x7c94 +0x5330 0x7c9e +0x5331 0x7ca0 +0x5332 0x7ca6 +0x5333 0x7cb0 +0x5334 0x7cb6 +0x5335 0x7cb7 +0x5336 0x7cba +0x5337 0x7cbb +0x5338 0x7cbc +0x5339 0x7cbf +0x533a 0x7cc4 +0x533b 0x7cc7 +0x533c 0x7cc8 +0x533d 0x7cc9 +0x533e 0x7ccd +0x533f 0x7ccf +0x5340 0x7cd3 +0x5341 0x7cd4 +0x5342 0x7cd5 +0x5343 0x7cd7 +0x5344 0x7cd9 +0x5345 0x7cda +0x5346 0x7cdd +0x5347 0x7ce6 +0x5348 0x7ce9 +0x5349 0x7ceb +0x534a 0x7cf5 +0x534b 0x7d03 +0x534c 0x7d07 +0x534d 0x7d08 +0x534e 0x7d09 +0x534f 0x7d0f +0x5350 0x7d11 +0x5351 0x7d12 +0x5352 0x7d13 +0x5353 0x7d16 +0x5354 0x7d1d +0x5355 0x7d1e +0x5356 0x7d23 +0x5357 0x7d26 +0x5358 0x7d2a +0x5359 0x7d2d +0x535a 0x7d31 +0x535b 0x7d3c +0x535c 0x7d3d +0x535d 0x7d3e +0x535e 0x7d40 +0x535f 0x7d41 +0x5360 0x7d47 +0x5361 0x7d48 +0x5362 0x7d4d +0x5363 0x7d51 +0x5364 0x7d53 +0x5365 0x7d57 +0x5366 0x7d59 +0x5367 0x7d5a +0x5368 0x7d5c +0x5369 0x7d5d +0x536a 0x7d65 +0x536b 0x7d67 +0x536c 0x7d6a +0x536d 0x7d70 +0x536e 0x7d78 +0x536f 0x7d7a +0x5370 0x7d7b +0x5371 0x7d7f +0x5372 0x7d81 +0x5373 0x7d82 +0x5374 0x7d83 +0x5375 0x7d85 +0x5376 0x7d86 +0x5377 0x7d88 +0x5378 0x7d8b +0x5379 0x7d8c +0x537a 0x7d8d +0x537b 0x7d91 +0x537c 0x7d96 +0x537d 0x7d97 +0x537e 0x7d9d +0x5421 0x7d9e +0x5422 0x7da6 +0x5423 0x7da7 +0x5424 0x7daa +0x5425 0x7db3 +0x5426 0x7db6 +0x5427 0x7db7 +0x5428 0x7db9 +0x5429 0x7dc2 +0x542a 0x7dc3 +0x542b 0x7dc4 +0x542c 0x7dc5 +0x542d 0x7dc6 +0x542e 0x7dcc +0x542f 0x7dcd +0x5430 0x7dce +0x5431 0x7dd7 +0x5432 0x7dd9 +0x5433 0x7e00 +0x5434 0x7de2 +0x5435 0x7de5 +0x5436 0x7de6 +0x5437 0x7dea +0x5438 0x7deb +0x5439 0x7ded +0x543a 0x7df1 +0x543b 0x7df5 +0x543c 0x7df6 +0x543d 0x7df9 +0x543e 0x7dfa +0x543f 0x7e08 +0x5440 0x7e10 +0x5441 0x7e11 +0x5442 0x7e15 +0x5443 0x7e17 +0x5444 0x7e1c +0x5445 0x7e1d +0x5446 0x7e20 +0x5447 0x7e27 +0x5448 0x7e28 +0x5449 0x7e2c +0x544a 0x7e2d +0x544b 0x7e2f +0x544c 0x7e33 +0x544d 0x7e36 +0x544e 0x7e3f +0x544f 0x7e44 +0x5450 0x7e45 +0x5451 0x7e47 +0x5452 0x7e4e +0x5453 0x7e50 +0x5454 0x7e52 +0x5455 0x7e58 +0x5456 0x7e5f +0x5457 0x7e61 +0x5458 0x7e62 +0x5459 0x7e65 +0x545a 0x7e6b +0x545b 0x7e6e +0x545c 0x7e6f +0x545d 0x7e73 +0x545e 0x7e78 +0x545f 0x7e7e +0x5460 0x7e81 +0x5461 0x7e86 +0x5462 0x7e87 +0x5463 0x7e8a +0x5464 0x7e8d +0x5465 0x7e91 +0x5466 0x7e95 +0x5467 0x7e98 +0x5468 0x7e9a +0x5469 0x7e9d +0x546a 0x7e9e +0x546b 0x7f3c +0x546c 0x7f3b +0x546d 0x7f3d +0x546e 0x7f3e +0x546f 0x7f3f +0x5470 0x7f43 +0x5471 0x7f44 +0x5472 0x7f47 +0x5473 0x7f4f +0x5474 0x7f52 +0x5475 0x7f53 +0x5476 0x7f5b +0x5477 0x7f5c +0x5478 0x7f5d +0x5479 0x7f61 +0x547a 0x7f63 +0x547b 0x7f64 +0x547c 0x7f65 +0x547d 0x7f66 +0x547e 0x7f6d +0x5521 0x7f71 +0x5522 0x7f7d +0x5523 0x7f7e +0x5524 0x7f7f +0x5525 0x7f80 +0x5526 0x7f8b +0x5527 0x7f8d +0x5528 0x7f8f +0x5529 0x7f90 +0x552a 0x7f91 +0x552b 0x7f96 +0x552c 0x7f97 +0x552d 0x7f9c +0x552e 0x7fa1 +0x552f 0x7fa2 +0x5530 0x7fa6 +0x5531 0x7faa +0x5532 0x7fad +0x5533 0x7fb4 +0x5534 0x7fbc +0x5535 0x7fbf +0x5536 0x7fc0 +0x5537 0x7fc3 +0x5538 0x7fc8 +0x5539 0x7fce +0x553a 0x7fcf +0x553b 0x7fdb +0x553c 0x7fdf +0x553d 0x7fe3 +0x553e 0x7fe5 +0x553f 0x7fe8 +0x5540 0x7fec +0x5541 0x7fee +0x5542 0x7fef +0x5543 0x7ff2 +0x5544 0x7ffa +0x5545 0x7ffd +0x5546 0x7ffe +0x5547 0x7fff +0x5548 0x8007 +0x5549 0x8008 +0x554a 0x800a +0x554b 0x800d +0x554c 0x800e +0x554d 0x800f +0x554e 0x8011 +0x554f 0x8013 +0x5550 0x8014 +0x5551 0x8016 +0x5552 0x801d +0x5553 0x801e +0x5554 0x801f +0x5555 0x8020 +0x5556 0x8024 +0x5557 0x8026 +0x5558 0x802c +0x5559 0x802e +0x555a 0x8030 +0x555b 0x8034 +0x555c 0x8035 +0x555d 0x8037 +0x555e 0x8039 +0x555f 0x803a +0x5560 0x803c +0x5561 0x803e +0x5562 0x8040 +0x5563 0x8044 +0x5564 0x8060 +0x5565 0x8064 +0x5566 0x8066 +0x5567 0x806d +0x5568 0x8071 +0x5569 0x8075 +0x556a 0x8081 +0x556b 0x8088 +0x556c 0x808e +0x556d 0x809c +0x556e 0x809e +0x556f 0x80a6 +0x5570 0x80a7 +0x5571 0x80ab +0x5572 0x80b8 +0x5573 0x80b9 +0x5574 0x80c8 +0x5575 0x80cd +0x5576 0x80cf +0x5577 0x80d2 +0x5578 0x80d4 +0x5579 0x80d5 +0x557a 0x80d7 +0x557b 0x80d8 +0x557c 0x80e0 +0x557d 0x80ed +0x557e 0x80ee +0x5621 0x80f0 +0x5622 0x80f2 +0x5623 0x80f3 +0x5624 0x80f6 +0x5625 0x80f9 +0x5626 0x80fa +0x5627 0x80fe +0x5628 0x8103 +0x5629 0x810b +0x562a 0x8116 +0x562b 0x8117 +0x562c 0x8118 +0x562d 0x811c +0x562e 0x811e +0x562f 0x8120 +0x5630 0x8124 +0x5631 0x8127 +0x5632 0x812c +0x5633 0x8130 +0x5634 0x8135 +0x5635 0x813a +0x5636 0x813c +0x5637 0x8145 +0x5638 0x8147 +0x5639 0x814a +0x563a 0x814c +0x563b 0x8152 +0x563c 0x8157 +0x563d 0x8160 +0x563e 0x8161 +0x563f 0x8167 +0x5640 0x8168 +0x5641 0x8169 +0x5642 0x816d +0x5643 0x816f +0x5644 0x8177 +0x5645 0x8181 +0x5646 0x8190 +0x5647 0x8184 +0x5648 0x8185 +0x5649 0x8186 +0x564a 0x818b +0x564b 0x818e +0x564c 0x8196 +0x564d 0x8198 +0x564e 0x819b +0x564f 0x819e +0x5650 0x81a2 +0x5651 0x81ae +0x5652 0x81b2 +0x5653 0x81b4 +0x5654 0x81bb +0x5655 0x81cb +0x5656 0x81c3 +0x5657 0x81c5 +0x5658 0x81ca +0x5659 0x81ce +0x565a 0x81cf +0x565b 0x81d5 +0x565c 0x81d7 +0x565d 0x81db +0x565e 0x81dd +0x565f 0x81de +0x5660 0x81e1 +0x5661 0x81e4 +0x5662 0x81eb +0x5663 0x81ec +0x5664 0x81f0 +0x5665 0x81f1 +0x5666 0x81f2 +0x5667 0x81f5 +0x5668 0x81f6 +0x5669 0x81f8 +0x566a 0x81f9 +0x566b 0x81fd +0x566c 0x81ff +0x566d 0x8200 +0x566e 0x8203 +0x566f 0x820f +0x5670 0x8213 +0x5671 0x8214 +0x5672 0x8219 +0x5673 0x821a +0x5674 0x821d +0x5675 0x8221 +0x5676 0x8222 +0x5677 0x8228 +0x5678 0x8232 +0x5679 0x8234 +0x567a 0x823a +0x567b 0x8243 +0x567c 0x8244 +0x567d 0x8245 +0x567e 0x8246 +0x5721 0x824b +0x5722 0x824e +0x5723 0x824f +0x5724 0x8251 +0x5725 0x8256 +0x5726 0x825c +0x5727 0x8260 +0x5728 0x8263 +0x5729 0x8267 +0x572a 0x826d +0x572b 0x8274 +0x572c 0x827b +0x572d 0x827d +0x572e 0x827f +0x572f 0x8280 +0x5730 0x8281 +0x5731 0x8283 +0x5732 0x8284 +0x5733 0x8287 +0x5734 0x8289 +0x5735 0x828a +0x5736 0x828e +0x5737 0x8291 +0x5738 0x8294 +0x5739 0x8296 +0x573a 0x8298 +0x573b 0x829a +0x573c 0x829b +0x573d 0x82a0 +0x573e 0x82a1 +0x573f 0x82a3 +0x5740 0x82a4 +0x5741 0x82a7 +0x5742 0x82a8 +0x5743 0x82a9 +0x5744 0x82aa +0x5745 0x82ae +0x5746 0x82b0 +0x5747 0x82b2 +0x5748 0x82b4 +0x5749 0x82b7 +0x574a 0x82ba +0x574b 0x82bc +0x574c 0x82be +0x574d 0x82bf +0x574e 0x82c6 +0x574f 0x82d0 +0x5750 0x82d5 +0x5751 0x82da +0x5752 0x82e0 +0x5753 0x82e2 +0x5754 0x82e4 +0x5755 0x82e8 +0x5756 0x82ea +0x5757 0x82ed +0x5758 0x82ef +0x5759 0x82f6 +0x575a 0x82f7 +0x575b 0x82fd +0x575c 0x82fe +0x575d 0x8300 +0x575e 0x8301 +0x575f 0x8307 +0x5760 0x8308 +0x5761 0x830a +0x5762 0x830b +0x5763 0x8354 +0x5764 0x831b +0x5765 0x831d +0x5766 0x831e +0x5767 0x831f +0x5768 0x8321 +0x5769 0x8322 +0x576a 0x832c +0x576b 0x832d +0x576c 0x832e +0x576d 0x8330 +0x576e 0x8333 +0x576f 0x8337 +0x5770 0x833a +0x5771 0x833c +0x5772 0x833d +0x5773 0x8342 +0x5774 0x8343 +0x5775 0x8344 +0x5776 0x8347 +0x5777 0x834d +0x5778 0x834e +0x5779 0x8351 +0x577a 0x8355 +0x577b 0x8356 +0x577c 0x8357 +0x577d 0x8370 +0x577e 0x8378 +0x5821 0x837d +0x5822 0x837f +0x5823 0x8380 +0x5824 0x8382 +0x5825 0x8384 +0x5826 0x8386 +0x5827 0x838d +0x5828 0x8392 +0x5829 0x8394 +0x582a 0x8395 +0x582b 0x8398 +0x582c 0x8399 +0x582d 0x839b +0x582e 0x839c +0x582f 0x839d +0x5830 0x83a6 +0x5831 0x83a7 +0x5832 0x83a9 +0x5833 0x83ac +0x5834 0x83be +0x5835 0x83bf +0x5836 0x83c0 +0x5837 0x83c7 +0x5838 0x83c9 +0x5839 0x83cf +0x583a 0x83d0 +0x583b 0x83d1 +0x583c 0x83d4 +0x583d 0x83dd +0x583e 0x8353 +0x583f 0x83e8 +0x5840 0x83ea +0x5841 0x83f6 +0x5842 0x83f8 +0x5843 0x83f9 +0x5844 0x83fc +0x5845 0x8401 +0x5846 0x8406 +0x5847 0x840a +0x5848 0x840f +0x5849 0x8411 +0x584a 0x8415 +0x584b 0x8419 +0x584c 0x83ad +0x584d 0x842f +0x584e 0x8439 +0x584f 0x8445 +0x5850 0x8447 +0x5851 0x8448 +0x5852 0x844a +0x5853 0x844d +0x5854 0x844f +0x5855 0x8451 +0x5856 0x8452 +0x5857 0x8456 +0x5858 0x8458 +0x5859 0x8459 +0x585a 0x845a +0x585b 0x845c +0x585c 0x8460 +0x585d 0x8464 +0x585e 0x8465 +0x585f 0x8467 +0x5860 0x846a +0x5861 0x8470 +0x5862 0x8473 +0x5863 0x8474 +0x5864 0x8476 +0x5865 0x8478 +0x5866 0x847c +0x5867 0x847d +0x5868 0x8481 +0x5869 0x8485 +0x586a 0x8492 +0x586b 0x8493 +0x586c 0x8495 +0x586d 0x849e +0x586e 0x84a6 +0x586f 0x84a8 +0x5870 0x84a9 +0x5871 0x84aa +0x5872 0x84af +0x5873 0x84b1 +0x5874 0x84b4 +0x5875 0x84ba +0x5876 0x84bd +0x5877 0x84be +0x5878 0x84c0 +0x5879 0x84c2 +0x587a 0x84c7 +0x587b 0x84c8 +0x587c 0x84cc +0x587d 0x84cf +0x587e 0x84d3 +0x5921 0x84dc +0x5922 0x84e7 +0x5923 0x84ea +0x5924 0x84ef +0x5925 0x84f0 +0x5926 0x84f1 +0x5927 0x84f2 +0x5928 0x84f7 +0x5929 0x8532 +0x592a 0x84fa +0x592b 0x84fb +0x592c 0x84fd +0x592d 0x8502 +0x592e 0x8503 +0x592f 0x8507 +0x5930 0x850c +0x5931 0x850e +0x5932 0x8510 +0x5933 0x851c +0x5934 0x851e +0x5935 0x8522 +0x5936 0x8523 +0x5937 0x8524 +0x5938 0x8525 +0x5939 0x8527 +0x593a 0x852a +0x593b 0x852b +0x593c 0x852f +0x593d 0x8533 +0x593e 0x8534 +0x593f 0x8536 +0x5940 0x853f +0x5941 0x8546 +0x5942 0x854f +0x5943 0x8550 +0x5944 0x8551 +0x5945 0x8552 +0x5946 0x8553 +0x5947 0x8556 +0x5948 0x8559 +0x5949 0x855c +0x594a 0x855d +0x594b 0x855e +0x594c 0x855f +0x594d 0x8560 +0x594e 0x8561 +0x594f 0x8562 +0x5950 0x8564 +0x5951 0x856b +0x5952 0x856f +0x5953 0x8579 +0x5954 0x857a +0x5955 0x857b +0x5956 0x857d +0x5957 0x857f +0x5958 0x8581 +0x5959 0x8585 +0x595a 0x8586 +0x595b 0x8589 +0x595c 0x858b +0x595d 0x858c +0x595e 0x858f +0x595f 0x8593 +0x5960 0x8598 +0x5961 0x859d +0x5962 0x859f +0x5963 0x85a0 +0x5964 0x85a2 +0x5965 0x85a5 +0x5966 0x85a7 +0x5967 0x85b4 +0x5968 0x85b6 +0x5969 0x85b7 +0x596a 0x85b8 +0x596b 0x85bc +0x596c 0x85bd +0x596d 0x85be +0x596e 0x85bf +0x596f 0x85c2 +0x5970 0x85c7 +0x5971 0x85ca +0x5972 0x85cb +0x5973 0x85ce +0x5974 0x85ad +0x5975 0x85d8 +0x5976 0x85da +0x5977 0x85df +0x5978 0x85e0 +0x5979 0x85e6 +0x597a 0x85e8 +0x597b 0x85ed +0x597c 0x85f3 +0x597d 0x85f6 +0x597e 0x85fc +0x5a21 0x85ff +0x5a22 0x8600 +0x5a23 0x8604 +0x5a24 0x8605 +0x5a25 0x860d +0x5a26 0x860e +0x5a27 0x8610 +0x5a28 0x8611 +0x5a29 0x8612 +0x5a2a 0x8618 +0x5a2b 0x8619 +0x5a2c 0x861b +0x5a2d 0x861e +0x5a2e 0x8621 +0x5a2f 0x8627 +0x5a30 0x8629 +0x5a31 0x8636 +0x5a32 0x8638 +0x5a33 0x863a +0x5a34 0x863c +0x5a35 0x863d +0x5a36 0x8640 +0x5a37 0x8642 +0x5a38 0x8646 +0x5a39 0x8652 +0x5a3a 0x8653 +0x5a3b 0x8656 +0x5a3c 0x8657 +0x5a3d 0x8658 +0x5a3e 0x8659 +0x5a3f 0x865d +0x5a40 0x8660 +0x5a41 0x8661 +0x5a42 0x8662 +0x5a43 0x8663 +0x5a44 0x8664 +0x5a45 0x8669 +0x5a46 0x866c +0x5a47 0x866f +0x5a48 0x8675 +0x5a49 0x8676 +0x5a4a 0x8677 +0x5a4b 0x867a +0x5a4c 0x868d +0x5a4d 0x8691 +0x5a4e 0x8696 +0x5a4f 0x8698 +0x5a50 0x869a +0x5a51 0x869c +0x5a52 0x86a1 +0x5a53 0x86a6 +0x5a54 0x86a7 +0x5a55 0x86a8 +0x5a56 0x86ad +0x5a57 0x86b1 +0x5a58 0x86b3 +0x5a59 0x86b4 +0x5a5a 0x86b5 +0x5a5b 0x86b7 +0x5a5c 0x86b8 +0x5a5d 0x86b9 +0x5a5e 0x86bf +0x5a5f 0x86c0 +0x5a60 0x86c1 +0x5a61 0x86c3 +0x5a62 0x86c5 +0x5a63 0x86d1 +0x5a64 0x86d2 +0x5a65 0x86d5 +0x5a66 0x86d7 +0x5a67 0x86da +0x5a68 0x86dc +0x5a69 0x86e0 +0x5a6a 0x86e3 +0x5a6b 0x86e5 +0x5a6c 0x86e7 +0x5a6d 0x8688 +0x5a6e 0x86fa +0x5a6f 0x86fc +0x5a70 0x86fd +0x5a71 0x8704 +0x5a72 0x8705 +0x5a73 0x8707 +0x5a74 0x870b +0x5a75 0x870e +0x5a76 0x870f +0x5a77 0x8710 +0x5a78 0x8713 +0x5a79 0x8714 +0x5a7a 0x8719 +0x5a7b 0x871e +0x5a7c 0x871f +0x5a7d 0x8721 +0x5a7e 0x8723 +0x5b21 0x8728 +0x5b22 0x872e +0x5b23 0x872f +0x5b24 0x8731 +0x5b25 0x8732 +0x5b26 0x8739 +0x5b27 0x873a +0x5b28 0x873c +0x5b29 0x873d +0x5b2a 0x873e +0x5b2b 0x8740 +0x5b2c 0x8743 +0x5b2d 0x8745 +0x5b2e 0x874d +0x5b2f 0x8758 +0x5b30 0x875d +0x5b31 0x8761 +0x5b32 0x8764 +0x5b33 0x8765 +0x5b34 0x876f +0x5b35 0x8771 +0x5b36 0x8772 +0x5b37 0x877b +0x5b38 0x8783 +0x5b39 0x8784 +0x5b3a 0x8785 +0x5b3b 0x8786 +0x5b3c 0x8787 +0x5b3d 0x8788 +0x5b3e 0x8789 +0x5b3f 0x878b +0x5b40 0x878c +0x5b41 0x8790 +0x5b42 0x8793 +0x5b43 0x8795 +0x5b44 0x8797 +0x5b45 0x8798 +0x5b46 0x8799 +0x5b47 0x879e +0x5b48 0x87a0 +0x5b49 0x87a3 +0x5b4a 0x87a7 +0x5b4b 0x87ac +0x5b4c 0x87ad +0x5b4d 0x87ae +0x5b4e 0x87b1 +0x5b4f 0x87b5 +0x5b50 0x87be +0x5b51 0x87bf +0x5b52 0x87c1 +0x5b53 0x87c8 +0x5b54 0x87c9 +0x5b55 0x87ca +0x5b56 0x87ce +0x5b57 0x87d5 +0x5b58 0x87d6 +0x5b59 0x87d9 +0x5b5a 0x87da +0x5b5b 0x87dc +0x5b5c 0x87df +0x5b5d 0x87e2 +0x5b5e 0x87e3 +0x5b5f 0x87e4 +0x5b60 0x87ea +0x5b61 0x87eb +0x5b62 0x87ed +0x5b63 0x87f1 +0x5b64 0x87f3 +0x5b65 0x87f8 +0x5b66 0x87fa +0x5b67 0x87ff +0x5b68 0x8801 +0x5b69 0x8803 +0x5b6a 0x8806 +0x5b6b 0x8809 +0x5b6c 0x880a +0x5b6d 0x880b +0x5b6e 0x8810 +0x5b6f 0x8819 +0x5b70 0x8812 +0x5b71 0x8813 +0x5b72 0x8814 +0x5b73 0x8818 +0x5b74 0x881a +0x5b75 0x881b +0x5b76 0x881c +0x5b77 0x881e +0x5b78 0x881f +0x5b79 0x8828 +0x5b7a 0x882d +0x5b7b 0x882e +0x5b7c 0x8830 +0x5b7d 0x8832 +0x5b7e 0x8835 +0x5c21 0x883a +0x5c22 0x883c +0x5c23 0x8841 +0x5c24 0x8843 +0x5c25 0x8845 +0x5c26 0x8848 +0x5c27 0x8849 +0x5c28 0x884a +0x5c29 0x884b +0x5c2a 0x884e +0x5c2b 0x8851 +0x5c2c 0x8855 +0x5c2d 0x8856 +0x5c2e 0x8858 +0x5c2f 0x885a +0x5c30 0x885c +0x5c31 0x885f +0x5c32 0x8860 +0x5c33 0x8864 +0x5c34 0x8869 +0x5c35 0x8871 +0x5c36 0x8879 +0x5c37 0x887b +0x5c38 0x8880 +0x5c39 0x8898 +0x5c3a 0x889a +0x5c3b 0x889b +0x5c3c 0x889c +0x5c3d 0x889f +0x5c3e 0x88a0 +0x5c3f 0x88a8 +0x5c40 0x88aa +0x5c41 0x88ba +0x5c42 0x88bd +0x5c43 0x88be +0x5c44 0x88c0 +0x5c45 0x88ca +0x5c46 0x88cb +0x5c47 0x88cc +0x5c48 0x88cd +0x5c49 0x88ce +0x5c4a 0x88d1 +0x5c4b 0x88d2 +0x5c4c 0x88d3 +0x5c4d 0x88db +0x5c4e 0x88de +0x5c4f 0x88e7 +0x5c50 0x88ef +0x5c51 0x88f0 +0x5c52 0x88f1 +0x5c53 0x88f5 +0x5c54 0x88f7 +0x5c55 0x8901 +0x5c56 0x8906 +0x5c57 0x890d +0x5c58 0x890e +0x5c59 0x890f +0x5c5a 0x8915 +0x5c5b 0x8916 +0x5c5c 0x8918 +0x5c5d 0x8919 +0x5c5e 0x891a +0x5c5f 0x891c +0x5c60 0x8920 +0x5c61 0x8926 +0x5c62 0x8927 +0x5c63 0x8928 +0x5c64 0x8930 +0x5c65 0x8931 +0x5c66 0x8932 +0x5c67 0x8935 +0x5c68 0x8939 +0x5c69 0x893a +0x5c6a 0x893e +0x5c6b 0x8940 +0x5c6c 0x8942 +0x5c6d 0x8945 +0x5c6e 0x8946 +0x5c6f 0x8949 +0x5c70 0x894f +0x5c71 0x8952 +0x5c72 0x8957 +0x5c73 0x895a +0x5c74 0x895b +0x5c75 0x895c +0x5c76 0x8961 +0x5c77 0x8962 +0x5c78 0x8963 +0x5c79 0x896b +0x5c7a 0x896e +0x5c7b 0x8970 +0x5c7c 0x8973 +0x5c7d 0x8975 +0x5c7e 0x897a +0x5d21 0x897b +0x5d22 0x897c +0x5d23 0x897d +0x5d24 0x8989 +0x5d25 0x898d +0x5d26 0x8990 +0x5d27 0x8994 +0x5d28 0x8995 +0x5d29 0x899b +0x5d2a 0x899c +0x5d2b 0x899f +0x5d2c 0x89a0 +0x5d2d 0x89a5 +0x5d2e 0x89b0 +0x5d2f 0x89b4 +0x5d30 0x89b5 +0x5d31 0x89b6 +0x5d32 0x89b7 +0x5d33 0x89bc +0x5d34 0x89d4 +0x5d35 0x89d5 +0x5d36 0x89d6 +0x5d37 0x89d7 +0x5d38 0x89d8 +0x5d39 0x89e5 +0x5d3a 0x89e9 +0x5d3b 0x89eb +0x5d3c 0x89ed +0x5d3d 0x89f1 +0x5d3e 0x89f3 +0x5d3f 0x89f6 +0x5d40 0x89f9 +0x5d41 0x89fd +0x5d42 0x89ff +0x5d43 0x8a04 +0x5d44 0x8a05 +0x5d45 0x8a07 +0x5d46 0x8a0f +0x5d47 0x8a11 +0x5d48 0x8a12 +0x5d49 0x8a14 +0x5d4a 0x8a15 +0x5d4b 0x8a1e +0x5d4c 0x8a20 +0x5d4d 0x8a22 +0x5d4e 0x8a24 +0x5d4f 0x8a26 +0x5d50 0x8a2b +0x5d51 0x8a2c +0x5d52 0x8a2f +0x5d53 0x8a35 +0x5d54 0x8a37 +0x5d55 0x8a3d +0x5d56 0x8a3e +0x5d57 0x8a40 +0x5d58 0x8a43 +0x5d59 0x8a45 +0x5d5a 0x8a47 +0x5d5b 0x8a49 +0x5d5c 0x8a4d +0x5d5d 0x8a4e +0x5d5e 0x8a53 +0x5d5f 0x8a56 +0x5d60 0x8a57 +0x5d61 0x8a58 +0x5d62 0x8a5c +0x5d63 0x8a5d +0x5d64 0x8a61 +0x5d65 0x8a65 +0x5d66 0x8a67 +0x5d67 0x8a75 +0x5d68 0x8a76 +0x5d69 0x8a77 +0x5d6a 0x8a79 +0x5d6b 0x8a7a +0x5d6c 0x8a7b +0x5d6d 0x8a7e +0x5d6e 0x8a7f +0x5d6f 0x8a80 +0x5d70 0x8a83 +0x5d71 0x8a86 +0x5d72 0x8a8b +0x5d73 0x8a8f +0x5d74 0x8a90 +0x5d75 0x8a92 +0x5d76 0x8a96 +0x5d77 0x8a97 +0x5d78 0x8a99 +0x5d79 0x8a9f +0x5d7a 0x8aa7 +0x5d7b 0x8aa9 +0x5d7c 0x8aae +0x5d7d 0x8aaf +0x5d7e 0x8ab3 +0x5e21 0x8ab6 +0x5e22 0x8ab7 +0x5e23 0x8abb +0x5e24 0x8abe +0x5e25 0x8ac3 +0x5e26 0x8ac6 +0x5e27 0x8ac8 +0x5e28 0x8ac9 +0x5e29 0x8aca +0x5e2a 0x8ad1 +0x5e2b 0x8ad3 +0x5e2c 0x8ad4 +0x5e2d 0x8ad5 +0x5e2e 0x8ad7 +0x5e2f 0x8add +0x5e30 0x8adf +0x5e31 0x8aec +0x5e32 0x8af0 +0x5e33 0x8af4 +0x5e34 0x8af5 +0x5e35 0x8af6 +0x5e36 0x8afc +0x5e37 0x8aff +0x5e38 0x8b05 +0x5e39 0x8b06 +0x5e3a 0x8b0b +0x5e3b 0x8b11 +0x5e3c 0x8b1c +0x5e3d 0x8b1e +0x5e3e 0x8b1f +0x5e3f 0x8b0a +0x5e40 0x8b2d +0x5e41 0x8b30 +0x5e42 0x8b37 +0x5e43 0x8b3c +0x5e44 0x8b42 +0x5e45 0x8b43 +0x5e46 0x8b44 +0x5e47 0x8b45 +0x5e48 0x8b46 +0x5e49 0x8b48 +0x5e4a 0x8b52 +0x5e4b 0x8b53 +0x5e4c 0x8b54 +0x5e4d 0x8b59 +0x5e4e 0x8b4d +0x5e4f 0x8b5e +0x5e50 0x8b63 +0x5e51 0x8b6d +0x5e52 0x8b76 +0x5e53 0x8b78 +0x5e54 0x8b79 +0x5e55 0x8b7c +0x5e56 0x8b7e +0x5e57 0x8b81 +0x5e58 0x8b84 +0x5e59 0x8b85 +0x5e5a 0x8b8b +0x5e5b 0x8b8d +0x5e5c 0x8b8f +0x5e5d 0x8b94 +0x5e5e 0x8b95 +0x5e5f 0x8b9c +0x5e60 0x8b9e +0x5e61 0x8b9f +0x5e62 0x8c38 +0x5e63 0x8c39 +0x5e64 0x8c3d +0x5e65 0x8c3e +0x5e66 0x8c45 +0x5e67 0x8c47 +0x5e68 0x8c49 +0x5e69 0x8c4b +0x5e6a 0x8c4f +0x5e6b 0x8c51 +0x5e6c 0x8c53 +0x5e6d 0x8c54 +0x5e6e 0x8c57 +0x5e6f 0x8c58 +0x5e70 0x8c5b +0x5e71 0x8c5d +0x5e72 0x8c59 +0x5e73 0x8c63 +0x5e74 0x8c64 +0x5e75 0x8c66 +0x5e76 0x8c68 +0x5e77 0x8c69 +0x5e78 0x8c6d +0x5e79 0x8c73 +0x5e7a 0x8c75 +0x5e7b 0x8c76 +0x5e7c 0x8c7b +0x5e7d 0x8c7e +0x5e7e 0x8c86 +0x5f21 0x8c87 +0x5f22 0x8c8b +0x5f23 0x8c90 +0x5f24 0x8c92 +0x5f25 0x8c93 +0x5f26 0x8c99 +0x5f27 0x8c9b +0x5f28 0x8c9c +0x5f29 0x8ca4 +0x5f2a 0x8cb9 +0x5f2b 0x8cba +0x5f2c 0x8cc5 +0x5f2d 0x8cc6 +0x5f2e 0x8cc9 +0x5f2f 0x8ccb +0x5f30 0x8ccf +0x5f31 0x8cd6 +0x5f32 0x8cd5 +0x5f33 0x8cd9 +0x5f34 0x8cdd +0x5f35 0x8ce1 +0x5f36 0x8ce8 +0x5f37 0x8cec +0x5f38 0x8cef +0x5f39 0x8cf0 +0x5f3a 0x8cf2 +0x5f3b 0x8cf5 +0x5f3c 0x8cf7 +0x5f3d 0x8cf8 +0x5f3e 0x8cfe +0x5f3f 0x8cff +0x5f40 0x8d01 +0x5f41 0x8d03 +0x5f42 0x8d09 +0x5f43 0x8d12 +0x5f44 0x8d17 +0x5f45 0x8d1b +0x5f46 0x8d65 +0x5f47 0x8d69 +0x5f48 0x8d6c +0x5f49 0x8d6e +0x5f4a 0x8d7f +0x5f4b 0x8d82 +0x5f4c 0x8d84 +0x5f4d 0x8d88 +0x5f4e 0x8d8d +0x5f4f 0x8d90 +0x5f50 0x8d91 +0x5f51 0x8d95 +0x5f52 0x8d9e +0x5f53 0x8d9f +0x5f54 0x8da0 +0x5f55 0x8da6 +0x5f56 0x8dab +0x5f57 0x8dac +0x5f58 0x8daf +0x5f59 0x8db2 +0x5f5a 0x8db5 +0x5f5b 0x8db7 +0x5f5c 0x8db9 +0x5f5d 0x8dbb +0x5f5e 0x8dc0 +0x5f5f 0x8dc5 +0x5f60 0x8dc6 +0x5f61 0x8dc7 +0x5f62 0x8dc8 +0x5f63 0x8dca +0x5f64 0x8dce +0x5f65 0x8dd1 +0x5f66 0x8dd4 +0x5f67 0x8dd5 +0x5f68 0x8dd7 +0x5f69 0x8dd9 +0x5f6a 0x8de4 +0x5f6b 0x8de5 +0x5f6c 0x8de7 +0x5f6d 0x8dec +0x5f6e 0x8df0 +0x5f6f 0x8dbc +0x5f70 0x8df1 +0x5f71 0x8df2 +0x5f72 0x8df4 +0x5f73 0x8dfd +0x5f74 0x8e01 +0x5f75 0x8e04 +0x5f76 0x8e05 +0x5f77 0x8e06 +0x5f78 0x8e0b +0x5f79 0x8e11 +0x5f7a 0x8e14 +0x5f7b 0x8e16 +0x5f7c 0x8e20 +0x5f7d 0x8e21 +0x5f7e 0x8e22 +0x6021 0x8e23 +0x6022 0x8e26 +0x6023 0x8e27 +0x6024 0x8e31 +0x6025 0x8e33 +0x6026 0x8e36 +0x6027 0x8e37 +0x6028 0x8e38 +0x6029 0x8e39 +0x602a 0x8e3d +0x602b 0x8e40 +0x602c 0x8e41 +0x602d 0x8e4b +0x602e 0x8e4d +0x602f 0x8e4e +0x6030 0x8e4f +0x6031 0x8e54 +0x6032 0x8e5b +0x6033 0x8e5c +0x6034 0x8e5d +0x6035 0x8e5e +0x6036 0x8e61 +0x6037 0x8e62 +0x6038 0x8e69 +0x6039 0x8e6c +0x603a 0x8e6d +0x603b 0x8e6f +0x603c 0x8e70 +0x603d 0x8e71 +0x603e 0x8e79 +0x603f 0x8e7a +0x6040 0x8e7b +0x6041 0x8e82 +0x6042 0x8e83 +0x6043 0x8e89 +0x6044 0x8e90 +0x6045 0x8e92 +0x6046 0x8e95 +0x6047 0x8e9a +0x6048 0x8e9b +0x6049 0x8e9d +0x604a 0x8e9e +0x604b 0x8ea2 +0x604c 0x8ea7 +0x604d 0x8ea9 +0x604e 0x8ead +0x604f 0x8eae +0x6050 0x8eb3 +0x6051 0x8eb5 +0x6052 0x8eba +0x6053 0x8ebb +0x6054 0x8ec0 +0x6055 0x8ec1 +0x6056 0x8ec3 +0x6057 0x8ec4 +0x6058 0x8ec7 +0x6059 0x8ecf +0x605a 0x8ed1 +0x605b 0x8ed4 +0x605c 0x8edc +0x605d 0x8ee8 +0x605e 0x8eee +0x605f 0x8ef0 +0x6060 0x8ef1 +0x6061 0x8ef7 +0x6062 0x8ef9 +0x6063 0x8efa +0x6064 0x8eed +0x6065 0x8f00 +0x6066 0x8f02 +0x6067 0x8f07 +0x6068 0x8f08 +0x6069 0x8f0f +0x606a 0x8f10 +0x606b 0x8f16 +0x606c 0x8f17 +0x606d 0x8f18 +0x606e 0x8f1e +0x606f 0x8f20 +0x6070 0x8f21 +0x6071 0x8f23 +0x6072 0x8f25 +0x6073 0x8f27 +0x6074 0x8f28 +0x6075 0x8f2c +0x6076 0x8f2d +0x6077 0x8f2e +0x6078 0x8f34 +0x6079 0x8f35 +0x607a 0x8f36 +0x607b 0x8f37 +0x607c 0x8f3a +0x607d 0x8f40 +0x607e 0x8f41 +0x6121 0x8f43 +0x6122 0x8f47 +0x6123 0x8f4f +0x6124 0x8f51 +0x6125 0x8f52 +0x6126 0x8f53 +0x6127 0x8f54 +0x6128 0x8f55 +0x6129 0x8f58 +0x612a 0x8f5d +0x612b 0x8f5e +0x612c 0x8f65 +0x612d 0x8f9d +0x612e 0x8fa0 +0x612f 0x8fa1 +0x6130 0x8fa4 +0x6131 0x8fa5 +0x6132 0x8fa6 +0x6133 0x8fb5 +0x6134 0x8fb6 +0x6135 0x8fb8 +0x6136 0x8fbe +0x6137 0x8fc0 +0x6138 0x8fc1 +0x6139 0x8fc6 +0x613a 0x8fca +0x613b 0x8fcb +0x613c 0x8fcd +0x613d 0x8fd0 +0x613e 0x8fd2 +0x613f 0x8fd3 +0x6140 0x8fd5 +0x6141 0x8fe0 +0x6142 0x8fe3 +0x6143 0x8fe4 +0x6144 0x8fe8 +0x6145 0x8fee +0x6146 0x8ff1 +0x6147 0x8ff5 +0x6148 0x8ff6 +0x6149 0x8ffb +0x614a 0x8ffe +0x614b 0x9002 +0x614c 0x9004 +0x614d 0x9008 +0x614e 0x900c +0x614f 0x9018 +0x6150 0x901b +0x6151 0x9028 +0x6152 0x9029 +0x6153 0x902f +0x6154 0x902a +0x6155 0x902c +0x6156 0x902d +0x6157 0x9033 +0x6158 0x9034 +0x6159 0x9037 +0x615a 0x903f +0x615b 0x9043 +0x615c 0x9044 +0x615d 0x904c +0x615e 0x905b +0x615f 0x905d +0x6160 0x9062 +0x6161 0x9066 +0x6162 0x9067 +0x6163 0x906c +0x6164 0x9070 +0x6165 0x9074 +0x6166 0x9079 +0x6167 0x9085 +0x6168 0x9088 +0x6169 0x908b +0x616a 0x908c +0x616b 0x908e +0x616c 0x9090 +0x616d 0x9095 +0x616e 0x9097 +0x616f 0x9098 +0x6170 0x9099 +0x6171 0x909b +0x6172 0x90a0 +0x6173 0x90a1 +0x6174 0x90a2 +0x6175 0x90a5 +0x6176 0x90b0 +0x6177 0x90b2 +0x6178 0x90b3 +0x6179 0x90b4 +0x617a 0x90b6 +0x617b 0x90bd +0x617c 0x90cc +0x617d 0x90be +0x617e 0x90c3 +0x6221 0x90c4 +0x6222 0x90c5 +0x6223 0x90c7 +0x6224 0x90c8 +0x6225 0x90d5 +0x6226 0x90d7 +0x6227 0x90d8 +0x6228 0x90d9 +0x6229 0x90dc +0x622a 0x90dd +0x622b 0x90df +0x622c 0x90e5 +0x622d 0x90d2 +0x622e 0x90f6 +0x622f 0x90eb +0x6230 0x90ef +0x6231 0x90f0 +0x6232 0x90f4 +0x6233 0x90fe +0x6234 0x90ff +0x6235 0x9100 +0x6236 0x9104 +0x6237 0x9105 +0x6238 0x9106 +0x6239 0x9108 +0x623a 0x910d +0x623b 0x9110 +0x623c 0x9114 +0x623d 0x9116 +0x623e 0x9117 +0x623f 0x9118 +0x6240 0x911a +0x6241 0x911c +0x6242 0x911e +0x6243 0x9120 +0x6244 0x9125 +0x6245 0x9122 +0x6246 0x9123 +0x6247 0x9127 +0x6248 0x9129 +0x6249 0x912e +0x624a 0x912f +0x624b 0x9131 +0x624c 0x9134 +0x624d 0x9136 +0x624e 0x9137 +0x624f 0x9139 +0x6250 0x913a +0x6251 0x913c +0x6252 0x913d +0x6253 0x9143 +0x6254 0x9147 +0x6255 0x9148 +0x6256 0x914f +0x6257 0x9153 +0x6258 0x9157 +0x6259 0x9159 +0x625a 0x915a +0x625b 0x915b +0x625c 0x9161 +0x625d 0x9164 +0x625e 0x9167 +0x625f 0x916d +0x6260 0x9174 +0x6261 0x9179 +0x6262 0x917a +0x6263 0x917b +0x6264 0x9181 +0x6265 0x9183 +0x6266 0x9185 +0x6267 0x9186 +0x6268 0x918a +0x6269 0x918e +0x626a 0x9191 +0x626b 0x9193 +0x626c 0x9194 +0x626d 0x9195 +0x626e 0x9198 +0x626f 0x919e +0x6270 0x91a1 +0x6271 0x91a6 +0x6272 0x91a8 +0x6273 0x91ac +0x6274 0x91ad +0x6275 0x91ae +0x6276 0x91b0 +0x6277 0x91b1 +0x6278 0x91b2 +0x6279 0x91b3 +0x627a 0x91b6 +0x627b 0x91bb +0x627c 0x91bc +0x627d 0x91bd +0x627e 0x91bf +0x6321 0x91c2 +0x6322 0x91c3 +0x6323 0x91c5 +0x6324 0x91d3 +0x6325 0x91d4 +0x6326 0x91d7 +0x6327 0x91d9 +0x6328 0x91da +0x6329 0x91de +0x632a 0x91e4 +0x632b 0x91e5 +0x632c 0x91e9 +0x632d 0x91ea +0x632e 0x91ec +0x632f 0x91ed +0x6330 0x91ee +0x6331 0x91ef +0x6332 0x91f0 +0x6333 0x91f1 +0x6334 0x91f7 +0x6335 0x91f9 +0x6336 0x91fb +0x6337 0x91fd +0x6338 0x9200 +0x6339 0x9201 +0x633a 0x9204 +0x633b 0x9205 +0x633c 0x9206 +0x633d 0x9207 +0x633e 0x9209 +0x633f 0x920a +0x6340 0x920c +0x6341 0x9210 +0x6342 0x9212 +0x6343 0x9213 +0x6344 0x9216 +0x6345 0x9218 +0x6346 0x921c +0x6347 0x921d +0x6348 0x9223 +0x6349 0x9224 +0x634a 0x9225 +0x634b 0x9226 +0x634c 0x9228 +0x634d 0x922e +0x634e 0x922f +0x634f 0x9230 +0x6350 0x9233 +0x6351 0x9235 +0x6352 0x9236 +0x6353 0x9238 +0x6354 0x9239 +0x6355 0x923a +0x6356 0x923c +0x6357 0x923e +0x6358 0x9240 +0x6359 0x9242 +0x635a 0x9243 +0x635b 0x9246 +0x635c 0x9247 +0x635d 0x924a +0x635e 0x924d +0x635f 0x924e +0x6360 0x924f +0x6361 0x9251 +0x6362 0x9258 +0x6363 0x9259 +0x6364 0x925c +0x6365 0x925d +0x6366 0x9260 +0x6367 0x9261 +0x6368 0x9265 +0x6369 0x9267 +0x636a 0x9268 +0x636b 0x9269 +0x636c 0x926e +0x636d 0x926f +0x636e 0x9270 +0x636f 0x9275 +0x6370 0x9276 +0x6371 0x9277 +0x6372 0x9278 +0x6373 0x9279 +0x6374 0x927b +0x6375 0x927c +0x6376 0x927d +0x6377 0x927f +0x6378 0x9288 +0x6379 0x9289 +0x637a 0x928a +0x637b 0x928d +0x637c 0x928e +0x637d 0x9292 +0x637e 0x9297 +0x6421 0x9299 +0x6422 0x929f +0x6423 0x92a0 +0x6424 0x92a4 +0x6425 0x92a5 +0x6426 0x92a7 +0x6427 0x92a8 +0x6428 0x92ab +0x6429 0x92af +0x642a 0x92b2 +0x642b 0x92b6 +0x642c 0x92b8 +0x642d 0x92ba +0x642e 0x92bb +0x642f 0x92bc +0x6430 0x92bd +0x6431 0x92bf +0x6432 0x92c0 +0x6433 0x92c1 +0x6434 0x92c2 +0x6435 0x92c3 +0x6436 0x92c5 +0x6437 0x92c6 +0x6438 0x92c7 +0x6439 0x92c8 +0x643a 0x92cb +0x643b 0x92cc +0x643c 0x92cd +0x643d 0x92ce +0x643e 0x92d0 +0x643f 0x92d3 +0x6440 0x92d5 +0x6441 0x92d7 +0x6442 0x92d8 +0x6443 0x92d9 +0x6444 0x92dc +0x6445 0x92dd +0x6446 0x92df +0x6447 0x92e0 +0x6448 0x92e1 +0x6449 0x92e3 +0x644a 0x92e5 +0x644b 0x92e7 +0x644c 0x92e8 +0x644d 0x92ec +0x644e 0x92ee +0x644f 0x92f0 +0x6450 0x92f9 +0x6451 0x92fb +0x6452 0x92ff +0x6453 0x9300 +0x6454 0x9302 +0x6455 0x9308 +0x6456 0x930d +0x6457 0x9311 +0x6458 0x9314 +0x6459 0x9315 +0x645a 0x931c +0x645b 0x931d +0x645c 0x931e +0x645d 0x931f +0x645e 0x9321 +0x645f 0x9324 +0x6460 0x9325 +0x6461 0x9327 +0x6462 0x9329 +0x6463 0x932a +0x6464 0x9333 +0x6465 0x9334 +0x6466 0x9336 +0x6467 0x9337 +0x6468 0x9347 +0x6469 0x9348 +0x646a 0x9349 +0x646b 0x9350 +0x646c 0x9351 +0x646d 0x9352 +0x646e 0x9355 +0x646f 0x9357 +0x6470 0x9358 +0x6471 0x935a +0x6472 0x935e +0x6473 0x9364 +0x6474 0x9365 +0x6475 0x9367 +0x6476 0x9369 +0x6477 0x936a +0x6478 0x936d +0x6479 0x936f +0x647a 0x9370 +0x647b 0x9371 +0x647c 0x9373 +0x647d 0x9374 +0x647e 0x9376 +0x6521 0x937a +0x6522 0x937d +0x6523 0x937f +0x6524 0x9380 +0x6525 0x9381 +0x6526 0x9382 +0x6527 0x9388 +0x6528 0x938a +0x6529 0x938b +0x652a 0x938d +0x652b 0x938f +0x652c 0x9392 +0x652d 0x9395 +0x652e 0x9398 +0x652f 0x939b +0x6530 0x939e +0x6531 0x93a1 +0x6532 0x93a3 +0x6533 0x93a4 +0x6534 0x93a6 +0x6535 0x93a8 +0x6536 0x93ab +0x6537 0x93b4 +0x6538 0x93b5 +0x6539 0x93b6 +0x653a 0x93ba +0x653b 0x93a9 +0x653c 0x93c1 +0x653d 0x93c4 +0x653e 0x93c5 +0x653f 0x93c6 +0x6540 0x93c7 +0x6541 0x93c9 +0x6542 0x93ca +0x6543 0x93cb +0x6544 0x93cc +0x6545 0x93cd +0x6546 0x93d3 +0x6547 0x93d9 +0x6548 0x93dc +0x6549 0x93de +0x654a 0x93df +0x654b 0x93e2 +0x654c 0x93e6 +0x654d 0x93e7 +0x654e 0x93f9 +0x654f 0x93f7 +0x6550 0x93f8 +0x6551 0x93fa +0x6552 0x93fb +0x6553 0x93fd +0x6554 0x9401 +0x6555 0x9402 +0x6556 0x9404 +0x6557 0x9408 +0x6558 0x9409 +0x6559 0x940d +0x655a 0x940e +0x655b 0x940f +0x655c 0x9415 +0x655d 0x9416 +0x655e 0x9417 +0x655f 0x941f +0x6560 0x942e +0x6561 0x942f +0x6562 0x9431 +0x6563 0x9432 +0x6564 0x9433 +0x6565 0x9434 +0x6566 0x943b +0x6567 0x943f +0x6568 0x943d +0x6569 0x9443 +0x656a 0x9445 +0x656b 0x9448 +0x656c 0x944a +0x656d 0x944c +0x656e 0x9455 +0x656f 0x9459 +0x6570 0x945c +0x6571 0x945f +0x6572 0x9461 +0x6573 0x9463 +0x6574 0x9468 +0x6575 0x946b +0x6576 0x946d +0x6577 0x946e +0x6578 0x946f +0x6579 0x9471 +0x657a 0x9472 +0x657b 0x9484 +0x657c 0x9483 +0x657d 0x9578 +0x657e 0x9579 +0x6621 0x957e +0x6622 0x9584 +0x6623 0x9588 +0x6624 0x958c +0x6625 0x958d +0x6626 0x958e +0x6627 0x959d +0x6628 0x959e +0x6629 0x959f +0x662a 0x95a1 +0x662b 0x95a6 +0x662c 0x95a9 +0x662d 0x95ab +0x662e 0x95ac +0x662f 0x95b4 +0x6630 0x95b6 +0x6631 0x95ba +0x6632 0x95bd +0x6633 0x95bf +0x6634 0x95c6 +0x6635 0x95c8 +0x6636 0x95c9 +0x6637 0x95cb +0x6638 0x95d0 +0x6639 0x95d1 +0x663a 0x95d2 +0x663b 0x95d3 +0x663c 0x95d9 +0x663d 0x95da +0x663e 0x95dd +0x663f 0x95de +0x6640 0x95df +0x6641 0x95e0 +0x6642 0x95e4 +0x6643 0x95e6 +0x6644 0x961d +0x6645 0x961e +0x6646 0x9622 +0x6647 0x9624 +0x6648 0x9625 +0x6649 0x9626 +0x664a 0x962c +0x664b 0x9631 +0x664c 0x9633 +0x664d 0x9637 +0x664e 0x9638 +0x664f 0x9639 +0x6650 0x963a +0x6651 0x963c +0x6652 0x963d +0x6653 0x9641 +0x6654 0x9652 +0x6655 0x9654 +0x6656 0x9656 +0x6657 0x9657 +0x6658 0x9658 +0x6659 0x9661 +0x665a 0x966e +0x665b 0x9674 +0x665c 0x967b +0x665d 0x967c +0x665e 0x967e +0x665f 0x967f +0x6660 0x9681 +0x6661 0x9682 +0x6662 0x9683 +0x6663 0x9684 +0x6664 0x9689 +0x6665 0x9691 +0x6666 0x9696 +0x6667 0x969a +0x6668 0x969d +0x6669 0x969f +0x666a 0x96a4 +0x666b 0x96a5 +0x666c 0x96a6 +0x666d 0x96a9 +0x666e 0x96ae +0x666f 0x96af +0x6670 0x96b3 +0x6671 0x96ba +0x6672 0x96ca +0x6673 0x96d2 +0x6674 0x5db2 +0x6675 0x96d8 +0x6676 0x96da +0x6677 0x96dd +0x6678 0x96de +0x6679 0x96df +0x667a 0x96e9 +0x667b 0x96ef +0x667c 0x96f1 +0x667d 0x96fa +0x667e 0x9702 +0x6721 0x9703 +0x6722 0x9705 +0x6723 0x9709 +0x6724 0x971a +0x6725 0x971b +0x6726 0x971d +0x6727 0x9721 +0x6728 0x9722 +0x6729 0x9723 +0x672a 0x9728 +0x672b 0x9731 +0x672c 0x9733 +0x672d 0x9741 +0x672e 0x9743 +0x672f 0x974a +0x6730 0x974e +0x6731 0x974f +0x6732 0x9755 +0x6733 0x9757 +0x6734 0x9758 +0x6735 0x975a +0x6736 0x975b +0x6737 0x9763 +0x6738 0x9767 +0x6739 0x976a +0x673a 0x976e +0x673b 0x9773 +0x673c 0x9776 +0x673d 0x9777 +0x673e 0x9778 +0x673f 0x977b +0x6740 0x977d +0x6741 0x977f +0x6742 0x9780 +0x6743 0x9789 +0x6744 0x9795 +0x6745 0x9796 +0x6746 0x9797 +0x6747 0x9799 +0x6748 0x979a +0x6749 0x979e +0x674a 0x979f +0x674b 0x97a2 +0x674c 0x97ac +0x674d 0x97ae +0x674e 0x97b1 +0x674f 0x97b2 +0x6750 0x97b5 +0x6751 0x97b6 +0x6752 0x97b8 +0x6753 0x97b9 +0x6754 0x97ba +0x6755 0x97bc +0x6756 0x97be +0x6757 0x97bf +0x6758 0x97c1 +0x6759 0x97c4 +0x675a 0x97c5 +0x675b 0x97c7 +0x675c 0x97c9 +0x675d 0x97ca +0x675e 0x97cc +0x675f 0x97cd +0x6760 0x97ce +0x6761 0x97d0 +0x6762 0x97d1 +0x6763 0x97d4 +0x6764 0x97d7 +0x6765 0x97d8 +0x6766 0x97d9 +0x6767 0x97dd +0x6768 0x97de +0x6769 0x97e0 +0x676a 0x97db +0x676b 0x97e1 +0x676c 0x97e4 +0x676d 0x97ef +0x676e 0x97f1 +0x676f 0x97f4 +0x6770 0x97f7 +0x6771 0x97f8 +0x6772 0x97fa +0x6773 0x9807 +0x6774 0x980a +0x6775 0x9819 +0x6776 0x980d +0x6777 0x980e +0x6778 0x9814 +0x6779 0x9816 +0x677a 0x981c +0x677b 0x981e +0x677c 0x9820 +0x677d 0x9823 +0x677e 0x9826 +0x6821 0x982b +0x6822 0x982e +0x6823 0x982f +0x6824 0x9830 +0x6825 0x9832 +0x6826 0x9833 +0x6827 0x9835 +0x6828 0x9825 +0x6829 0x983e +0x682a 0x9844 +0x682b 0x9847 +0x682c 0x984a +0x682d 0x9851 +0x682e 0x9852 +0x682f 0x9853 +0x6830 0x9856 +0x6831 0x9857 +0x6832 0x9859 +0x6833 0x985a +0x6834 0x9862 +0x6835 0x9863 +0x6836 0x9865 +0x6837 0x9866 +0x6838 0x986a +0x6839 0x986c +0x683a 0x98ab +0x683b 0x98ad +0x683c 0x98ae +0x683d 0x98b0 +0x683e 0x98b4 +0x683f 0x98b7 +0x6840 0x98b8 +0x6841 0x98ba +0x6842 0x98bb +0x6843 0x98bf +0x6844 0x98c2 +0x6845 0x98c5 +0x6846 0x98c8 +0x6847 0x98cc +0x6848 0x98e1 +0x6849 0x98e3 +0x684a 0x98e5 +0x684b 0x98e6 +0x684c 0x98e7 +0x684d 0x98ea +0x684e 0x98f3 +0x684f 0x98f6 +0x6850 0x9902 +0x6851 0x9907 +0x6852 0x9908 +0x6853 0x9911 +0x6854 0x9915 +0x6855 0x9916 +0x6856 0x9917 +0x6857 0x991a +0x6858 0x991b +0x6859 0x991c +0x685a 0x991f +0x685b 0x9922 +0x685c 0x9926 +0x685d 0x9927 +0x685e 0x992b +0x685f 0x9931 +0x6860 0x9932 +0x6861 0x9933 +0x6862 0x9934 +0x6863 0x9935 +0x6864 0x9939 +0x6865 0x993a +0x6866 0x993b +0x6867 0x993c +0x6868 0x9940 +0x6869 0x9941 +0x686a 0x9946 +0x686b 0x9947 +0x686c 0x9948 +0x686d 0x994d +0x686e 0x994e +0x686f 0x9954 +0x6870 0x9958 +0x6871 0x9959 +0x6872 0x995b +0x6873 0x995c +0x6874 0x995e +0x6875 0x995f +0x6876 0x9960 +0x6877 0x999b +0x6878 0x999d +0x6879 0x999f +0x687a 0x99a6 +0x687b 0x99b0 +0x687c 0x99b1 +0x687d 0x99b2 +0x687e 0x99b5 +0x6921 0x99b9 +0x6922 0x99ba +0x6923 0x99bd +0x6924 0x99bf +0x6925 0x99c3 +0x6926 0x99c9 +0x6927 0x99d3 +0x6928 0x99d4 +0x6929 0x99d9 +0x692a 0x99da +0x692b 0x99dc +0x692c 0x99de +0x692d 0x99e7 +0x692e 0x99ea +0x692f 0x99eb +0x6930 0x99ec +0x6931 0x99f0 +0x6932 0x99f4 +0x6933 0x99f5 +0x6934 0x99f9 +0x6935 0x99fd +0x6936 0x99fe +0x6937 0x9a02 +0x6938 0x9a03 +0x6939 0x9a04 +0x693a 0x9a0b +0x693b 0x9a0c +0x693c 0x9a10 +0x693d 0x9a11 +0x693e 0x9a16 +0x693f 0x9a1e +0x6940 0x9a20 +0x6941 0x9a22 +0x6942 0x9a23 +0x6943 0x9a24 +0x6944 0x9a27 +0x6945 0x9a2d +0x6946 0x9a2e +0x6947 0x9a33 +0x6948 0x9a35 +0x6949 0x9a36 +0x694a 0x9a38 +0x694b 0x9a47 +0x694c 0x9a41 +0x694d 0x9a44 +0x694e 0x9a4a +0x694f 0x9a4b +0x6950 0x9a4c +0x6951 0x9a4e +0x6952 0x9a51 +0x6953 0x9a54 +0x6954 0x9a56 +0x6955 0x9a5d +0x6956 0x9aaa +0x6957 0x9aac +0x6958 0x9aae +0x6959 0x9aaf +0x695a 0x9ab2 +0x695b 0x9ab4 +0x695c 0x9ab5 +0x695d 0x9ab6 +0x695e 0x9ab9 +0x695f 0x9abb +0x6960 0x9abe +0x6961 0x9abf +0x6962 0x9ac1 +0x6963 0x9ac3 +0x6964 0x9ac6 +0x6965 0x9ac8 +0x6966 0x9ace +0x6967 0x9ad0 +0x6968 0x9ad2 +0x6969 0x9ad5 +0x696a 0x9ad6 +0x696b 0x9ad7 +0x696c 0x9adb +0x696d 0x9adc +0x696e 0x9ae0 +0x696f 0x9ae4 +0x6970 0x9ae5 +0x6971 0x9ae7 +0x6972 0x9ae9 +0x6973 0x9aec +0x6974 0x9af2 +0x6975 0x9af3 +0x6976 0x9af5 +0x6977 0x9af9 +0x6978 0x9afa +0x6979 0x9afd +0x697a 0x9aff +0x697b 0x9b00 +0x697c 0x9b01 +0x697d 0x9b02 +0x697e 0x9b03 +0x6a21 0x9b04 +0x6a22 0x9b05 +0x6a23 0x9b08 +0x6a24 0x9b09 +0x6a25 0x9b0b +0x6a26 0x9b0c +0x6a27 0x9b0d +0x6a28 0x9b0e +0x6a29 0x9b10 +0x6a2a 0x9b12 +0x6a2b 0x9b16 +0x6a2c 0x9b19 +0x6a2d 0x9b1b +0x6a2e 0x9b1c +0x6a2f 0x9b20 +0x6a30 0x9b26 +0x6a31 0x9b2b +0x6a32 0x9b2d +0x6a33 0x9b33 +0x6a34 0x9b34 +0x6a35 0x9b35 +0x6a36 0x9b37 +0x6a37 0x9b39 +0x6a38 0x9b3a +0x6a39 0x9b3d +0x6a3a 0x9b48 +0x6a3b 0x9b4b +0x6a3c 0x9b4c +0x6a3d 0x9b55 +0x6a3e 0x9b56 +0x6a3f 0x9b57 +0x6a40 0x9b5b +0x6a41 0x9b5e +0x6a42 0x9b61 +0x6a43 0x9b63 +0x6a44 0x9b65 +0x6a45 0x9b66 +0x6a46 0x9b68 +0x6a47 0x9b6a +0x6a48 0x9b6b +0x6a49 0x9b6c +0x6a4a 0x9b6d +0x6a4b 0x9b6e +0x6a4c 0x9b73 +0x6a4d 0x9b75 +0x6a4e 0x9b77 +0x6a4f 0x9b78 +0x6a50 0x9b79 +0x6a51 0x9b7f +0x6a52 0x9b80 +0x6a53 0x9b84 +0x6a54 0x9b85 +0x6a55 0x9b86 +0x6a56 0x9b87 +0x6a57 0x9b89 +0x6a58 0x9b8a +0x6a59 0x9b8b +0x6a5a 0x9b8d +0x6a5b 0x9b8f +0x6a5c 0x9b90 +0x6a5d 0x9b94 +0x6a5e 0x9b9a +0x6a5f 0x9b9d +0x6a60 0x9b9e +0x6a61 0x9ba6 +0x6a62 0x9ba7 +0x6a63 0x9ba9 +0x6a64 0x9bac +0x6a65 0x9bb0 +0x6a66 0x9bb1 +0x6a67 0x9bb2 +0x6a68 0x9bb7 +0x6a69 0x9bb8 +0x6a6a 0x9bbb +0x6a6b 0x9bbc +0x6a6c 0x9bbe +0x6a6d 0x9bbf +0x6a6e 0x9bc1 +0x6a6f 0x9bc7 +0x6a70 0x9bc8 +0x6a71 0x9bce +0x6a72 0x9bd0 +0x6a73 0x9bd7 +0x6a74 0x9bd8 +0x6a75 0x9bdd +0x6a76 0x9bdf +0x6a77 0x9be5 +0x6a78 0x9be7 +0x6a79 0x9bea +0x6a7a 0x9beb +0x6a7b 0x9bef +0x6a7c 0x9bf3 +0x6a7d 0x9bf7 +0x6a7e 0x9bf8 +0x6b21 0x9bf9 +0x6b22 0x9bfa +0x6b23 0x9bfd +0x6b24 0x9bff +0x6b25 0x9c00 +0x6b26 0x9c02 +0x6b27 0x9c0b +0x6b28 0x9c0f +0x6b29 0x9c11 +0x6b2a 0x9c16 +0x6b2b 0x9c18 +0x6b2c 0x9c19 +0x6b2d 0x9c1a +0x6b2e 0x9c1c +0x6b2f 0x9c1e +0x6b30 0x9c22 +0x6b31 0x9c23 +0x6b32 0x9c26 +0x6b33 0x9c27 +0x6b34 0x9c28 +0x6b35 0x9c29 +0x6b36 0x9c2a +0x6b37 0x9c31 +0x6b38 0x9c35 +0x6b39 0x9c36 +0x6b3a 0x9c37 +0x6b3b 0x9c3d +0x6b3c 0x9c41 +0x6b3d 0x9c43 +0x6b3e 0x9c44 +0x6b3f 0x9c45 +0x6b40 0x9c49 +0x6b41 0x9c4a +0x6b42 0x9c4e +0x6b43 0x9c4f +0x6b44 0x9c50 +0x6b45 0x9c53 +0x6b46 0x9c54 +0x6b47 0x9c56 +0x6b48 0x9c58 +0x6b49 0x9c5b +0x6b4a 0x9c5d +0x6b4b 0x9c5e +0x6b4c 0x9c5f +0x6b4d 0x9c63 +0x6b4e 0x9c69 +0x6b4f 0x9c6a +0x6b50 0x9c5c +0x6b51 0x9c6b +0x6b52 0x9c68 +0x6b53 0x9c6e +0x6b54 0x9c70 +0x6b55 0x9c72 +0x6b56 0x9c75 +0x6b57 0x9c77 +0x6b58 0x9c7b +0x6b59 0x9ce6 +0x6b5a 0x9cf2 +0x6b5b 0x9cf7 +0x6b5c 0x9cf9 +0x6b5d 0x9d0b +0x6b5e 0x9d02 +0x6b5f 0x9d11 +0x6b60 0x9d17 +0x6b61 0x9d18 +0x6b62 0x9d1c +0x6b63 0x9d1d +0x6b64 0x9d1e +0x6b65 0x9d2f +0x6b66 0x9d30 +0x6b67 0x9d32 +0x6b68 0x9d33 +0x6b69 0x9d34 +0x6b6a 0x9d3a +0x6b6b 0x9d3c +0x6b6c 0x9d45 +0x6b6d 0x9d3d +0x6b6e 0x9d42 +0x6b6f 0x9d43 +0x6b70 0x9d47 +0x6b71 0x9d4a +0x6b72 0x9d53 +0x6b73 0x9d54 +0x6b74 0x9d5f +0x6b75 0x9d63 +0x6b76 0x9d62 +0x6b77 0x9d65 +0x6b78 0x9d69 +0x6b79 0x9d6a +0x6b7a 0x9d6b +0x6b7b 0x9d70 +0x6b7c 0x9d76 +0x6b7d 0x9d77 +0x6b7e 0x9d7b +0x6c21 0x9d7c +0x6c22 0x9d7e +0x6c23 0x9d83 +0x6c24 0x9d84 +0x6c25 0x9d86 +0x6c26 0x9d8a +0x6c27 0x9d8d +0x6c28 0x9d8e +0x6c29 0x9d92 +0x6c2a 0x9d93 +0x6c2b 0x9d95 +0x6c2c 0x9d96 +0x6c2d 0x9d97 +0x6c2e 0x9d98 +0x6c2f 0x9da1 +0x6c30 0x9daa +0x6c31 0x9dac +0x6c32 0x9dae +0x6c33 0x9db1 +0x6c34 0x9db5 +0x6c35 0x9db9 +0x6c36 0x9dbc +0x6c37 0x9dbf +0x6c38 0x9dc3 +0x6c39 0x9dc7 +0x6c3a 0x9dc9 +0x6c3b 0x9dca +0x6c3c 0x9dd4 +0x6c3d 0x9dd5 +0x6c3e 0x9dd6 +0x6c3f 0x9dd7 +0x6c40 0x9dda +0x6c41 0x9dde +0x6c42 0x9ddf +0x6c43 0x9de0 +0x6c44 0x9de5 +0x6c45 0x9de7 +0x6c46 0x9de9 +0x6c47 0x9deb +0x6c48 0x9dee +0x6c49 0x9df0 +0x6c4a 0x9df3 +0x6c4b 0x9df4 +0x6c4c 0x9dfe +0x6c4d 0x9e0a +0x6c4e 0x9e02 +0x6c4f 0x9e07 +0x6c50 0x9e0e +0x6c51 0x9e10 +0x6c52 0x9e11 +0x6c53 0x9e12 +0x6c54 0x9e15 +0x6c55 0x9e16 +0x6c56 0x9e19 +0x6c57 0x9e1c +0x6c58 0x9e1d +0x6c59 0x9e7a +0x6c5a 0x9e7b +0x6c5b 0x9e7c +0x6c5c 0x9e80 +0x6c5d 0x9e82 +0x6c5e 0x9e83 +0x6c5f 0x9e84 +0x6c60 0x9e85 +0x6c61 0x9e87 +0x6c62 0x9e8e +0x6c63 0x9e8f +0x6c64 0x9e96 +0x6c65 0x9e98 +0x6c66 0x9e9b +0x6c67 0x9e9e +0x6c68 0x9ea4 +0x6c69 0x9ea8 +0x6c6a 0x9eac +0x6c6b 0x9eae +0x6c6c 0x9eaf +0x6c6d 0x9eb0 +0x6c6e 0x9eb3 +0x6c6f 0x9eb4 +0x6c70 0x9eb5 +0x6c71 0x9ec6 +0x6c72 0x9ec8 +0x6c73 0x9ecb +0x6c74 0x9ed5 +0x6c75 0x9edf +0x6c76 0x9ee4 +0x6c77 0x9ee7 +0x6c78 0x9eec +0x6c79 0x9eed +0x6c7a 0x9eee +0x6c7b 0x9ef0 +0x6c7c 0x9ef1 +0x6c7d 0x9ef2 +0x6c7e 0x9ef5 +0x6d21 0x9ef8 +0x6d22 0x9eff +0x6d23 0x9f02 +0x6d24 0x9f03 +0x6d25 0x9f09 +0x6d26 0x9f0f +0x6d27 0x9f10 +0x6d28 0x9f11 +0x6d29 0x9f12 +0x6d2a 0x9f14 +0x6d2b 0x9f16 +0x6d2c 0x9f17 +0x6d2d 0x9f19 +0x6d2e 0x9f1a +0x6d2f 0x9f1b +0x6d30 0x9f1f +0x6d31 0x9f22 +0x6d32 0x9f26 +0x6d33 0x9f2a +0x6d34 0x9f2b +0x6d35 0x9f2f +0x6d36 0x9f31 +0x6d37 0x9f32 +0x6d38 0x9f34 +0x6d39 0x9f37 +0x6d3a 0x9f39 +0x6d3b 0x9f3a +0x6d3c 0x9f3c +0x6d3d 0x9f3d +0x6d3e 0x9f3f +0x6d3f 0x9f41 +0x6d40 0x9f43 +0x6d41 0x9f44 +0x6d42 0x9f45 +0x6d43 0x9f46 +0x6d44 0x9f47 +0x6d45 0x9f53 +0x6d46 0x9f55 +0x6d47 0x9f56 +0x6d48 0x9f57 +0x6d49 0x9f58 +0x6d4a 0x9f5a +0x6d4b 0x9f5d +0x6d4c 0x9f5e +0x6d4d 0x9f68 +0x6d4e 0x9f69 +0x6d4f 0x9f6d +0x6d50 0x9f6e +0x6d51 0x9f6f +0x6d52 0x9f70 +0x6d53 0x9f71 +0x6d54 0x9f73 +0x6d55 0x9f75 +0x6d56 0x9f7a +0x6d57 0x9f7d +0x6d58 0x9f8f +0x6d59 0x9f90 +0x6d5a 0x9f91 +0x6d5b 0x9f92 +0x6d5c 0x9f94 +0x6d5d 0x9f96 +0x6d5e 0x9f97 +0x6d5f 0x9f9e +0x6d60 0x9fa1 +0x6d61 0x9fa2 +0x6d62 0x9fa3 +0x6d63 0x9fa5 +0x7373 0x2170 +0x7374 0x2171 +0x7375 0x2172 +0x7376 0x2173 +0x7377 0x2174 +0x7378 0x2175 +0x7379 0x2176 +0x737a 0x2177 +0x737b 0x2178 +0x737c 0x2179 +0x737d 0x2160 +0x737e 0x2161 +0x7421 0x2162 +0x7422 0x2163 +0x7423 0x2164 +0x7424 0x2165 +0x7425 0x2166 +0x7426 0x2167 +0x7427 0x2168 +0x7428 0x2169 +0x7429 0xff07 +0x742a 0xff02 +0x742b 0x3231 +#0x742c 0x2116 +0x742d 0x2121 +0x742e 0x70bb +0x742f 0x4efc +0x7430 0x50f4 +0x7431 0x51ec +0x7432 0x5307 +0x7433 0x5324 +0x7434 0xfa0e +0x7435 0x548a +0x7436 0x5759 +0x7437 0xfa0f +0x7438 0xfa10 +0x7439 0x589e +0x743a 0x5bec +0x743b 0x5cf5 +0x743c 0x5d53 +0x743d 0xfa11 +0x743e 0x5fb7 +0x743f 0x6085 +0x7440 0x6120 +0x7441 0x654e +0x7442 0x663b +0x7443 0x6665 +0x7444 0xfa12 +0x7445 0xf929 +0x7446 0x6801 +0x7447 0xfa13 +0x7448 0xfa14 +0x7449 0x6a6b +0x744a 0x6ae2 +0x744b 0x6df8 +0x744c 0x6df2 +0x744d 0x7028 +0x744e 0xfa15 +0x744f 0xfa16 +0x7450 0x7501 +0x7451 0x7682 +0x7452 0x769e +0x7453 0xfa17 +0x7454 0x7930 +0x7455 0xfa18 +0x7456 0xfa19 +0x7457 0xfa1a +0x7458 0xfa1b +0x7459 0x7ae7 +0x745a 0xfa1c +0x745b 0xfa1d +0x745c 0x7da0 +0x745d 0x7dd6 +0x745e 0xfa1e +0x745f 0x8362 +0x7460 0xfa1f +0x7461 0x85b0 +0x7462 0xfa20 +0x7463 0xfa21 +0x7464 0x8807 +0x7465 0xfa22 +0x7466 0x8b7f +0x7467 0x8cf4 +0x7468 0x8d76 +0x7469 0xfa23 +0x746a 0xfa24 +0x746b 0xfa25 +0x746c 0x90de +0x746d 0xfa26 +0x746e 0x9115 +0x746f 0xfa27 +0x7470 0xfa28 +0x7471 0x9592 +0x7472 0xf9dc +0x7473 0xfa29 +0x7474 0x973b +0x7475 0x974d +0x7476 0x9751 +0x7477 0xfa2a +0x7478 0xfa2b +0x7479 0xfa2c +0x747a 0x999e +0x747b 0x9ad9 +0x747c 0x9b72 +0x747d 0xfa2d +0x747e 0x9ed1 diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/JIS_X_0212_Solaris.nr --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/JIS_X_0212_Solaris.nr Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,1 @@ +0x742c 0x2116 diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/PCK.c2b --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/PCK.c2b Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,3 @@ +0x005c 0x00a5 +0x007e 0x203e + diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/PCK.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/PCK.map Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,7924 @@ +# +# Generated from old SJIS implementation, which calcuats the +# sjis<->sjis (use Ken Lunde's algorithm) and then looks up +# the jis0208 mappings. The sjis->jis algorithm used in old +# SJIS assumes all input sjis are legal codepoints, so it +# also takes illegal sjis cp xx7f (treats it as xx80), such +# as 8a7f, and convert it to a dup jis/unicode cp. Those +# mappings are removed from this mapping. +# +0x0000 0x0000 +0x0001 0x0001 +0x0002 0x0002 +0x0003 0x0003 +0x0004 0x0004 +0x0005 0x0005 +0x0006 0x0006 +0x0007 0x0007 +0x0008 0x0008 +0x0009 0x0009 +0x000a 0x000a +0x000b 0x000b +0x000c 0x000c +0x000d 0x000d +0x000e 0x000e +0x000f 0x000f +0x0010 0x0010 +0x0011 0x0011 +0x0012 0x0012 +0x0013 0x0013 +0x0014 0x0014 +0x0015 0x0015 +0x0016 0x0016 +0x0017 0x0017 +0x0018 0x0018 +0x0019 0x0019 +0x001a 0x001a +0x001b 0x001b +0x001c 0x001c +0x001d 0x001d +0x001e 0x001e +0x001f 0x001f +0x0020 0x0020 +0x0021 0x0021 +0x0022 0x0022 +0x0023 0x0023 +0x0024 0x0024 +0x0025 0x0025 +0x0026 0x0026 +0x0027 0x0027 +0x0028 0x0028 +0x0029 0x0029 +0x002a 0x002a +0x002b 0x002b +0x002c 0x002c +0x002d 0x002d +0x002e 0x002e +0x002f 0x002f +0x0030 0x0030 +0x0031 0x0031 +0x0032 0x0032 +0x0033 0x0033 +0x0034 0x0034 +0x0035 0x0035 +0x0036 0x0036 +0x0037 0x0037 +0x0038 0x0038 +0x0039 0x0039 +0x003a 0x003a +0x003b 0x003b +0x003c 0x003c +0x003d 0x003d +0x003e 0x003e +0x003f 0x003f +0x0040 0x0040 +0x0041 0x0041 +0x0042 0x0042 +0x0043 0x0043 +0x0044 0x0044 +0x0045 0x0045 +0x0046 0x0046 +0x0047 0x0047 +0x0048 0x0048 +0x0049 0x0049 +0x004a 0x004a +0x004b 0x004b +0x004c 0x004c +0x004d 0x004d +0x004e 0x004e +0x004f 0x004f +0x0050 0x0050 +0x0051 0x0051 +0x0052 0x0052 +0x0053 0x0053 +0x0054 0x0054 +0x0055 0x0055 +0x0056 0x0056 +0x0057 0x0057 +0x0058 0x0058 +0x0059 0x0059 +0x005a 0x005a +0x005b 0x005b +0x005c 0x005c +0x005d 0x005d +0x005e 0x005e +0x005f 0x005f +0x0060 0x0060 +0x0061 0x0061 +0x0062 0x0062 +0x0063 0x0063 +0x0064 0x0064 +0x0065 0x0065 +0x0066 0x0066 +0x0067 0x0067 +0x0068 0x0068 +0x0069 0x0069 +0x006a 0x006a +0x006b 0x006b +0x006c 0x006c +0x006d 0x006d +0x006e 0x006e +0x006f 0x006f +0x0070 0x0070 +0x0071 0x0071 +0x0072 0x0072 +0x0073 0x0073 +0x0074 0x0074 +0x0075 0x0075 +0x0076 0x0076 +0x0077 0x0077 +0x0078 0x0078 +0x0079 0x0079 +0x007a 0x007a +0x007b 0x007b +0x007c 0x007c +0x007d 0x007d +0x007e 0x007e +0x007f 0x007f +0x00a1 0xff61 +0x00a2 0xff62 +0x00a3 0xff63 +0x00a4 0xff64 +0x00a5 0xff65 +0x00a6 0xff66 +0x00a7 0xff67 +0x00a8 0xff68 +0x00a9 0xff69 +0x00aa 0xff6a +0x00ab 0xff6b +0x00ac 0xff6c +0x00ad 0xff6d +0x00ae 0xff6e +0x00af 0xff6f +0x00b0 0xff70 +0x00b1 0xff71 +0x00b2 0xff72 +0x00b3 0xff73 +0x00b4 0xff74 +0x00b5 0xff75 +0x00b6 0xff76 +0x00b7 0xff77 +0x00b8 0xff78 +0x00b9 0xff79 +0x00ba 0xff7a +0x00bb 0xff7b +0x00bc 0xff7c +0x00bd 0xff7d +0x00be 0xff7e +0x00bf 0xff7f +0x00c0 0xff80 +0x00c1 0xff81 +0x00c2 0xff82 +0x00c3 0xff83 +0x00c4 0xff84 +0x00c5 0xff85 +0x00c6 0xff86 +0x00c7 0xff87 +0x00c8 0xff88 +0x00c9 0xff89 +0x00ca 0xff8a +0x00cb 0xff8b +0x00cc 0xff8c +0x00cd 0xff8d +0x00ce 0xff8e +0x00cf 0xff8f +0x00d0 0xff90 +0x00d1 0xff91 +0x00d2 0xff92 +0x00d3 0xff93 +0x00d4 0xff94 +0x00d5 0xff95 +0x00d6 0xff96 +0x00d7 0xff97 +0x00d8 0xff98 +0x00d9 0xff99 +0x00da 0xff9a +0x00db 0xff9b +0x00dc 0xff9c +0x00dd 0xff9d +0x00de 0xff9e +0x00df 0xff9f +0x8140 0x3000 +0x8141 0x3001 +0x8142 0x3002 +0x8143 0xff0c +0x8144 0xff0e +0x8145 0x30fb +0x8146 0xff1a +0x8147 0xff1b +0x8148 0xff1f +0x8149 0xff01 +0x814a 0x309b +0x814b 0x309c +0x814c 0x00b4 +0x814d 0xff40 +0x814e 0x00a8 +0x814f 0xff3e +0x8150 0xffe3 +0x8151 0xff3f +0x8152 0x30fd +0x8153 0x30fe +0x8154 0x309d +0x8155 0x309e +0x8156 0x3003 +0x8157 0x4edd +0x8158 0x3005 +0x8159 0x3006 +0x815a 0x3007 +0x815b 0x30fc +0x815c 0x2015 +0x815d 0x2010 +0x815e 0xff0f +0x815f 0xff3c +0x8160 0x301c +0x8161 0x2016 +0x8162 0xff5c +0x8163 0x2026 +0x8164 0x2025 +0x8165 0x2018 +0x8166 0x2019 +0x8167 0x201c +0x8168 0x201d +0x8169 0xff08 +0x816a 0xff09 +0x816b 0x3014 +0x816c 0x3015 +0x816d 0xff3b +0x816e 0xff3d +0x816f 0xff5b +0x8170 0xff5d +0x8171 0x3008 +0x8172 0x3009 +0x8173 0x300a +0x8174 0x300b +0x8175 0x300c +0x8176 0x300d +0x8177 0x300e +0x8178 0x300f +0x8179 0x3010 +0x817a 0x3011 +0x817b 0xff0b +0x817c 0x2212 +0x817d 0x00b1 +0x817e 0x00d7 +0x8180 0x00f7 +0x8181 0xff1d +0x8182 0x2260 +0x8183 0xff1c +0x8184 0xff1e +0x8185 0x2266 +0x8186 0x2267 +0x8187 0x221e +0x8188 0x2234 +0x8189 0x2642 +0x818a 0x2640 +0x818b 0x00b0 +0x818c 0x2032 +0x818d 0x2033 +0x818e 0x2103 +0x818f 0xffe5 +0x8190 0xff04 +0x8191 0x00a2 +0x8192 0x00a3 +0x8193 0xff05 +0x8194 0xff03 +0x8195 0xff06 +0x8196 0xff0a +0x8197 0xff20 +0x8198 0x00a7 +0x8199 0x2606 +0x819a 0x2605 +0x819b 0x25cb +0x819c 0x25cf +0x819d 0x25ce +0x819e 0x25c7 +0x819f 0x25c6 +0x81a0 0x25a1 +0x81a1 0x25a0 +0x81a2 0x25b3 +0x81a3 0x25b2 +0x81a4 0x25bd +0x81a5 0x25bc +0x81a6 0x203b +0x81a7 0x3012 +0x81a8 0x2192 +0x81a9 0x2190 +0x81aa 0x2191 +0x81ab 0x2193 +0x81ac 0x3013 +0x81b8 0x2208 +0x81b9 0x220b +0x81ba 0x2286 +0x81bb 0x2287 +0x81bc 0x2282 +0x81bd 0x2283 +0x81be 0x222a +0x81bf 0x2229 +0x81c8 0x2227 +0x81c9 0x2228 +0x81ca 0x00ac +0x81cb 0x21d2 +0x81cc 0x21d4 +0x81cd 0x2200 +0x81ce 0x2203 +0x81da 0x2220 +0x81db 0x22a5 +0x81dc 0x2312 +0x81dd 0x2202 +0x81de 0x2207 +0x81df 0x2261 +0x81e0 0x2252 +0x81e1 0x226a +0x81e2 0x226b +0x81e3 0x221a +0x81e4 0x223d +0x81e5 0x221d +0x81e6 0x2235 +0x81e7 0x222b +0x81e8 0x222c +0x81f0 0x212b +0x81f1 0x2030 +0x81f2 0x266f +0x81f3 0x266d +0x81f4 0x266a +0x81f5 0x2020 +0x81f6 0x2021 +0x81f7 0x00b6 +0x81fc 0x25ef +0x824f 0xff10 +0x8250 0xff11 +0x8251 0xff12 +0x8252 0xff13 +0x8253 0xff14 +0x8254 0xff15 +0x8255 0xff16 +0x8256 0xff17 +0x8257 0xff18 +0x8258 0xff19 +0x8260 0xff21 +0x8261 0xff22 +0x8262 0xff23 +0x8263 0xff24 +0x8264 0xff25 +0x8265 0xff26 +0x8266 0xff27 +0x8267 0xff28 +0x8268 0xff29 +0x8269 0xff2a +0x826a 0xff2b +0x826b 0xff2c +0x826c 0xff2d +0x826d 0xff2e +0x826e 0xff2f +0x826f 0xff30 +0x8270 0xff31 +0x8271 0xff32 +0x8272 0xff33 +0x8273 0xff34 +0x8274 0xff35 +0x8275 0xff36 +0x8276 0xff37 +0x8277 0xff38 +0x8278 0xff39 +0x8279 0xff3a +0x8281 0xff41 +0x8282 0xff42 +0x8283 0xff43 +0x8284 0xff44 +0x8285 0xff45 +0x8286 0xff46 +0x8287 0xff47 +0x8288 0xff48 +0x8289 0xff49 +0x828a 0xff4a +0x828b 0xff4b +0x828c 0xff4c +0x828d 0xff4d +0x828e 0xff4e +0x828f 0xff4f +0x8290 0xff50 +0x8291 0xff51 +0x8292 0xff52 +0x8293 0xff53 +0x8294 0xff54 +0x8295 0xff55 +0x8296 0xff56 +0x8297 0xff57 +0x8298 0xff58 +0x8299 0xff59 +0x829a 0xff5a +0x829f 0x3041 +0x82a0 0x3042 +0x82a1 0x3043 +0x82a2 0x3044 +0x82a3 0x3045 +0x82a4 0x3046 +0x82a5 0x3047 +0x82a6 0x3048 +0x82a7 0x3049 +0x82a8 0x304a +0x82a9 0x304b +0x82aa 0x304c +0x82ab 0x304d +0x82ac 0x304e +0x82ad 0x304f +0x82ae 0x3050 +0x82af 0x3051 +0x82b0 0x3052 +0x82b1 0x3053 +0x82b2 0x3054 +0x82b3 0x3055 +0x82b4 0x3056 +0x82b5 0x3057 +0x82b6 0x3058 +0x82b7 0x3059 +0x82b8 0x305a +0x82b9 0x305b +0x82ba 0x305c +0x82bb 0x305d +0x82bc 0x305e +0x82bd 0x305f +0x82be 0x3060 +0x82bf 0x3061 +0x82c0 0x3062 +0x82c1 0x3063 +0x82c2 0x3064 +0x82c3 0x3065 +0x82c4 0x3066 +0x82c5 0x3067 +0x82c6 0x3068 +0x82c7 0x3069 +0x82c8 0x306a +0x82c9 0x306b +0x82ca 0x306c +0x82cb 0x306d +0x82cc 0x306e +0x82cd 0x306f +0x82ce 0x3070 +0x82cf 0x3071 +0x82d0 0x3072 +0x82d1 0x3073 +0x82d2 0x3074 +0x82d3 0x3075 +0x82d4 0x3076 +0x82d5 0x3077 +0x82d6 0x3078 +0x82d7 0x3079 +0x82d8 0x307a +0x82d9 0x307b +0x82da 0x307c +0x82db 0x307d +0x82dc 0x307e +0x82dd 0x307f +0x82de 0x3080 +0x82df 0x3081 +0x82e0 0x3082 +0x82e1 0x3083 +0x82e2 0x3084 +0x82e3 0x3085 +0x82e4 0x3086 +0x82e5 0x3087 +0x82e6 0x3088 +0x82e7 0x3089 +0x82e8 0x308a +0x82e9 0x308b +0x82ea 0x308c +0x82eb 0x308d +0x82ec 0x308e +0x82ed 0x308f +0x82ee 0x3090 +0x82ef 0x3091 +0x82f0 0x3092 +0x82f1 0x3093 +0x8340 0x30a1 +0x8341 0x30a2 +0x8342 0x30a3 +0x8343 0x30a4 +0x8344 0x30a5 +0x8345 0x30a6 +0x8346 0x30a7 +0x8347 0x30a8 +0x8348 0x30a9 +0x8349 0x30aa +0x834a 0x30ab +0x834b 0x30ac +0x834c 0x30ad +0x834d 0x30ae +0x834e 0x30af +0x834f 0x30b0 +0x8350 0x30b1 +0x8351 0x30b2 +0x8352 0x30b3 +0x8353 0x30b4 +0x8354 0x30b5 +0x8355 0x30b6 +0x8356 0x30b7 +0x8357 0x30b8 +0x8358 0x30b9 +0x8359 0x30ba +0x835a 0x30bb +0x835b 0x30bc +0x835c 0x30bd +0x835d 0x30be +0x835e 0x30bf +0x835f 0x30c0 +0x8360 0x30c1 +0x8361 0x30c2 +0x8362 0x30c3 +0x8363 0x30c4 +0x8364 0x30c5 +0x8365 0x30c6 +0x8366 0x30c7 +0x8367 0x30c8 +0x8368 0x30c9 +0x8369 0x30ca +0x836a 0x30cb +0x836b 0x30cc +0x836c 0x30cd +0x836d 0x30ce +0x836e 0x30cf +0x836f 0x30d0 +0x8370 0x30d1 +0x8371 0x30d2 +0x8372 0x30d3 +0x8373 0x30d4 +0x8374 0x30d5 +0x8375 0x30d6 +0x8376 0x30d7 +0x8377 0x30d8 +0x8378 0x30d9 +0x8379 0x30da +0x837a 0x30db +0x837b 0x30dc +0x837c 0x30dd +0x837d 0x30de +0x837e 0x30df +0x8380 0x30e0 +0x8381 0x30e1 +0x8382 0x30e2 +0x8383 0x30e3 +0x8384 0x30e4 +0x8385 0x30e5 +0x8386 0x30e6 +0x8387 0x30e7 +0x8388 0x30e8 +0x8389 0x30e9 +0x838a 0x30ea +0x838b 0x30eb +0x838c 0x30ec +0x838d 0x30ed +0x838e 0x30ee +0x838f 0x30ef +0x8390 0x30f0 +0x8391 0x30f1 +0x8392 0x30f2 +0x8393 0x30f3 +0x8394 0x30f4 +0x8395 0x30f5 +0x8396 0x30f6 +0x839f 0x0391 +0x83a0 0x0392 +0x83a1 0x0393 +0x83a2 0x0394 +0x83a3 0x0395 +0x83a4 0x0396 +0x83a5 0x0397 +0x83a6 0x0398 +0x83a7 0x0399 +0x83a8 0x039a +0x83a9 0x039b +0x83aa 0x039c +0x83ab 0x039d +0x83ac 0x039e +0x83ad 0x039f +0x83ae 0x03a0 +0x83af 0x03a1 +0x83b0 0x03a3 +0x83b1 0x03a4 +0x83b2 0x03a5 +0x83b3 0x03a6 +0x83b4 0x03a7 +0x83b5 0x03a8 +0x83b6 0x03a9 +0x83bf 0x03b1 +0x83c0 0x03b2 +0x83c1 0x03b3 +0x83c2 0x03b4 +0x83c3 0x03b5 +0x83c4 0x03b6 +0x83c5 0x03b7 +0x83c6 0x03b8 +0x83c7 0x03b9 +0x83c8 0x03ba +0x83c9 0x03bb +0x83ca 0x03bc +0x83cb 0x03bd +0x83cc 0x03be +0x83cd 0x03bf +0x83ce 0x03c0 +0x83cf 0x03c1 +0x83d0 0x03c3 +0x83d1 0x03c4 +0x83d2 0x03c5 +0x83d3 0x03c6 +0x83d4 0x03c7 +0x83d5 0x03c8 +0x83d6 0x03c9 +0x8440 0x0410 +0x8441 0x0411 +0x8442 0x0412 +0x8443 0x0413 +0x8444 0x0414 +0x8445 0x0415 +0x8446 0x0401 +0x8447 0x0416 +0x8448 0x0417 +0x8449 0x0418 +0x844a 0x0419 +0x844b 0x041a +0x844c 0x041b +0x844d 0x041c +0x844e 0x041d +0x844f 0x041e +0x8450 0x041f +0x8451 0x0420 +0x8452 0x0421 +0x8453 0x0422 +0x8454 0x0423 +0x8455 0x0424 +0x8456 0x0425 +0x8457 0x0426 +0x8458 0x0427 +0x8459 0x0428 +0x845a 0x0429 +0x845b 0x042a +0x845c 0x042b +0x845d 0x042c +0x845e 0x042d +0x845f 0x042e +0x8460 0x042f +0x8470 0x0430 +0x8471 0x0431 +0x8472 0x0432 +0x8473 0x0433 +0x8474 0x0434 +0x8475 0x0435 +0x8476 0x0451 +0x8477 0x0436 +0x8478 0x0437 +0x8479 0x0438 +0x847a 0x0439 +0x847b 0x043a +0x847c 0x043b +0x847d 0x043c +0x847e 0x043d +0x8480 0x043e +0x8481 0x043f +0x8482 0x0440 +0x8483 0x0441 +0x8484 0x0442 +0x8485 0x0443 +0x8486 0x0444 +0x8487 0x0445 +0x8488 0x0446 +0x8489 0x0447 +0x848a 0x0448 +0x848b 0x0449 +0x848c 0x044a +0x848d 0x044b +0x848e 0x044c +0x848f 0x044d +0x8490 0x044e +0x8491 0x044f +0x849f 0x2500 +0x84a0 0x2502 +0x84a1 0x250c +0x84a2 0x2510 +0x84a3 0x2518 +0x84a4 0x2514 +0x84a5 0x251c +0x84a6 0x252c +0x84a7 0x2524 +0x84a8 0x2534 +0x84a9 0x253c +0x84aa 0x2501 +0x84ab 0x2503 +0x84ac 0x250f +0x84ad 0x2513 +0x84ae 0x251b +0x84af 0x2517 +0x84b0 0x2523 +0x84b1 0x2533 +0x84b2 0x252b +0x84b3 0x253b +0x84b4 0x254b +0x84b5 0x2520 +0x84b6 0x252f +0x84b7 0x2528 +0x84b8 0x2537 +0x84b9 0x253f +0x84ba 0x251d +0x84bb 0x2530 +0x84bc 0x2525 +0x84bd 0x2538 +0x84be 0x2542 +0x8740 0x2460 +0x8741 0x2461 +0x8742 0x2462 +0x8743 0x2463 +0x8744 0x2464 +0x8745 0x2465 +0x8746 0x2466 +0x8747 0x2467 +0x8748 0x2468 +0x8749 0x2469 +0x874a 0x246a +0x874b 0x246b +0x874c 0x246c +0x874d 0x246d +0x874e 0x246e +0x874f 0x246f +0x8750 0x2470 +0x8751 0x2471 +0x8752 0x2472 +0x8753 0x2473 +0x8754 0x2160 +0x8755 0x2161 +0x8756 0x2162 +0x8757 0x2163 +0x8758 0x2164 +0x8759 0x2165 +0x875a 0x2166 +0x875b 0x2167 +0x875c 0x2168 +0x875d 0x2169 +0x875f 0x3349 +0x8760 0x3314 +0x8761 0x3322 +0x8762 0x334d +0x8763 0x3318 +0x8764 0x3327 +0x8765 0x3303 +0x8766 0x3336 +0x8767 0x3351 +0x8768 0x3357 +0x8769 0x330d +0x876a 0x3326 +0x876b 0x3323 +0x876c 0x332b +0x876d 0x334a +0x876e 0x333b +0x876f 0x339c +0x8770 0x339d +0x8771 0x339e +0x8772 0x338e +0x8773 0x338f +0x8774 0x33c4 +0x8775 0x33a1 +0x877e 0x337b +0x8780 0x301d +0x8781 0x301f +0x8782 0x2116 +0x8783 0x33cd +0x8784 0x2121 +0x8785 0x32a4 +0x8786 0x32a5 +0x8787 0x32a6 +0x8788 0x32a7 +0x8789 0x32a8 +0x878a 0x3231 +0x878b 0x3232 +0x878c 0x3239 +0x878d 0x337e +0x878e 0x337d +0x878f 0x337c +0x8790 0x2252 +0x8791 0x2261 +0x8792 0x222b +0x8793 0x222e +0x8794 0x2211 +0x8795 0x221a +0x8796 0x22a5 +0x8797 0x2220 +0x8798 0x221f +0x8799 0x22bf +0x879a 0x2235 +0x879b 0x2229 +0x879c 0x222a +0x889f 0x4e9c +0x88a0 0x5516 +0x88a1 0x5a03 +0x88a2 0x963f +0x88a3 0x54c0 +0x88a4 0x611b +0x88a5 0x6328 +0x88a6 0x59f6 +0x88a7 0x9022 +0x88a8 0x8475 +0x88a9 0x831c +0x88aa 0x7a50 +0x88ab 0x60aa +0x88ac 0x63e1 +0x88ad 0x6e25 +0x88ae 0x65ed +0x88af 0x8466 +0x88b0 0x82a6 +0x88b1 0x9bf5 +0x88b2 0x6893 +0x88b3 0x5727 +0x88b4 0x65a1 +0x88b5 0x6271 +0x88b6 0x5b9b +0x88b7 0x59d0 +0x88b8 0x867b +0x88b9 0x98f4 +0x88ba 0x7d62 +0x88bb 0x7dbe +0x88bc 0x9b8e +0x88bd 0x6216 +0x88be 0x7c9f +0x88bf 0x88b7 +0x88c0 0x5b89 +0x88c1 0x5eb5 +0x88c2 0x6309 +0x88c3 0x6697 +0x88c4 0x6848 +0x88c5 0x95c7 +0x88c6 0x978d +0x88c7 0x674f +0x88c8 0x4ee5 +0x88c9 0x4f0a +0x88ca 0x4f4d +0x88cb 0x4f9d +0x88cc 0x5049 +0x88cd 0x56f2 +0x88ce 0x5937 +0x88cf 0x59d4 +0x88d0 0x5a01 +0x88d1 0x5c09 +0x88d2 0x60df +0x88d3 0x610f +0x88d4 0x6170 +0x88d5 0x6613 +0x88d6 0x6905 +0x88d7 0x70ba +0x88d8 0x754f +0x88d9 0x7570 +0x88da 0x79fb +0x88db 0x7dad +0x88dc 0x7def +0x88dd 0x80c3 +0x88de 0x840e +0x88df 0x8863 +0x88e0 0x8b02 +0x88e1 0x9055 +0x88e2 0x907a +0x88e3 0x533b +0x88e4 0x4e95 +0x88e5 0x4ea5 +0x88e6 0x57df +0x88e7 0x80b2 +0x88e8 0x90c1 +0x88e9 0x78ef +0x88ea 0x4e00 +0x88eb 0x58f1 +0x88ec 0x6ea2 +0x88ed 0x9038 +0x88ee 0x7a32 +0x88ef 0x8328 +0x88f0 0x828b +0x88f1 0x9c2f +0x88f2 0x5141 +0x88f3 0x5370 +0x88f4 0x54bd +0x88f5 0x54e1 +0x88f6 0x56e0 +0x88f7 0x59fb +0x88f8 0x5f15 +0x88f9 0x98f2 +0x88fa 0x6deb +0x88fb 0x80e4 +0x88fc 0x852d +0x8940 0x9662 +0x8941 0x9670 +0x8942 0x96a0 +0x8943 0x97fb +0x8944 0x540b +0x8945 0x53f3 +0x8946 0x5b87 +0x8947 0x70cf +0x8948 0x7fbd +0x8949 0x8fc2 +0x894a 0x96e8 +0x894b 0x536f +0x894c 0x9d5c +0x894d 0x7aba +0x894e 0x4e11 +0x894f 0x7893 +0x8950 0x81fc +0x8951 0x6e26 +0x8952 0x5618 +0x8953 0x5504 +0x8954 0x6b1d +0x8955 0x851a +0x8956 0x9c3b +0x8957 0x59e5 +0x8958 0x53a9 +0x8959 0x6d66 +0x895a 0x74dc +0x895b 0x958f +0x895c 0x5642 +0x895d 0x4e91 +0x895e 0x904b +0x895f 0x96f2 +0x8960 0x834f +0x8961 0x990c +0x8962 0x53e1 +0x8963 0x55b6 +0x8964 0x5b30 +0x8965 0x5f71 +0x8966 0x6620 +0x8967 0x66f3 +0x8968 0x6804 +0x8969 0x6c38 +0x896a 0x6cf3 +0x896b 0x6d29 +0x896c 0x745b +0x896d 0x76c8 +0x896e 0x7a4e +0x896f 0x9834 +0x8970 0x82f1 +0x8971 0x885b +0x8972 0x8a60 +0x8973 0x92ed +0x8974 0x6db2 +0x8975 0x75ab +0x8976 0x76ca +0x8977 0x99c5 +0x8978 0x60a6 +0x8979 0x8b01 +0x897a 0x8d8a +0x897b 0x95b2 +0x897c 0x698e +0x897d 0x53ad +0x897e 0x5186 +0x8980 0x5712 +0x8981 0x5830 +0x8982 0x5944 +0x8983 0x5bb4 +0x8984 0x5ef6 +0x8985 0x6028 +0x8986 0x63a9 +0x8987 0x63f4 +0x8988 0x6cbf +0x8989 0x6f14 +0x898a 0x708e +0x898b 0x7114 +0x898c 0x7159 +0x898d 0x71d5 +0x898e 0x733f +0x898f 0x7e01 +0x8990 0x8276 +0x8991 0x82d1 +0x8992 0x8597 +0x8993 0x9060 +0x8994 0x925b +0x8995 0x9d1b +0x8996 0x5869 +0x8997 0x65bc +0x8998 0x6c5a +0x8999 0x7525 +0x899a 0x51f9 +0x899b 0x592e +0x899c 0x5965 +0x899d 0x5f80 +0x899e 0x5fdc +0x899f 0x62bc +0x89a0 0x65fa +0x89a1 0x6a2a +0x89a2 0x6b27 +0x89a3 0x6bb4 +0x89a4 0x738b +0x89a5 0x7fc1 +0x89a6 0x8956 +0x89a7 0x9d2c +0x89a8 0x9d0e +0x89a9 0x9ec4 +0x89aa 0x5ca1 +0x89ab 0x6c96 +0x89ac 0x837b +0x89ad 0x5104 +0x89ae 0x5c4b +0x89af 0x61b6 +0x89b0 0x81c6 +0x89b1 0x6876 +0x89b2 0x7261 +0x89b3 0x4e59 +0x89b4 0x4ffa +0x89b5 0x5378 +0x89b6 0x6069 +0x89b7 0x6e29 +0x89b8 0x7a4f +0x89b9 0x97f3 +0x89ba 0x4e0b +0x89bb 0x5316 +0x89bc 0x4eee +0x89bd 0x4f55 +0x89be 0x4f3d +0x89bf 0x4fa1 +0x89c0 0x4f73 +0x89c1 0x52a0 +0x89c2 0x53ef +0x89c3 0x5609 +0x89c4 0x590f +0x89c5 0x5ac1 +0x89c6 0x5bb6 +0x89c7 0x5be1 +0x89c8 0x79d1 +0x89c9 0x6687 +0x89ca 0x679c +0x89cb 0x67b6 +0x89cc 0x6b4c +0x89cd 0x6cb3 +0x89ce 0x706b +0x89cf 0x73c2 +0x89d0 0x798d +0x89d1 0x79be +0x89d2 0x7a3c +0x89d3 0x7b87 +0x89d4 0x82b1 +0x89d5 0x82db +0x89d6 0x8304 +0x89d7 0x8377 +0x89d8 0x83ef +0x89d9 0x83d3 +0x89da 0x8766 +0x89db 0x8ab2 +0x89dc 0x5629 +0x89dd 0x8ca8 +0x89de 0x8fe6 +0x89df 0x904e +0x89e0 0x971e +0x89e1 0x868a +0x89e2 0x4fc4 +0x89e3 0x5ce8 +0x89e4 0x6211 +0x89e5 0x7259 +0x89e6 0x753b +0x89e7 0x81e5 +0x89e8 0x82bd +0x89e9 0x86fe +0x89ea 0x8cc0 +0x89eb 0x96c5 +0x89ec 0x9913 +0x89ed 0x99d5 +0x89ee 0x4ecb +0x89ef 0x4f1a +0x89f0 0x89e3 +0x89f1 0x56de +0x89f2 0x584a +0x89f3 0x58ca +0x89f4 0x5efb +0x89f5 0x5feb +0x89f6 0x602a +0x89f7 0x6094 +0x89f8 0x6062 +0x89f9 0x61d0 +0x89fa 0x6212 +0x89fb 0x62d0 +0x89fc 0x6539 +0x8a40 0x9b41 +0x8a41 0x6666 +0x8a42 0x68b0 +0x8a43 0x6d77 +0x8a44 0x7070 +0x8a45 0x754c +0x8a46 0x7686 +0x8a47 0x7d75 +0x8a48 0x82a5 +0x8a49 0x87f9 +0x8a4a 0x958b +0x8a4b 0x968e +0x8a4c 0x8c9d +0x8a4d 0x51f1 +0x8a4e 0x52be +0x8a4f 0x5916 +0x8a50 0x54b3 +0x8a51 0x5bb3 +0x8a52 0x5d16 +0x8a53 0x6168 +0x8a54 0x6982 +0x8a55 0x6daf +0x8a56 0x788d +0x8a57 0x84cb +0x8a58 0x8857 +0x8a59 0x8a72 +0x8a5a 0x93a7 +0x8a5b 0x9ab8 +0x8a5c 0x6d6c +0x8a5d 0x99a8 +0x8a5e 0x86d9 +0x8a5f 0x57a3 +0x8a60 0x67ff +0x8a61 0x86ce +0x8a62 0x920e +0x8a63 0x5283 +0x8a64 0x5687 +0x8a65 0x5404 +0x8a66 0x5ed3 +0x8a67 0x62e1 +0x8a68 0x64b9 +0x8a69 0x683c +0x8a6a 0x6838 +0x8a6b 0x6bbb +0x8a6c 0x7372 +0x8a6d 0x78ba +0x8a6e 0x7a6b +0x8a6f 0x899a +0x8a70 0x89d2 +0x8a71 0x8d6b +0x8a72 0x8f03 +0x8a73 0x90ed +0x8a74 0x95a3 +0x8a75 0x9694 +0x8a76 0x9769 +0x8a77 0x5b66 +0x8a78 0x5cb3 +0x8a79 0x697d +0x8a7a 0x984d +0x8a7b 0x984e +0x8a7c 0x639b +0x8a7d 0x7b20 +0x8a7e 0x6a2b +0x8a80 0x6a7f +0x8a81 0x68b6 +0x8a82 0x9c0d +0x8a83 0x6f5f +0x8a84 0x5272 +0x8a85 0x559d +0x8a86 0x6070 +0x8a87 0x62ec +0x8a88 0x6d3b +0x8a89 0x6e07 +0x8a8a 0x6ed1 +0x8a8b 0x845b +0x8a8c 0x8910 +0x8a8d 0x8f44 +0x8a8e 0x4e14 +0x8a8f 0x9c39 +0x8a90 0x53f6 +0x8a91 0x691b +0x8a92 0x6a3a +0x8a93 0x9784 +0x8a94 0x682a +0x8a95 0x515c +0x8a96 0x7ac3 +0x8a97 0x84b2 +0x8a98 0x91dc +0x8a99 0x938c +0x8a9a 0x565b +0x8a9b 0x9d28 +0x8a9c 0x6822 +0x8a9d 0x8305 +0x8a9e 0x8431 +0x8a9f 0x7ca5 +0x8aa0 0x5208 +0x8aa1 0x82c5 +0x8aa2 0x74e6 +0x8aa3 0x4e7e +0x8aa4 0x4f83 +0x8aa5 0x51a0 +0x8aa6 0x5bd2 +0x8aa7 0x520a +0x8aa8 0x52d8 +0x8aa9 0x52e7 +0x8aaa 0x5dfb +0x8aab 0x559a +0x8aac 0x582a +0x8aad 0x59e6 +0x8aae 0x5b8c +0x8aaf 0x5b98 +0x8ab0 0x5bdb +0x8ab1 0x5e72 +0x8ab2 0x5e79 +0x8ab3 0x60a3 +0x8ab4 0x611f +0x8ab5 0x6163 +0x8ab6 0x61be +0x8ab7 0x63db +0x8ab8 0x6562 +0x8ab9 0x67d1 +0x8aba 0x6853 +0x8abb 0x68fa +0x8abc 0x6b3e +0x8abd 0x6b53 +0x8abe 0x6c57 +0x8abf 0x6f22 +0x8ac0 0x6f97 +0x8ac1 0x6f45 +0x8ac2 0x74b0 +0x8ac3 0x7518 +0x8ac4 0x76e3 +0x8ac5 0x770b +0x8ac6 0x7aff +0x8ac7 0x7ba1 +0x8ac8 0x7c21 +0x8ac9 0x7de9 +0x8aca 0x7f36 +0x8acb 0x7ff0 +0x8acc 0x809d +0x8acd 0x8266 +0x8ace 0x839e +0x8acf 0x89b3 +0x8ad0 0x8acc +0x8ad1 0x8cab +0x8ad2 0x9084 +0x8ad3 0x9451 +0x8ad4 0x9593 +0x8ad5 0x9591 +0x8ad6 0x95a2 +0x8ad7 0x9665 +0x8ad8 0x97d3 +0x8ad9 0x9928 +0x8ada 0x8218 +0x8adb 0x4e38 +0x8adc 0x542b +0x8add 0x5cb8 +0x8ade 0x5dcc +0x8adf 0x73a9 +0x8ae0 0x764c +0x8ae1 0x773c +0x8ae2 0x5ca9 +0x8ae3 0x7feb +0x8ae4 0x8d0b +0x8ae5 0x96c1 +0x8ae6 0x9811 +0x8ae7 0x9854 +0x8ae8 0x9858 +0x8ae9 0x4f01 +0x8aea 0x4f0e +0x8aeb 0x5371 +0x8aec 0x559c +0x8aed 0x5668 +0x8aee 0x57fa +0x8aef 0x5947 +0x8af0 0x5b09 +0x8af1 0x5bc4 +0x8af2 0x5c90 +0x8af3 0x5e0c +0x8af4 0x5e7e +0x8af5 0x5fcc +0x8af6 0x63ee +0x8af7 0x673a +0x8af8 0x65d7 +0x8af9 0x65e2 +0x8afa 0x671f +0x8afb 0x68cb +0x8afc 0x68c4 +0x8b40 0x6a5f +0x8b41 0x5e30 +0x8b42 0x6bc5 +0x8b43 0x6c17 +0x8b44 0x6c7d +0x8b45 0x757f +0x8b46 0x7948 +0x8b47 0x5b63 +0x8b48 0x7a00 +0x8b49 0x7d00 +0x8b4a 0x5fbd +0x8b4b 0x898f +0x8b4c 0x8a18 +0x8b4d 0x8cb4 +0x8b4e 0x8d77 +0x8b4f 0x8ecc +0x8b50 0x8f1d +0x8b51 0x98e2 +0x8b52 0x9a0e +0x8b53 0x9b3c +0x8b54 0x4e80 +0x8b55 0x507d +0x8b56 0x5100 +0x8b57 0x5993 +0x8b58 0x5b9c +0x8b59 0x622f +0x8b5a 0x6280 +0x8b5b 0x64ec +0x8b5c 0x6b3a +0x8b5d 0x72a0 +0x8b5e 0x7591 +0x8b5f 0x7947 +0x8b60 0x7fa9 +0x8b61 0x87fb +0x8b62 0x8abc +0x8b63 0x8b70 +0x8b64 0x63ac +0x8b65 0x83ca +0x8b66 0x97a0 +0x8b67 0x5409 +0x8b68 0x5403 +0x8b69 0x55ab +0x8b6a 0x6854 +0x8b6b 0x6a58 +0x8b6c 0x8a70 +0x8b6d 0x7827 +0x8b6e 0x6775 +0x8b6f 0x9ecd +0x8b70 0x5374 +0x8b71 0x5ba2 +0x8b72 0x811a +0x8b73 0x8650 +0x8b74 0x9006 +0x8b75 0x4e18 +0x8b76 0x4e45 +0x8b77 0x4ec7 +0x8b78 0x4f11 +0x8b79 0x53ca +0x8b7a 0x5438 +0x8b7b 0x5bae +0x8b7c 0x5f13 +0x8b7d 0x6025 +0x8b7e 0x6551 +0x8b80 0x673d +0x8b81 0x6c42 +0x8b82 0x6c72 +0x8b83 0x6ce3 +0x8b84 0x7078 +0x8b85 0x7403 +0x8b86 0x7a76 +0x8b87 0x7aae +0x8b88 0x7b08 +0x8b89 0x7d1a +0x8b8a 0x7cfe +0x8b8b 0x7d66 +0x8b8c 0x65e7 +0x8b8d 0x725b +0x8b8e 0x53bb +0x8b8f 0x5c45 +0x8b90 0x5de8 +0x8b91 0x62d2 +0x8b92 0x62e0 +0x8b93 0x6319 +0x8b94 0x6e20 +0x8b95 0x865a +0x8b96 0x8a31 +0x8b97 0x8ddd +0x8b98 0x92f8 +0x8b99 0x6f01 +0x8b9a 0x79a6 +0x8b9b 0x9b5a +0x8b9c 0x4ea8 +0x8b9d 0x4eab +0x8b9e 0x4eac +0x8b9f 0x4f9b +0x8ba0 0x4fa0 +0x8ba1 0x50d1 +0x8ba2 0x5147 +0x8ba3 0x7af6 +0x8ba4 0x5171 +0x8ba5 0x51f6 +0x8ba6 0x5354 +0x8ba7 0x5321 +0x8ba8 0x537f +0x8ba9 0x53eb +0x8baa 0x55ac +0x8bab 0x5883 +0x8bac 0x5ce1 +0x8bad 0x5f37 +0x8bae 0x5f4a +0x8baf 0x602f +0x8bb0 0x6050 +0x8bb1 0x606d +0x8bb2 0x631f +0x8bb3 0x6559 +0x8bb4 0x6a4b +0x8bb5 0x6cc1 +0x8bb6 0x72c2 +0x8bb7 0x72ed +0x8bb8 0x77ef +0x8bb9 0x80f8 +0x8bba 0x8105 +0x8bbb 0x8208 +0x8bbc 0x854e +0x8bbd 0x90f7 +0x8bbe 0x93e1 +0x8bbf 0x97ff +0x8bc0 0x9957 +0x8bc1 0x9a5a +0x8bc2 0x4ef0 +0x8bc3 0x51dd +0x8bc4 0x5c2d +0x8bc5 0x6681 +0x8bc6 0x696d +0x8bc7 0x5c40 +0x8bc8 0x66f2 +0x8bc9 0x6975 +0x8bca 0x7389 +0x8bcb 0x6850 +0x8bcc 0x7c81 +0x8bcd 0x50c5 +0x8bce 0x52e4 +0x8bcf 0x5747 +0x8bd0 0x5dfe +0x8bd1 0x9326 +0x8bd2 0x65a4 +0x8bd3 0x6b23 +0x8bd4 0x6b3d +0x8bd5 0x7434 +0x8bd6 0x7981 +0x8bd7 0x79bd +0x8bd8 0x7b4b +0x8bd9 0x7dca +0x8bda 0x82b9 +0x8bdb 0x83cc +0x8bdc 0x887f +0x8bdd 0x895f +0x8bde 0x8b39 +0x8bdf 0x8fd1 +0x8be0 0x91d1 +0x8be1 0x541f +0x8be2 0x9280 +0x8be3 0x4e5d +0x8be4 0x5036 +0x8be5 0x53e5 +0x8be6 0x533a +0x8be7 0x72d7 +0x8be8 0x7396 +0x8be9 0x77e9 +0x8bea 0x82e6 +0x8beb 0x8eaf +0x8bec 0x99c6 +0x8bed 0x99c8 +0x8bee 0x99d2 +0x8bef 0x5177 +0x8bf0 0x611a +0x8bf1 0x865e +0x8bf2 0x55b0 +0x8bf3 0x7a7a +0x8bf4 0x5076 +0x8bf5 0x5bd3 +0x8bf6 0x9047 +0x8bf7 0x9685 +0x8bf8 0x4e32 +0x8bf9 0x6adb +0x8bfa 0x91e7 +0x8bfb 0x5c51 +0x8bfc 0x5c48 +0x8c40 0x6398 +0x8c41 0x7a9f +0x8c42 0x6c93 +0x8c43 0x9774 +0x8c44 0x8f61 +0x8c45 0x7aaa +0x8c46 0x718a +0x8c47 0x9688 +0x8c48 0x7c82 +0x8c49 0x6817 +0x8c4a 0x7e70 +0x8c4b 0x6851 +0x8c4c 0x936c +0x8c4d 0x52f2 +0x8c4e 0x541b +0x8c4f 0x85ab +0x8c50 0x8a13 +0x8c51 0x7fa4 +0x8c52 0x8ecd +0x8c53 0x90e1 +0x8c54 0x5366 +0x8c55 0x8888 +0x8c56 0x7941 +0x8c57 0x4fc2 +0x8c58 0x50be +0x8c59 0x5211 +0x8c5a 0x5144 +0x8c5b 0x5553 +0x8c5c 0x572d +0x8c5d 0x73ea +0x8c5e 0x578b +0x8c5f 0x5951 +0x8c60 0x5f62 +0x8c61 0x5f84 +0x8c62 0x6075 +0x8c63 0x6176 +0x8c64 0x6167 +0x8c65 0x61a9 +0x8c66 0x63b2 +0x8c67 0x643a +0x8c68 0x656c +0x8c69 0x666f +0x8c6a 0x6842 +0x8c6b 0x6e13 +0x8c6c 0x7566 +0x8c6d 0x7a3d +0x8c6e 0x7cfb +0x8c6f 0x7d4c +0x8c70 0x7d99 +0x8c71 0x7e4b +0x8c72 0x7f6b +0x8c73 0x830e +0x8c74 0x834a +0x8c75 0x86cd +0x8c76 0x8a08 +0x8c77 0x8a63 +0x8c78 0x8b66 +0x8c79 0x8efd +0x8c7a 0x981a +0x8c7b 0x9d8f +0x8c7c 0x82b8 +0x8c7d 0x8fce +0x8c7e 0x9be8 +0x8c80 0x5287 +0x8c81 0x621f +0x8c82 0x6483 +0x8c83 0x6fc0 +0x8c84 0x9699 +0x8c85 0x6841 +0x8c86 0x5091 +0x8c87 0x6b20 +0x8c88 0x6c7a +0x8c89 0x6f54 +0x8c8a 0x7a74 +0x8c8b 0x7d50 +0x8c8c 0x8840 +0x8c8d 0x8a23 +0x8c8e 0x6708 +0x8c8f 0x4ef6 +0x8c90 0x5039 +0x8c91 0x5026 +0x8c92 0x5065 +0x8c93 0x517c +0x8c94 0x5238 +0x8c95 0x5263 +0x8c96 0x55a7 +0x8c97 0x570f +0x8c98 0x5805 +0x8c99 0x5acc +0x8c9a 0x5efa +0x8c9b 0x61b2 +0x8c9c 0x61f8 +0x8c9d 0x62f3 +0x8c9e 0x6372 +0x8c9f 0x691c +0x8ca0 0x6a29 +0x8ca1 0x727d +0x8ca2 0x72ac +0x8ca3 0x732e +0x8ca4 0x7814 +0x8ca5 0x786f +0x8ca6 0x7d79 +0x8ca7 0x770c +0x8ca8 0x80a9 +0x8ca9 0x898b +0x8caa 0x8b19 +0x8cab 0x8ce2 +0x8cac 0x8ed2 +0x8cad 0x9063 +0x8cae 0x9375 +0x8caf 0x967a +0x8cb0 0x9855 +0x8cb1 0x9a13 +0x8cb2 0x9e78 +0x8cb3 0x5143 +0x8cb4 0x539f +0x8cb5 0x53b3 +0x8cb6 0x5e7b +0x8cb7 0x5f26 +0x8cb8 0x6e1b +0x8cb9 0x6e90 +0x8cba 0x7384 +0x8cbb 0x73fe +0x8cbc 0x7d43 +0x8cbd 0x8237 +0x8cbe 0x8a00 +0x8cbf 0x8afa +0x8cc0 0x9650 +0x8cc1 0x4e4e +0x8cc2 0x500b +0x8cc3 0x53e4 +0x8cc4 0x547c +0x8cc5 0x56fa +0x8cc6 0x59d1 +0x8cc7 0x5b64 +0x8cc8 0x5df1 +0x8cc9 0x5eab +0x8cca 0x5f27 +0x8ccb 0x6238 +0x8ccc 0x6545 +0x8ccd 0x67af +0x8cce 0x6e56 +0x8ccf 0x72d0 +0x8cd0 0x7cca +0x8cd1 0x88b4 +0x8cd2 0x80a1 +0x8cd3 0x80e1 +0x8cd4 0x83f0 +0x8cd5 0x864e +0x8cd6 0x8a87 +0x8cd7 0x8de8 +0x8cd8 0x9237 +0x8cd9 0x96c7 +0x8cda 0x9867 +0x8cdb 0x9f13 +0x8cdc 0x4e94 +0x8cdd 0x4e92 +0x8cde 0x4f0d +0x8cdf 0x5348 +0x8ce0 0x5449 +0x8ce1 0x543e +0x8ce2 0x5a2f +0x8ce3 0x5f8c +0x8ce4 0x5fa1 +0x8ce5 0x609f +0x8ce6 0x68a7 +0x8ce7 0x6a8e +0x8ce8 0x745a +0x8ce9 0x7881 +0x8cea 0x8a9e +0x8ceb 0x8aa4 +0x8cec 0x8b77 +0x8ced 0x9190 +0x8cee 0x4e5e +0x8cef 0x9bc9 +0x8cf0 0x4ea4 +0x8cf1 0x4f7c +0x8cf2 0x4faf +0x8cf3 0x5019 +0x8cf4 0x5016 +0x8cf5 0x5149 +0x8cf6 0x516c +0x8cf7 0x529f +0x8cf8 0x52b9 +0x8cf9 0x52fe +0x8cfa 0x539a +0x8cfb 0x53e3 +0x8cfc 0x5411 +0x8d40 0x540e +0x8d41 0x5589 +0x8d42 0x5751 +0x8d43 0x57a2 +0x8d44 0x597d +0x8d45 0x5b54 +0x8d46 0x5b5d +0x8d47 0x5b8f +0x8d48 0x5de5 +0x8d49 0x5de7 +0x8d4a 0x5df7 +0x8d4b 0x5e78 +0x8d4c 0x5e83 +0x8d4d 0x5e9a +0x8d4e 0x5eb7 +0x8d4f 0x5f18 +0x8d50 0x6052 +0x8d51 0x614c +0x8d52 0x6297 +0x8d53 0x62d8 +0x8d54 0x63a7 +0x8d55 0x653b +0x8d56 0x6602 +0x8d57 0x6643 +0x8d58 0x66f4 +0x8d59 0x676d +0x8d5a 0x6821 +0x8d5b 0x6897 +0x8d5c 0x69cb +0x8d5d 0x6c5f +0x8d5e 0x6d2a +0x8d5f 0x6d69 +0x8d60 0x6e2f +0x8d61 0x6e9d +0x8d62 0x7532 +0x8d63 0x7687 +0x8d64 0x786c +0x8d65 0x7a3f +0x8d66 0x7ce0 +0x8d67 0x7d05 +0x8d68 0x7d18 +0x8d69 0x7d5e +0x8d6a 0x7db1 +0x8d6b 0x8015 +0x8d6c 0x8003 +0x8d6d 0x80af +0x8d6e 0x80b1 +0x8d6f 0x8154 +0x8d70 0x818f +0x8d71 0x822a +0x8d72 0x8352 +0x8d73 0x884c +0x8d74 0x8861 +0x8d75 0x8b1b +0x8d76 0x8ca2 +0x8d77 0x8cfc +0x8d78 0x90ca +0x8d79 0x9175 +0x8d7a 0x9271 +0x8d7b 0x783f +0x8d7c 0x92fc +0x8d7d 0x95a4 +0x8d7e 0x964d +0x8d80 0x9805 +0x8d81 0x9999 +0x8d82 0x9ad8 +0x8d83 0x9d3b +0x8d84 0x525b +0x8d85 0x52ab +0x8d86 0x53f7 +0x8d87 0x5408 +0x8d88 0x58d5 +0x8d89 0x62f7 +0x8d8a 0x6fe0 +0x8d8b 0x8c6a +0x8d8c 0x8f5f +0x8d8d 0x9eb9 +0x8d8e 0x514b +0x8d8f 0x523b +0x8d90 0x544a +0x8d91 0x56fd +0x8d92 0x7a40 +0x8d93 0x9177 +0x8d94 0x9d60 +0x8d95 0x9ed2 +0x8d96 0x7344 +0x8d97 0x6f09 +0x8d98 0x8170 +0x8d99 0x7511 +0x8d9a 0x5ffd +0x8d9b 0x60da +0x8d9c 0x9aa8 +0x8d9d 0x72db +0x8d9e 0x8fbc +0x8d9f 0x6b64 +0x8da0 0x9803 +0x8da1 0x4eca +0x8da2 0x56f0 +0x8da3 0x5764 +0x8da4 0x58be +0x8da5 0x5a5a +0x8da6 0x6068 +0x8da7 0x61c7 +0x8da8 0x660f +0x8da9 0x6606 +0x8daa 0x6839 +0x8dab 0x68b1 +0x8dac 0x6df7 +0x8dad 0x75d5 +0x8dae 0x7d3a +0x8daf 0x826e +0x8db0 0x9b42 +0x8db1 0x4e9b +0x8db2 0x4f50 +0x8db3 0x53c9 +0x8db4 0x5506 +0x8db5 0x5d6f +0x8db6 0x5de6 +0x8db7 0x5dee +0x8db8 0x67fb +0x8db9 0x6c99 +0x8dba 0x7473 +0x8dbb 0x7802 +0x8dbc 0x8a50 +0x8dbd 0x9396 +0x8dbe 0x88df +0x8dbf 0x5750 +0x8dc0 0x5ea7 +0x8dc1 0x632b +0x8dc2 0x50b5 +0x8dc3 0x50ac +0x8dc4 0x518d +0x8dc5 0x6700 +0x8dc6 0x54c9 +0x8dc7 0x585e +0x8dc8 0x59bb +0x8dc9 0x5bb0 +0x8dca 0x5f69 +0x8dcb 0x624d +0x8dcc 0x63a1 +0x8dcd 0x683d +0x8dce 0x6b73 +0x8dcf 0x6e08 +0x8dd0 0x707d +0x8dd1 0x91c7 +0x8dd2 0x7280 +0x8dd3 0x7815 +0x8dd4 0x7826 +0x8dd5 0x796d +0x8dd6 0x658e +0x8dd7 0x7d30 +0x8dd8 0x83dc +0x8dd9 0x88c1 +0x8dda 0x8f09 +0x8ddb 0x969b +0x8ddc 0x5264 +0x8ddd 0x5728 +0x8dde 0x6750 +0x8ddf 0x7f6a +0x8de0 0x8ca1 +0x8de1 0x51b4 +0x8de2 0x5742 +0x8de3 0x962a +0x8de4 0x583a +0x8de5 0x698a +0x8de6 0x80b4 +0x8de7 0x54b2 +0x8de8 0x5d0e +0x8de9 0x57fc +0x8dea 0x7895 +0x8deb 0x9dfa +0x8dec 0x4f5c +0x8ded 0x524a +0x8dee 0x548b +0x8def 0x643e +0x8df0 0x6628 +0x8df1 0x6714 +0x8df2 0x67f5 +0x8df3 0x7a84 +0x8df4 0x7b56 +0x8df5 0x7d22 +0x8df6 0x932f +0x8df7 0x685c +0x8df8 0x9bad +0x8df9 0x7b39 +0x8dfa 0x5319 +0x8dfb 0x518a +0x8dfc 0x5237 +0x8e40 0x5bdf +0x8e41 0x62f6 +0x8e42 0x64ae +0x8e43 0x64e6 +0x8e44 0x672d +0x8e45 0x6bba +0x8e46 0x85a9 +0x8e47 0x96d1 +0x8e48 0x7690 +0x8e49 0x9bd6 +0x8e4a 0x634c +0x8e4b 0x9306 +0x8e4c 0x9bab +0x8e4d 0x76bf +0x8e4e 0x6652 +0x8e4f 0x4e09 +0x8e50 0x5098 +0x8e51 0x53c2 +0x8e52 0x5c71 +0x8e53 0x60e8 +0x8e54 0x6492 +0x8e55 0x6563 +0x8e56 0x685f +0x8e57 0x71e6 +0x8e58 0x73ca +0x8e59 0x7523 +0x8e5a 0x7b97 +0x8e5b 0x7e82 +0x8e5c 0x8695 +0x8e5d 0x8b83 +0x8e5e 0x8cdb +0x8e5f 0x9178 +0x8e60 0x9910 +0x8e61 0x65ac +0x8e62 0x66ab +0x8e63 0x6b8b +0x8e64 0x4ed5 +0x8e65 0x4ed4 +0x8e66 0x4f3a +0x8e67 0x4f7f +0x8e68 0x523a +0x8e69 0x53f8 +0x8e6a 0x53f2 +0x8e6b 0x55e3 +0x8e6c 0x56db +0x8e6d 0x58eb +0x8e6e 0x59cb +0x8e6f 0x59c9 +0x8e70 0x59ff +0x8e71 0x5b50 +0x8e72 0x5c4d +0x8e73 0x5e02 +0x8e74 0x5e2b +0x8e75 0x5fd7 +0x8e76 0x601d +0x8e77 0x6307 +0x8e78 0x652f +0x8e79 0x5b5c +0x8e7a 0x65af +0x8e7b 0x65bd +0x8e7c 0x65e8 +0x8e7d 0x679d +0x8e7e 0x6b62 +0x8e80 0x6b7b +0x8e81 0x6c0f +0x8e82 0x7345 +0x8e83 0x7949 +0x8e84 0x79c1 +0x8e85 0x7cf8 +0x8e86 0x7d19 +0x8e87 0x7d2b +0x8e88 0x80a2 +0x8e89 0x8102 +0x8e8a 0x81f3 +0x8e8b 0x8996 +0x8e8c 0x8a5e +0x8e8d 0x8a69 +0x8e8e 0x8a66 +0x8e8f 0x8a8c +0x8e90 0x8aee +0x8e91 0x8cc7 +0x8e92 0x8cdc +0x8e93 0x96cc +0x8e94 0x98fc +0x8e95 0x6b6f +0x8e96 0x4e8b +0x8e97 0x4f3c +0x8e98 0x4f8d +0x8e99 0x5150 +0x8e9a 0x5b57 +0x8e9b 0x5bfa +0x8e9c 0x6148 +0x8e9d 0x6301 +0x8e9e 0x6642 +0x8e9f 0x6b21 +0x8ea0 0x6ecb +0x8ea1 0x6cbb +0x8ea2 0x723e +0x8ea3 0x74bd +0x8ea4 0x75d4 +0x8ea5 0x78c1 +0x8ea6 0x793a +0x8ea7 0x800c +0x8ea8 0x8033 +0x8ea9 0x81ea +0x8eaa 0x8494 +0x8eab 0x8f9e +0x8eac 0x6c50 +0x8ead 0x9e7f +0x8eae 0x5f0f +0x8eaf 0x8b58 +0x8eb0 0x9d2b +0x8eb1 0x7afa +0x8eb2 0x8ef8 +0x8eb3 0x5b8d +0x8eb4 0x96eb +0x8eb5 0x4e03 +0x8eb6 0x53f1 +0x8eb7 0x57f7 +0x8eb8 0x5931 +0x8eb9 0x5ac9 +0x8eba 0x5ba4 +0x8ebb 0x6089 +0x8ebc 0x6e7f +0x8ebd 0x6f06 +0x8ebe 0x75be +0x8ebf 0x8cea +0x8ec0 0x5b9f +0x8ec1 0x8500 +0x8ec2 0x7be0 +0x8ec3 0x5072 +0x8ec4 0x67f4 +0x8ec5 0x829d +0x8ec6 0x5c61 +0x8ec7 0x854a +0x8ec8 0x7e1e +0x8ec9 0x820e +0x8eca 0x5199 +0x8ecb 0x5c04 +0x8ecc 0x6368 +0x8ecd 0x8d66 +0x8ece 0x659c +0x8ecf 0x716e +0x8ed0 0x793e +0x8ed1 0x7d17 +0x8ed2 0x8005 +0x8ed3 0x8b1d +0x8ed4 0x8eca +0x8ed5 0x906e +0x8ed6 0x86c7 +0x8ed7 0x90aa +0x8ed8 0x501f +0x8ed9 0x52fa +0x8eda 0x5c3a +0x8edb 0x6753 +0x8edc 0x707c +0x8edd 0x7235 +0x8ede 0x914c +0x8edf 0x91c8 +0x8ee0 0x932b +0x8ee1 0x82e5 +0x8ee2 0x5bc2 +0x8ee3 0x5f31 +0x8ee4 0x60f9 +0x8ee5 0x4e3b +0x8ee6 0x53d6 +0x8ee7 0x5b88 +0x8ee8 0x624b +0x8ee9 0x6731 +0x8eea 0x6b8a +0x8eeb 0x72e9 +0x8eec 0x73e0 +0x8eed 0x7a2e +0x8eee 0x816b +0x8eef 0x8da3 +0x8ef0 0x9152 +0x8ef1 0x9996 +0x8ef2 0x5112 +0x8ef3 0x53d7 +0x8ef4 0x546a +0x8ef5 0x5bff +0x8ef6 0x6388 +0x8ef7 0x6a39 +0x8ef8 0x7dac +0x8ef9 0x9700 +0x8efa 0x56da +0x8efb 0x53ce +0x8efc 0x5468 +0x8f40 0x5b97 +0x8f41 0x5c31 +0x8f42 0x5dde +0x8f43 0x4fee +0x8f44 0x6101 +0x8f45 0x62fe +0x8f46 0x6d32 +0x8f47 0x79c0 +0x8f48 0x79cb +0x8f49 0x7d42 +0x8f4a 0x7e4d +0x8f4b 0x7fd2 +0x8f4c 0x81ed +0x8f4d 0x821f +0x8f4e 0x8490 +0x8f4f 0x8846 +0x8f50 0x8972 +0x8f51 0x8b90 +0x8f52 0x8e74 +0x8f53 0x8f2f +0x8f54 0x9031 +0x8f55 0x914b +0x8f56 0x916c +0x8f57 0x96c6 +0x8f58 0x919c +0x8f59 0x4ec0 +0x8f5a 0x4f4f +0x8f5b 0x5145 +0x8f5c 0x5341 +0x8f5d 0x5f93 +0x8f5e 0x620e +0x8f5f 0x67d4 +0x8f60 0x6c41 +0x8f61 0x6e0b +0x8f62 0x7363 +0x8f63 0x7e26 +0x8f64 0x91cd +0x8f65 0x9283 +0x8f66 0x53d4 +0x8f67 0x5919 +0x8f68 0x5bbf +0x8f69 0x6dd1 +0x8f6a 0x795d +0x8f6b 0x7e2e +0x8f6c 0x7c9b +0x8f6d 0x587e +0x8f6e 0x719f +0x8f6f 0x51fa +0x8f70 0x8853 +0x8f71 0x8ff0 +0x8f72 0x4fca +0x8f73 0x5cfb +0x8f74 0x6625 +0x8f75 0x77ac +0x8f76 0x7ae3 +0x8f77 0x821c +0x8f78 0x99ff +0x8f79 0x51c6 +0x8f7a 0x5faa +0x8f7b 0x65ec +0x8f7c 0x696f +0x8f7d 0x6b89 +0x8f7e 0x6df3 +0x8f80 0x6e96 +0x8f81 0x6f64 +0x8f82 0x76fe +0x8f83 0x7d14 +0x8f84 0x5de1 +0x8f85 0x9075 +0x8f86 0x9187 +0x8f87 0x9806 +0x8f88 0x51e6 +0x8f89 0x521d +0x8f8a 0x6240 +0x8f8b 0x6691 +0x8f8c 0x66d9 +0x8f8d 0x6e1a +0x8f8e 0x5eb6 +0x8f8f 0x7dd2 +0x8f90 0x7f72 +0x8f91 0x66f8 +0x8f92 0x85af +0x8f93 0x85f7 +0x8f94 0x8af8 +0x8f95 0x52a9 +0x8f96 0x53d9 +0x8f97 0x5973 +0x8f98 0x5e8f +0x8f99 0x5f90 +0x8f9a 0x6055 +0x8f9b 0x92e4 +0x8f9c 0x9664 +0x8f9d 0x50b7 +0x8f9e 0x511f +0x8f9f 0x52dd +0x8fa0 0x5320 +0x8fa1 0x5347 +0x8fa2 0x53ec +0x8fa3 0x54e8 +0x8fa4 0x5546 +0x8fa5 0x5531 +0x8fa6 0x5617 +0x8fa7 0x5968 +0x8fa8 0x59be +0x8fa9 0x5a3c +0x8faa 0x5bb5 +0x8fab 0x5c06 +0x8fac 0x5c0f +0x8fad 0x5c11 +0x8fae 0x5c1a +0x8faf 0x5e84 +0x8fb0 0x5e8a +0x8fb1 0x5ee0 +0x8fb2 0x5f70 +0x8fb3 0x627f +0x8fb4 0x6284 +0x8fb5 0x62db +0x8fb6 0x638c +0x8fb7 0x6377 +0x8fb8 0x6607 +0x8fb9 0x660c +0x8fba 0x662d +0x8fbb 0x6676 +0x8fbc 0x677e +0x8fbd 0x68a2 +0x8fbe 0x6a1f +0x8fbf 0x6a35 +0x8fc0 0x6cbc +0x8fc1 0x6d88 +0x8fc2 0x6e09 +0x8fc3 0x6e58 +0x8fc4 0x713c +0x8fc5 0x7126 +0x8fc6 0x7167 +0x8fc7 0x75c7 +0x8fc8 0x7701 +0x8fc9 0x785d +0x8fca 0x7901 +0x8fcb 0x7965 +0x8fcc 0x79f0 +0x8fcd 0x7ae0 +0x8fce 0x7b11 +0x8fcf 0x7ca7 +0x8fd0 0x7d39 +0x8fd1 0x8096 +0x8fd2 0x83d6 +0x8fd3 0x848b +0x8fd4 0x8549 +0x8fd5 0x885d +0x8fd6 0x88f3 +0x8fd7 0x8a1f +0x8fd8 0x8a3c +0x8fd9 0x8a54 +0x8fda 0x8a73 +0x8fdb 0x8c61 +0x8fdc 0x8cde +0x8fdd 0x91a4 +0x8fde 0x9266 +0x8fdf 0x937e +0x8fe0 0x9418 +0x8fe1 0x969c +0x8fe2 0x9798 +0x8fe3 0x4e0a +0x8fe4 0x4e08 +0x8fe5 0x4e1e +0x8fe6 0x4e57 +0x8fe7 0x5197 +0x8fe8 0x5270 +0x8fe9 0x57ce +0x8fea 0x5834 +0x8feb 0x58cc +0x8fec 0x5b22 +0x8fed 0x5e38 +0x8fee 0x60c5 +0x8fef 0x64fe +0x8ff0 0x6761 +0x8ff1 0x6756 +0x8ff2 0x6d44 +0x8ff3 0x72b6 +0x8ff4 0x7573 +0x8ff5 0x7a63 +0x8ff6 0x84b8 +0x8ff7 0x8b72 +0x8ff8 0x91b8 +0x8ff9 0x9320 +0x8ffa 0x5631 +0x8ffb 0x57f4 +0x8ffc 0x98fe +0x9040 0x62ed +0x9041 0x690d +0x9042 0x6b96 +0x9043 0x71ed +0x9044 0x7e54 +0x9045 0x8077 +0x9046 0x8272 +0x9047 0x89e6 +0x9048 0x98df +0x9049 0x8755 +0x904a 0x8fb1 +0x904b 0x5c3b +0x904c 0x4f38 +0x904d 0x4fe1 +0x904e 0x4fb5 +0x904f 0x5507 +0x9050 0x5a20 +0x9051 0x5bdd +0x9052 0x5be9 +0x9053 0x5fc3 +0x9054 0x614e +0x9055 0x632f +0x9056 0x65b0 +0x9057 0x664b +0x9058 0x68ee +0x9059 0x699b +0x905a 0x6d78 +0x905b 0x6df1 +0x905c 0x7533 +0x905d 0x75b9 +0x905e 0x771f +0x905f 0x795e +0x9060 0x79e6 +0x9061 0x7d33 +0x9062 0x81e3 +0x9063 0x82af +0x9064 0x85aa +0x9065 0x89aa +0x9066 0x8a3a +0x9067 0x8eab +0x9068 0x8f9b +0x9069 0x9032 +0x906a 0x91dd +0x906b 0x9707 +0x906c 0x4eba +0x906d 0x4ec1 +0x906e 0x5203 +0x906f 0x5875 +0x9070 0x58ec +0x9071 0x5c0b +0x9072 0x751a +0x9073 0x5c3d +0x9074 0x814e +0x9075 0x8a0a +0x9076 0x8fc5 +0x9077 0x9663 +0x9078 0x976d +0x9079 0x7b25 +0x907a 0x8acf +0x907b 0x9808 +0x907c 0x9162 +0x907d 0x56f3 +0x907e 0x53a8 +0x9080 0x9017 +0x9081 0x5439 +0x9082 0x5782 +0x9083 0x5e25 +0x9084 0x63a8 +0x9085 0x6c34 +0x9086 0x708a +0x9087 0x7761 +0x9088 0x7c8b +0x9089 0x7fe0 +0x908a 0x8870 +0x908b 0x9042 +0x908c 0x9154 +0x908d 0x9310 +0x908e 0x9318 +0x908f 0x968f +0x9090 0x745e +0x9091 0x9ac4 +0x9092 0x5d07 +0x9093 0x5d69 +0x9094 0x6570 +0x9095 0x67a2 +0x9096 0x8da8 +0x9097 0x96db +0x9098 0x636e +0x9099 0x6749 +0x909a 0x6919 +0x909b 0x83c5 +0x909c 0x9817 +0x909d 0x96c0 +0x909e 0x88fe +0x909f 0x6f84 +0x90a0 0x647a +0x90a1 0x5bf8 +0x90a2 0x4e16 +0x90a3 0x702c +0x90a4 0x755d +0x90a5 0x662f +0x90a6 0x51c4 +0x90a7 0x5236 +0x90a8 0x52e2 +0x90a9 0x59d3 +0x90aa 0x5f81 +0x90ab 0x6027 +0x90ac 0x6210 +0x90ad 0x653f +0x90ae 0x6574 +0x90af 0x661f +0x90b0 0x6674 +0x90b1 0x68f2 +0x90b2 0x6816 +0x90b3 0x6b63 +0x90b4 0x6e05 +0x90b5 0x7272 +0x90b6 0x751f +0x90b7 0x76db +0x90b8 0x7cbe +0x90b9 0x8056 +0x90ba 0x58f0 +0x90bb 0x88fd +0x90bc 0x897f +0x90bd 0x8aa0 +0x90be 0x8a93 +0x90bf 0x8acb +0x90c0 0x901d +0x90c1 0x9192 +0x90c2 0x9752 +0x90c3 0x9759 +0x90c4 0x6589 +0x90c5 0x7a0e +0x90c6 0x8106 +0x90c7 0x96bb +0x90c8 0x5e2d +0x90c9 0x60dc +0x90ca 0x621a +0x90cb 0x65a5 +0x90cc 0x6614 +0x90cd 0x6790 +0x90ce 0x77f3 +0x90cf 0x7a4d +0x90d0 0x7c4d +0x90d1 0x7e3e +0x90d2 0x810a +0x90d3 0x8cac +0x90d4 0x8d64 +0x90d5 0x8de1 +0x90d6 0x8e5f +0x90d7 0x78a9 +0x90d8 0x5207 +0x90d9 0x62d9 +0x90da 0x63a5 +0x90db 0x6442 +0x90dc 0x6298 +0x90dd 0x8a2d +0x90de 0x7a83 +0x90df 0x7bc0 +0x90e0 0x8aac +0x90e1 0x96ea +0x90e2 0x7d76 +0x90e3 0x820c +0x90e4 0x8749 +0x90e5 0x4ed9 +0x90e6 0x5148 +0x90e7 0x5343 +0x90e8 0x5360 +0x90e9 0x5ba3 +0x90ea 0x5c02 +0x90eb 0x5c16 +0x90ec 0x5ddd +0x90ed 0x6226 +0x90ee 0x6247 +0x90ef 0x64b0 +0x90f0 0x6813 +0x90f1 0x6834 +0x90f2 0x6cc9 +0x90f3 0x6d45 +0x90f4 0x6d17 +0x90f5 0x67d3 +0x90f6 0x6f5c +0x90f7 0x714e +0x90f8 0x717d +0x90f9 0x65cb +0x90fa 0x7a7f +0x90fb 0x7bad +0x90fc 0x7dda +0x9140 0x7e4a +0x9141 0x7fa8 +0x9142 0x817a +0x9143 0x821b +0x9144 0x8239 +0x9145 0x85a6 +0x9146 0x8a6e +0x9147 0x8cce +0x9148 0x8df5 +0x9149 0x9078 +0x914a 0x9077 +0x914b 0x92ad +0x914c 0x9291 +0x914d 0x9583 +0x914e 0x9bae +0x914f 0x524d +0x9150 0x5584 +0x9151 0x6f38 +0x9152 0x7136 +0x9153 0x5168 +0x9154 0x7985 +0x9155 0x7e55 +0x9156 0x81b3 +0x9157 0x7cce +0x9158 0x564c +0x9159 0x5851 +0x915a 0x5ca8 +0x915b 0x63aa +0x915c 0x66fe +0x915d 0x66fd +0x915e 0x695a +0x915f 0x72d9 +0x9160 0x758f +0x9161 0x758e +0x9162 0x790e +0x9163 0x7956 +0x9164 0x79df +0x9165 0x7c97 +0x9166 0x7d20 +0x9167 0x7d44 +0x9168 0x8607 +0x9169 0x8a34 +0x916a 0x963b +0x916b 0x9061 +0x916c 0x9f20 +0x916d 0x50e7 +0x916e 0x5275 +0x916f 0x53cc +0x9170 0x53e2 +0x9171 0x5009 +0x9172 0x55aa +0x9173 0x58ee +0x9174 0x594f +0x9175 0x723d +0x9176 0x5b8b +0x9177 0x5c64 +0x9178 0x531d +0x9179 0x60e3 +0x917a 0x60f3 +0x917b 0x635c +0x917c 0x6383 +0x917d 0x633f +0x917e 0x63bb +0x9180 0x64cd +0x9181 0x65e9 +0x9182 0x66f9 +0x9183 0x5de3 +0x9184 0x69cd +0x9185 0x69fd +0x9186 0x6f15 +0x9187 0x71e5 +0x9188 0x4e89 +0x9189 0x75e9 +0x918a 0x76f8 +0x918b 0x7a93 +0x918c 0x7cdf +0x918d 0x7dcf +0x918e 0x7d9c +0x918f 0x8061 +0x9190 0x8349 +0x9191 0x8358 +0x9192 0x846c +0x9193 0x84bc +0x9194 0x85fb +0x9195 0x88c5 +0x9196 0x8d70 +0x9197 0x9001 +0x9198 0x906d +0x9199 0x9397 +0x919a 0x971c +0x919b 0x9a12 +0x919c 0x50cf +0x919d 0x5897 +0x919e 0x618e +0x919f 0x81d3 +0x91a0 0x8535 +0x91a1 0x8d08 +0x91a2 0x9020 +0x91a3 0x4fc3 +0x91a4 0x5074 +0x91a5 0x5247 +0x91a6 0x5373 +0x91a7 0x606f +0x91a8 0x6349 +0x91a9 0x675f +0x91aa 0x6e2c +0x91ab 0x8db3 +0x91ac 0x901f +0x91ad 0x4fd7 +0x91ae 0x5c5e +0x91af 0x8cca +0x91b0 0x65cf +0x91b1 0x7d9a +0x91b2 0x5352 +0x91b3 0x8896 +0x91b4 0x5176 +0x91b5 0x63c3 +0x91b6 0x5b58 +0x91b7 0x5b6b +0x91b8 0x5c0a +0x91b9 0x640d +0x91ba 0x6751 +0x91bb 0x905c +0x91bc 0x4ed6 +0x91bd 0x591a +0x91be 0x592a +0x91bf 0x6c70 +0x91c0 0x8a51 +0x91c1 0x553e +0x91c2 0x5815 +0x91c3 0x59a5 +0x91c4 0x60f0 +0x91c5 0x6253 +0x91c6 0x67c1 +0x91c7 0x8235 +0x91c8 0x6955 +0x91c9 0x9640 +0x91ca 0x99c4 +0x91cb 0x9a28 +0x91cc 0x4f53 +0x91cd 0x5806 +0x91ce 0x5bfe +0x91cf 0x8010 +0x91d0 0x5cb1 +0x91d1 0x5e2f +0x91d2 0x5f85 +0x91d3 0x6020 +0x91d4 0x614b +0x91d5 0x6234 +0x91d6 0x66ff +0x91d7 0x6cf0 +0x91d8 0x6ede +0x91d9 0x80ce +0x91da 0x817f +0x91db 0x82d4 +0x91dc 0x888b +0x91dd 0x8cb8 +0x91de 0x9000 +0x91df 0x902e +0x91e0 0x968a +0x91e1 0x9edb +0x91e2 0x9bdb +0x91e3 0x4ee3 +0x91e4 0x53f0 +0x91e5 0x5927 +0x91e6 0x7b2c +0x91e7 0x918d +0x91e8 0x984c +0x91e9 0x9df9 +0x91ea 0x6edd +0x91eb 0x7027 +0x91ec 0x5353 +0x91ed 0x5544 +0x91ee 0x5b85 +0x91ef 0x6258 +0x91f0 0x629e +0x91f1 0x62d3 +0x91f2 0x6ca2 +0x91f3 0x6fef +0x91f4 0x7422 +0x91f5 0x8a17 +0x91f6 0x9438 +0x91f7 0x6fc1 +0x91f8 0x8afe +0x91f9 0x8338 +0x91fa 0x51e7 +0x91fb 0x86f8 +0x91fc 0x53ea +0x9240 0x53e9 +0x9241 0x4f46 +0x9242 0x9054 +0x9243 0x8fb0 +0x9244 0x596a +0x9245 0x8131 +0x9246 0x5dfd +0x9247 0x7aea +0x9248 0x8fbf +0x9249 0x68da +0x924a 0x8c37 +0x924b 0x72f8 +0x924c 0x9c48 +0x924d 0x6a3d +0x924e 0x8ab0 +0x924f 0x4e39 +0x9250 0x5358 +0x9251 0x5606 +0x9252 0x5766 +0x9253 0x62c5 +0x9254 0x63a2 +0x9255 0x65e6 +0x9256 0x6b4e +0x9257 0x6de1 +0x9258 0x6e5b +0x9259 0x70ad +0x925a 0x77ed +0x925b 0x7aef +0x925c 0x7baa +0x925d 0x7dbb +0x925e 0x803d +0x925f 0x80c6 +0x9260 0x86cb +0x9261 0x8a95 +0x9262 0x935b +0x9263 0x56e3 +0x9264 0x58c7 +0x9265 0x5f3e +0x9266 0x65ad +0x9267 0x6696 +0x9268 0x6a80 +0x9269 0x6bb5 +0x926a 0x7537 +0x926b 0x8ac7 +0x926c 0x5024 +0x926d 0x77e5 +0x926e 0x5730 +0x926f 0x5f1b +0x9270 0x6065 +0x9271 0x667a +0x9272 0x6c60 +0x9273 0x75f4 +0x9274 0x7a1a +0x9275 0x7f6e +0x9276 0x81f4 +0x9277 0x8718 +0x9278 0x9045 +0x9279 0x99b3 +0x927a 0x7bc9 +0x927b 0x755c +0x927c 0x7af9 +0x927d 0x7b51 +0x927e 0x84c4 +0x9280 0x9010 +0x9281 0x79e9 +0x9282 0x7a92 +0x9283 0x8336 +0x9284 0x5ae1 +0x9285 0x7740 +0x9286 0x4e2d +0x9287 0x4ef2 +0x9288 0x5b99 +0x9289 0x5fe0 +0x928a 0x62bd +0x928b 0x663c +0x928c 0x67f1 +0x928d 0x6ce8 +0x928e 0x866b +0x928f 0x8877 +0x9290 0x8a3b +0x9291 0x914e +0x9292 0x92f3 +0x9293 0x99d0 +0x9294 0x6a17 +0x9295 0x7026 +0x9296 0x732a +0x9297 0x82e7 +0x9298 0x8457 +0x9299 0x8caf +0x929a 0x4e01 +0x929b 0x5146 +0x929c 0x51cb +0x929d 0x558b +0x929e 0x5bf5 +0x929f 0x5e16 +0x92a0 0x5e33 +0x92a1 0x5e81 +0x92a2 0x5f14 +0x92a3 0x5f35 +0x92a4 0x5f6b +0x92a5 0x5fb4 +0x92a6 0x61f2 +0x92a7 0x6311 +0x92a8 0x66a2 +0x92a9 0x671d +0x92aa 0x6f6e +0x92ab 0x7252 +0x92ac 0x753a +0x92ad 0x773a +0x92ae 0x8074 +0x92af 0x8139 +0x92b0 0x8178 +0x92b1 0x8776 +0x92b2 0x8abf +0x92b3 0x8adc +0x92b4 0x8d85 +0x92b5 0x8df3 +0x92b6 0x929a +0x92b7 0x9577 +0x92b8 0x9802 +0x92b9 0x9ce5 +0x92ba 0x52c5 +0x92bb 0x6357 +0x92bc 0x76f4 +0x92bd 0x6715 +0x92be 0x6c88 +0x92bf 0x73cd +0x92c0 0x8cc3 +0x92c1 0x93ae +0x92c2 0x9673 +0x92c3 0x6d25 +0x92c4 0x589c +0x92c5 0x690e +0x92c6 0x69cc +0x92c7 0x8ffd +0x92c8 0x939a +0x92c9 0x75db +0x92ca 0x901a +0x92cb 0x585a +0x92cc 0x6802 +0x92cd 0x63b4 +0x92ce 0x69fb +0x92cf 0x4f43 +0x92d0 0x6f2c +0x92d1 0x67d8 +0x92d2 0x8fbb +0x92d3 0x8526 +0x92d4 0x7db4 +0x92d5 0x9354 +0x92d6 0x693f +0x92d7 0x6f70 +0x92d8 0x576a +0x92d9 0x58f7 +0x92da 0x5b2c +0x92db 0x7d2c +0x92dc 0x722a +0x92dd 0x540a +0x92de 0x91e3 +0x92df 0x9db4 +0x92e0 0x4ead +0x92e1 0x4f4e +0x92e2 0x505c +0x92e3 0x5075 +0x92e4 0x5243 +0x92e5 0x8c9e +0x92e6 0x5448 +0x92e7 0x5824 +0x92e8 0x5b9a +0x92e9 0x5e1d +0x92ea 0x5e95 +0x92eb 0x5ead +0x92ec 0x5ef7 +0x92ed 0x5f1f +0x92ee 0x608c +0x92ef 0x62b5 +0x92f0 0x633a +0x92f1 0x63d0 +0x92f2 0x68af +0x92f3 0x6c40 +0x92f4 0x7887 +0x92f5 0x798e +0x92f6 0x7a0b +0x92f7 0x7de0 +0x92f8 0x8247 +0x92f9 0x8a02 +0x92fa 0x8ae6 +0x92fb 0x8e44 +0x92fc 0x9013 +0x9340 0x90b8 +0x9341 0x912d +0x9342 0x91d8 +0x9343 0x9f0e +0x9344 0x6ce5 +0x9345 0x6458 +0x9346 0x64e2 +0x9347 0x6575 +0x9348 0x6ef4 +0x9349 0x7684 +0x934a 0x7b1b +0x934b 0x9069 +0x934c 0x93d1 +0x934d 0x6eba +0x934e 0x54f2 +0x934f 0x5fb9 +0x9350 0x64a4 +0x9351 0x8f4d +0x9352 0x8fed +0x9353 0x9244 +0x9354 0x5178 +0x9355 0x586b +0x9356 0x5929 +0x9357 0x5c55 +0x9358 0x5e97 +0x9359 0x6dfb +0x935a 0x7e8f +0x935b 0x751c +0x935c 0x8cbc +0x935d 0x8ee2 +0x935e 0x985b +0x935f 0x70b9 +0x9360 0x4f1d +0x9361 0x6bbf +0x9362 0x6fb1 +0x9363 0x7530 +0x9364 0x96fb +0x9365 0x514e +0x9366 0x5410 +0x9367 0x5835 +0x9368 0x5857 +0x9369 0x59ac +0x936a 0x5c60 +0x936b 0x5f92 +0x936c 0x6597 +0x936d 0x675c +0x936e 0x6e21 +0x936f 0x767b +0x9370 0x83df +0x9371 0x8ced +0x9372 0x9014 +0x9373 0x90fd +0x9374 0x934d +0x9375 0x7825 +0x9376 0x783a +0x9377 0x52aa +0x9378 0x5ea6 +0x9379 0x571f +0x937a 0x5974 +0x937b 0x6012 +0x937c 0x5012 +0x937d 0x515a +0x937e 0x51ac +0x9380 0x51cd +0x9381 0x5200 +0x9382 0x5510 +0x9383 0x5854 +0x9384 0x5858 +0x9385 0x5957 +0x9386 0x5b95 +0x9387 0x5cf6 +0x9388 0x5d8b +0x9389 0x60bc +0x938a 0x6295 +0x938b 0x642d +0x938c 0x6771 +0x938d 0x6843 +0x938e 0x68bc +0x938f 0x68df +0x9390 0x76d7 +0x9391 0x6dd8 +0x9392 0x6e6f +0x9393 0x6d9b +0x9394 0x706f +0x9395 0x71c8 +0x9396 0x5f53 +0x9397 0x75d8 +0x9398 0x7977 +0x9399 0x7b49 +0x939a 0x7b54 +0x939b 0x7b52 +0x939c 0x7cd6 +0x939d 0x7d71 +0x939e 0x5230 +0x939f 0x8463 +0x93a0 0x8569 +0x93a1 0x85e4 +0x93a2 0x8a0e +0x93a3 0x8b04 +0x93a4 0x8c46 +0x93a5 0x8e0f +0x93a6 0x9003 +0x93a7 0x900f +0x93a8 0x9419 +0x93a9 0x9676 +0x93aa 0x982d +0x93ab 0x9a30 +0x93ac 0x95d8 +0x93ad 0x50cd +0x93ae 0x52d5 +0x93af 0x540c +0x93b0 0x5802 +0x93b1 0x5c0e +0x93b2 0x61a7 +0x93b3 0x649e +0x93b4 0x6d1e +0x93b5 0x77b3 +0x93b6 0x7ae5 +0x93b7 0x80f4 +0x93b8 0x8404 +0x93b9 0x9053 +0x93ba 0x9285 +0x93bb 0x5ce0 +0x93bc 0x9d07 +0x93bd 0x533f +0x93be 0x5f97 +0x93bf 0x5fb3 +0x93c0 0x6d9c +0x93c1 0x7279 +0x93c2 0x7763 +0x93c3 0x79bf +0x93c4 0x7be4 +0x93c5 0x6bd2 +0x93c6 0x72ec +0x93c7 0x8aad +0x93c8 0x6803 +0x93c9 0x6a61 +0x93ca 0x51f8 +0x93cb 0x7a81 +0x93cc 0x6934 +0x93cd 0x5c4a +0x93ce 0x9cf6 +0x93cf 0x82eb +0x93d0 0x5bc5 +0x93d1 0x9149 +0x93d2 0x701e +0x93d3 0x5678 +0x93d4 0x5c6f +0x93d5 0x60c7 +0x93d6 0x6566 +0x93d7 0x6c8c +0x93d8 0x8c5a +0x93d9 0x9041 +0x93da 0x9813 +0x93db 0x5451 +0x93dc 0x66c7 +0x93dd 0x920d +0x93de 0x5948 +0x93df 0x90a3 +0x93e0 0x5185 +0x93e1 0x4e4d +0x93e2 0x51ea +0x93e3 0x8599 +0x93e4 0x8b0e +0x93e5 0x7058 +0x93e6 0x637a +0x93e7 0x934b +0x93e8 0x6962 +0x93e9 0x99b4 +0x93ea 0x7e04 +0x93eb 0x7577 +0x93ec 0x5357 +0x93ed 0x6960 +0x93ee 0x8edf +0x93ef 0x96e3 +0x93f0 0x6c5d +0x93f1 0x4e8c +0x93f2 0x5c3c +0x93f3 0x5f10 +0x93f4 0x8fe9 +0x93f5 0x5302 +0x93f6 0x8cd1 +0x93f7 0x8089 +0x93f8 0x8679 +0x93f9 0x5eff +0x93fa 0x65e5 +0x93fb 0x4e73 +0x93fc 0x5165 +0x9440 0x5982 +0x9441 0x5c3f +0x9442 0x97ee +0x9443 0x4efb +0x9444 0x598a +0x9445 0x5fcd +0x9446 0x8a8d +0x9447 0x6fe1 +0x9448 0x79b0 +0x9449 0x7962 +0x944a 0x5be7 +0x944b 0x8471 +0x944c 0x732b +0x944d 0x71b1 +0x944e 0x5e74 +0x944f 0x5ff5 +0x9450 0x637b +0x9451 0x649a +0x9452 0x71c3 +0x9453 0x7c98 +0x9454 0x4e43 +0x9455 0x5efc +0x9456 0x4e4b +0x9457 0x57dc +0x9458 0x56a2 +0x9459 0x60a9 +0x945a 0x6fc3 +0x945b 0x7d0d +0x945c 0x80fd +0x945d 0x8133 +0x945e 0x81bf +0x945f 0x8fb2 +0x9460 0x8997 +0x9461 0x86a4 +0x9462 0x5df4 +0x9463 0x628a +0x9464 0x64ad +0x9465 0x8987 +0x9466 0x6777 +0x9467 0x6ce2 +0x9468 0x6d3e +0x9469 0x7436 +0x946a 0x7834 +0x946b 0x5a46 +0x946c 0x7f75 +0x946d 0x82ad +0x946e 0x99ac +0x946f 0x4ff3 +0x9470 0x5ec3 +0x9471 0x62dd +0x9472 0x6392 +0x9473 0x6557 +0x9474 0x676f +0x9475 0x76c3 +0x9476 0x724c +0x9477 0x80cc +0x9478 0x80ba +0x9479 0x8f29 +0x947a 0x914d +0x947b 0x500d +0x947c 0x57f9 +0x947d 0x5a92 +0x947e 0x6885 +0x9480 0x6973 +0x9481 0x7164 +0x9482 0x72fd +0x9483 0x8cb7 +0x9484 0x58f2 +0x9485 0x8ce0 +0x9486 0x966a +0x9487 0x9019 +0x9488 0x877f +0x9489 0x79e4 +0x948a 0x77e7 +0x948b 0x8429 +0x948c 0x4f2f +0x948d 0x5265 +0x948e 0x535a +0x948f 0x62cd +0x9490 0x67cf +0x9491 0x6cca +0x9492 0x767d +0x9493 0x7b94 +0x9494 0x7c95 +0x9495 0x8236 +0x9496 0x8584 +0x9497 0x8feb +0x9498 0x66dd +0x9499 0x6f20 +0x949a 0x7206 +0x949b 0x7e1b +0x949c 0x83ab +0x949d 0x99c1 +0x949e 0x9ea6 +0x949f 0x51fd +0x94a0 0x7bb1 +0x94a1 0x7872 +0x94a2 0x7bb8 +0x94a3 0x8087 +0x94a4 0x7b48 +0x94a5 0x6ae8 +0x94a6 0x5e61 +0x94a7 0x808c +0x94a8 0x7551 +0x94a9 0x7560 +0x94aa 0x516b +0x94ab 0x9262 +0x94ac 0x6e8c +0x94ad 0x767a +0x94ae 0x9197 +0x94af 0x9aea +0x94b0 0x4f10 +0x94b1 0x7f70 +0x94b2 0x629c +0x94b3 0x7b4f +0x94b4 0x95a5 +0x94b5 0x9ce9 +0x94b6 0x567a +0x94b7 0x5859 +0x94b8 0x86e4 +0x94b9 0x96bc +0x94ba 0x4f34 +0x94bb 0x5224 +0x94bc 0x534a +0x94bd 0x53cd +0x94be 0x53db +0x94bf 0x5e06 +0x94c0 0x642c +0x94c1 0x6591 +0x94c2 0x677f +0x94c3 0x6c3e +0x94c4 0x6c4e +0x94c5 0x7248 +0x94c6 0x72af +0x94c7 0x73ed +0x94c8 0x7554 +0x94c9 0x7e41 +0x94ca 0x822c +0x94cb 0x85e9 +0x94cc 0x8ca9 +0x94cd 0x7bc4 +0x94ce 0x91c6 +0x94cf 0x7169 +0x94d0 0x9812 +0x94d1 0x98ef +0x94d2 0x633d +0x94d3 0x6669 +0x94d4 0x756a +0x94d5 0x76e4 +0x94d6 0x78d0 +0x94d7 0x8543 +0x94d8 0x86ee +0x94d9 0x532a +0x94da 0x5351 +0x94db 0x5426 +0x94dc 0x5983 +0x94dd 0x5e87 +0x94de 0x5f7c +0x94df 0x60b2 +0x94e0 0x6249 +0x94e1 0x6279 +0x94e2 0x62ab +0x94e3 0x6590 +0x94e4 0x6bd4 +0x94e5 0x6ccc +0x94e6 0x75b2 +0x94e7 0x76ae +0x94e8 0x7891 +0x94e9 0x79d8 +0x94ea 0x7dcb +0x94eb 0x7f77 +0x94ec 0x80a5 +0x94ed 0x88ab +0x94ee 0x8ab9 +0x94ef 0x8cbb +0x94f0 0x907f +0x94f1 0x975e +0x94f2 0x98db +0x94f3 0x6a0b +0x94f4 0x7c38 +0x94f5 0x5099 +0x94f6 0x5c3e +0x94f7 0x5fae +0x94f8 0x6787 +0x94f9 0x6bd8 +0x94fa 0x7435 +0x94fb 0x7709 +0x94fc 0x7f8e +0x9540 0x9f3b +0x9541 0x67ca +0x9542 0x7a17 +0x9543 0x5339 +0x9544 0x758b +0x9545 0x9aed +0x9546 0x5f66 +0x9547 0x819d +0x9548 0x83f1 +0x9549 0x8098 +0x954a 0x5f3c +0x954b 0x5fc5 +0x954c 0x7562 +0x954d 0x7b46 +0x954e 0x903c +0x954f 0x6867 +0x9550 0x59eb +0x9551 0x5a9b +0x9552 0x7d10 +0x9553 0x767e +0x9554 0x8b2c +0x9555 0x4ff5 +0x9556 0x5f6a +0x9557 0x6a19 +0x9558 0x6c37 +0x9559 0x6f02 +0x955a 0x74e2 +0x955b 0x7968 +0x955c 0x8868 +0x955d 0x8a55 +0x955e 0x8c79 +0x955f 0x5edf +0x9560 0x63cf +0x9561 0x75c5 +0x9562 0x79d2 +0x9563 0x82d7 +0x9564 0x9328 +0x9565 0x92f2 +0x9566 0x849c +0x9567 0x86ed +0x9568 0x9c2d +0x9569 0x54c1 +0x956a 0x5f6c +0x956b 0x658c +0x956c 0x6d5c +0x956d 0x7015 +0x956e 0x8ca7 +0x956f 0x8cd3 +0x9570 0x983b +0x9571 0x654f +0x9572 0x74f6 +0x9573 0x4e0d +0x9574 0x4ed8 +0x9575 0x57e0 +0x9576 0x592b +0x9577 0x5a66 +0x9578 0x5bcc +0x9579 0x51a8 +0x957a 0x5e03 +0x957b 0x5e9c +0x957c 0x6016 +0x957d 0x6276 +0x957e 0x6577 +0x9580 0x65a7 +0x9581 0x666e +0x9582 0x6d6e +0x9583 0x7236 +0x9584 0x7b26 +0x9585 0x8150 +0x9586 0x819a +0x9587 0x8299 +0x9588 0x8b5c +0x9589 0x8ca0 +0x958a 0x8ce6 +0x958b 0x8d74 +0x958c 0x961c +0x958d 0x9644 +0x958e 0x4fae +0x958f 0x64ab +0x9590 0x6b66 +0x9591 0x821e +0x9592 0x8461 +0x9593 0x856a +0x9594 0x90e8 +0x9595 0x5c01 +0x9596 0x6953 +0x9597 0x98a8 +0x9598 0x847a +0x9599 0x8557 +0x959a 0x4f0f +0x959b 0x526f +0x959c 0x5fa9 +0x959d 0x5e45 +0x959e 0x670d +0x959f 0x798f +0x95a0 0x8179 +0x95a1 0x8907 +0x95a2 0x8986 +0x95a3 0x6df5 +0x95a4 0x5f17 +0x95a5 0x6255 +0x95a6 0x6cb8 +0x95a7 0x4ecf +0x95a8 0x7269 +0x95a9 0x9b92 +0x95aa 0x5206 +0x95ab 0x543b +0x95ac 0x5674 +0x95ad 0x58b3 +0x95ae 0x61a4 +0x95af 0x626e +0x95b0 0x711a +0x95b1 0x596e +0x95b2 0x7c89 +0x95b3 0x7cde +0x95b4 0x7d1b +0x95b5 0x96f0 +0x95b6 0x6587 +0x95b7 0x805e +0x95b8 0x4e19 +0x95b9 0x4f75 +0x95ba 0x5175 +0x95bb 0x5840 +0x95bc 0x5e63 +0x95bd 0x5e73 +0x95be 0x5f0a +0x95bf 0x67c4 +0x95c0 0x4e26 +0x95c1 0x853d +0x95c2 0x9589 +0x95c3 0x965b +0x95c4 0x7c73 +0x95c5 0x9801 +0x95c6 0x50fb +0x95c7 0x58c1 +0x95c8 0x7656 +0x95c9 0x78a7 +0x95ca 0x5225 +0x95cb 0x77a5 +0x95cc 0x8511 +0x95cd 0x7b86 +0x95ce 0x504f +0x95cf 0x5909 +0x95d0 0x7247 +0x95d1 0x7bc7 +0x95d2 0x7de8 +0x95d3 0x8fba +0x95d4 0x8fd4 +0x95d5 0x904d +0x95d6 0x4fbf +0x95d7 0x52c9 +0x95d8 0x5a29 +0x95d9 0x5f01 +0x95da 0x97ad +0x95db 0x4fdd +0x95dc 0x8217 +0x95dd 0x92ea +0x95de 0x5703 +0x95df 0x6355 +0x95e0 0x6b69 +0x95e1 0x752b +0x95e2 0x88dc +0x95e3 0x8f14 +0x95e4 0x7a42 +0x95e5 0x52df +0x95e6 0x5893 +0x95e7 0x6155 +0x95e8 0x620a +0x95e9 0x66ae +0x95ea 0x6bcd +0x95eb 0x7c3f +0x95ec 0x83e9 +0x95ed 0x5023 +0x95ee 0x4ff8 +0x95ef 0x5305 +0x95f0 0x5446 +0x95f1 0x5831 +0x95f2 0x5949 +0x95f3 0x5b9d +0x95f4 0x5cf0 +0x95f5 0x5cef +0x95f6 0x5d29 +0x95f7 0x5e96 +0x95f8 0x62b1 +0x95f9 0x6367 +0x95fa 0x653e +0x95fb 0x65b9 +0x95fc 0x670b +0x9640 0x6cd5 +0x9641 0x6ce1 +0x9642 0x70f9 +0x9643 0x7832 +0x9644 0x7e2b +0x9645 0x80de +0x9646 0x82b3 +0x9647 0x840c +0x9648 0x84ec +0x9649 0x8702 +0x964a 0x8912 +0x964b 0x8a2a +0x964c 0x8c4a +0x964d 0x90a6 +0x964e 0x92d2 +0x964f 0x98fd +0x9650 0x9cf3 +0x9651 0x9d6c +0x9652 0x4e4f +0x9653 0x4ea1 +0x9654 0x508d +0x9655 0x5256 +0x9656 0x574a +0x9657 0x59a8 +0x9658 0x5e3d +0x9659 0x5fd8 +0x965a 0x5fd9 +0x965b 0x623f +0x965c 0x66b4 +0x965d 0x671b +0x965e 0x67d0 +0x965f 0x68d2 +0x9660 0x5192 +0x9661 0x7d21 +0x9662 0x80aa +0x9663 0x81a8 +0x9664 0x8b00 +0x9665 0x8c8c +0x9666 0x8cbf +0x9667 0x927e +0x9668 0x9632 +0x9669 0x5420 +0x966a 0x982c +0x966b 0x5317 +0x966c 0x50d5 +0x966d 0x535c +0x966e 0x58a8 +0x966f 0x64b2 +0x9670 0x6734 +0x9671 0x7267 +0x9672 0x7766 +0x9673 0x7a46 +0x9674 0x91e6 +0x9675 0x52c3 +0x9676 0x6ca1 +0x9677 0x6b86 +0x9678 0x5800 +0x9679 0x5e4c +0x967a 0x5954 +0x967b 0x672c +0x967c 0x7ffb +0x967d 0x51e1 +0x967e 0x76c6 +0x9680 0x6469 +0x9681 0x78e8 +0x9682 0x9b54 +0x9683 0x9ebb +0x9684 0x57cb +0x9685 0x59b9 +0x9686 0x6627 +0x9687 0x679a +0x9688 0x6bce +0x9689 0x54e9 +0x968a 0x69d9 +0x968b 0x5e55 +0x968c 0x819c +0x968d 0x6795 +0x968e 0x9baa +0x968f 0x67fe +0x9690 0x9c52 +0x9691 0x685d +0x9692 0x4ea6 +0x9693 0x4fe3 +0x9694 0x53c8 +0x9695 0x62b9 +0x9696 0x672b +0x9697 0x6cab +0x9698 0x8fc4 +0x9699 0x4fad +0x969a 0x7e6d +0x969b 0x9ebf +0x969c 0x4e07 +0x969d 0x6162 +0x969e 0x6e80 +0x969f 0x6f2b +0x96a0 0x8513 +0x96a1 0x5473 +0x96a2 0x672a +0x96a3 0x9b45 +0x96a4 0x5df3 +0x96a5 0x7b95 +0x96a6 0x5cac +0x96a7 0x5bc6 +0x96a8 0x871c +0x96a9 0x6e4a +0x96aa 0x84d1 +0x96ab 0x7a14 +0x96ac 0x8108 +0x96ad 0x5999 +0x96ae 0x7c8d +0x96af 0x6c11 +0x96b0 0x7720 +0x96b1 0x52d9 +0x96b2 0x5922 +0x96b3 0x7121 +0x96b4 0x725f +0x96b5 0x77db +0x96b6 0x9727 +0x96b7 0x9d61 +0x96b8 0x690b +0x96b9 0x5a7f +0x96ba 0x5a18 +0x96bb 0x51a5 +0x96bc 0x540d +0x96bd 0x547d +0x96be 0x660e +0x96bf 0x76df +0x96c0 0x8ff7 +0x96c1 0x9298 +0x96c2 0x9cf4 +0x96c3 0x59ea +0x96c4 0x725d +0x96c5 0x6ec5 +0x96c6 0x514d +0x96c7 0x68c9 +0x96c8 0x7dbf +0x96c9 0x7dec +0x96ca 0x9762 +0x96cb 0x9eba +0x96cc 0x6478 +0x96cd 0x6a21 +0x96ce 0x8302 +0x96cf 0x5984 +0x96d0 0x5b5f +0x96d1 0x6bdb +0x96d2 0x731b +0x96d3 0x76f2 +0x96d4 0x7db2 +0x96d5 0x8017 +0x96d6 0x8499 +0x96d7 0x5132 +0x96d8 0x6728 +0x96d9 0x9ed9 +0x96da 0x76ee +0x96db 0x6762 +0x96dc 0x52ff +0x96dd 0x9905 +0x96de 0x5c24 +0x96df 0x623b +0x96e0 0x7c7e +0x96e1 0x8cb0 +0x96e2 0x554f +0x96e3 0x60b6 +0x96e4 0x7d0b +0x96e5 0x9580 +0x96e6 0x5301 +0x96e7 0x4e5f +0x96e8 0x51b6 +0x96e9 0x591c +0x96ea 0x723a +0x96eb 0x8036 +0x96ec 0x91ce +0x96ed 0x5f25 +0x96ee 0x77e2 +0x96ef 0x5384 +0x96f0 0x5f79 +0x96f1 0x7d04 +0x96f2 0x85ac +0x96f3 0x8a33 +0x96f4 0x8e8d +0x96f5 0x9756 +0x96f6 0x67f3 +0x96f7 0x85ae +0x96f8 0x9453 +0x96f9 0x6109 +0x96fa 0x6108 +0x96fb 0x6cb9 +0x96fc 0x7652 +0x9740 0x8aed +0x9741 0x8f38 +0x9742 0x552f +0x9743 0x4f51 +0x9744 0x512a +0x9745 0x52c7 +0x9746 0x53cb +0x9747 0x5ba5 +0x9748 0x5e7d +0x9749 0x60a0 +0x974a 0x6182 +0x974b 0x63d6 +0x974c 0x6709 +0x974d 0x67da +0x974e 0x6e67 +0x974f 0x6d8c +0x9750 0x7336 +0x9751 0x7337 +0x9752 0x7531 +0x9753 0x7950 +0x9754 0x88d5 +0x9755 0x8a98 +0x9756 0x904a +0x9757 0x9091 +0x9758 0x90f5 +0x9759 0x96c4 +0x975a 0x878d +0x975b 0x5915 +0x975c 0x4e88 +0x975d 0x4f59 +0x975e 0x4e0e +0x975f 0x8a89 +0x9760 0x8f3f +0x9761 0x9810 +0x9762 0x50ad +0x9763 0x5e7c +0x9764 0x5996 +0x9765 0x5bb9 +0x9766 0x5eb8 +0x9767 0x63da +0x9768 0x63fa +0x9769 0x64c1 +0x976a 0x66dc +0x976b 0x694a +0x976c 0x69d8 +0x976d 0x6d0b +0x976e 0x6eb6 +0x976f 0x7194 +0x9770 0x7528 +0x9771 0x7aaf +0x9772 0x7f8a +0x9773 0x8000 +0x9774 0x8449 +0x9775 0x84c9 +0x9776 0x8981 +0x9777 0x8b21 +0x9778 0x8e0a +0x9779 0x9065 +0x977a 0x967d +0x977b 0x990a +0x977c 0x617e +0x977d 0x6291 +0x977e 0x6b32 +0x9780 0x6c83 +0x9781 0x6d74 +0x9782 0x7fcc +0x9783 0x7ffc +0x9784 0x6dc0 +0x9785 0x7f85 +0x9786 0x87ba +0x9787 0x88f8 +0x9788 0x6765 +0x9789 0x83b1 +0x978a 0x983c +0x978b 0x96f7 +0x978c 0x6d1b +0x978d 0x7d61 +0x978e 0x843d +0x978f 0x916a +0x9790 0x4e71 +0x9791 0x5375 +0x9792 0x5d50 +0x9793 0x6b04 +0x9794 0x6feb +0x9795 0x85cd +0x9796 0x862d +0x9797 0x89a7 +0x9798 0x5229 +0x9799 0x540f +0x979a 0x5c65 +0x979b 0x674e +0x979c 0x68a8 +0x979d 0x7406 +0x979e 0x7483 +0x979f 0x75e2 +0x97a0 0x88cf +0x97a1 0x88e1 +0x97a2 0x91cc +0x97a3 0x96e2 +0x97a4 0x9678 +0x97a5 0x5f8b +0x97a6 0x7387 +0x97a7 0x7acb +0x97a8 0x844e +0x97a9 0x63a0 +0x97aa 0x7565 +0x97ab 0x5289 +0x97ac 0x6d41 +0x97ad 0x6e9c +0x97ae 0x7409 +0x97af 0x7559 +0x97b0 0x786b +0x97b1 0x7c92 +0x97b2 0x9686 +0x97b3 0x7adc +0x97b4 0x9f8d +0x97b5 0x4fb6 +0x97b6 0x616e +0x97b7 0x65c5 +0x97b8 0x865c +0x97b9 0x4e86 +0x97ba 0x4eae +0x97bb 0x50da +0x97bc 0x4e21 +0x97bd 0x51cc +0x97be 0x5bee +0x97bf 0x6599 +0x97c0 0x6881 +0x97c1 0x6dbc +0x97c2 0x731f +0x97c3 0x7642 +0x97c4 0x77ad +0x97c5 0x7a1c +0x97c6 0x7ce7 +0x97c7 0x826f +0x97c8 0x8ad2 +0x97c9 0x907c +0x97ca 0x91cf +0x97cb 0x9675 +0x97cc 0x9818 +0x97cd 0x529b +0x97ce 0x7dd1 +0x97cf 0x502b +0x97d0 0x5398 +0x97d1 0x6797 +0x97d2 0x6dcb +0x97d3 0x71d0 +0x97d4 0x7433 +0x97d5 0x81e8 +0x97d6 0x8f2a +0x97d7 0x96a3 +0x97d8 0x9c57 +0x97d9 0x9e9f +0x97da 0x7460 +0x97db 0x5841 +0x97dc 0x6d99 +0x97dd 0x7d2f +0x97de 0x985e +0x97df 0x4ee4 +0x97e0 0x4f36 +0x97e1 0x4f8b +0x97e2 0x51b7 +0x97e3 0x52b1 +0x97e4 0x5dba +0x97e5 0x601c +0x97e6 0x73b2 +0x97e7 0x793c +0x97e8 0x82d3 +0x97e9 0x9234 +0x97ea 0x96b7 +0x97eb 0x96f6 +0x97ec 0x970a +0x97ed 0x9e97 +0x97ee 0x9f62 +0x97ef 0x66a6 +0x97f0 0x6b74 +0x97f1 0x5217 +0x97f2 0x52a3 +0x97f3 0x70c8 +0x97f4 0x88c2 +0x97f5 0x5ec9 +0x97f6 0x604b +0x97f7 0x6190 +0x97f8 0x6f23 +0x97f9 0x7149 +0x97fa 0x7c3e +0x97fb 0x7df4 +0x97fc 0x806f +0x9840 0x84ee +0x9841 0x9023 +0x9842 0x932c +0x9843 0x5442 +0x9844 0x9b6f +0x9845 0x6ad3 +0x9846 0x7089 +0x9847 0x8cc2 +0x9848 0x8def +0x9849 0x9732 +0x984a 0x52b4 +0x984b 0x5a41 +0x984c 0x5eca +0x984d 0x5f04 +0x984e 0x6717 +0x984f 0x697c +0x9850 0x6994 +0x9851 0x6d6a +0x9852 0x6f0f +0x9853 0x7262 +0x9854 0x72fc +0x9855 0x7bed +0x9856 0x8001 +0x9857 0x807e +0x9858 0x874b +0x9859 0x90ce +0x985a 0x516d +0x985b 0x9e93 +0x985c 0x7984 +0x985d 0x808b +0x985e 0x9332 +0x985f 0x8ad6 +0x9860 0x502d +0x9861 0x548c +0x9862 0x8a71 +0x9863 0x6b6a +0x9864 0x8cc4 +0x9865 0x8107 +0x9866 0x60d1 +0x9867 0x67a0 +0x9868 0x9df2 +0x9869 0x4e99 +0x986a 0x4e98 +0x986b 0x9c10 +0x986c 0x8a6b +0x986d 0x85c1 +0x986e 0x8568 +0x986f 0x6900 +0x9870 0x6e7e +0x9871 0x7897 +0x9872 0x8155 +0x989f 0x5f0c +0x98a0 0x4e10 +0x98a1 0x4e15 +0x98a2 0x4e2a +0x98a3 0x4e31 +0x98a4 0x4e36 +0x98a5 0x4e3c +0x98a6 0x4e3f +0x98a7 0x4e42 +0x98a8 0x4e56 +0x98a9 0x4e58 +0x98aa 0x4e82 +0x98ab 0x4e85 +0x98ac 0x8c6b +0x98ad 0x4e8a +0x98ae 0x8212 +0x98af 0x5f0d +0x98b0 0x4e8e +0x98b1 0x4e9e +0x98b2 0x4e9f +0x98b3 0x4ea0 +0x98b4 0x4ea2 +0x98b5 0x4eb0 +0x98b6 0x4eb3 +0x98b7 0x4eb6 +0x98b8 0x4ece +0x98b9 0x4ecd +0x98ba 0x4ec4 +0x98bb 0x4ec6 +0x98bc 0x4ec2 +0x98bd 0x4ed7 +0x98be 0x4ede +0x98bf 0x4eed +0x98c0 0x4edf +0x98c1 0x4ef7 +0x98c2 0x4f09 +0x98c3 0x4f5a +0x98c4 0x4f30 +0x98c5 0x4f5b +0x98c6 0x4f5d +0x98c7 0x4f57 +0x98c8 0x4f47 +0x98c9 0x4f76 +0x98ca 0x4f88 +0x98cb 0x4f8f +0x98cc 0x4f98 +0x98cd 0x4f7b +0x98ce 0x4f69 +0x98cf 0x4f70 +0x98d0 0x4f91 +0x98d1 0x4f6f +0x98d2 0x4f86 +0x98d3 0x4f96 +0x98d4 0x5118 +0x98d5 0x4fd4 +0x98d6 0x4fdf +0x98d7 0x4fce +0x98d8 0x4fd8 +0x98d9 0x4fdb +0x98da 0x4fd1 +0x98db 0x4fda +0x98dc 0x4fd0 +0x98dd 0x4fe4 +0x98de 0x4fe5 +0x98df 0x501a +0x98e0 0x5028 +0x98e1 0x5014 +0x98e2 0x502a +0x98e3 0x5025 +0x98e4 0x5005 +0x98e5 0x4f1c +0x98e6 0x4ff6 +0x98e7 0x5021 +0x98e8 0x5029 +0x98e9 0x502c +0x98ea 0x4ffe +0x98eb 0x4fef +0x98ec 0x5011 +0x98ed 0x5006 +0x98ee 0x5043 +0x98ef 0x5047 +0x98f0 0x6703 +0x98f1 0x5055 +0x98f2 0x5050 +0x98f3 0x5048 +0x98f4 0x505a +0x98f5 0x5056 +0x98f6 0x506c +0x98f7 0x5078 +0x98f8 0x5080 +0x98f9 0x509a +0x98fa 0x5085 +0x98fb 0x50b4 +0x98fc 0x50b2 +0x9940 0x50c9 +0x9941 0x50ca +0x9942 0x50b3 +0x9943 0x50c2 +0x9944 0x50d6 +0x9945 0x50de +0x9946 0x50e5 +0x9947 0x50ed +0x9948 0x50e3 +0x9949 0x50ee +0x994a 0x50f9 +0x994b 0x50f5 +0x994c 0x5109 +0x994d 0x5101 +0x994e 0x5102 +0x994f 0x5116 +0x9950 0x5115 +0x9951 0x5114 +0x9952 0x511a +0x9953 0x5121 +0x9954 0x513a +0x9955 0x5137 +0x9956 0x513c +0x9957 0x513b +0x9958 0x513f +0x9959 0x5140 +0x995a 0x5152 +0x995b 0x514c +0x995c 0x5154 +0x995d 0x5162 +0x995e 0x7af8 +0x995f 0x5169 +0x9960 0x516a +0x9961 0x516e +0x9962 0x5180 +0x9963 0x5182 +0x9964 0x56d8 +0x9965 0x518c +0x9966 0x5189 +0x9967 0x518f +0x9968 0x5191 +0x9969 0x5193 +0x996a 0x5195 +0x996b 0x5196 +0x996c 0x51a4 +0x996d 0x51a6 +0x996e 0x51a2 +0x996f 0x51a9 +0x9970 0x51aa +0x9971 0x51ab +0x9972 0x51b3 +0x9973 0x51b1 +0x9974 0x51b2 +0x9975 0x51b0 +0x9976 0x51b5 +0x9977 0x51bd +0x9978 0x51c5 +0x9979 0x51c9 +0x997a 0x51db +0x997b 0x51e0 +0x997c 0x8655 +0x997d 0x51e9 +0x997e 0x51ed +0x9980 0x51f0 +0x9981 0x51f5 +0x9982 0x51fe +0x9983 0x5204 +0x9984 0x520b +0x9985 0x5214 +0x9986 0x520e +0x9987 0x5227 +0x9988 0x522a +0x9989 0x522e +0x998a 0x5233 +0x998b 0x5239 +0x998c 0x524f +0x998d 0x5244 +0x998e 0x524b +0x998f 0x524c +0x9990 0x525e +0x9991 0x5254 +0x9992 0x526a +0x9993 0x5274 +0x9994 0x5269 +0x9995 0x5273 +0x9996 0x527f +0x9997 0x527d +0x9998 0x528d +0x9999 0x5294 +0x999a 0x5292 +0x999b 0x5271 +0x999c 0x5288 +0x999d 0x5291 +0x999e 0x8fa8 +0x999f 0x8fa7 +0x99a0 0x52ac +0x99a1 0x52ad +0x99a2 0x52bc +0x99a3 0x52b5 +0x99a4 0x52c1 +0x99a5 0x52cd +0x99a6 0x52d7 +0x99a7 0x52de +0x99a8 0x52e3 +0x99a9 0x52e6 +0x99aa 0x98ed +0x99ab 0x52e0 +0x99ac 0x52f3 +0x99ad 0x52f5 +0x99ae 0x52f8 +0x99af 0x52f9 +0x99b0 0x5306 +0x99b1 0x5308 +0x99b2 0x7538 +0x99b3 0x530d +0x99b4 0x5310 +0x99b5 0x530f +0x99b6 0x5315 +0x99b7 0x531a +0x99b8 0x5323 +0x99b9 0x532f +0x99ba 0x5331 +0x99bb 0x5333 +0x99bc 0x5338 +0x99bd 0x5340 +0x99be 0x5346 +0x99bf 0x5345 +0x99c0 0x4e17 +0x99c1 0x5349 +0x99c2 0x534d +0x99c3 0x51d6 +0x99c4 0x535e +0x99c5 0x5369 +0x99c6 0x536e +0x99c7 0x5918 +0x99c8 0x537b +0x99c9 0x5377 +0x99ca 0x5382 +0x99cb 0x5396 +0x99cc 0x53a0 +0x99cd 0x53a6 +0x99ce 0x53a5 +0x99cf 0x53ae +0x99d0 0x53b0 +0x99d1 0x53b6 +0x99d2 0x53c3 +0x99d3 0x7c12 +0x99d4 0x96d9 +0x99d5 0x53df +0x99d6 0x66fc +0x99d7 0x71ee +0x99d8 0x53ee +0x99d9 0x53e8 +0x99da 0x53ed +0x99db 0x53fa +0x99dc 0x5401 +0x99dd 0x543d +0x99de 0x5440 +0x99df 0x542c +0x99e0 0x542d +0x99e1 0x543c +0x99e2 0x542e +0x99e3 0x5436 +0x99e4 0x5429 +0x99e5 0x541d +0x99e6 0x544e +0x99e7 0x548f +0x99e8 0x5475 +0x99e9 0x548e +0x99ea 0x545f +0x99eb 0x5471 +0x99ec 0x5477 +0x99ed 0x5470 +0x99ee 0x5492 +0x99ef 0x547b +0x99f0 0x5480 +0x99f1 0x5476 +0x99f2 0x5484 +0x99f3 0x5490 +0x99f4 0x5486 +0x99f5 0x54c7 +0x99f6 0x54a2 +0x99f7 0x54b8 +0x99f8 0x54a5 +0x99f9 0x54ac +0x99fa 0x54c4 +0x99fb 0x54c8 +0x99fc 0x54a8 +0x9a40 0x54ab +0x9a41 0x54c2 +0x9a42 0x54a4 +0x9a43 0x54be +0x9a44 0x54bc +0x9a45 0x54d8 +0x9a46 0x54e5 +0x9a47 0x54e6 +0x9a48 0x550f +0x9a49 0x5514 +0x9a4a 0x54fd +0x9a4b 0x54ee +0x9a4c 0x54ed +0x9a4d 0x54fa +0x9a4e 0x54e2 +0x9a4f 0x5539 +0x9a50 0x5540 +0x9a51 0x5563 +0x9a52 0x554c +0x9a53 0x552e +0x9a54 0x555c +0x9a55 0x5545 +0x9a56 0x5556 +0x9a57 0x5557 +0x9a58 0x5538 +0x9a59 0x5533 +0x9a5a 0x555d +0x9a5b 0x5599 +0x9a5c 0x5580 +0x9a5d 0x54af +0x9a5e 0x558a +0x9a5f 0x559f +0x9a60 0x557b +0x9a61 0x557e +0x9a62 0x5598 +0x9a63 0x559e +0x9a64 0x55ae +0x9a65 0x557c +0x9a66 0x5583 +0x9a67 0x55a9 +0x9a68 0x5587 +0x9a69 0x55a8 +0x9a6a 0x55da +0x9a6b 0x55c5 +0x9a6c 0x55df +0x9a6d 0x55c4 +0x9a6e 0x55dc +0x9a6f 0x55e4 +0x9a70 0x55d4 +0x9a71 0x5614 +0x9a72 0x55f7 +0x9a73 0x5616 +0x9a74 0x55fe +0x9a75 0x55fd +0x9a76 0x561b +0x9a77 0x55f9 +0x9a78 0x564e +0x9a79 0x5650 +0x9a7a 0x71df +0x9a7b 0x5634 +0x9a7c 0x5636 +0x9a7d 0x5632 +0x9a7e 0x5638 +0x9a80 0x566b +0x9a81 0x5664 +0x9a82 0x562f +0x9a83 0x566c +0x9a84 0x566a +0x9a85 0x5686 +0x9a86 0x5680 +0x9a87 0x568a +0x9a88 0x56a0 +0x9a89 0x5694 +0x9a8a 0x568f +0x9a8b 0x56a5 +0x9a8c 0x56ae +0x9a8d 0x56b6 +0x9a8e 0x56b4 +0x9a8f 0x56c2 +0x9a90 0x56bc +0x9a91 0x56c1 +0x9a92 0x56c3 +0x9a93 0x56c0 +0x9a94 0x56c8 +0x9a95 0x56ce +0x9a96 0x56d1 +0x9a97 0x56d3 +0x9a98 0x56d7 +0x9a99 0x56ee +0x9a9a 0x56f9 +0x9a9b 0x5700 +0x9a9c 0x56ff +0x9a9d 0x5704 +0x9a9e 0x5709 +0x9a9f 0x5708 +0x9aa0 0x570b +0x9aa1 0x570d +0x9aa2 0x5713 +0x9aa3 0x5718 +0x9aa4 0x5716 +0x9aa5 0x55c7 +0x9aa6 0x571c +0x9aa7 0x5726 +0x9aa8 0x5737 +0x9aa9 0x5738 +0x9aaa 0x574e +0x9aab 0x573b +0x9aac 0x5740 +0x9aad 0x574f +0x9aae 0x5769 +0x9aaf 0x57c0 +0x9ab0 0x5788 +0x9ab1 0x5761 +0x9ab2 0x577f +0x9ab3 0x5789 +0x9ab4 0x5793 +0x9ab5 0x57a0 +0x9ab6 0x57b3 +0x9ab7 0x57a4 +0x9ab8 0x57aa +0x9ab9 0x57b0 +0x9aba 0x57c3 +0x9abb 0x57c6 +0x9abc 0x57d4 +0x9abd 0x57d2 +0x9abe 0x57d3 +0x9abf 0x580a +0x9ac0 0x57d6 +0x9ac1 0x57e3 +0x9ac2 0x580b +0x9ac3 0x5819 +0x9ac4 0x581d +0x9ac5 0x5872 +0x9ac6 0x5821 +0x9ac7 0x5862 +0x9ac8 0x584b +0x9ac9 0x5870 +0x9aca 0x6bc0 +0x9acb 0x5852 +0x9acc 0x583d +0x9acd 0x5879 +0x9ace 0x5885 +0x9acf 0x58b9 +0x9ad0 0x589f +0x9ad1 0x58ab +0x9ad2 0x58ba +0x9ad3 0x58de +0x9ad4 0x58bb +0x9ad5 0x58b8 +0x9ad6 0x58ae +0x9ad7 0x58c5 +0x9ad8 0x58d3 +0x9ad9 0x58d1 +0x9ada 0x58d7 +0x9adb 0x58d9 +0x9adc 0x58d8 +0x9add 0x58e5 +0x9ade 0x58dc +0x9adf 0x58e4 +0x9ae0 0x58df +0x9ae1 0x58ef +0x9ae2 0x58fa +0x9ae3 0x58f9 +0x9ae4 0x58fb +0x9ae5 0x58fc +0x9ae6 0x58fd +0x9ae7 0x5902 +0x9ae8 0x590a +0x9ae9 0x5910 +0x9aea 0x591b +0x9aeb 0x68a6 +0x9aec 0x5925 +0x9aed 0x592c +0x9aee 0x592d +0x9aef 0x5932 +0x9af0 0x5938 +0x9af1 0x593e +0x9af2 0x7ad2 +0x9af3 0x5955 +0x9af4 0x5950 +0x9af5 0x594e +0x9af6 0x595a +0x9af7 0x5958 +0x9af8 0x5962 +0x9af9 0x5960 +0x9afa 0x5967 +0x9afb 0x596c +0x9afc 0x5969 +0x9b40 0x5978 +0x9b41 0x5981 +0x9b42 0x599d +0x9b43 0x4f5e +0x9b44 0x4fab +0x9b45 0x59a3 +0x9b46 0x59b2 +0x9b47 0x59c6 +0x9b48 0x59e8 +0x9b49 0x59dc +0x9b4a 0x598d +0x9b4b 0x59d9 +0x9b4c 0x59da +0x9b4d 0x5a25 +0x9b4e 0x5a1f +0x9b4f 0x5a11 +0x9b50 0x5a1c +0x9b51 0x5a09 +0x9b52 0x5a1a +0x9b53 0x5a40 +0x9b54 0x5a6c +0x9b55 0x5a49 +0x9b56 0x5a35 +0x9b57 0x5a36 +0x9b58 0x5a62 +0x9b59 0x5a6a +0x9b5a 0x5a9a +0x9b5b 0x5abc +0x9b5c 0x5abe +0x9b5d 0x5acb +0x9b5e 0x5ac2 +0x9b5f 0x5abd +0x9b60 0x5ae3 +0x9b61 0x5ad7 +0x9b62 0x5ae6 +0x9b63 0x5ae9 +0x9b64 0x5ad6 +0x9b65 0x5afa +0x9b66 0x5afb +0x9b67 0x5b0c +0x9b68 0x5b0b +0x9b69 0x5b16 +0x9b6a 0x5b32 +0x9b6b 0x5ad0 +0x9b6c 0x5b2a +0x9b6d 0x5b36 +0x9b6e 0x5b3e +0x9b6f 0x5b43 +0x9b70 0x5b45 +0x9b71 0x5b40 +0x9b72 0x5b51 +0x9b73 0x5b55 +0x9b74 0x5b5a +0x9b75 0x5b5b +0x9b76 0x5b65 +0x9b77 0x5b69 +0x9b78 0x5b70 +0x9b79 0x5b73 +0x9b7a 0x5b75 +0x9b7b 0x5b78 +0x9b7c 0x6588 +0x9b7d 0x5b7a +0x9b7e 0x5b80 +0x9b80 0x5b83 +0x9b81 0x5ba6 +0x9b82 0x5bb8 +0x9b83 0x5bc3 +0x9b84 0x5bc7 +0x9b85 0x5bc9 +0x9b86 0x5bd4 +0x9b87 0x5bd0 +0x9b88 0x5be4 +0x9b89 0x5be6 +0x9b8a 0x5be2 +0x9b8b 0x5bde +0x9b8c 0x5be5 +0x9b8d 0x5beb +0x9b8e 0x5bf0 +0x9b8f 0x5bf6 +0x9b90 0x5bf3 +0x9b91 0x5c05 +0x9b92 0x5c07 +0x9b93 0x5c08 +0x9b94 0x5c0d +0x9b95 0x5c13 +0x9b96 0x5c20 +0x9b97 0x5c22 +0x9b98 0x5c28 +0x9b99 0x5c38 +0x9b9a 0x5c39 +0x9b9b 0x5c41 +0x9b9c 0x5c46 +0x9b9d 0x5c4e +0x9b9e 0x5c53 +0x9b9f 0x5c50 +0x9ba0 0x5c4f +0x9ba1 0x5b71 +0x9ba2 0x5c6c +0x9ba3 0x5c6e +0x9ba4 0x4e62 +0x9ba5 0x5c76 +0x9ba6 0x5c79 +0x9ba7 0x5c8c +0x9ba8 0x5c91 +0x9ba9 0x5c94 +0x9baa 0x599b +0x9bab 0x5cab +0x9bac 0x5cbb +0x9bad 0x5cb6 +0x9bae 0x5cbc +0x9baf 0x5cb7 +0x9bb0 0x5cc5 +0x9bb1 0x5cbe +0x9bb2 0x5cc7 +0x9bb3 0x5cd9 +0x9bb4 0x5ce9 +0x9bb5 0x5cfd +0x9bb6 0x5cfa +0x9bb7 0x5ced +0x9bb8 0x5d8c +0x9bb9 0x5cea +0x9bba 0x5d0b +0x9bbb 0x5d15 +0x9bbc 0x5d17 +0x9bbd 0x5d5c +0x9bbe 0x5d1f +0x9bbf 0x5d1b +0x9bc0 0x5d11 +0x9bc1 0x5d14 +0x9bc2 0x5d22 +0x9bc3 0x5d1a +0x9bc4 0x5d19 +0x9bc5 0x5d18 +0x9bc6 0x5d4c +0x9bc7 0x5d52 +0x9bc8 0x5d4e +0x9bc9 0x5d4b +0x9bca 0x5d6c +0x9bcb 0x5d73 +0x9bcc 0x5d76 +0x9bcd 0x5d87 +0x9bce 0x5d84 +0x9bcf 0x5d82 +0x9bd0 0x5da2 +0x9bd1 0x5d9d +0x9bd2 0x5dac +0x9bd3 0x5dae +0x9bd4 0x5dbd +0x9bd5 0x5d90 +0x9bd6 0x5db7 +0x9bd7 0x5dbc +0x9bd8 0x5dc9 +0x9bd9 0x5dcd +0x9bda 0x5dd3 +0x9bdb 0x5dd2 +0x9bdc 0x5dd6 +0x9bdd 0x5ddb +0x9bde 0x5deb +0x9bdf 0x5df2 +0x9be0 0x5df5 +0x9be1 0x5e0b +0x9be2 0x5e1a +0x9be3 0x5e19 +0x9be4 0x5e11 +0x9be5 0x5e1b +0x9be6 0x5e36 +0x9be7 0x5e37 +0x9be8 0x5e44 +0x9be9 0x5e43 +0x9bea 0x5e40 +0x9beb 0x5e4e +0x9bec 0x5e57 +0x9bed 0x5e54 +0x9bee 0x5e5f +0x9bef 0x5e62 +0x9bf0 0x5e64 +0x9bf1 0x5e47 +0x9bf2 0x5e75 +0x9bf3 0x5e76 +0x9bf4 0x5e7a +0x9bf5 0x9ebc +0x9bf6 0x5e7f +0x9bf7 0x5ea0 +0x9bf8 0x5ec1 +0x9bf9 0x5ec2 +0x9bfa 0x5ec8 +0x9bfb 0x5ed0 +0x9bfc 0x5ecf +0x9c40 0x5ed6 +0x9c41 0x5ee3 +0x9c42 0x5edd +0x9c43 0x5eda +0x9c44 0x5edb +0x9c45 0x5ee2 +0x9c46 0x5ee1 +0x9c47 0x5ee8 +0x9c48 0x5ee9 +0x9c49 0x5eec +0x9c4a 0x5ef1 +0x9c4b 0x5ef3 +0x9c4c 0x5ef0 +0x9c4d 0x5ef4 +0x9c4e 0x5ef8 +0x9c4f 0x5efe +0x9c50 0x5f03 +0x9c51 0x5f09 +0x9c52 0x5f5d +0x9c53 0x5f5c +0x9c54 0x5f0b +0x9c55 0x5f11 +0x9c56 0x5f16 +0x9c57 0x5f29 +0x9c58 0x5f2d +0x9c59 0x5f38 +0x9c5a 0x5f41 +0x9c5b 0x5f48 +0x9c5c 0x5f4c +0x9c5d 0x5f4e +0x9c5e 0x5f2f +0x9c5f 0x5f51 +0x9c60 0x5f56 +0x9c61 0x5f57 +0x9c62 0x5f59 +0x9c63 0x5f61 +0x9c64 0x5f6d +0x9c65 0x5f73 +0x9c66 0x5f77 +0x9c67 0x5f83 +0x9c68 0x5f82 +0x9c69 0x5f7f +0x9c6a 0x5f8a +0x9c6b 0x5f88 +0x9c6c 0x5f91 +0x9c6d 0x5f87 +0x9c6e 0x5f9e +0x9c6f 0x5f99 +0x9c70 0x5f98 +0x9c71 0x5fa0 +0x9c72 0x5fa8 +0x9c73 0x5fad +0x9c74 0x5fbc +0x9c75 0x5fd6 +0x9c76 0x5ffb +0x9c77 0x5fe4 +0x9c78 0x5ff8 +0x9c79 0x5ff1 +0x9c7a 0x5fdd +0x9c7b 0x60b3 +0x9c7c 0x5fff +0x9c7d 0x6021 +0x9c7e 0x6060 +0x9c80 0x6019 +0x9c81 0x6010 +0x9c82 0x6029 +0x9c83 0x600e +0x9c84 0x6031 +0x9c85 0x601b +0x9c86 0x6015 +0x9c87 0x602b +0x9c88 0x6026 +0x9c89 0x600f +0x9c8a 0x603a +0x9c8b 0x605a +0x9c8c 0x6041 +0x9c8d 0x606a +0x9c8e 0x6077 +0x9c8f 0x605f +0x9c90 0x604a +0x9c91 0x6046 +0x9c92 0x604d +0x9c93 0x6063 +0x9c94 0x6043 +0x9c95 0x6064 +0x9c96 0x6042 +0x9c97 0x606c +0x9c98 0x606b +0x9c99 0x6059 +0x9c9a 0x6081 +0x9c9b 0x608d +0x9c9c 0x60e7 +0x9c9d 0x6083 +0x9c9e 0x609a +0x9c9f 0x6084 +0x9ca0 0x609b +0x9ca1 0x6096 +0x9ca2 0x6097 +0x9ca3 0x6092 +0x9ca4 0x60a7 +0x9ca5 0x608b +0x9ca6 0x60e1 +0x9ca7 0x60b8 +0x9ca8 0x60e0 +0x9ca9 0x60d3 +0x9caa 0x60b4 +0x9cab 0x5ff0 +0x9cac 0x60bd +0x9cad 0x60c6 +0x9cae 0x60b5 +0x9caf 0x60d8 +0x9cb0 0x614d +0x9cb1 0x6115 +0x9cb2 0x6106 +0x9cb3 0x60f6 +0x9cb4 0x60f7 +0x9cb5 0x6100 +0x9cb6 0x60f4 +0x9cb7 0x60fa +0x9cb8 0x6103 +0x9cb9 0x6121 +0x9cba 0x60fb +0x9cbb 0x60f1 +0x9cbc 0x610d +0x9cbd 0x610e +0x9cbe 0x6147 +0x9cbf 0x613e +0x9cc0 0x6128 +0x9cc1 0x6127 +0x9cc2 0x614a +0x9cc3 0x613f +0x9cc4 0x613c +0x9cc5 0x612c +0x9cc6 0x6134 +0x9cc7 0x613d +0x9cc8 0x6142 +0x9cc9 0x6144 +0x9cca 0x6173 +0x9ccb 0x6177 +0x9ccc 0x6158 +0x9ccd 0x6159 +0x9cce 0x615a +0x9ccf 0x616b +0x9cd0 0x6174 +0x9cd1 0x616f +0x9cd2 0x6165 +0x9cd3 0x6171 +0x9cd4 0x615f +0x9cd5 0x615d +0x9cd6 0x6153 +0x9cd7 0x6175 +0x9cd8 0x6199 +0x9cd9 0x6196 +0x9cda 0x6187 +0x9cdb 0x61ac +0x9cdc 0x6194 +0x9cdd 0x619a +0x9cde 0x618a +0x9cdf 0x6191 +0x9ce0 0x61ab +0x9ce1 0x61ae +0x9ce2 0x61cc +0x9ce3 0x61ca +0x9ce4 0x61c9 +0x9ce5 0x61f7 +0x9ce6 0x61c8 +0x9ce7 0x61c3 +0x9ce8 0x61c6 +0x9ce9 0x61ba +0x9cea 0x61cb +0x9ceb 0x7f79 +0x9cec 0x61cd +0x9ced 0x61e6 +0x9cee 0x61e3 +0x9cef 0x61f6 +0x9cf0 0x61fa +0x9cf1 0x61f4 +0x9cf2 0x61ff +0x9cf3 0x61fd +0x9cf4 0x61fc +0x9cf5 0x61fe +0x9cf6 0x6200 +0x9cf7 0x6208 +0x9cf8 0x6209 +0x9cf9 0x620d +0x9cfa 0x620c +0x9cfb 0x6214 +0x9cfc 0x621b +0x9d40 0x621e +0x9d41 0x6221 +0x9d42 0x622a +0x9d43 0x622e +0x9d44 0x6230 +0x9d45 0x6232 +0x9d46 0x6233 +0x9d47 0x6241 +0x9d48 0x624e +0x9d49 0x625e +0x9d4a 0x6263 +0x9d4b 0x625b +0x9d4c 0x6260 +0x9d4d 0x6268 +0x9d4e 0x627c +0x9d4f 0x6282 +0x9d50 0x6289 +0x9d51 0x627e +0x9d52 0x6292 +0x9d53 0x6293 +0x9d54 0x6296 +0x9d55 0x62d4 +0x9d56 0x6283 +0x9d57 0x6294 +0x9d58 0x62d7 +0x9d59 0x62d1 +0x9d5a 0x62bb +0x9d5b 0x62cf +0x9d5c 0x62ff +0x9d5d 0x62c6 +0x9d5e 0x64d4 +0x9d5f 0x62c8 +0x9d60 0x62dc +0x9d61 0x62cc +0x9d62 0x62ca +0x9d63 0x62c2 +0x9d64 0x62c7 +0x9d65 0x629b +0x9d66 0x62c9 +0x9d67 0x630c +0x9d68 0x62ee +0x9d69 0x62f1 +0x9d6a 0x6327 +0x9d6b 0x6302 +0x9d6c 0x6308 +0x9d6d 0x62ef +0x9d6e 0x62f5 +0x9d6f 0x6350 +0x9d70 0x633e +0x9d71 0x634d +0x9d72 0x641c +0x9d73 0x634f +0x9d74 0x6396 +0x9d75 0x638e +0x9d76 0x6380 +0x9d77 0x63ab +0x9d78 0x6376 +0x9d79 0x63a3 +0x9d7a 0x638f +0x9d7b 0x6389 +0x9d7c 0x639f +0x9d7d 0x63b5 +0x9d7e 0x636b +0x9d80 0x6369 +0x9d81 0x63be +0x9d82 0x63e9 +0x9d83 0x63c0 +0x9d84 0x63c6 +0x9d85 0x63e3 +0x9d86 0x63c9 +0x9d87 0x63d2 +0x9d88 0x63f6 +0x9d89 0x63c4 +0x9d8a 0x6416 +0x9d8b 0x6434 +0x9d8c 0x6406 +0x9d8d 0x6413 +0x9d8e 0x6426 +0x9d8f 0x6436 +0x9d90 0x651d +0x9d91 0x6417 +0x9d92 0x6428 +0x9d93 0x640f +0x9d94 0x6467 +0x9d95 0x646f +0x9d96 0x6476 +0x9d97 0x644e +0x9d98 0x652a +0x9d99 0x6495 +0x9d9a 0x6493 +0x9d9b 0x64a5 +0x9d9c 0x64a9 +0x9d9d 0x6488 +0x9d9e 0x64bc +0x9d9f 0x64da +0x9da0 0x64d2 +0x9da1 0x64c5 +0x9da2 0x64c7 +0x9da3 0x64bb +0x9da4 0x64d8 +0x9da5 0x64c2 +0x9da6 0x64f1 +0x9da7 0x64e7 +0x9da8 0x8209 +0x9da9 0x64e0 +0x9daa 0x64e1 +0x9dab 0x62ac +0x9dac 0x64e3 +0x9dad 0x64ef +0x9dae 0x652c +0x9daf 0x64f6 +0x9db0 0x64f4 +0x9db1 0x64f2 +0x9db2 0x64fa +0x9db3 0x6500 +0x9db4 0x64fd +0x9db5 0x6518 +0x9db6 0x651c +0x9db7 0x6505 +0x9db8 0x6524 +0x9db9 0x6523 +0x9dba 0x652b +0x9dbb 0x6534 +0x9dbc 0x6535 +0x9dbd 0x6537 +0x9dbe 0x6536 +0x9dbf 0x6538 +0x9dc0 0x754b +0x9dc1 0x6548 +0x9dc2 0x6556 +0x9dc3 0x6555 +0x9dc4 0x654d +0x9dc5 0x6558 +0x9dc6 0x655e +0x9dc7 0x655d +0x9dc8 0x6572 +0x9dc9 0x6578 +0x9dca 0x6582 +0x9dcb 0x6583 +0x9dcc 0x8b8a +0x9dcd 0x659b +0x9dce 0x659f +0x9dcf 0x65ab +0x9dd0 0x65b7 +0x9dd1 0x65c3 +0x9dd2 0x65c6 +0x9dd3 0x65c1 +0x9dd4 0x65c4 +0x9dd5 0x65cc +0x9dd6 0x65d2 +0x9dd7 0x65db +0x9dd8 0x65d9 +0x9dd9 0x65e0 +0x9dda 0x65e1 +0x9ddb 0x65f1 +0x9ddc 0x6772 +0x9ddd 0x660a +0x9dde 0x6603 +0x9ddf 0x65fb +0x9de0 0x6773 +0x9de1 0x6635 +0x9de2 0x6636 +0x9de3 0x6634 +0x9de4 0x661c +0x9de5 0x664f +0x9de6 0x6644 +0x9de7 0x6649 +0x9de8 0x6641 +0x9de9 0x665e +0x9dea 0x665d +0x9deb 0x6664 +0x9dec 0x6667 +0x9ded 0x6668 +0x9dee 0x665f +0x9def 0x6662 +0x9df0 0x6670 +0x9df1 0x6683 +0x9df2 0x6688 +0x9df3 0x668e +0x9df4 0x6689 +0x9df5 0x6684 +0x9df6 0x6698 +0x9df7 0x669d +0x9df8 0x66c1 +0x9df9 0x66b9 +0x9dfa 0x66c9 +0x9dfb 0x66be +0x9dfc 0x66bc +0x9e40 0x66c4 +0x9e41 0x66b8 +0x9e42 0x66d6 +0x9e43 0x66da +0x9e44 0x66e0 +0x9e45 0x663f +0x9e46 0x66e6 +0x9e47 0x66e9 +0x9e48 0x66f0 +0x9e49 0x66f5 +0x9e4a 0x66f7 +0x9e4b 0x670f +0x9e4c 0x6716 +0x9e4d 0x671e +0x9e4e 0x6726 +0x9e4f 0x6727 +0x9e50 0x9738 +0x9e51 0x672e +0x9e52 0x673f +0x9e53 0x6736 +0x9e54 0x6741 +0x9e55 0x6738 +0x9e56 0x6737 +0x9e57 0x6746 +0x9e58 0x675e +0x9e59 0x6760 +0x9e5a 0x6759 +0x9e5b 0x6763 +0x9e5c 0x6764 +0x9e5d 0x6789 +0x9e5e 0x6770 +0x9e5f 0x67a9 +0x9e60 0x677c +0x9e61 0x676a +0x9e62 0x678c +0x9e63 0x678b +0x9e64 0x67a6 +0x9e65 0x67a1 +0x9e66 0x6785 +0x9e67 0x67b7 +0x9e68 0x67ef +0x9e69 0x67b4 +0x9e6a 0x67ec +0x9e6b 0x67b3 +0x9e6c 0x67e9 +0x9e6d 0x67b8 +0x9e6e 0x67e4 +0x9e6f 0x67de +0x9e70 0x67dd +0x9e71 0x67e2 +0x9e72 0x67ee +0x9e73 0x67b9 +0x9e74 0x67ce +0x9e75 0x67c6 +0x9e76 0x67e7 +0x9e77 0x6a9c +0x9e78 0x681e +0x9e79 0x6846 +0x9e7a 0x6829 +0x9e7b 0x6840 +0x9e7c 0x684d +0x9e7d 0x6832 +0x9e7e 0x684e +0x9e80 0x68b3 +0x9e81 0x682b +0x9e82 0x6859 +0x9e83 0x6863 +0x9e84 0x6877 +0x9e85 0x687f +0x9e86 0x689f +0x9e87 0x688f +0x9e88 0x68ad +0x9e89 0x6894 +0x9e8a 0x689d +0x9e8b 0x689b +0x9e8c 0x6883 +0x9e8d 0x6aae +0x9e8e 0x68b9 +0x9e8f 0x6874 +0x9e90 0x68b5 +0x9e91 0x68a0 +0x9e92 0x68ba +0x9e93 0x690f +0x9e94 0x688d +0x9e95 0x687e +0x9e96 0x6901 +0x9e97 0x68ca +0x9e98 0x6908 +0x9e99 0x68d8 +0x9e9a 0x6922 +0x9e9b 0x6926 +0x9e9c 0x68e1 +0x9e9d 0x690c +0x9e9e 0x68cd +0x9e9f 0x68d4 +0x9ea0 0x68e7 +0x9ea1 0x68d5 +0x9ea2 0x6936 +0x9ea3 0x6912 +0x9ea4 0x6904 +0x9ea5 0x68d7 +0x9ea6 0x68e3 +0x9ea7 0x6925 +0x9ea8 0x68f9 +0x9ea9 0x68e0 +0x9eaa 0x68ef +0x9eab 0x6928 +0x9eac 0x692a +0x9ead 0x691a +0x9eae 0x6923 +0x9eaf 0x6921 +0x9eb0 0x68c6 +0x9eb1 0x6979 +0x9eb2 0x6977 +0x9eb3 0x695c +0x9eb4 0x6978 +0x9eb5 0x696b +0x9eb6 0x6954 +0x9eb7 0x697e +0x9eb8 0x696e +0x9eb9 0x6939 +0x9eba 0x6974 +0x9ebb 0x693d +0x9ebc 0x6959 +0x9ebd 0x6930 +0x9ebe 0x6961 +0x9ebf 0x695e +0x9ec0 0x695d +0x9ec1 0x6981 +0x9ec2 0x696a +0x9ec3 0x69b2 +0x9ec4 0x69ae +0x9ec5 0x69d0 +0x9ec6 0x69bf +0x9ec7 0x69c1 +0x9ec8 0x69d3 +0x9ec9 0x69be +0x9eca 0x69ce +0x9ecb 0x5be8 +0x9ecc 0x69ca +0x9ecd 0x69dd +0x9ece 0x69bb +0x9ecf 0x69c3 +0x9ed0 0x69a7 +0x9ed1 0x6a2e +0x9ed2 0x6991 +0x9ed3 0x69a0 +0x9ed4 0x699c +0x9ed5 0x6995 +0x9ed6 0x69b4 +0x9ed7 0x69de +0x9ed8 0x69e8 +0x9ed9 0x6a02 +0x9eda 0x6a1b +0x9edb 0x69ff +0x9edc 0x6b0a +0x9edd 0x69f9 +0x9ede 0x69f2 +0x9edf 0x69e7 +0x9ee0 0x6a05 +0x9ee1 0x69b1 +0x9ee2 0x6a1e +0x9ee3 0x69ed +0x9ee4 0x6a14 +0x9ee5 0x69eb +0x9ee6 0x6a0a +0x9ee7 0x6a12 +0x9ee8 0x6ac1 +0x9ee9 0x6a23 +0x9eea 0x6a13 +0x9eeb 0x6a44 +0x9eec 0x6a0c +0x9eed 0x6a72 +0x9eee 0x6a36 +0x9eef 0x6a78 +0x9ef0 0x6a47 +0x9ef1 0x6a62 +0x9ef2 0x6a59 +0x9ef3 0x6a66 +0x9ef4 0x6a48 +0x9ef5 0x6a38 +0x9ef6 0x6a22 +0x9ef7 0x6a90 +0x9ef8 0x6a8d +0x9ef9 0x6aa0 +0x9efa 0x6a84 +0x9efb 0x6aa2 +0x9efc 0x6aa3 +0x9f40 0x6a97 +0x9f41 0x8617 +0x9f42 0x6abb +0x9f43 0x6ac3 +0x9f44 0x6ac2 +0x9f45 0x6ab8 +0x9f46 0x6ab3 +0x9f47 0x6aac +0x9f48 0x6ade +0x9f49 0x6ad1 +0x9f4a 0x6adf +0x9f4b 0x6aaa +0x9f4c 0x6ada +0x9f4d 0x6aea +0x9f4e 0x6afb +0x9f4f 0x6b05 +0x9f50 0x8616 +0x9f51 0x6afa +0x9f52 0x6b12 +0x9f53 0x6b16 +0x9f54 0x9b31 +0x9f55 0x6b1f +0x9f56 0x6b38 +0x9f57 0x6b37 +0x9f58 0x76dc +0x9f59 0x6b39 +0x9f5a 0x98ee +0x9f5b 0x6b47 +0x9f5c 0x6b43 +0x9f5d 0x6b49 +0x9f5e 0x6b50 +0x9f5f 0x6b59 +0x9f60 0x6b54 +0x9f61 0x6b5b +0x9f62 0x6b5f +0x9f63 0x6b61 +0x9f64 0x6b78 +0x9f65 0x6b79 +0x9f66 0x6b7f +0x9f67 0x6b80 +0x9f68 0x6b84 +0x9f69 0x6b83 +0x9f6a 0x6b8d +0x9f6b 0x6b98 +0x9f6c 0x6b95 +0x9f6d 0x6b9e +0x9f6e 0x6ba4 +0x9f6f 0x6baa +0x9f70 0x6bab +0x9f71 0x6baf +0x9f72 0x6bb2 +0x9f73 0x6bb1 +0x9f74 0x6bb3 +0x9f75 0x6bb7 +0x9f76 0x6bbc +0x9f77 0x6bc6 +0x9f78 0x6bcb +0x9f79 0x6bd3 +0x9f7a 0x6bdf +0x9f7b 0x6bec +0x9f7c 0x6beb +0x9f7d 0x6bf3 +0x9f7e 0x6bef +0x9f80 0x9ebe +0x9f81 0x6c08 +0x9f82 0x6c13 +0x9f83 0x6c14 +0x9f84 0x6c1b +0x9f85 0x6c24 +0x9f86 0x6c23 +0x9f87 0x6c5e +0x9f88 0x6c55 +0x9f89 0x6c62 +0x9f8a 0x6c6a +0x9f8b 0x6c82 +0x9f8c 0x6c8d +0x9f8d 0x6c9a +0x9f8e 0x6c81 +0x9f8f 0x6c9b +0x9f90 0x6c7e +0x9f91 0x6c68 +0x9f92 0x6c73 +0x9f93 0x6c92 +0x9f94 0x6c90 +0x9f95 0x6cc4 +0x9f96 0x6cf1 +0x9f97 0x6cd3 +0x9f98 0x6cbd +0x9f99 0x6cd7 +0x9f9a 0x6cc5 +0x9f9b 0x6cdd +0x9f9c 0x6cae +0x9f9d 0x6cb1 +0x9f9e 0x6cbe +0x9f9f 0x6cba +0x9fa0 0x6cdb +0x9fa1 0x6cef +0x9fa2 0x6cd9 +0x9fa3 0x6cea +0x9fa4 0x6d1f +0x9fa5 0x884d +0x9fa6 0x6d36 +0x9fa7 0x6d2b +0x9fa8 0x6d3d +0x9fa9 0x6d38 +0x9faa 0x6d19 +0x9fab 0x6d35 +0x9fac 0x6d33 +0x9fad 0x6d12 +0x9fae 0x6d0c +0x9faf 0x6d63 +0x9fb0 0x6d93 +0x9fb1 0x6d64 +0x9fb2 0x6d5a +0x9fb3 0x6d79 +0x9fb4 0x6d59 +0x9fb5 0x6d8e +0x9fb6 0x6d95 +0x9fb7 0x6fe4 +0x9fb8 0x6d85 +0x9fb9 0x6df9 +0x9fba 0x6e15 +0x9fbb 0x6e0a +0x9fbc 0x6db5 +0x9fbd 0x6dc7 +0x9fbe 0x6de6 +0x9fbf 0x6db8 +0x9fc0 0x6dc6 +0x9fc1 0x6dec +0x9fc2 0x6dde +0x9fc3 0x6dcc +0x9fc4 0x6de8 +0x9fc5 0x6dd2 +0x9fc6 0x6dc5 +0x9fc7 0x6dfa +0x9fc8 0x6dd9 +0x9fc9 0x6de4 +0x9fca 0x6dd5 +0x9fcb 0x6dea +0x9fcc 0x6dee +0x9fcd 0x6e2d +0x9fce 0x6e6e +0x9fcf 0x6e2e +0x9fd0 0x6e19 +0x9fd1 0x6e72 +0x9fd2 0x6e5f +0x9fd3 0x6e3e +0x9fd4 0x6e23 +0x9fd5 0x6e6b +0x9fd6 0x6e2b +0x9fd7 0x6e76 +0x9fd8 0x6e4d +0x9fd9 0x6e1f +0x9fda 0x6e43 +0x9fdb 0x6e3a +0x9fdc 0x6e4e +0x9fdd 0x6e24 +0x9fde 0x6eff +0x9fdf 0x6e1d +0x9fe0 0x6e38 +0x9fe1 0x6e82 +0x9fe2 0x6eaa +0x9fe3 0x6e98 +0x9fe4 0x6ec9 +0x9fe5 0x6eb7 +0x9fe6 0x6ed3 +0x9fe7 0x6ebd +0x9fe8 0x6eaf +0x9fe9 0x6ec4 +0x9fea 0x6eb2 +0x9feb 0x6ed4 +0x9fec 0x6ed5 +0x9fed 0x6e8f +0x9fee 0x6ea5 +0x9fef 0x6ec2 +0x9ff0 0x6e9f +0x9ff1 0x6f41 +0x9ff2 0x6f11 +0x9ff3 0x704c +0x9ff4 0x6eec +0x9ff5 0x6ef8 +0x9ff6 0x6efe +0x9ff7 0x6f3f +0x9ff8 0x6ef2 +0x9ff9 0x6f31 +0x9ffa 0x6eef +0x9ffb 0x6f32 +0x9ffc 0x6ecc +0xe040 0x6f3e +0xe041 0x6f13 +0xe042 0x6ef7 +0xe043 0x6f86 +0xe044 0x6f7a +0xe045 0x6f78 +0xe046 0x6f81 +0xe047 0x6f80 +0xe048 0x6f6f +0xe049 0x6f5b +0xe04a 0x6ff3 +0xe04b 0x6f6d +0xe04c 0x6f82 +0xe04d 0x6f7c +0xe04e 0x6f58 +0xe04f 0x6f8e +0xe050 0x6f91 +0xe051 0x6fc2 +0xe052 0x6f66 +0xe053 0x6fb3 +0xe054 0x6fa3 +0xe055 0x6fa1 +0xe056 0x6fa4 +0xe057 0x6fb9 +0xe058 0x6fc6 +0xe059 0x6faa +0xe05a 0x6fdf +0xe05b 0x6fd5 +0xe05c 0x6fec +0xe05d 0x6fd4 +0xe05e 0x6fd8 +0xe05f 0x6ff1 +0xe060 0x6fee +0xe061 0x6fdb +0xe062 0x7009 +0xe063 0x700b +0xe064 0x6ffa +0xe065 0x7011 +0xe066 0x7001 +0xe067 0x700f +0xe068 0x6ffe +0xe069 0x701b +0xe06a 0x701a +0xe06b 0x6f74 +0xe06c 0x701d +0xe06d 0x7018 +0xe06e 0x701f +0xe06f 0x7030 +0xe070 0x703e +0xe071 0x7032 +0xe072 0x7051 +0xe073 0x7063 +0xe074 0x7099 +0xe075 0x7092 +0xe076 0x70af +0xe077 0x70f1 +0xe078 0x70ac +0xe079 0x70b8 +0xe07a 0x70b3 +0xe07b 0x70ae +0xe07c 0x70df +0xe07d 0x70cb +0xe07e 0x70dd +0xe080 0x70d9 +0xe081 0x7109 +0xe082 0x70fd +0xe083 0x711c +0xe084 0x7119 +0xe085 0x7165 +0xe086 0x7155 +0xe087 0x7188 +0xe088 0x7166 +0xe089 0x7162 +0xe08a 0x714c +0xe08b 0x7156 +0xe08c 0x716c +0xe08d 0x718f +0xe08e 0x71fb +0xe08f 0x7184 +0xe090 0x7195 +0xe091 0x71a8 +0xe092 0x71ac +0xe093 0x71d7 +0xe094 0x71b9 +0xe095 0x71be +0xe096 0x71d2 +0xe097 0x71c9 +0xe098 0x71d4 +0xe099 0x71ce +0xe09a 0x71e0 +0xe09b 0x71ec +0xe09c 0x71e7 +0xe09d 0x71f5 +0xe09e 0x71fc +0xe09f 0x71f9 +0xe0a0 0x71ff +0xe0a1 0x720d +0xe0a2 0x7210 +0xe0a3 0x721b +0xe0a4 0x7228 +0xe0a5 0x722d +0xe0a6 0x722c +0xe0a7 0x7230 +0xe0a8 0x7232 +0xe0a9 0x723b +0xe0aa 0x723c +0xe0ab 0x723f +0xe0ac 0x7240 +0xe0ad 0x7246 +0xe0ae 0x724b +0xe0af 0x7258 +0xe0b0 0x7274 +0xe0b1 0x727e +0xe0b2 0x7282 +0xe0b3 0x7281 +0xe0b4 0x7287 +0xe0b5 0x7292 +0xe0b6 0x7296 +0xe0b7 0x72a2 +0xe0b8 0x72a7 +0xe0b9 0x72b9 +0xe0ba 0x72b2 +0xe0bb 0x72c3 +0xe0bc 0x72c6 +0xe0bd 0x72c4 +0xe0be 0x72ce +0xe0bf 0x72d2 +0xe0c0 0x72e2 +0xe0c1 0x72e0 +0xe0c2 0x72e1 +0xe0c3 0x72f9 +0xe0c4 0x72f7 +0xe0c5 0x500f +0xe0c6 0x7317 +0xe0c7 0x730a +0xe0c8 0x731c +0xe0c9 0x7316 +0xe0ca 0x731d +0xe0cb 0x7334 +0xe0cc 0x732f +0xe0cd 0x7329 +0xe0ce 0x7325 +0xe0cf 0x733e +0xe0d0 0x734e +0xe0d1 0x734f +0xe0d2 0x9ed8 +0xe0d3 0x7357 +0xe0d4 0x736a +0xe0d5 0x7368 +0xe0d6 0x7370 +0xe0d7 0x7378 +0xe0d8 0x7375 +0xe0d9 0x737b +0xe0da 0x737a +0xe0db 0x73c8 +0xe0dc 0x73b3 +0xe0dd 0x73ce +0xe0de 0x73bb +0xe0df 0x73c0 +0xe0e0 0x73e5 +0xe0e1 0x73ee +0xe0e2 0x73de +0xe0e3 0x74a2 +0xe0e4 0x7405 +0xe0e5 0x746f +0xe0e6 0x7425 +0xe0e7 0x73f8 +0xe0e8 0x7432 +0xe0e9 0x743a +0xe0ea 0x7455 +0xe0eb 0x743f +0xe0ec 0x745f +0xe0ed 0x7459 +0xe0ee 0x7441 +0xe0ef 0x745c +0xe0f0 0x7469 +0xe0f1 0x7470 +0xe0f2 0x7463 +0xe0f3 0x746a +0xe0f4 0x7476 +0xe0f5 0x747e +0xe0f6 0x748b +0xe0f7 0x749e +0xe0f8 0x74a7 +0xe0f9 0x74ca +0xe0fa 0x74cf +0xe0fb 0x74d4 +0xe0fc 0x73f1 +0xe140 0x74e0 +0xe141 0x74e3 +0xe142 0x74e7 +0xe143 0x74e9 +0xe144 0x74ee +0xe145 0x74f2 +0xe146 0x74f0 +0xe147 0x74f1 +0xe148 0x74f8 +0xe149 0x74f7 +0xe14a 0x7504 +0xe14b 0x7503 +0xe14c 0x7505 +0xe14d 0x750c +0xe14e 0x750e +0xe14f 0x750d +0xe150 0x7515 +0xe151 0x7513 +0xe152 0x751e +0xe153 0x7526 +0xe154 0x752c +0xe155 0x753c +0xe156 0x7544 +0xe157 0x754d +0xe158 0x754a +0xe159 0x7549 +0xe15a 0x755b +0xe15b 0x7546 +0xe15c 0x755a +0xe15d 0x7569 +0xe15e 0x7564 +0xe15f 0x7567 +0xe160 0x756b +0xe161 0x756d +0xe162 0x7578 +0xe163 0x7576 +0xe164 0x7586 +0xe165 0x7587 +0xe166 0x7574 +0xe167 0x758a +0xe168 0x7589 +0xe169 0x7582 +0xe16a 0x7594 +0xe16b 0x759a +0xe16c 0x759d +0xe16d 0x75a5 +0xe16e 0x75a3 +0xe16f 0x75c2 +0xe170 0x75b3 +0xe171 0x75c3 +0xe172 0x75b5 +0xe173 0x75bd +0xe174 0x75b8 +0xe175 0x75bc +0xe176 0x75b1 +0xe177 0x75cd +0xe178 0x75ca +0xe179 0x75d2 +0xe17a 0x75d9 +0xe17b 0x75e3 +0xe17c 0x75de +0xe17d 0x75fe +0xe17e 0x75ff +0xe180 0x75fc +0xe181 0x7601 +0xe182 0x75f0 +0xe183 0x75fa +0xe184 0x75f2 +0xe185 0x75f3 +0xe186 0x760b +0xe187 0x760d +0xe188 0x7609 +0xe189 0x761f +0xe18a 0x7627 +0xe18b 0x7620 +0xe18c 0x7621 +0xe18d 0x7622 +0xe18e 0x7624 +0xe18f 0x7634 +0xe190 0x7630 +0xe191 0x763b +0xe192 0x7647 +0xe193 0x7648 +0xe194 0x7646 +0xe195 0x765c +0xe196 0x7658 +0xe197 0x7661 +0xe198 0x7662 +0xe199 0x7668 +0xe19a 0x7669 +0xe19b 0x766a +0xe19c 0x7667 +0xe19d 0x766c +0xe19e 0x7670 +0xe19f 0x7672 +0xe1a0 0x7676 +0xe1a1 0x7678 +0xe1a2 0x767c +0xe1a3 0x7680 +0xe1a4 0x7683 +0xe1a5 0x7688 +0xe1a6 0x768b +0xe1a7 0x768e +0xe1a8 0x7696 +0xe1a9 0x7693 +0xe1aa 0x7699 +0xe1ab 0x769a +0xe1ac 0x76b0 +0xe1ad 0x76b4 +0xe1ae 0x76b8 +0xe1af 0x76b9 +0xe1b0 0x76ba +0xe1b1 0x76c2 +0xe1b2 0x76cd +0xe1b3 0x76d6 +0xe1b4 0x76d2 +0xe1b5 0x76de +0xe1b6 0x76e1 +0xe1b7 0x76e5 +0xe1b8 0x76e7 +0xe1b9 0x76ea +0xe1ba 0x862f +0xe1bb 0x76fb +0xe1bc 0x7708 +0xe1bd 0x7707 +0xe1be 0x7704 +0xe1bf 0x7729 +0xe1c0 0x7724 +0xe1c1 0x771e +0xe1c2 0x7725 +0xe1c3 0x7726 +0xe1c4 0x771b +0xe1c5 0x7737 +0xe1c6 0x7738 +0xe1c7 0x7747 +0xe1c8 0x775a +0xe1c9 0x7768 +0xe1ca 0x776b +0xe1cb 0x775b +0xe1cc 0x7765 +0xe1cd 0x777f +0xe1ce 0x777e +0xe1cf 0x7779 +0xe1d0 0x778e +0xe1d1 0x778b +0xe1d2 0x7791 +0xe1d3 0x77a0 +0xe1d4 0x779e +0xe1d5 0x77b0 +0xe1d6 0x77b6 +0xe1d7 0x77b9 +0xe1d8 0x77bf +0xe1d9 0x77bc +0xe1da 0x77bd +0xe1db 0x77bb +0xe1dc 0x77c7 +0xe1dd 0x77cd +0xe1de 0x77d7 +0xe1df 0x77da +0xe1e0 0x77dc +0xe1e1 0x77e3 +0xe1e2 0x77ee +0xe1e3 0x77fc +0xe1e4 0x780c +0xe1e5 0x7812 +0xe1e6 0x7926 +0xe1e7 0x7820 +0xe1e8 0x792a +0xe1e9 0x7845 +0xe1ea 0x788e +0xe1eb 0x7874 +0xe1ec 0x7886 +0xe1ed 0x787c +0xe1ee 0x789a +0xe1ef 0x788c +0xe1f0 0x78a3 +0xe1f1 0x78b5 +0xe1f2 0x78aa +0xe1f3 0x78af +0xe1f4 0x78d1 +0xe1f5 0x78c6 +0xe1f6 0x78cb +0xe1f7 0x78d4 +0xe1f8 0x78be +0xe1f9 0x78bc +0xe1fa 0x78c5 +0xe1fb 0x78ca +0xe1fc 0x78ec +0xe240 0x78e7 +0xe241 0x78da +0xe242 0x78fd +0xe243 0x78f4 +0xe244 0x7907 +0xe245 0x7912 +0xe246 0x7911 +0xe247 0x7919 +0xe248 0x792c +0xe249 0x792b +0xe24a 0x7940 +0xe24b 0x7960 +0xe24c 0x7957 +0xe24d 0x795f +0xe24e 0x795a +0xe24f 0x7955 +0xe250 0x7953 +0xe251 0x797a +0xe252 0x797f +0xe253 0x798a +0xe254 0x799d +0xe255 0x79a7 +0xe256 0x9f4b +0xe257 0x79aa +0xe258 0x79ae +0xe259 0x79b3 +0xe25a 0x79b9 +0xe25b 0x79ba +0xe25c 0x79c9 +0xe25d 0x79d5 +0xe25e 0x79e7 +0xe25f 0x79ec +0xe260 0x79e1 +0xe261 0x79e3 +0xe262 0x7a08 +0xe263 0x7a0d +0xe264 0x7a18 +0xe265 0x7a19 +0xe266 0x7a20 +0xe267 0x7a1f +0xe268 0x7980 +0xe269 0x7a31 +0xe26a 0x7a3b +0xe26b 0x7a3e +0xe26c 0x7a37 +0xe26d 0x7a43 +0xe26e 0x7a57 +0xe26f 0x7a49 +0xe270 0x7a61 +0xe271 0x7a62 +0xe272 0x7a69 +0xe273 0x9f9d +0xe274 0x7a70 +0xe275 0x7a79 +0xe276 0x7a7d +0xe277 0x7a88 +0xe278 0x7a97 +0xe279 0x7a95 +0xe27a 0x7a98 +0xe27b 0x7a96 +0xe27c 0x7aa9 +0xe27d 0x7ac8 +0xe27e 0x7ab0 +0xe280 0x7ab6 +0xe281 0x7ac5 +0xe282 0x7ac4 +0xe283 0x7abf +0xe284 0x9083 +0xe285 0x7ac7 +0xe286 0x7aca +0xe287 0x7acd +0xe288 0x7acf +0xe289 0x7ad5 +0xe28a 0x7ad3 +0xe28b 0x7ad9 +0xe28c 0x7ada +0xe28d 0x7add +0xe28e 0x7ae1 +0xe28f 0x7ae2 +0xe290 0x7ae6 +0xe291 0x7aed +0xe292 0x7af0 +0xe293 0x7b02 +0xe294 0x7b0f +0xe295 0x7b0a +0xe296 0x7b06 +0xe297 0x7b33 +0xe298 0x7b18 +0xe299 0x7b19 +0xe29a 0x7b1e +0xe29b 0x7b35 +0xe29c 0x7b28 +0xe29d 0x7b36 +0xe29e 0x7b50 +0xe29f 0x7b7a +0xe2a0 0x7b04 +0xe2a1 0x7b4d +0xe2a2 0x7b0b +0xe2a3 0x7b4c +0xe2a4 0x7b45 +0xe2a5 0x7b75 +0xe2a6 0x7b65 +0xe2a7 0x7b74 +0xe2a8 0x7b67 +0xe2a9 0x7b70 +0xe2aa 0x7b71 +0xe2ab 0x7b6c +0xe2ac 0x7b6e +0xe2ad 0x7b9d +0xe2ae 0x7b98 +0xe2af 0x7b9f +0xe2b0 0x7b8d +0xe2b1 0x7b9c +0xe2b2 0x7b9a +0xe2b3 0x7b8b +0xe2b4 0x7b92 +0xe2b5 0x7b8f +0xe2b6 0x7b5d +0xe2b7 0x7b99 +0xe2b8 0x7bcb +0xe2b9 0x7bc1 +0xe2ba 0x7bcc +0xe2bb 0x7bcf +0xe2bc 0x7bb4 +0xe2bd 0x7bc6 +0xe2be 0x7bdd +0xe2bf 0x7be9 +0xe2c0 0x7c11 +0xe2c1 0x7c14 +0xe2c2 0x7be6 +0xe2c3 0x7be5 +0xe2c4 0x7c60 +0xe2c5 0x7c00 +0xe2c6 0x7c07 +0xe2c7 0x7c13 +0xe2c8 0x7bf3 +0xe2c9 0x7bf7 +0xe2ca 0x7c17 +0xe2cb 0x7c0d +0xe2cc 0x7bf6 +0xe2cd 0x7c23 +0xe2ce 0x7c27 +0xe2cf 0x7c2a +0xe2d0 0x7c1f +0xe2d1 0x7c37 +0xe2d2 0x7c2b +0xe2d3 0x7c3d +0xe2d4 0x7c4c +0xe2d5 0x7c43 +0xe2d6 0x7c54 +0xe2d7 0x7c4f +0xe2d8 0x7c40 +0xe2d9 0x7c50 +0xe2da 0x7c58 +0xe2db 0x7c5f +0xe2dc 0x7c64 +0xe2dd 0x7c56 +0xe2de 0x7c65 +0xe2df 0x7c6c +0xe2e0 0x7c75 +0xe2e1 0x7c83 +0xe2e2 0x7c90 +0xe2e3 0x7ca4 +0xe2e4 0x7cad +0xe2e5 0x7ca2 +0xe2e6 0x7cab +0xe2e7 0x7ca1 +0xe2e8 0x7ca8 +0xe2e9 0x7cb3 +0xe2ea 0x7cb2 +0xe2eb 0x7cb1 +0xe2ec 0x7cae +0xe2ed 0x7cb9 +0xe2ee 0x7cbd +0xe2ef 0x7cc0 +0xe2f0 0x7cc5 +0xe2f1 0x7cc2 +0xe2f2 0x7cd8 +0xe2f3 0x7cd2 +0xe2f4 0x7cdc +0xe2f5 0x7ce2 +0xe2f6 0x9b3b +0xe2f7 0x7cef +0xe2f8 0x7cf2 +0xe2f9 0x7cf4 +0xe2fa 0x7cf6 +0xe2fb 0x7cfa +0xe2fc 0x7d06 +0xe340 0x7d02 +0xe341 0x7d1c +0xe342 0x7d15 +0xe343 0x7d0a +0xe344 0x7d45 +0xe345 0x7d4b +0xe346 0x7d2e +0xe347 0x7d32 +0xe348 0x7d3f +0xe349 0x7d35 +0xe34a 0x7d46 +0xe34b 0x7d73 +0xe34c 0x7d56 +0xe34d 0x7d4e +0xe34e 0x7d72 +0xe34f 0x7d68 +0xe350 0x7d6e +0xe351 0x7d4f +0xe352 0x7d63 +0xe353 0x7d93 +0xe354 0x7d89 +0xe355 0x7d5b +0xe356 0x7d8f +0xe357 0x7d7d +0xe358 0x7d9b +0xe359 0x7dba +0xe35a 0x7dae +0xe35b 0x7da3 +0xe35c 0x7db5 +0xe35d 0x7dc7 +0xe35e 0x7dbd +0xe35f 0x7dab +0xe360 0x7e3d +0xe361 0x7da2 +0xe362 0x7daf +0xe363 0x7ddc +0xe364 0x7db8 +0xe365 0x7d9f +0xe366 0x7db0 +0xe367 0x7dd8 +0xe368 0x7ddd +0xe369 0x7de4 +0xe36a 0x7dde +0xe36b 0x7dfb +0xe36c 0x7df2 +0xe36d 0x7de1 +0xe36e 0x7e05 +0xe36f 0x7e0a +0xe370 0x7e23 +0xe371 0x7e21 +0xe372 0x7e12 +0xe373 0x7e31 +0xe374 0x7e1f +0xe375 0x7e09 +0xe376 0x7e0b +0xe377 0x7e22 +0xe378 0x7e46 +0xe379 0x7e66 +0xe37a 0x7e3b +0xe37b 0x7e35 +0xe37c 0x7e39 +0xe37d 0x7e43 +0xe37e 0x7e37 +0xe380 0x7e32 +0xe381 0x7e3a +0xe382 0x7e67 +0xe383 0x7e5d +0xe384 0x7e56 +0xe385 0x7e5e +0xe386 0x7e59 +0xe387 0x7e5a +0xe388 0x7e79 +0xe389 0x7e6a +0xe38a 0x7e69 +0xe38b 0x7e7c +0xe38c 0x7e7b +0xe38d 0x7e83 +0xe38e 0x7dd5 +0xe38f 0x7e7d +0xe390 0x8fae +0xe391 0x7e7f +0xe392 0x7e88 +0xe393 0x7e89 +0xe394 0x7e8c +0xe395 0x7e92 +0xe396 0x7e90 +0xe397 0x7e93 +0xe398 0x7e94 +0xe399 0x7e96 +0xe39a 0x7e8e +0xe39b 0x7e9b +0xe39c 0x7e9c +0xe39d 0x7f38 +0xe39e 0x7f3a +0xe39f 0x7f45 +0xe3a0 0x7f4c +0xe3a1 0x7f4d +0xe3a2 0x7f4e +0xe3a3 0x7f50 +0xe3a4 0x7f51 +0xe3a5 0x7f55 +0xe3a6 0x7f54 +0xe3a7 0x7f58 +0xe3a8 0x7f5f +0xe3a9 0x7f60 +0xe3aa 0x7f68 +0xe3ab 0x7f69 +0xe3ac 0x7f67 +0xe3ad 0x7f78 +0xe3ae 0x7f82 +0xe3af 0x7f86 +0xe3b0 0x7f83 +0xe3b1 0x7f88 +0xe3b2 0x7f87 +0xe3b3 0x7f8c +0xe3b4 0x7f94 +0xe3b5 0x7f9e +0xe3b6 0x7f9d +0xe3b7 0x7f9a +0xe3b8 0x7fa3 +0xe3b9 0x7faf +0xe3ba 0x7fb2 +0xe3bb 0x7fb9 +0xe3bc 0x7fae +0xe3bd 0x7fb6 +0xe3be 0x7fb8 +0xe3bf 0x8b71 +0xe3c0 0x7fc5 +0xe3c1 0x7fc6 +0xe3c2 0x7fca +0xe3c3 0x7fd5 +0xe3c4 0x7fd4 +0xe3c5 0x7fe1 +0xe3c6 0x7fe6 +0xe3c7 0x7fe9 +0xe3c8 0x7ff3 +0xe3c9 0x7ff9 +0xe3ca 0x98dc +0xe3cb 0x8006 +0xe3cc 0x8004 +0xe3cd 0x800b +0xe3ce 0x8012 +0xe3cf 0x8018 +0xe3d0 0x8019 +0xe3d1 0x801c +0xe3d2 0x8021 +0xe3d3 0x8028 +0xe3d4 0x803f +0xe3d5 0x803b +0xe3d6 0x804a +0xe3d7 0x8046 +0xe3d8 0x8052 +0xe3d9 0x8058 +0xe3da 0x805a +0xe3db 0x805f +0xe3dc 0x8062 +0xe3dd 0x8068 +0xe3de 0x8073 +0xe3df 0x8072 +0xe3e0 0x8070 +0xe3e1 0x8076 +0xe3e2 0x8079 +0xe3e3 0x807d +0xe3e4 0x807f +0xe3e5 0x8084 +0xe3e6 0x8086 +0xe3e7 0x8085 +0xe3e8 0x809b +0xe3e9 0x8093 +0xe3ea 0x809a +0xe3eb 0x80ad +0xe3ec 0x5190 +0xe3ed 0x80ac +0xe3ee 0x80db +0xe3ef 0x80e5 +0xe3f0 0x80d9 +0xe3f1 0x80dd +0xe3f2 0x80c4 +0xe3f3 0x80da +0xe3f4 0x80d6 +0xe3f5 0x8109 +0xe3f6 0x80ef +0xe3f7 0x80f1 +0xe3f8 0x811b +0xe3f9 0x8129 +0xe3fa 0x8123 +0xe3fb 0x812f +0xe3fc 0x814b +0xe440 0x968b +0xe441 0x8146 +0xe442 0x813e +0xe443 0x8153 +0xe444 0x8151 +0xe445 0x80fc +0xe446 0x8171 +0xe447 0x816e +0xe448 0x8165 +0xe449 0x8166 +0xe44a 0x8174 +0xe44b 0x8183 +0xe44c 0x8188 +0xe44d 0x818a +0xe44e 0x8180 +0xe44f 0x8182 +0xe450 0x81a0 +0xe451 0x8195 +0xe452 0x81a4 +0xe453 0x81a3 +0xe454 0x815f +0xe455 0x8193 +0xe456 0x81a9 +0xe457 0x81b0 +0xe458 0x81b5 +0xe459 0x81be +0xe45a 0x81b8 +0xe45b 0x81bd +0xe45c 0x81c0 +0xe45d 0x81c2 +0xe45e 0x81ba +0xe45f 0x81c9 +0xe460 0x81cd +0xe461 0x81d1 +0xe462 0x81d9 +0xe463 0x81d8 +0xe464 0x81c8 +0xe465 0x81da +0xe466 0x81df +0xe467 0x81e0 +0xe468 0x81e7 +0xe469 0x81fa +0xe46a 0x81fb +0xe46b 0x81fe +0xe46c 0x8201 +0xe46d 0x8202 +0xe46e 0x8205 +0xe46f 0x8207 +0xe470 0x820a +0xe471 0x820d +0xe472 0x8210 +0xe473 0x8216 +0xe474 0x8229 +0xe475 0x822b +0xe476 0x8238 +0xe477 0x8233 +0xe478 0x8240 +0xe479 0x8259 +0xe47a 0x8258 +0xe47b 0x825d +0xe47c 0x825a +0xe47d 0x825f +0xe47e 0x8264 +0xe480 0x8262 +0xe481 0x8268 +0xe482 0x826a +0xe483 0x826b +0xe484 0x822e +0xe485 0x8271 +0xe486 0x8277 +0xe487 0x8278 +0xe488 0x827e +0xe489 0x828d +0xe48a 0x8292 +0xe48b 0x82ab +0xe48c 0x829f +0xe48d 0x82bb +0xe48e 0x82ac +0xe48f 0x82e1 +0xe490 0x82e3 +0xe491 0x82df +0xe492 0x82d2 +0xe493 0x82f4 +0xe494 0x82f3 +0xe495 0x82fa +0xe496 0x8393 +0xe497 0x8303 +0xe498 0x82fb +0xe499 0x82f9 +0xe49a 0x82de +0xe49b 0x8306 +0xe49c 0x82dc +0xe49d 0x8309 +0xe49e 0x82d9 +0xe49f 0x8335 +0xe4a0 0x8334 +0xe4a1 0x8316 +0xe4a2 0x8332 +0xe4a3 0x8331 +0xe4a4 0x8340 +0xe4a5 0x8339 +0xe4a6 0x8350 +0xe4a7 0x8345 +0xe4a8 0x832f +0xe4a9 0x832b +0xe4aa 0x8317 +0xe4ab 0x8318 +0xe4ac 0x8385 +0xe4ad 0x839a +0xe4ae 0x83aa +0xe4af 0x839f +0xe4b0 0x83a2 +0xe4b1 0x8396 +0xe4b2 0x8323 +0xe4b3 0x838e +0xe4b4 0x8387 +0xe4b5 0x838a +0xe4b6 0x837c +0xe4b7 0x83b5 +0xe4b8 0x8373 +0xe4b9 0x8375 +0xe4ba 0x83a0 +0xe4bb 0x8389 +0xe4bc 0x83a8 +0xe4bd 0x83f4 +0xe4be 0x8413 +0xe4bf 0x83eb +0xe4c0 0x83ce +0xe4c1 0x83fd +0xe4c2 0x8403 +0xe4c3 0x83d8 +0xe4c4 0x840b +0xe4c5 0x83c1 +0xe4c6 0x83f7 +0xe4c7 0x8407 +0xe4c8 0x83e0 +0xe4c9 0x83f2 +0xe4ca 0x840d +0xe4cb 0x8422 +0xe4cc 0x8420 +0xe4cd 0x83bd +0xe4ce 0x8438 +0xe4cf 0x8506 +0xe4d0 0x83fb +0xe4d1 0x846d +0xe4d2 0x842a +0xe4d3 0x843c +0xe4d4 0x855a +0xe4d5 0x8484 +0xe4d6 0x8477 +0xe4d7 0x846b +0xe4d8 0x84ad +0xe4d9 0x846e +0xe4da 0x8482 +0xe4db 0x8469 +0xe4dc 0x8446 +0xe4dd 0x842c +0xe4de 0x846f +0xe4df 0x8479 +0xe4e0 0x8435 +0xe4e1 0x84ca +0xe4e2 0x8462 +0xe4e3 0x84b9 +0xe4e4 0x84bf +0xe4e5 0x849f +0xe4e6 0x84d9 +0xe4e7 0x84cd +0xe4e8 0x84bb +0xe4e9 0x84da +0xe4ea 0x84d0 +0xe4eb 0x84c1 +0xe4ec 0x84c6 +0xe4ed 0x84d6 +0xe4ee 0x84a1 +0xe4ef 0x8521 +0xe4f0 0x84ff +0xe4f1 0x84f4 +0xe4f2 0x8517 +0xe4f3 0x8518 +0xe4f4 0x852c +0xe4f5 0x851f +0xe4f6 0x8515 +0xe4f7 0x8514 +0xe4f8 0x84fc +0xe4f9 0x8540 +0xe4fa 0x8563 +0xe4fb 0x8558 +0xe4fc 0x8548 +0xe540 0x8541 +0xe541 0x8602 +0xe542 0x854b +0xe543 0x8555 +0xe544 0x8580 +0xe545 0x85a4 +0xe546 0x8588 +0xe547 0x8591 +0xe548 0x858a +0xe549 0x85a8 +0xe54a 0x856d +0xe54b 0x8594 +0xe54c 0x859b +0xe54d 0x85ea +0xe54e 0x8587 +0xe54f 0x859c +0xe550 0x8577 +0xe551 0x857e +0xe552 0x8590 +0xe553 0x85c9 +0xe554 0x85ba +0xe555 0x85cf +0xe556 0x85b9 +0xe557 0x85d0 +0xe558 0x85d5 +0xe559 0x85dd +0xe55a 0x85e5 +0xe55b 0x85dc +0xe55c 0x85f9 +0xe55d 0x860a +0xe55e 0x8613 +0xe55f 0x860b +0xe560 0x85fe +0xe561 0x85fa +0xe562 0x8606 +0xe563 0x8622 +0xe564 0x861a +0xe565 0x8630 +0xe566 0x863f +0xe567 0x864d +0xe568 0x4e55 +0xe569 0x8654 +0xe56a 0x865f +0xe56b 0x8667 +0xe56c 0x8671 +0xe56d 0x8693 +0xe56e 0x86a3 +0xe56f 0x86a9 +0xe570 0x86aa +0xe571 0x868b +0xe572 0x868c +0xe573 0x86b6 +0xe574 0x86af +0xe575 0x86c4 +0xe576 0x86c6 +0xe577 0x86b0 +0xe578 0x86c9 +0xe579 0x8823 +0xe57a 0x86ab +0xe57b 0x86d4 +0xe57c 0x86de +0xe57d 0x86e9 +0xe57e 0x86ec +0xe580 0x86df +0xe581 0x86db +0xe582 0x86ef +0xe583 0x8712 +0xe584 0x8706 +0xe585 0x8708 +0xe586 0x8700 +0xe587 0x8703 +0xe588 0x86fb +0xe589 0x8711 +0xe58a 0x8709 +0xe58b 0x870d +0xe58c 0x86f9 +0xe58d 0x870a +0xe58e 0x8734 +0xe58f 0x873f +0xe590 0x8737 +0xe591 0x873b +0xe592 0x8725 +0xe593 0x8729 +0xe594 0x871a +0xe595 0x8760 +0xe596 0x875f +0xe597 0x8778 +0xe598 0x874c +0xe599 0x874e +0xe59a 0x8774 +0xe59b 0x8757 +0xe59c 0x8768 +0xe59d 0x876e +0xe59e 0x8759 +0xe59f 0x8753 +0xe5a0 0x8763 +0xe5a1 0x876a +0xe5a2 0x8805 +0xe5a3 0x87a2 +0xe5a4 0x879f +0xe5a5 0x8782 +0xe5a6 0x87af +0xe5a7 0x87cb +0xe5a8 0x87bd +0xe5a9 0x87c0 +0xe5aa 0x87d0 +0xe5ab 0x96d6 +0xe5ac 0x87ab +0xe5ad 0x87c4 +0xe5ae 0x87b3 +0xe5af 0x87c7 +0xe5b0 0x87c6 +0xe5b1 0x87bb +0xe5b2 0x87ef +0xe5b3 0x87f2 +0xe5b4 0x87e0 +0xe5b5 0x880f +0xe5b6 0x880d +0xe5b7 0x87fe +0xe5b8 0x87f6 +0xe5b9 0x87f7 +0xe5ba 0x880e +0xe5bb 0x87d2 +0xe5bc 0x8811 +0xe5bd 0x8816 +0xe5be 0x8815 +0xe5bf 0x8822 +0xe5c0 0x8821 +0xe5c1 0x8831 +0xe5c2 0x8836 +0xe5c3 0x8839 +0xe5c4 0x8827 +0xe5c5 0x883b +0xe5c6 0x8844 +0xe5c7 0x8842 +0xe5c8 0x8852 +0xe5c9 0x8859 +0xe5ca 0x885e +0xe5cb 0x8862 +0xe5cc 0x886b +0xe5cd 0x8881 +0xe5ce 0x887e +0xe5cf 0x889e +0xe5d0 0x8875 +0xe5d1 0x887d +0xe5d2 0x88b5 +0xe5d3 0x8872 +0xe5d4 0x8882 +0xe5d5 0x8897 +0xe5d6 0x8892 +0xe5d7 0x88ae +0xe5d8 0x8899 +0xe5d9 0x88a2 +0xe5da 0x888d +0xe5db 0x88a4 +0xe5dc 0x88b0 +0xe5dd 0x88bf +0xe5de 0x88b1 +0xe5df 0x88c3 +0xe5e0 0x88c4 +0xe5e1 0x88d4 +0xe5e2 0x88d8 +0xe5e3 0x88d9 +0xe5e4 0x88dd +0xe5e5 0x88f9 +0xe5e6 0x8902 +0xe5e7 0x88fc +0xe5e8 0x88f4 +0xe5e9 0x88e8 +0xe5ea 0x88f2 +0xe5eb 0x8904 +0xe5ec 0x890c +0xe5ed 0x890a +0xe5ee 0x8913 +0xe5ef 0x8943 +0xe5f0 0x891e +0xe5f1 0x8925 +0xe5f2 0x892a +0xe5f3 0x892b +0xe5f4 0x8941 +0xe5f5 0x8944 +0xe5f6 0x893b +0xe5f7 0x8936 +0xe5f8 0x8938 +0xe5f9 0x894c +0xe5fa 0x891d +0xe5fb 0x8960 +0xe5fc 0x895e +0xe640 0x8966 +0xe641 0x8964 +0xe642 0x896d +0xe643 0x896a +0xe644 0x896f +0xe645 0x8974 +0xe646 0x8977 +0xe647 0x897e +0xe648 0x8983 +0xe649 0x8988 +0xe64a 0x898a +0xe64b 0x8993 +0xe64c 0x8998 +0xe64d 0x89a1 +0xe64e 0x89a9 +0xe64f 0x89a6 +0xe650 0x89ac +0xe651 0x89af +0xe652 0x89b2 +0xe653 0x89ba +0xe654 0x89bd +0xe655 0x89bf +0xe656 0x89c0 +0xe657 0x89da +0xe658 0x89dc +0xe659 0x89dd +0xe65a 0x89e7 +0xe65b 0x89f4 +0xe65c 0x89f8 +0xe65d 0x8a03 +0xe65e 0x8a16 +0xe65f 0x8a10 +0xe660 0x8a0c +0xe661 0x8a1b +0xe662 0x8a1d +0xe663 0x8a25 +0xe664 0x8a36 +0xe665 0x8a41 +0xe666 0x8a5b +0xe667 0x8a52 +0xe668 0x8a46 +0xe669 0x8a48 +0xe66a 0x8a7c +0xe66b 0x8a6d +0xe66c 0x8a6c +0xe66d 0x8a62 +0xe66e 0x8a85 +0xe66f 0x8a82 +0xe670 0x8a84 +0xe671 0x8aa8 +0xe672 0x8aa1 +0xe673 0x8a91 +0xe674 0x8aa5 +0xe675 0x8aa6 +0xe676 0x8a9a +0xe677 0x8aa3 +0xe678 0x8ac4 +0xe679 0x8acd +0xe67a 0x8ac2 +0xe67b 0x8ada +0xe67c 0x8aeb +0xe67d 0x8af3 +0xe67e 0x8ae7 +0xe680 0x8ae4 +0xe681 0x8af1 +0xe682 0x8b14 +0xe683 0x8ae0 +0xe684 0x8ae2 +0xe685 0x8af7 +0xe686 0x8ade +0xe687 0x8adb +0xe688 0x8b0c +0xe689 0x8b07 +0xe68a 0x8b1a +0xe68b 0x8ae1 +0xe68c 0x8b16 +0xe68d 0x8b10 +0xe68e 0x8b17 +0xe68f 0x8b20 +0xe690 0x8b33 +0xe691 0x97ab +0xe692 0x8b26 +0xe693 0x8b2b +0xe694 0x8b3e +0xe695 0x8b28 +0xe696 0x8b41 +0xe697 0x8b4c +0xe698 0x8b4f +0xe699 0x8b4e +0xe69a 0x8b49 +0xe69b 0x8b56 +0xe69c 0x8b5b +0xe69d 0x8b5a +0xe69e 0x8b6b +0xe69f 0x8b5f +0xe6a0 0x8b6c +0xe6a1 0x8b6f +0xe6a2 0x8b74 +0xe6a3 0x8b7d +0xe6a4 0x8b80 +0xe6a5 0x8b8c +0xe6a6 0x8b8e +0xe6a7 0x8b92 +0xe6a8 0x8b93 +0xe6a9 0x8b96 +0xe6aa 0x8b99 +0xe6ab 0x8b9a +0xe6ac 0x8c3a +0xe6ad 0x8c41 +0xe6ae 0x8c3f +0xe6af 0x8c48 +0xe6b0 0x8c4c +0xe6b1 0x8c4e +0xe6b2 0x8c50 +0xe6b3 0x8c55 +0xe6b4 0x8c62 +0xe6b5 0x8c6c +0xe6b6 0x8c78 +0xe6b7 0x8c7a +0xe6b8 0x8c82 +0xe6b9 0x8c89 +0xe6ba 0x8c85 +0xe6bb 0x8c8a +0xe6bc 0x8c8d +0xe6bd 0x8c8e +0xe6be 0x8c94 +0xe6bf 0x8c7c +0xe6c0 0x8c98 +0xe6c1 0x621d +0xe6c2 0x8cad +0xe6c3 0x8caa +0xe6c4 0x8cbd +0xe6c5 0x8cb2 +0xe6c6 0x8cb3 +0xe6c7 0x8cae +0xe6c8 0x8cb6 +0xe6c9 0x8cc8 +0xe6ca 0x8cc1 +0xe6cb 0x8ce4 +0xe6cc 0x8ce3 +0xe6cd 0x8cda +0xe6ce 0x8cfd +0xe6cf 0x8cfa +0xe6d0 0x8cfb +0xe6d1 0x8d04 +0xe6d2 0x8d05 +0xe6d3 0x8d0a +0xe6d4 0x8d07 +0xe6d5 0x8d0f +0xe6d6 0x8d0d +0xe6d7 0x8d10 +0xe6d8 0x9f4e +0xe6d9 0x8d13 +0xe6da 0x8ccd +0xe6db 0x8d14 +0xe6dc 0x8d16 +0xe6dd 0x8d67 +0xe6de 0x8d6d +0xe6df 0x8d71 +0xe6e0 0x8d73 +0xe6e1 0x8d81 +0xe6e2 0x8d99 +0xe6e3 0x8dc2 +0xe6e4 0x8dbe +0xe6e5 0x8dba +0xe6e6 0x8dcf +0xe6e7 0x8dda +0xe6e8 0x8dd6 +0xe6e9 0x8dcc +0xe6ea 0x8ddb +0xe6eb 0x8dcb +0xe6ec 0x8dea +0xe6ed 0x8deb +0xe6ee 0x8ddf +0xe6ef 0x8de3 +0xe6f0 0x8dfc +0xe6f1 0x8e08 +0xe6f2 0x8e09 +0xe6f3 0x8dff +0xe6f4 0x8e1d +0xe6f5 0x8e1e +0xe6f6 0x8e10 +0xe6f7 0x8e1f +0xe6f8 0x8e42 +0xe6f9 0x8e35 +0xe6fa 0x8e30 +0xe6fb 0x8e34 +0xe6fc 0x8e4a +0xe740 0x8e47 +0xe741 0x8e49 +0xe742 0x8e4c +0xe743 0x8e50 +0xe744 0x8e48 +0xe745 0x8e59 +0xe746 0x8e64 +0xe747 0x8e60 +0xe748 0x8e2a +0xe749 0x8e63 +0xe74a 0x8e55 +0xe74b 0x8e76 +0xe74c 0x8e72 +0xe74d 0x8e7c +0xe74e 0x8e81 +0xe74f 0x8e87 +0xe750 0x8e85 +0xe751 0x8e84 +0xe752 0x8e8b +0xe753 0x8e8a +0xe754 0x8e93 +0xe755 0x8e91 +0xe756 0x8e94 +0xe757 0x8e99 +0xe758 0x8eaa +0xe759 0x8ea1 +0xe75a 0x8eac +0xe75b 0x8eb0 +0xe75c 0x8ec6 +0xe75d 0x8eb1 +0xe75e 0x8ebe +0xe75f 0x8ec5 +0xe760 0x8ec8 +0xe761 0x8ecb +0xe762 0x8edb +0xe763 0x8ee3 +0xe764 0x8efc +0xe765 0x8efb +0xe766 0x8eeb +0xe767 0x8efe +0xe768 0x8f0a +0xe769 0x8f05 +0xe76a 0x8f15 +0xe76b 0x8f12 +0xe76c 0x8f19 +0xe76d 0x8f13 +0xe76e 0x8f1c +0xe76f 0x8f1f +0xe770 0x8f1b +0xe771 0x8f0c +0xe772 0x8f26 +0xe773 0x8f33 +0xe774 0x8f3b +0xe775 0x8f39 +0xe776 0x8f45 +0xe777 0x8f42 +0xe778 0x8f3e +0xe779 0x8f4c +0xe77a 0x8f49 +0xe77b 0x8f46 +0xe77c 0x8f4e +0xe77d 0x8f57 +0xe77e 0x8f5c +0xe780 0x8f62 +0xe781 0x8f63 +0xe782 0x8f64 +0xe783 0x8f9c +0xe784 0x8f9f +0xe785 0x8fa3 +0xe786 0x8fad +0xe787 0x8faf +0xe788 0x8fb7 +0xe789 0x8fda +0xe78a 0x8fe5 +0xe78b 0x8fe2 +0xe78c 0x8fea +0xe78d 0x8fef +0xe78e 0x9087 +0xe78f 0x8ff4 +0xe790 0x9005 +0xe791 0x8ff9 +0xe792 0x8ffa +0xe793 0x9011 +0xe794 0x9015 +0xe795 0x9021 +0xe796 0x900d +0xe797 0x901e +0xe798 0x9016 +0xe799 0x900b +0xe79a 0x9027 +0xe79b 0x9036 +0xe79c 0x9035 +0xe79d 0x9039 +0xe79e 0x8ff8 +0xe79f 0x904f +0xe7a0 0x9050 +0xe7a1 0x9051 +0xe7a2 0x9052 +0xe7a3 0x900e +0xe7a4 0x9049 +0xe7a5 0x903e +0xe7a6 0x9056 +0xe7a7 0x9058 +0xe7a8 0x905e +0xe7a9 0x9068 +0xe7aa 0x906f +0xe7ab 0x9076 +0xe7ac 0x96a8 +0xe7ad 0x9072 +0xe7ae 0x9082 +0xe7af 0x907d +0xe7b0 0x9081 +0xe7b1 0x9080 +0xe7b2 0x908a +0xe7b3 0x9089 +0xe7b4 0x908f +0xe7b5 0x90a8 +0xe7b6 0x90af +0xe7b7 0x90b1 +0xe7b8 0x90b5 +0xe7b9 0x90e2 +0xe7ba 0x90e4 +0xe7bb 0x6248 +0xe7bc 0x90db +0xe7bd 0x9102 +0xe7be 0x9112 +0xe7bf 0x9119 +0xe7c0 0x9132 +0xe7c1 0x9130 +0xe7c2 0x914a +0xe7c3 0x9156 +0xe7c4 0x9158 +0xe7c5 0x9163 +0xe7c6 0x9165 +0xe7c7 0x9169 +0xe7c8 0x9173 +0xe7c9 0x9172 +0xe7ca 0x918b +0xe7cb 0x9189 +0xe7cc 0x9182 +0xe7cd 0x91a2 +0xe7ce 0x91ab +0xe7cf 0x91af +0xe7d0 0x91aa +0xe7d1 0x91b5 +0xe7d2 0x91b4 +0xe7d3 0x91ba +0xe7d4 0x91c0 +0xe7d5 0x91c1 +0xe7d6 0x91c9 +0xe7d7 0x91cb +0xe7d8 0x91d0 +0xe7d9 0x91d6 +0xe7da 0x91df +0xe7db 0x91e1 +0xe7dc 0x91db +0xe7dd 0x91fc +0xe7de 0x91f5 +0xe7df 0x91f6 +0xe7e0 0x921e +0xe7e1 0x91ff +0xe7e2 0x9214 +0xe7e3 0x922c +0xe7e4 0x9215 +0xe7e5 0x9211 +0xe7e6 0x925e +0xe7e7 0x9257 +0xe7e8 0x9245 +0xe7e9 0x9249 +0xe7ea 0x9264 +0xe7eb 0x9248 +0xe7ec 0x9295 +0xe7ed 0x923f +0xe7ee 0x924b +0xe7ef 0x9250 +0xe7f0 0x929c +0xe7f1 0x9296 +0xe7f2 0x9293 +0xe7f3 0x929b +0xe7f4 0x925a +0xe7f5 0x92cf +0xe7f6 0x92b9 +0xe7f7 0x92b7 +0xe7f8 0x92e9 +0xe7f9 0x930f +0xe7fa 0x92fa +0xe7fb 0x9344 +0xe7fc 0x932e +0xe840 0x9319 +0xe841 0x9322 +0xe842 0x931a +0xe843 0x9323 +0xe844 0x933a +0xe845 0x9335 +0xe846 0x933b +0xe847 0x935c +0xe848 0x9360 +0xe849 0x937c +0xe84a 0x936e +0xe84b 0x9356 +0xe84c 0x93b0 +0xe84d 0x93ac +0xe84e 0x93ad +0xe84f 0x9394 +0xe850 0x93b9 +0xe851 0x93d6 +0xe852 0x93d7 +0xe853 0x93e8 +0xe854 0x93e5 +0xe855 0x93d8 +0xe856 0x93c3 +0xe857 0x93dd +0xe858 0x93d0 +0xe859 0x93c8 +0xe85a 0x93e4 +0xe85b 0x941a +0xe85c 0x9414 +0xe85d 0x9413 +0xe85e 0x9403 +0xe85f 0x9407 +0xe860 0x9410 +0xe861 0x9436 +0xe862 0x942b +0xe863 0x9435 +0xe864 0x9421 +0xe865 0x943a +0xe866 0x9441 +0xe867 0x9452 +0xe868 0x9444 +0xe869 0x945b +0xe86a 0x9460 +0xe86b 0x9462 +0xe86c 0x945e +0xe86d 0x946a +0xe86e 0x9229 +0xe86f 0x9470 +0xe870 0x9475 +0xe871 0x9477 +0xe872 0x947d +0xe873 0x945a +0xe874 0x947c +0xe875 0x947e +0xe876 0x9481 +0xe877 0x947f +0xe878 0x9582 +0xe879 0x9587 +0xe87a 0x958a +0xe87b 0x9594 +0xe87c 0x9596 +0xe87d 0x9598 +0xe87e 0x9599 +0xe880 0x95a0 +0xe881 0x95a8 +0xe882 0x95a7 +0xe883 0x95ad +0xe884 0x95bc +0xe885 0x95bb +0xe886 0x95b9 +0xe887 0x95be +0xe888 0x95ca +0xe889 0x6ff6 +0xe88a 0x95c3 +0xe88b 0x95cd +0xe88c 0x95cc +0xe88d 0x95d5 +0xe88e 0x95d4 +0xe88f 0x95d6 +0xe890 0x95dc +0xe891 0x95e1 +0xe892 0x95e5 +0xe893 0x95e2 +0xe894 0x9621 +0xe895 0x9628 +0xe896 0x962e +0xe897 0x962f +0xe898 0x9642 +0xe899 0x964c +0xe89a 0x964f +0xe89b 0x964b +0xe89c 0x9677 +0xe89d 0x965c +0xe89e 0x965e +0xe89f 0x965d +0xe8a0 0x965f +0xe8a1 0x9666 +0xe8a2 0x9672 +0xe8a3 0x966c +0xe8a4 0x968d +0xe8a5 0x9698 +0xe8a6 0x9695 +0xe8a7 0x9697 +0xe8a8 0x96aa +0xe8a9 0x96a7 +0xe8aa 0x96b1 +0xe8ab 0x96b2 +0xe8ac 0x96b0 +0xe8ad 0x96b4 +0xe8ae 0x96b6 +0xe8af 0x96b8 +0xe8b0 0x96b9 +0xe8b1 0x96ce +0xe8b2 0x96cb +0xe8b3 0x96c9 +0xe8b4 0x96cd +0xe8b5 0x894d +0xe8b6 0x96dc +0xe8b7 0x970d +0xe8b8 0x96d5 +0xe8b9 0x96f9 +0xe8ba 0x9704 +0xe8bb 0x9706 +0xe8bc 0x9708 +0xe8bd 0x9713 +0xe8be 0x970e +0xe8bf 0x9711 +0xe8c0 0x970f +0xe8c1 0x9716 +0xe8c2 0x9719 +0xe8c3 0x9724 +0xe8c4 0x972a +0xe8c5 0x9730 +0xe8c6 0x9739 +0xe8c7 0x973d +0xe8c8 0x973e +0xe8c9 0x9744 +0xe8ca 0x9746 +0xe8cb 0x9748 +0xe8cc 0x9742 +0xe8cd 0x9749 +0xe8ce 0x975c +0xe8cf 0x9760 +0xe8d0 0x9764 +0xe8d1 0x9766 +0xe8d2 0x9768 +0xe8d3 0x52d2 +0xe8d4 0x976b +0xe8d5 0x9771 +0xe8d6 0x9779 +0xe8d7 0x9785 +0xe8d8 0x977c +0xe8d9 0x9781 +0xe8da 0x977a +0xe8db 0x9786 +0xe8dc 0x978b +0xe8dd 0x978f +0xe8de 0x9790 +0xe8df 0x979c +0xe8e0 0x97a8 +0xe8e1 0x97a6 +0xe8e2 0x97a3 +0xe8e3 0x97b3 +0xe8e4 0x97b4 +0xe8e5 0x97c3 +0xe8e6 0x97c6 +0xe8e7 0x97c8 +0xe8e8 0x97cb +0xe8e9 0x97dc +0xe8ea 0x97ed +0xe8eb 0x9f4f +0xe8ec 0x97f2 +0xe8ed 0x7adf +0xe8ee 0x97f6 +0xe8ef 0x97f5 +0xe8f0 0x980f +0xe8f1 0x980c +0xe8f2 0x9838 +0xe8f3 0x9824 +0xe8f4 0x9821 +0xe8f5 0x9837 +0xe8f6 0x983d +0xe8f7 0x9846 +0xe8f8 0x984f +0xe8f9 0x984b +0xe8fa 0x986b +0xe8fb 0x986f +0xe8fc 0x9870 +0xe940 0x9871 +0xe941 0x9874 +0xe942 0x9873 +0xe943 0x98aa +0xe944 0x98af +0xe945 0x98b1 +0xe946 0x98b6 +0xe947 0x98c4 +0xe948 0x98c3 +0xe949 0x98c6 +0xe94a 0x98e9 +0xe94b 0x98eb +0xe94c 0x9903 +0xe94d 0x9909 +0xe94e 0x9912 +0xe94f 0x9914 +0xe950 0x9918 +0xe951 0x9921 +0xe952 0x991d +0xe953 0x991e +0xe954 0x9924 +0xe955 0x9920 +0xe956 0x992c +0xe957 0x992e +0xe958 0x993d +0xe959 0x993e +0xe95a 0x9942 +0xe95b 0x9949 +0xe95c 0x9945 +0xe95d 0x9950 +0xe95e 0x994b +0xe95f 0x9951 +0xe960 0x9952 +0xe961 0x994c +0xe962 0x9955 +0xe963 0x9997 +0xe964 0x9998 +0xe965 0x99a5 +0xe966 0x99ad +0xe967 0x99ae +0xe968 0x99bc +0xe969 0x99df +0xe96a 0x99db +0xe96b 0x99dd +0xe96c 0x99d8 +0xe96d 0x99d1 +0xe96e 0x99ed +0xe96f 0x99ee +0xe970 0x99f1 +0xe971 0x99f2 +0xe972 0x99fb +0xe973 0x99f8 +0xe974 0x9a01 +0xe975 0x9a0f +0xe976 0x9a05 +0xe977 0x99e2 +0xe978 0x9a19 +0xe979 0x9a2b +0xe97a 0x9a37 +0xe97b 0x9a45 +0xe97c 0x9a42 +0xe97d 0x9a40 +0xe97e 0x9a43 +0xe980 0x9a3e +0xe981 0x9a55 +0xe982 0x9a4d +0xe983 0x9a5b +0xe984 0x9a57 +0xe985 0x9a5f +0xe986 0x9a62 +0xe987 0x9a65 +0xe988 0x9a64 +0xe989 0x9a69 +0xe98a 0x9a6b +0xe98b 0x9a6a +0xe98c 0x9aad +0xe98d 0x9ab0 +0xe98e 0x9abc +0xe98f 0x9ac0 +0xe990 0x9acf +0xe991 0x9ad1 +0xe992 0x9ad3 +0xe993 0x9ad4 +0xe994 0x9ade +0xe995 0x9adf +0xe996 0x9ae2 +0xe997 0x9ae3 +0xe998 0x9ae6 +0xe999 0x9aef +0xe99a 0x9aeb +0xe99b 0x9aee +0xe99c 0x9af4 +0xe99d 0x9af1 +0xe99e 0x9af7 +0xe99f 0x9afb +0xe9a0 0x9b06 +0xe9a1 0x9b18 +0xe9a2 0x9b1a +0xe9a3 0x9b1f +0xe9a4 0x9b22 +0xe9a5 0x9b23 +0xe9a6 0x9b25 +0xe9a7 0x9b27 +0xe9a8 0x9b28 +0xe9a9 0x9b29 +0xe9aa 0x9b2a +0xe9ab 0x9b2e +0xe9ac 0x9b2f +0xe9ad 0x9b32 +0xe9ae 0x9b44 +0xe9af 0x9b43 +0xe9b0 0x9b4f +0xe9b1 0x9b4d +0xe9b2 0x9b4e +0xe9b3 0x9b51 +0xe9b4 0x9b58 +0xe9b5 0x9b74 +0xe9b6 0x9b93 +0xe9b7 0x9b83 +0xe9b8 0x9b91 +0xe9b9 0x9b96 +0xe9ba 0x9b97 +0xe9bb 0x9b9f +0xe9bc 0x9ba0 +0xe9bd 0x9ba8 +0xe9be 0x9bb4 +0xe9bf 0x9bc0 +0xe9c0 0x9bca +0xe9c1 0x9bb9 +0xe9c2 0x9bc6 +0xe9c3 0x9bcf +0xe9c4 0x9bd1 +0xe9c5 0x9bd2 +0xe9c6 0x9be3 +0xe9c7 0x9be2 +0xe9c8 0x9be4 +0xe9c9 0x9bd4 +0xe9ca 0x9be1 +0xe9cb 0x9c3a +0xe9cc 0x9bf2 +0xe9cd 0x9bf1 +0xe9ce 0x9bf0 +0xe9cf 0x9c15 +0xe9d0 0x9c14 +0xe9d1 0x9c09 +0xe9d2 0x9c13 +0xe9d3 0x9c0c +0xe9d4 0x9c06 +0xe9d5 0x9c08 +0xe9d6 0x9c12 +0xe9d7 0x9c0a +0xe9d8 0x9c04 +0xe9d9 0x9c2e +0xe9da 0x9c1b +0xe9db 0x9c25 +0xe9dc 0x9c24 +0xe9dd 0x9c21 +0xe9de 0x9c30 +0xe9df 0x9c47 +0xe9e0 0x9c32 +0xe9e1 0x9c46 +0xe9e2 0x9c3e +0xe9e3 0x9c5a +0xe9e4 0x9c60 +0xe9e5 0x9c67 +0xe9e6 0x9c76 +0xe9e7 0x9c78 +0xe9e8 0x9ce7 +0xe9e9 0x9cec +0xe9ea 0x9cf0 +0xe9eb 0x9d09 +0xe9ec 0x9d08 +0xe9ed 0x9ceb +0xe9ee 0x9d03 +0xe9ef 0x9d06 +0xe9f0 0x9d2a +0xe9f1 0x9d26 +0xe9f2 0x9daf +0xe9f3 0x9d23 +0xe9f4 0x9d1f +0xe9f5 0x9d44 +0xe9f6 0x9d15 +0xe9f7 0x9d12 +0xe9f8 0x9d41 +0xe9f9 0x9d3f +0xe9fa 0x9d3e +0xe9fb 0x9d46 +0xe9fc 0x9d48 +0xea40 0x9d5d +0xea41 0x9d5e +0xea42 0x9d64 +0xea43 0x9d51 +0xea44 0x9d50 +0xea45 0x9d59 +0xea46 0x9d72 +0xea47 0x9d89 +0xea48 0x9d87 +0xea49 0x9dab +0xea4a 0x9d6f +0xea4b 0x9d7a +0xea4c 0x9d9a +0xea4d 0x9da4 +0xea4e 0x9da9 +0xea4f 0x9db2 +0xea50 0x9dc4 +0xea51 0x9dc1 +0xea52 0x9dbb +0xea53 0x9db8 +0xea54 0x9dba +0xea55 0x9dc6 +0xea56 0x9dcf +0xea57 0x9dc2 +0xea58 0x9dd9 +0xea59 0x9dd3 +0xea5a 0x9df8 +0xea5b 0x9de6 +0xea5c 0x9ded +0xea5d 0x9def +0xea5e 0x9dfd +0xea5f 0x9e1a +0xea60 0x9e1b +0xea61 0x9e1e +0xea62 0x9e75 +0xea63 0x9e79 +0xea64 0x9e7d +0xea65 0x9e81 +0xea66 0x9e88 +0xea67 0x9e8b +0xea68 0x9e8c +0xea69 0x9e92 +0xea6a 0x9e95 +0xea6b 0x9e91 +0xea6c 0x9e9d +0xea6d 0x9ea5 +0xea6e 0x9ea9 +0xea6f 0x9eb8 +0xea70 0x9eaa +0xea71 0x9ead +0xea72 0x9761 +0xea73 0x9ecc +0xea74 0x9ece +0xea75 0x9ecf +0xea76 0x9ed0 +0xea77 0x9ed4 +0xea78 0x9edc +0xea79 0x9ede +0xea7a 0x9edd +0xea7b 0x9ee0 +0xea7c 0x9ee5 +0xea7d 0x9ee8 +0xea7e 0x9eef +0xea80 0x9ef4 +0xea81 0x9ef6 +0xea82 0x9ef7 +0xea83 0x9ef9 +0xea84 0x9efb +0xea85 0x9efc +0xea86 0x9efd +0xea87 0x9f07 +0xea88 0x9f08 +0xea89 0x76b7 +0xea8a 0x9f15 +0xea8b 0x9f21 +0xea8c 0x9f2c +0xea8d 0x9f3e +0xea8e 0x9f4a +0xea8f 0x9f52 +0xea90 0x9f54 +0xea91 0x9f63 +0xea92 0x9f5f +0xea93 0x9f60 +0xea94 0x9f61 +0xea95 0x9f66 +0xea96 0x9f67 +0xea97 0x9f6c +0xea98 0x9f6a +0xea99 0x9f77 +0xea9a 0x9f72 +0xea9b 0x9f76 +0xea9c 0x9f95 +0xea9d 0x9f9c +0xea9e 0x9fa0 +0xea9f 0x582f +0xeaa0 0x69c7 +0xeaa1 0x9059 +0xeaa2 0x7464 +0xeaa3 0x51dc +0xeaa4 0x7199 +0xed40 0x7e8a +0xed41 0x891c +0xed42 0x9348 +0xed43 0x9288 +0xed44 0x84dc +0xed45 0x4fc9 +0xed46 0x70bb +0xed47 0x6631 +0xed48 0x68c8 +0xed49 0x92f9 +0xed4a 0x66fb +0xed4b 0x5f45 +0xed4c 0x4e28 +0xed4d 0x4ee1 +0xed4e 0x4efc +0xed4f 0x4f00 +0xed50 0x4f03 +0xed51 0x4f39 +0xed52 0x4f56 +0xed53 0x4f92 +0xed54 0x4f8a +0xed55 0x4f9a +0xed56 0x4f94 +0xed57 0x4fcd +0xed58 0x5040 +0xed59 0x5022 +0xed5a 0x4fff +0xed5b 0x501e +0xed5c 0x5046 +0xed5d 0x5070 +0xed5e 0x5042 +0xed5f 0x5094 +0xed60 0x50f4 +0xed61 0x50d8 +0xed62 0x514a +0xed63 0x5164 +0xed64 0x519d +0xed65 0x51be +0xed66 0x51ec +0xed67 0x5215 +0xed68 0x529c +0xed69 0x52a6 +0xed6a 0x52c0 +0xed6b 0x52db +0xed6c 0x5300 +0xed6d 0x5307 +0xed6e 0x5324 +0xed6f 0x5372 +0xed70 0x5393 +0xed71 0x53b2 +0xed72 0x53dd +0xed73 0xfa0e +0xed74 0x549c +0xed75 0x548a +0xed76 0x54a9 +0xed77 0x54ff +0xed78 0x5586 +0xed79 0x5759 +0xed7a 0x5765 +0xed7b 0x57ac +0xed7c 0x57c8 +0xed7d 0x57c7 +0xed7e 0xfa0f +0xed80 0xfa10 +0xed81 0x589e +0xed82 0x58b2 +0xed83 0x590b +0xed84 0x5953 +0xed85 0x595b +0xed86 0x595d +0xed87 0x5963 +0xed88 0x59a4 +0xed89 0x59ba +0xed8a 0x5b56 +0xed8b 0x5bc0 +0xed8c 0x752f +0xed8d 0x5bd8 +0xed8e 0x5bec +0xed8f 0x5c1e +0xed90 0x5ca6 +0xed91 0x5cba +0xed92 0x5cf5 +0xed93 0x5d27 +0xed94 0x5d53 +0xed95 0xfa11 +0xed96 0x5d42 +0xed97 0x5d6d +0xed98 0x5db8 +0xed99 0x5db9 +0xed9a 0x5dd0 +0xed9b 0x5f21 +0xed9c 0x5f34 +0xed9d 0x5f67 +0xed9e 0x5fb7 +0xed9f 0x5fde +0xeda0 0x605d +0xeda1 0x6085 +0xeda2 0x608a +0xeda3 0x60de +0xeda4 0x60d5 +0xeda5 0x6120 +0xeda6 0x60f2 +0xeda7 0x6111 +0xeda8 0x6137 +0xeda9 0x6130 +0xedaa 0x6198 +0xedab 0x6213 +0xedac 0x62a6 +0xedad 0x63f5 +0xedae 0x6460 +0xedaf 0x649d +0xedb0 0x64ce +0xedb1 0x654e +0xedb2 0x6600 +0xedb3 0x6615 +0xedb4 0x663b +0xedb5 0x6609 +0xedb6 0x662e +0xedb7 0x661e +0xedb8 0x6624 +0xedb9 0x6665 +0xedba 0x6657 +0xedbb 0x6659 +0xedbc 0xfa12 +0xedbd 0x6673 +0xedbe 0x6699 +0xedbf 0x66a0 +0xedc0 0x66b2 +0xedc1 0x66bf +0xedc2 0x66fa +0xedc3 0x670e +0xedc4 0xf929 +0xedc5 0x6766 +0xedc6 0x67bb +0xedc7 0x6852 +0xedc8 0x67c0 +0xedc9 0x6801 +0xedca 0x6844 +0xedcb 0x68cf +0xedcc 0xfa13 +0xedcd 0x6968 +0xedce 0xfa14 +0xedcf 0x6998 +0xedd0 0x69e2 +0xedd1 0x6a30 +0xedd2 0x6a6b +0xedd3 0x6a46 +0xedd4 0x6a73 +0xedd5 0x6a7e +0xedd6 0x6ae2 +0xedd7 0x6ae4 +0xedd8 0x6bd6 +0xedd9 0x6c3f +0xedda 0x6c5c +0xeddb 0x6c86 +0xeddc 0x6c6f +0xeddd 0x6cda +0xedde 0x6d04 +0xeddf 0x6d87 +0xede0 0x6d6f +0xede1 0x6d96 +0xede2 0x6dac +0xede3 0x6dcf +0xede4 0x6df8 +0xede5 0x6df2 +0xede6 0x6dfc +0xede7 0x6e39 +0xede8 0x6e5c +0xede9 0x6e27 +0xedea 0x6e3c +0xedeb 0x6ebf +0xedec 0x6f88 +0xeded 0x6fb5 +0xedee 0x6ff5 +0xedef 0x7005 +0xedf0 0x7007 +0xedf1 0x7028 +0xedf2 0x7085 +0xedf3 0x70ab +0xedf4 0x710f +0xedf5 0x7104 +0xedf6 0x715c +0xedf7 0x7146 +0xedf8 0x7147 +0xedf9 0xfa15 +0xedfa 0x71c1 +0xedfb 0x71fe +0xedfc 0x72b1 +0xee40 0x72be +0xee41 0x7324 +0xee42 0xfa16 +0xee43 0x7377 +0xee44 0x73bd +0xee45 0x73c9 +0xee46 0x73d6 +0xee47 0x73e3 +0xee48 0x73d2 +0xee49 0x7407 +0xee4a 0x73f5 +0xee4b 0x7426 +0xee4c 0x742a +0xee4d 0x7429 +0xee4e 0x742e +0xee4f 0x7462 +0xee50 0x7489 +0xee51 0x749f +0xee52 0x7501 +0xee53 0x756f +0xee54 0x7682 +0xee55 0x769c +0xee56 0x769e +0xee57 0x769b +0xee58 0x76a6 +0xee59 0xfa17 +0xee5a 0x7746 +0xee5b 0x52af +0xee5c 0x7821 +0xee5d 0x784e +0xee5e 0x7864 +0xee5f 0x787a +0xee60 0x7930 +0xee61 0xfa18 +0xee62 0xfa19 +0xee63 0xfa1a +0xee64 0x7994 +0xee65 0xfa1b +0xee66 0x799b +0xee67 0x7ad1 +0xee68 0x7ae7 +0xee69 0xfa1c +0xee6a 0x7aeb +0xee6b 0x7b9e +0xee6c 0xfa1d +0xee6d 0x7d48 +0xee6e 0x7d5c +0xee6f 0x7db7 +0xee70 0x7da0 +0xee71 0x7dd6 +0xee72 0x7e52 +0xee73 0x7f47 +0xee74 0x7fa1 +0xee75 0xfa1e +0xee76 0x8301 +0xee77 0x8362 +0xee78 0x837f +0xee79 0x83c7 +0xee7a 0x83f6 +0xee7b 0x8448 +0xee7c 0x84b4 +0xee7d 0x8553 +0xee7e 0x8559 +0xee80 0x856b +0xee81 0xfa1f +0xee82 0x85b0 +0xee83 0xfa20 +0xee84 0xfa21 +0xee85 0x8807 +0xee86 0x88f5 +0xee87 0x8a12 +0xee88 0x8a37 +0xee89 0x8a79 +0xee8a 0x8aa7 +0xee8b 0x8abe +0xee8c 0x8adf +0xee8d 0xfa22 +0xee8e 0x8af6 +0xee8f 0x8b53 +0xee90 0x8b7f +0xee91 0x8cf0 +0xee92 0x8cf4 +0xee93 0x8d12 +0xee94 0x8d76 +0xee95 0xfa23 +0xee96 0x8ecf +0xee97 0xfa24 +0xee98 0xfa25 +0xee99 0x9067 +0xee9a 0x90de +0xee9b 0xfa26 +0xee9c 0x9115 +0xee9d 0x9127 +0xee9e 0x91da +0xee9f 0x91d7 +0xeea0 0x91de +0xeea1 0x91ed +0xeea2 0x91ee +0xeea3 0x91e4 +0xeea4 0x91e5 +0xeea5 0x9206 +0xeea6 0x9210 +0xeea7 0x920a +0xeea8 0x923a +0xeea9 0x9240 +0xeeaa 0x923c +0xeeab 0x924e +0xeeac 0x9259 +0xeead 0x9251 +0xeeae 0x9239 +0xeeaf 0x9267 +0xeeb0 0x92a7 +0xeeb1 0x9277 +0xeeb2 0x9278 +0xeeb3 0x92e7 +0xeeb4 0x92d7 +0xeeb5 0x92d9 +0xeeb6 0x92d0 +0xeeb7 0xfa27 +0xeeb8 0x92d5 +0xeeb9 0x92e0 +0xeeba 0x92d3 +0xeebb 0x9325 +0xeebc 0x9321 +0xeebd 0x92fb +0xeebe 0xfa28 +0xeebf 0x931e +0xeec0 0x92ff +0xeec1 0x931d +0xeec2 0x9302 +0xeec3 0x9370 +0xeec4 0x9357 +0xeec5 0x93a4 +0xeec6 0x93c6 +0xeec7 0x93de +0xeec8 0x93f8 +0xeec9 0x9431 +0xeeca 0x9445 +0xeecb 0x9448 +0xeecc 0x9592 +0xeecd 0xf9dc +0xeece 0xfa29 +0xeecf 0x969d +0xeed0 0x96af +0xeed1 0x9733 +0xeed2 0x973b +0xeed3 0x9743 +0xeed4 0x974d +0xeed5 0x974f +0xeed6 0x9751 +0xeed7 0x9755 +0xeed8 0x9857 +0xeed9 0x9865 +0xeeda 0xfa2a +0xeedb 0xfa2b +0xeedc 0x9927 +0xeedd 0xfa2c +0xeede 0x999e +0xeedf 0x9a4e +0xeee0 0x9ad9 +0xeee1 0x9adc +0xeee2 0x9b75 +0xeee3 0x9b72 +0xeee4 0x9b8f +0xeee5 0x9bb1 +0xeee6 0x9bbb +0xeee7 0x9c00 +0xeee8 0x9d70 +0xeee9 0x9d6b +0xeeea 0xfa2d +0xeeeb 0x9e19 +0xeeec 0x9ed1 +0xeeef 0x2170 +0xeef0 0x2171 +0xeef1 0x2172 +0xeef2 0x2173 +0xeef3 0x2174 +0xeef4 0x2175 +0xeef5 0x2176 +0xeef6 0x2177 +0xeef7 0x2178 +0xeef8 0x2179 +0xeef9 0x3052 +0xeefa 0x00a6 +0xeefb 0xff07 +0xeefc 0xff02 +0xfa40 0x2170 +0xfa41 0x2171 +0xfa42 0x2172 +0xfa43 0x2173 +0xfa44 0x2174 +0xfa45 0x2175 +0xfa46 0x2176 +0xfa47 0x2177 +0xfa48 0x2178 +0xfa49 0x2179 +0xfa4a 0x2160 +0xfa4b 0x2161 +0xfa4c 0x2162 +0xfa4d 0x2163 +0xfa4e 0x2164 +0xfa4f 0x2165 +0xfa50 0x2166 +0xfa51 0x2167 +0xfa52 0x2168 +0xfa53 0x2169 +0xfa54 0x3052 +0xfa55 0x00a6 +0xfa56 0xff07 +0xfa57 0xff02 +0xfa58 0x3231 +0xfa59 0x2116 +0xfa5a 0x2121 +0xfa5b 0x306e +0xfa5c 0x7e8a +0xfa5d 0x891c +0xfa5e 0x9348 +0xfa5f 0x9288 +0xfa60 0x84dc +0xfa61 0x4fc9 +0xfa62 0x70bb +0xfa63 0x6631 +0xfa64 0x68c8 +0xfa65 0x92f9 +0xfa66 0x66fb +0xfa67 0x5f45 +0xfa68 0x4e28 +0xfa69 0x4ee1 +0xfa6a 0x4efc +0xfa6b 0x4f00 +0xfa6c 0x4f03 +0xfa6d 0x4f39 +0xfa6e 0x4f56 +0xfa6f 0x4f92 +0xfa70 0x4f8a +0xfa71 0x4f9a +0xfa72 0x4f94 +0xfa73 0x4fcd +0xfa74 0x5040 +0xfa75 0x5022 +0xfa76 0x4fff +0xfa77 0x501e +0xfa78 0x5046 +0xfa79 0x5070 +0xfa7a 0x5042 +0xfa7b 0x5094 +0xfa7c 0x50f4 +0xfa7d 0x50d8 +0xfa7e 0x514a +0xfa80 0x5164 +0xfa81 0x519d +0xfa82 0x51be +0xfa83 0x51ec +0xfa84 0x5215 +0xfa85 0x529c +0xfa86 0x52a6 +0xfa87 0x52c0 +0xfa88 0x52db +0xfa89 0x5300 +0xfa8a 0x5307 +0xfa8b 0x5324 +0xfa8c 0x5372 +0xfa8d 0x5393 +0xfa8e 0x53b2 +0xfa8f 0x53dd +0xfa90 0xfa0e +0xfa91 0x549c +0xfa92 0x548a +0xfa93 0x54a9 +0xfa94 0x54ff +0xfa95 0x5586 +0xfa96 0x5759 +0xfa97 0x5765 +0xfa98 0x57ac +0xfa99 0x57c8 +0xfa9a 0x57c7 +0xfa9b 0xfa0f +0xfa9c 0xfa10 +0xfa9d 0x589e +0xfa9e 0x58b2 +0xfa9f 0x590b +0xfaa0 0x5953 +0xfaa1 0x595b +0xfaa2 0x595d +0xfaa3 0x5963 +0xfaa4 0x59a4 +0xfaa5 0x59ba +0xfaa6 0x5b56 +0xfaa7 0x5bc0 +0xfaa8 0x752f +0xfaa9 0x5bd8 +0xfaaa 0x5bec +0xfaab 0x5c1e +0xfaac 0x5ca6 +0xfaad 0x5cba +0xfaae 0x5cf5 +0xfaaf 0x5d27 +0xfab0 0x5d53 +0xfab1 0xfa11 +0xfab2 0x5d42 +0xfab3 0x5d6d +0xfab4 0x5db8 +0xfab5 0x5db9 +0xfab6 0x5dd0 +0xfab7 0x5f21 +0xfab8 0x5f34 +0xfab9 0x5f67 +0xfaba 0x5fb7 +0xfabb 0x5fde +0xfabc 0x605d +0xfabd 0x6085 +0xfabe 0x608a +0xfabf 0x60de +0xfac0 0x60d5 +0xfac1 0x6120 +0xfac2 0x60f2 +0xfac3 0x6111 +0xfac4 0x6137 +0xfac5 0x6130 +0xfac6 0x6198 +0xfac7 0x6213 +0xfac8 0x62a6 +0xfac9 0x63f5 +0xfaca 0x6460 +0xfacb 0x649d +0xfacc 0x64ce +0xfacd 0x654e +0xface 0x6600 +0xfacf 0x6615 +0xfad0 0x663b +0xfad1 0x6609 +0xfad2 0x662e +0xfad3 0x661e +0xfad4 0x6624 +0xfad5 0x6665 +0xfad6 0x6657 +0xfad7 0x6659 +0xfad8 0xfa12 +0xfad9 0x6673 +0xfada 0x6699 +0xfadb 0x66a0 +0xfadc 0x66b2 +0xfadd 0x66bf +0xfade 0x66fa +0xfadf 0x670e +0xfae0 0xf929 +0xfae1 0x6766 +0xfae2 0x67bb +0xfae3 0x6852 +0xfae4 0x67c0 +0xfae5 0x6801 +0xfae6 0x6844 +0xfae7 0x68cf +0xfae8 0xfa13 +0xfae9 0x6968 +0xfaea 0xfa14 +0xfaeb 0x6998 +0xfaec 0x69e2 +0xfaed 0x6a30 +0xfaee 0x6a6b +0xfaef 0x6a46 +0xfaf0 0x6a73 +0xfaf1 0x6a7e +0xfaf2 0x6ae2 +0xfaf3 0x6ae4 +0xfaf4 0x6bd6 +0xfaf5 0x6c3f +0xfaf6 0x6c5c +0xfaf7 0x6c86 +0xfaf8 0x6c6f +0xfaf9 0x6cda +0xfafa 0x6d04 +0xfafb 0x6d87 +0xfafc 0x6d6f +0xfb40 0x6d96 +0xfb41 0x6dac +0xfb42 0x6dcf +0xfb43 0x6df8 +0xfb44 0x6df2 +0xfb45 0x6dfc +0xfb46 0x6e39 +0xfb47 0x6e5c +0xfb48 0x6e27 +0xfb49 0x6e3c +0xfb4a 0x6ebf +0xfb4b 0x6f88 +0xfb4c 0x6fb5 +0xfb4d 0x6ff5 +0xfb4e 0x7005 +0xfb4f 0x7007 +0xfb50 0x7028 +0xfb51 0x7085 +0xfb52 0x70ab +0xfb53 0x710f +0xfb54 0x7104 +0xfb55 0x715c +0xfb56 0x7146 +0xfb57 0x7147 +0xfb58 0xfa15 +0xfb59 0x71c1 +0xfb5a 0x71fe +0xfb5b 0x72b1 +0xfb5c 0x72be +0xfb5d 0x7324 +0xfb5e 0xfa16 +0xfb5f 0x7377 +0xfb60 0x73bd +0xfb61 0x73c9 +0xfb62 0x73d6 +0xfb63 0x73e3 +0xfb64 0x73d2 +0xfb65 0x7407 +0xfb66 0x73f5 +0xfb67 0x7426 +0xfb68 0x742a +0xfb69 0x7429 +0xfb6a 0x742e +0xfb6b 0x7462 +0xfb6c 0x7489 +0xfb6d 0x749f +0xfb6e 0x7501 +0xfb6f 0x756f +0xfb70 0x7682 +0xfb71 0x769c +0xfb72 0x769e +0xfb73 0x769b +0xfb74 0x76a6 +0xfb75 0xfa17 +0xfb76 0x7746 +0xfb77 0x52af +0xfb78 0x7821 +0xfb79 0x784e +0xfb7a 0x7864 +0xfb7b 0x787a +0xfb7c 0x7930 +0xfb7d 0xfa18 +0xfb7e 0xfa19 +0xfb80 0xfa1a +0xfb81 0x7994 +0xfb82 0xfa1b +0xfb83 0x799b +0xfb84 0x7ad1 +0xfb85 0x7ae7 +0xfb86 0xfa1c +0xfb87 0x7aeb +0xfb88 0x7b9e +0xfb89 0xfa1d +0xfb8a 0x7d48 +0xfb8b 0x7d5c +0xfb8c 0x7db7 +0xfb8d 0x7da0 +0xfb8e 0x7dd6 +0xfb8f 0x7e52 +0xfb90 0x7f47 +0xfb91 0x7fa1 +0xfb92 0xfa1e +0xfb93 0x8301 +0xfb94 0x8362 +0xfb95 0x837f +0xfb96 0x83c7 +0xfb97 0x83f6 +0xfb98 0x8448 +0xfb99 0x84b4 +0xfb9a 0x8553 +0xfb9b 0x8559 +0xfb9c 0x856b +0xfb9d 0xfa1f +0xfb9e 0x85b0 +0xfb9f 0xfa20 +0xfba0 0xfa21 +0xfba1 0x8807 +0xfba2 0x88f5 +0xfba3 0x8a12 +0xfba4 0x8a37 +0xfba5 0x8a79 +0xfba6 0x8aa7 +0xfba7 0x8abe +0xfba8 0x8adf +0xfba9 0xfa22 +0xfbaa 0x8af6 +0xfbab 0x8b53 +0xfbac 0x8b7f +0xfbad 0x8cf0 +0xfbae 0x8cf4 +0xfbaf 0x8d12 +0xfbb0 0x8d76 +0xfbb1 0xfa23 +0xfbb2 0x8ecf +0xfbb3 0xfa24 +0xfbb4 0xfa25 +0xfbb5 0x9067 +0xfbb6 0x90de +0xfbb7 0xfa26 +0xfbb8 0x9115 +0xfbb9 0x9127 +0xfbba 0x91da +0xfbbb 0x91d7 +0xfbbc 0x91de +0xfbbd 0x91ed +0xfbbe 0x91ee +0xfbbf 0x91e4 +0xfbc0 0x91e5 +0xfbc1 0x9206 +0xfbc2 0x9210 +0xfbc3 0x920a +0xfbc4 0x923a +0xfbc5 0x9240 +0xfbc6 0x923c +0xfbc7 0x924e +0xfbc8 0x9259 +0xfbc9 0x9251 +0xfbca 0x9239 +0xfbcb 0x9267 +0xfbcc 0x92a7 +0xfbcd 0x9277 +0xfbce 0x9278 +0xfbcf 0x92e7 +0xfbd0 0x92d7 +0xfbd1 0x92d9 +0xfbd2 0x92d0 +0xfbd3 0xfa27 +0xfbd4 0x92d5 +0xfbd5 0x92e0 +0xfbd6 0x92d3 +0xfbd7 0x9325 +0xfbd8 0x9321 +0xfbd9 0x92fb +0xfbda 0xfa28 +0xfbdb 0x931e +0xfbdc 0x92ff +0xfbdd 0x931d +0xfbde 0x9302 +0xfbdf 0x9370 +0xfbe0 0x9357 +0xfbe1 0x93a4 +0xfbe2 0x93c6 +0xfbe3 0x93de +0xfbe4 0x93f8 +0xfbe5 0x9431 +0xfbe6 0x9445 +0xfbe7 0x9448 +0xfbe8 0x9592 +0xfbe9 0xf9dc +0xfbea 0xfa29 +0xfbeb 0x969d +0xfbec 0x96af +0xfbed 0x9733 +0xfbee 0x973b +0xfbef 0x9743 +0xfbf0 0x974d +0xfbf1 0x974f +0xfbf2 0x9751 +0xfbf3 0x9755 +0xfbf4 0x9857 +0xfbf5 0x9865 +0xfbf6 0xfa2a +0xfbf7 0xfa2b +0xfbf8 0x9927 +0xfbf9 0xfa2c +0xfbfa 0x999e +0xfbfb 0x9a4e +0xfbfc 0x9ad9 +0xfc40 0x9adc +0xfc41 0x9b75 +0xfc42 0x9b72 +0xfc43 0x9b8f +0xfc44 0x9bb1 +0xfc45 0x9bbb +0xfc46 0x9c00 +0xfc47 0x9d70 +0xfc48 0x9d6b +0xfc49 0xfa2d +0xfc4a 0x9e19 +0xfc4b 0x9ed1 diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/PCK.nr --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/PCK.nr Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,398 @@ +0x8790 0x2252 +0x8791 0x2261 +0x8792 0x222b +0x8795 0x221a +0x8796 0x22a5 +0x8797 0x2220 +0x879a 0x2235 +0x879b 0x2229 +0x879c 0x222a +0xed40 0x7e8a +0xed41 0x891c +0xed42 0x9348 +0xed43 0x9288 +0xed44 0x84dc +0xed45 0x4fc9 +0xed46 0x70bb +0xed47 0x6631 +0xed48 0x68c8 +0xed49 0x92f9 +0xed4a 0x66fb +0xed4b 0x5f45 +0xed4c 0x4e28 +0xed4d 0x4ee1 +0xed4e 0x4efc +0xed4f 0x4f00 +0xed50 0x4f03 +0xed51 0x4f39 +0xed52 0x4f56 +0xed53 0x4f92 +0xed54 0x4f8a +0xed55 0x4f9a +0xed56 0x4f94 +0xed57 0x4fcd +0xed58 0x5040 +0xed59 0x5022 +0xed5a 0x4fff +0xed5b 0x501e +0xed5c 0x5046 +0xed5d 0x5070 +0xed5e 0x5042 +0xed5f 0x5094 +0xed60 0x50f4 +0xed61 0x50d8 +0xed62 0x514a +0xed63 0x5164 +0xed64 0x519d +0xed65 0x51be +0xed66 0x51ec +0xed67 0x5215 +0xed68 0x529c +0xed69 0x52a6 +0xed6a 0x52c0 +0xed6b 0x52db +0xed6c 0x5300 +0xed6d 0x5307 +0xed6e 0x5324 +0xed6f 0x5372 +0xed70 0x5393 +0xed71 0x53b2 +0xed72 0x53dd +0xed73 0xfa0e +0xed74 0x549c +0xed75 0x548a +0xed76 0x54a9 +0xed77 0x54ff +0xed78 0x5586 +0xed79 0x5759 +0xed7a 0x5765 +0xed7b 0x57ac +0xed7c 0x57c8 +0xed7d 0x57c7 +0xed7e 0xfa0f +0xed80 0xfa10 +0xed81 0x589e +0xed82 0x58b2 +0xed83 0x590b +0xed84 0x5953 +0xed85 0x595b +0xed86 0x595d +0xed87 0x5963 +0xed88 0x59a4 +0xed89 0x59ba +0xed8a 0x5b56 +0xed8b 0x5bc0 +0xed8c 0x752f +0xed8d 0x5bd8 +0xed8e 0x5bec +0xed8f 0x5c1e +0xed90 0x5ca6 +0xed91 0x5cba +0xed92 0x5cf5 +0xed93 0x5d27 +0xed94 0x5d53 +0xed95 0xfa11 +0xed96 0x5d42 +0xed97 0x5d6d +0xed98 0x5db8 +0xed99 0x5db9 +0xed9a 0x5dd0 +0xed9b 0x5f21 +0xed9c 0x5f34 +0xed9d 0x5f67 +0xed9e 0x5fb7 +0xed9f 0x5fde +0xeda0 0x605d +0xeda1 0x6085 +0xeda2 0x608a +0xeda3 0x60de +0xeda4 0x60d5 +0xeda5 0x6120 +0xeda6 0x60f2 +0xeda7 0x6111 +0xeda8 0x6137 +0xeda9 0x6130 +0xedaa 0x6198 +0xedab 0x6213 +0xedac 0x62a6 +0xedad 0x63f5 +0xedae 0x6460 +0xedaf 0x649d +0xedb0 0x64ce +0xedb1 0x654e +0xedb2 0x6600 +0xedb3 0x6615 +0xedb4 0x663b +0xedb5 0x6609 +0xedb6 0x662e +0xedb7 0x661e +0xedb8 0x6624 +0xedb9 0x6665 +0xedba 0x6657 +0xedbb 0x6659 +0xedbc 0xfa12 +0xedbd 0x6673 +0xedbe 0x6699 +0xedbf 0x66a0 +0xedc0 0x66b2 +0xedc1 0x66bf +0xedc2 0x66fa +0xedc3 0x670e +0xedc4 0xf929 +0xedc5 0x6766 +0xedc6 0x67bb +0xedc7 0x6852 +0xedc8 0x67c0 +0xedc9 0x6801 +0xedca 0x6844 +0xedcb 0x68cf +0xedcc 0xfa13 +0xedcd 0x6968 +0xedce 0xfa14 +0xedcf 0x6998 +0xedd0 0x69e2 +0xedd1 0x6a30 +0xedd2 0x6a6b +0xedd3 0x6a46 +0xedd4 0x6a73 +0xedd5 0x6a7e +0xedd6 0x6ae2 +0xedd7 0x6ae4 +0xedd8 0x6bd6 +0xedd9 0x6c3f +0xedda 0x6c5c +0xeddb 0x6c86 +0xeddc 0x6c6f +0xeddd 0x6cda +0xedde 0x6d04 +0xeddf 0x6d87 +0xede0 0x6d6f +0xede1 0x6d96 +0xede2 0x6dac +0xede3 0x6dcf +0xede4 0x6df8 +0xede5 0x6df2 +0xede6 0x6dfc +0xede7 0x6e39 +0xede8 0x6e5c +0xede9 0x6e27 +0xedea 0x6e3c +0xedeb 0x6ebf +0xedec 0x6f88 +0xeded 0x6fb5 +0xedee 0x6ff5 +0xedef 0x7005 +0xedf0 0x7007 +0xedf1 0x7028 +0xedf2 0x7085 +0xedf3 0x70ab +0xedf4 0x710f +0xedf5 0x7104 +0xedf6 0x715c +0xedf7 0x7146 +0xedf8 0x7147 +0xedf9 0xfa15 +0xedfa 0x71c1 +0xedfb 0x71fe +0xedfc 0x72b1 +0xee40 0x72be +0xee41 0x7324 +0xee42 0xfa16 +0xee43 0x7377 +0xee44 0x73bd +0xee45 0x73c9 +0xee46 0x73d6 +0xee47 0x73e3 +0xee48 0x73d2 +0xee49 0x7407 +0xee4a 0x73f5 +0xee4b 0x7426 +0xee4c 0x742a +0xee4d 0x7429 +0xee4e 0x742e +0xee4f 0x7462 +0xee50 0x7489 +0xee51 0x749f +0xee52 0x7501 +0xee53 0x756f +0xee54 0x7682 +0xee55 0x769c +0xee56 0x769e +0xee57 0x769b +0xee58 0x76a6 +0xee59 0xfa17 +0xee5a 0x7746 +0xee5b 0x52af +0xee5c 0x7821 +0xee5d 0x784e +0xee5e 0x7864 +0xee5f 0x787a +0xee60 0x7930 +0xee61 0xfa18 +0xee62 0xfa19 +0xee63 0xfa1a +0xee64 0x7994 +0xee65 0xfa1b +0xee66 0x799b +0xee67 0x7ad1 +0xee68 0x7ae7 +0xee69 0xfa1c +0xee6a 0x7aeb +0xee6b 0x7b9e +0xee6c 0xfa1d +0xee6d 0x7d48 +0xee6e 0x7d5c +0xee6f 0x7db7 +0xee70 0x7da0 +0xee71 0x7dd6 +0xee72 0x7e52 +0xee73 0x7f47 +0xee74 0x7fa1 +0xee75 0xfa1e +0xee76 0x8301 +0xee77 0x8362 +0xee78 0x837f +0xee79 0x83c7 +0xee7a 0x83f6 +0xee7b 0x8448 +0xee7c 0x84b4 +0xee7d 0x8553 +0xee7e 0x8559 +0xee80 0x856b +0xee81 0xfa1f +0xee82 0x85b0 +0xee83 0xfa20 +0xee84 0xfa21 +0xee85 0x8807 +0xee86 0x88f5 +0xee87 0x8a12 +0xee88 0x8a37 +0xee89 0x8a79 +0xee8a 0x8aa7 +0xee8b 0x8abe +0xee8c 0x8adf +0xee8d 0xfa22 +0xee8e 0x8af6 +0xee8f 0x8b53 +0xee90 0x8b7f +0xee91 0x8cf0 +0xee92 0x8cf4 +0xee93 0x8d12 +0xee94 0x8d76 +0xee95 0xfa23 +0xee96 0x8ecf +0xee97 0xfa24 +0xee98 0xfa25 +0xee99 0x9067 +0xee9a 0x90de +0xee9b 0xfa26 +0xee9c 0x9115 +0xee9d 0x9127 +0xee9e 0x91da +0xee9f 0x91d7 +0xeea0 0x91de +0xeea1 0x91ed +0xeea2 0x91ee +0xeea3 0x91e4 +0xeea4 0x91e5 +0xeea5 0x9206 +0xeea6 0x9210 +0xeea7 0x920a +0xeea8 0x923a +0xeea9 0x9240 +0xeeaa 0x923c +0xeeab 0x924e +0xeeac 0x9259 +0xeead 0x9251 +0xeeae 0x9239 +0xeeaf 0x9267 +0xeeb0 0x92a7 +0xeeb1 0x9277 +0xeeb2 0x9278 +0xeeb3 0x92e7 +0xeeb4 0x92d7 +0xeeb5 0x92d9 +0xeeb6 0x92d0 +0xeeb7 0xfa27 +0xeeb8 0x92d5 +0xeeb9 0x92e0 +0xeeba 0x92d3 +0xeebb 0x9325 +0xeebc 0x9321 +0xeebd 0x92fb +0xeebe 0xfa28 +0xeebf 0x931e +0xeec0 0x92ff +0xeec1 0x931d +0xeec2 0x9302 +0xeec3 0x9370 +0xeec4 0x9357 +0xeec5 0x93a4 +0xeec6 0x93c6 +0xeec7 0x93de +0xeec8 0x93f8 +0xeec9 0x9431 +0xeeca 0x9445 +0xeecb 0x9448 +0xeecc 0x9592 +0xeecd 0xf9dc +0xeece 0xfa29 +0xeecf 0x969d +0xeed0 0x96af +0xeed1 0x9733 +0xeed2 0x973b +0xeed3 0x9743 +0xeed4 0x974d +0xeed5 0x974f +0xeed6 0x9751 +0xeed7 0x9755 +0xeed8 0x9857 +0xeed9 0x9865 +0xeeda 0xfa2a +0xeedb 0xfa2b +0xeedc 0x9927 +0xeedd 0xfa2c +0xeede 0x999e +0xeedf 0x9a4e +0xeee0 0x9ad9 +0xeee1 0x9adc +0xeee2 0x9b75 +0xeee3 0x9b72 +0xeee4 0x9b8f +0xeee5 0x9bb1 +0xeee6 0x9bbb +0xeee7 0x9c00 +0xeee8 0x9d70 +0xeee9 0x9d6b +0xeeea 0xfa2d +0xeeeb 0x9e19 +0xeeec 0x9ed1 +0xeeef 0x2170 +0xeef0 0x2171 +0xeef1 0x2172 +0xeef2 0x2173 +0xeef3 0x2174 +0xeef4 0x2175 +0xeef5 0x2176 +0xeef6 0x2177 +0xeef7 0x2178 +0xeef8 0x2179 +0xeef9 0x3052 +0xeefa 0x00a6 +0xeefb 0xff07 +0xeefc 0xff02 +0xfa4a 0x2160 +0xfa4b 0x2161 +0xfa4c 0x2162 +0xfa4d 0x2163 +0xfa4e 0x2164 +0xfa4f 0x2165 +0xfa50 0x2166 +0xfa51 0x2167 +0xfa52 0x2168 +0xfa53 0x2169 +0xfa54 0x3052 +0xfa58 0x3231 +0xfa59 0x2116 +0xfa5a 0x2121 +0xfa5b 0x306e diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/SJIS.c2b --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/SJIS.c2b Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,3 @@ +0x005c 0x00a5 +0x007e 0x203e + diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/SJIS.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/tools/CharsetMapping/SJIS.map Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,7079 @@ +# +# Generated from old SJIS implementation, which calcuats the +# sjis<->sjis (use Ken Lunde's algorithm) and then looks up +# the jis0208 mappings. The sjis->jis algorithm used in old +# SJIS assumes all input sjis are legal codepoints, so it +# also takes illegal sjis cp xx7f (treats it as xx80), such +# as 8a7f, and convert it to a dup jis/unicode cp. Those +# mappings are removed from this mapping. +# +0x0000 0x0000 +0x0001 0x0001 +0x0002 0x0002 +0x0003 0x0003 +0x0004 0x0004 +0x0005 0x0005 +0x0006 0x0006 +0x0007 0x0007 +0x0008 0x0008 +0x0009 0x0009 +0x000a 0x000a +0x000b 0x000b +0x000c 0x000c +0x000d 0x000d +0x000e 0x000e +0x000f 0x000f +0x0010 0x0010 +0x0011 0x0011 +0x0012 0x0012 +0x0013 0x0013 +0x0014 0x0014 +0x0015 0x0015 +0x0016 0x0016 +0x0017 0x0017 +0x0018 0x0018 +0x0019 0x0019 +0x001a 0x001a +0x001b 0x001b +0x001c 0x001c +0x001d 0x001d +0x001e 0x001e +0x001f 0x001f +0x0020 0x0020 +0x0021 0x0021 +0x0022 0x0022 +0x0023 0x0023 +0x0024 0x0024 +0x0025 0x0025 +0x0026 0x0026 +0x0027 0x0027 +0x0028 0x0028 +0x0029 0x0029 +0x002a 0x002a +0x002b 0x002b +0x002c 0x002c +0x002d 0x002d +0x002e 0x002e +0x002f 0x002f +0x0030 0x0030 +0x0031 0x0031 +0x0032 0x0032 +0x0033 0x0033 +0x0034 0x0034 +0x0035 0x0035 +0x0036 0x0036 +0x0037 0x0037 +0x0038 0x0038 +0x0039 0x0039 +0x003a 0x003a +0x003b 0x003b +0x003c 0x003c +0x003d 0x003d +0x003e 0x003e +0x003f 0x003f +0x0040 0x0040 +0x0041 0x0041 +0x0042 0x0042 +0x0043 0x0043 +0x0044 0x0044 +0x0045 0x0045 +0x0046 0x0046 +0x0047 0x0047 +0x0048 0x0048 +0x0049 0x0049 +0x004a 0x004a +0x004b 0x004b +0x004c 0x004c +0x004d 0x004d +0x004e 0x004e +0x004f 0x004f +0x0050 0x0050 +0x0051 0x0051 +0x0052 0x0052 +0x0053 0x0053 +0x0054 0x0054 +0x0055 0x0055 +0x0056 0x0056 +0x0057 0x0057 +0x0058 0x0058 +0x0059 0x0059 +0x005a 0x005a +0x005b 0x005b +0x005c 0x005c +0x005d 0x005d +0x005e 0x005e +0x005f 0x005f +0x0060 0x0060 +0x0061 0x0061 +0x0062 0x0062 +0x0063 0x0063 +0x0064 0x0064 +0x0065 0x0065 +0x0066 0x0066 +0x0067 0x0067 +0x0068 0x0068 +0x0069 0x0069 +0x006a 0x006a +0x006b 0x006b +0x006c 0x006c +0x006d 0x006d +0x006e 0x006e +0x006f 0x006f +0x0070 0x0070 +0x0071 0x0071 +0x0072 0x0072 +0x0073 0x0073 +0x0074 0x0074 +0x0075 0x0075 +0x0076 0x0076 +0x0077 0x0077 +0x0078 0x0078 +0x0079 0x0079 +0x007a 0x007a +0x007b 0x007b +0x007c 0x007c +0x007d 0x007d +0x007e 0x007e +0x007f 0x007f +0x00a1 0xff61 +0x00a2 0xff62 +0x00a3 0xff63 +0x00a4 0xff64 +0x00a5 0xff65 +0x00a6 0xff66 +0x00a7 0xff67 +0x00a8 0xff68 +0x00a9 0xff69 +0x00aa 0xff6a +0x00ab 0xff6b +0x00ac 0xff6c +0x00ad 0xff6d +0x00ae 0xff6e +0x00af 0xff6f +0x00b0 0xff70 +0x00b1 0xff71 +0x00b2 0xff72 +0x00b3 0xff73 +0x00b4 0xff74 +0x00b5 0xff75 +0x00b6 0xff76 +0x00b7 0xff77 +0x00b8 0xff78 +0x00b9 0xff79 +0x00ba 0xff7a +0x00bb 0xff7b +0x00bc 0xff7c +0x00bd 0xff7d +0x00be 0xff7e +0x00bf 0xff7f +0x00c0 0xff80 +0x00c1 0xff81 +0x00c2 0xff82 +0x00c3 0xff83 +0x00c4 0xff84 +0x00c5 0xff85 +0x00c6 0xff86 +0x00c7 0xff87 +0x00c8 0xff88 +0x00c9 0xff89 +0x00ca 0xff8a +0x00cb 0xff8b +0x00cc 0xff8c +0x00cd 0xff8d +0x00ce 0xff8e +0x00cf 0xff8f +0x00d0 0xff90 +0x00d1 0xff91 +0x00d2 0xff92 +0x00d3 0xff93 +0x00d4 0xff94 +0x00d5 0xff95 +0x00d6 0xff96 +0x00d7 0xff97 +0x00d8 0xff98 +0x00d9 0xff99 +0x00da 0xff9a +0x00db 0xff9b +0x00dc 0xff9c +0x00dd 0xff9d +0x00de 0xff9e +0x00df 0xff9f +0x8140 0x3000 +0x8141 0x3001 +0x8142 0x3002 +0x8143 0xff0c +0x8144 0xff0e +0x8145 0x30fb +0x8146 0xff1a +0x8147 0xff1b +0x8148 0xff1f +0x8149 0xff01 +0x814a 0x309b +0x814b 0x309c +0x814c 0x00b4 +0x814d 0xff40 +0x814e 0x00a8 +0x814f 0xff3e +0x8150 0xffe3 +0x8151 0xff3f +0x8152 0x30fd +0x8153 0x30fe +0x8154 0x309d +0x8155 0x309e +0x8156 0x3003 +0x8157 0x4edd +0x8158 0x3005 +0x8159 0x3006 +0x815a 0x3007 +0x815b 0x30fc +0x815c 0x2014 +0x815d 0x2010 +0x815e 0xff0f +0x815f 0xff3c +0x8160 0x301c +0x8161 0x2016 +0x8162 0xff5c +0x8163 0x2026 +0x8164 0x2025 +0x8165 0x2018 +0x8166 0x2019 +0x8167 0x201c +0x8168 0x201d +0x8169 0xff08 +0x816a 0xff09 +0x816b 0x3014 +0x816c 0x3015 +0x816d 0xff3b +0x816e 0xff3d +0x816f 0xff5b +0x8170 0xff5d +0x8171 0x3008 +0x8172 0x3009 +0x8173 0x300a +0x8174 0x300b +0x8175 0x300c +0x8176 0x300d +0x8177 0x300e +0x8178 0x300f +0x8179 0x3010 +0x817a 0x3011 +0x817b 0xff0b +0x817c 0x2212 +0x817d 0x00b1 +0x817e 0x00d7 +0x8180 0x00f7 +0x8181 0xff1d +0x8182 0x2260 +0x8183 0xff1c +0x8184 0xff1e +0x8185 0x2266 +0x8186 0x2267 +0x8187 0x221e +0x8188 0x2234 +0x8189 0x2642 +0x818a 0x2640 +0x818b 0x00b0 +0x818c 0x2032 +0x818d 0x2033 +0x818e 0x2103 +0x818f 0xffe5 +0x8190 0xff04 +0x8191 0x00a2 +0x8192 0x00a3 +0x8193 0xff05 +0x8194 0xff03 +0x8195 0xff06 +0x8196 0xff0a +0x8197 0xff20 +0x8198 0x00a7 +0x8199 0x2606 +0x819a 0x2605 +0x819b 0x25cb +0x819c 0x25cf +0x819d 0x25ce +0x819e 0x25c7 +0x819f 0x25c6 +0x81a0 0x25a1 +0x81a1 0x25a0 +0x81a2 0x25b3 +0x81a3 0x25b2 +0x81a4 0x25bd +0x81a5 0x25bc +0x81a6 0x203b +0x81a7 0x3012 +0x81a8 0x2192 +0x81a9 0x2190 +0x81aa 0x2191 +0x81ab 0x2193 +0x81ac 0x3013 +0x81b8 0x2208 +0x81b9 0x220b +0x81ba 0x2286 +0x81bb 0x2287 +0x81bc 0x2282 +0x81bd 0x2283 +0x81be 0x222a +0x81bf 0x2229 +0x81c8 0x2227 +0x81c9 0x2228 +0x81ca 0x00ac +0x81cb 0x21d2 +0x81cc 0x21d4 +0x81cd 0x2200 +0x81ce 0x2203 +0x81da 0x2220 +0x81db 0x22a5 +0x81dc 0x2312 +0x81dd 0x2202 +0x81de 0x2207 +0x81df 0x2261 +0x81e0 0x2252 +0x81e1 0x226a +0x81e2 0x226b +0x81e3 0x221a +0x81e4 0x223d +0x81e5 0x221d +0x81e6 0x2235 +0x81e7 0x222b +0x81e8 0x222c +0x81f0 0x212b +0x81f1 0x2030 +0x81f2 0x266f +0x81f3 0x266d +0x81f4 0x266a +0x81f5 0x2020 +0x81f6 0x2021 +0x81f7 0x00b6 +0x81fc 0x25ef +0x824f 0xff10 +0x8250 0xff11 +0x8251 0xff12 +0x8252 0xff13 +0x8253 0xff14 +0x8254 0xff15 +0x8255 0xff16 +0x8256 0xff17 +0x8257 0xff18 +0x8258 0xff19 +0x8260 0xff21 +0x8261 0xff22 +0x8262 0xff23 +0x8263 0xff24 +0x8264 0xff25 +0x8265 0xff26 +0x8266 0xff27 +0x8267 0xff28 +0x8268 0xff29 +0x8269 0xff2a +0x826a 0xff2b +0x826b 0xff2c +0x826c 0xff2d +0x826d 0xff2e +0x826e 0xff2f +0x826f 0xff30 +0x8270 0xff31 +0x8271 0xff32 +0x8272 0xff33 +0x8273 0xff34 +0x8274 0xff35 +0x8275 0xff36 +0x8276 0xff37 +0x8277 0xff38 +0x8278 0xff39 +0x8279 0xff3a +0x8281 0xff41 +0x8282 0xff42 +0x8283 0xff43 +0x8284 0xff44 +0x8285 0xff45 +0x8286 0xff46 +0x8287 0xff47 +0x8288 0xff48 +0x8289 0xff49 +0x828a 0xff4a +0x828b 0xff4b +0x828c 0xff4c +0x828d 0xff4d +0x828e 0xff4e +0x828f 0xff4f +0x8290 0xff50 +0x8291 0xff51 +0x8292 0xff52 +0x8293 0xff53 +0x8294 0xff54 +0x8295 0xff55 +0x8296 0xff56 +0x8297 0xff57 +0x8298 0xff58 +0x8299 0xff59 +0x829a 0xff5a +0x829f 0x3041 +0x82a0 0x3042 +0x82a1 0x3043 +0x82a2 0x3044 +0x82a3 0x3045 +0x82a4 0x3046 +0x82a5 0x3047 +0x82a6 0x3048 +0x82a7 0x3049 +0x82a8 0x304a +0x82a9 0x304b +0x82aa 0x304c +0x82ab 0x304d +0x82ac 0x304e +0x82ad 0x304f +0x82ae 0x3050 +0x82af 0x3051 +0x82b0 0x3052 +0x82b1 0x3053 +0x82b2 0x3054 +0x82b3 0x3055 +0x82b4 0x3056 +0x82b5 0x3057 +0x82b6 0x3058 +0x82b7 0x3059 +0x82b8 0x305a +0x82b9 0x305b +0x82ba 0x305c +0x82bb 0x305d +0x82bc 0x305e +0x82bd 0x305f +0x82be 0x3060 +0x82bf 0x3061 +0x82c0 0x3062 +0x82c1 0x3063 +0x82c2 0x3064 +0x82c3 0x3065 +0x82c4 0x3066 +0x82c5 0x3067 +0x82c6 0x3068 +0x82c7 0x3069 +0x82c8 0x306a +0x82c9 0x306b +0x82ca 0x306c +0x82cb 0x306d +0x82cc 0x306e +0x82cd 0x306f +0x82ce 0x3070 +0x82cf 0x3071 +0x82d0 0x3072 +0x82d1 0x3073 +0x82d2 0x3074 +0x82d3 0x3075 +0x82d4 0x3076 +0x82d5 0x3077 +0x82d6 0x3078 +0x82d7 0x3079 +0x82d8 0x307a +0x82d9 0x307b +0x82da 0x307c +0x82db 0x307d +0x82dc 0x307e +0x82dd 0x307f +0x82de 0x3080 +0x82df 0x3081 +0x82e0 0x3082 +0x82e1 0x3083 +0x82e2 0x3084 +0x82e3 0x3085 +0x82e4 0x3086 +0x82e5 0x3087 +0x82e6 0x3088 +0x82e7 0x3089 +0x82e8 0x308a +0x82e9 0x308b +0x82ea 0x308c +0x82eb 0x308d +0x82ec 0x308e +0x82ed 0x308f +0x82ee 0x3090 +0x82ef 0x3091 +0x82f0 0x3092 +0x82f1 0x3093 +0x8340 0x30a1 +0x8341 0x30a2 +0x8342 0x30a3 +0x8343 0x30a4 +0x8344 0x30a5 +0x8345 0x30a6 +0x8346 0x30a7 +0x8347 0x30a8 +0x8348 0x30a9 +0x8349 0x30aa +0x834a 0x30ab +0x834b 0x30ac +0x834c 0x30ad +0x834d 0x30ae +0x834e 0x30af +0x834f 0x30b0 +0x8350 0x30b1 +0x8351 0x30b2 +0x8352 0x30b3 +0x8353 0x30b4 +0x8354 0x30b5 +0x8355 0x30b6 +0x8356 0x30b7 +0x8357 0x30b8 +0x8358 0x30b9 +0x8359 0x30ba +0x835a 0x30bb +0x835b 0x30bc +0x835c 0x30bd +0x835d 0x30be +0x835e 0x30bf +0x835f 0x30c0 +0x8360 0x30c1 +0x8361 0x30c2 +0x8362 0x30c3 +0x8363 0x30c4 +0x8364 0x30c5 +0x8365 0x30c6 +0x8366 0x30c7 +0x8367 0x30c8 +0x8368 0x30c9 +0x8369 0x30ca +0x836a 0x30cb +0x836b 0x30cc +0x836c 0x30cd +0x836d 0x30ce +0x836e 0x30cf +0x836f 0x30d0 +0x8370 0x30d1 +0x8371 0x30d2 +0x8372 0x30d3 +0x8373 0x30d4 +0x8374 0x30d5 +0x8375 0x30d6 +0x8376 0x30d7 +0x8377 0x30d8 +0x8378 0x30d9 +0x8379 0x30da +0x837a 0x30db +0x837b 0x30dc +0x837c 0x30dd +0x837d 0x30de +0x837e 0x30df +0x8380 0x30e0 +0x8381 0x30e1 +0x8382 0x30e2 +0x8383 0x30e3 +0x8384 0x30e4 +0x8385 0x30e5 +0x8386 0x30e6 +0x8387 0x30e7 +0x8388 0x30e8 +0x8389 0x30e9 +0x838a 0x30ea +0x838b 0x30eb +0x838c 0x30ec +0x838d 0x30ed +0x838e 0x30ee +0x838f 0x30ef +0x8390 0x30f0 +0x8391 0x30f1 +0x8392 0x30f2 +0x8393 0x30f3 +0x8394 0x30f4 +0x8395 0x30f5 +0x8396 0x30f6 +0x839f 0x0391 +0x83a0 0x0392 +0x83a1 0x0393 +0x83a2 0x0394 +0x83a3 0x0395 +0x83a4 0x0396 +0x83a5 0x0397 +0x83a6 0x0398 +0x83a7 0x0399 +0x83a8 0x039a +0x83a9 0x039b +0x83aa 0x039c +0x83ab 0x039d +0x83ac 0x039e +0x83ad 0x039f +0x83ae 0x03a0 +0x83af 0x03a1 +0x83b0 0x03a3 +0x83b1 0x03a4 +0x83b2 0x03a5 +0x83b3 0x03a6 +0x83b4 0x03a7 +0x83b5 0x03a8 +0x83b6 0x03a9 +0x83bf 0x03b1 +0x83c0 0x03b2 +0x83c1 0x03b3 +0x83c2 0x03b4 +0x83c3 0x03b5 +0x83c4 0x03b6 +0x83c5 0x03b7 +0x83c6 0x03b8 +0x83c7 0x03b9 +0x83c8 0x03ba +0x83c9 0x03bb +0x83ca 0x03bc +0x83cb 0x03bd +0x83cc 0x03be +0x83cd 0x03bf +0x83ce 0x03c0 +0x83cf 0x03c1 +0x83d0 0x03c3 +0x83d1 0x03c4 +0x83d2 0x03c5 +0x83d3 0x03c6 +0x83d4 0x03c7 +0x83d5 0x03c8 +0x83d6 0x03c9 +0x8440 0x0410 +0x8441 0x0411 +0x8442 0x0412 +0x8443 0x0413 +0x8444 0x0414 +0x8445 0x0415 +0x8446 0x0401 +0x8447 0x0416 +0x8448 0x0417 +0x8449 0x0418 +0x844a 0x0419 +0x844b 0x041a +0x844c 0x041b +0x844d 0x041c +0x844e 0x041d +0x844f 0x041e +0x8450 0x041f +0x8451 0x0420 +0x8452 0x0421 +0x8453 0x0422 +0x8454 0x0423 +0x8455 0x0424 +0x8456 0x0425 +0x8457 0x0426 +0x8458 0x0427 +0x8459 0x0428 +0x845a 0x0429 +0x845b 0x042a +0x845c 0x042b +0x845d 0x042c +0x845e 0x042d +0x845f 0x042e +0x8460 0x042f +0x8470 0x0430 +0x8471 0x0431 +0x8472 0x0432 +0x8473 0x0433 +0x8474 0x0434 +0x8475 0x0435 +0x8476 0x0451 +0x8477 0x0436 +0x8478 0x0437 +0x8479 0x0438 +0x847a 0x0439 +0x847b 0x043a +0x847c 0x043b +0x847d 0x043c +0x847e 0x043d +0x8480 0x043e +0x8481 0x043f +0x8482 0x0440 +0x8483 0x0441 +0x8484 0x0442 +0x8485 0x0443 +0x8486 0x0444 +0x8487 0x0445 +0x8488 0x0446 +0x8489 0x0447 +0x848a 0x0448 +0x848b 0x0449 +0x848c 0x044a +0x848d 0x044b +0x848e 0x044c +0x848f 0x044d +0x8490 0x044e +0x8491 0x044f +0x849f 0x2500 +0x84a0 0x2502 +0x84a1 0x250c +0x84a2 0x2510 +0x84a3 0x2518 +0x84a4 0x2514 +0x84a5 0x251c +0x84a6 0x252c +0x84a7 0x2524 +0x84a8 0x2534 +0x84a9 0x253c +0x84aa 0x2501 +0x84ab 0x2503 +0x84ac 0x250f +0x84ad 0x2513 +0x84ae 0x251b +0x84af 0x2517 +0x84b0 0x2523 +0x84b1 0x2533 +0x84b2 0x252b +0x84b3 0x253b +0x84b4 0x254b +0x84b5 0x2520 +0x84b6 0x252f +0x84b7 0x2528 +0x84b8 0x2537 +0x84b9 0x253f +0x84ba 0x251d +0x84bb 0x2530 +0x84bc 0x2525 +0x84bd 0x2538 +0x84be 0x2542 +0x889f 0x4e9c +0x88a0 0x5516 +0x88a1 0x5a03 +0x88a2 0x963f +0x88a3 0x54c0 +0x88a4 0x611b +0x88a5 0x6328 +0x88a6 0x59f6 +0x88a7 0x9022 +0x88a8 0x8475 +0x88a9 0x831c +0x88aa 0x7a50 +0x88ab 0x60aa +0x88ac 0x63e1 +0x88ad 0x6e25 +0x88ae 0x65ed +0x88af 0x8466 +0x88b0 0x82a6 +0x88b1 0x9bf5 +0x88b2 0x6893 +0x88b3 0x5727 +0x88b4 0x65a1 +0x88b5 0x6271 +0x88b6 0x5b9b +0x88b7 0x59d0 +0x88b8 0x867b +0x88b9 0x98f4 +0x88ba 0x7d62 +0x88bb 0x7dbe +0x88bc 0x9b8e +0x88bd 0x6216 +0x88be 0x7c9f +0x88bf 0x88b7 +0x88c0 0x5b89 +0x88c1 0x5eb5 +0x88c2 0x6309 +0x88c3 0x6697 +0x88c4 0x6848 +0x88c5 0x95c7 +0x88c6 0x978d +0x88c7 0x674f +0x88c8 0x4ee5 +0x88c9 0x4f0a +0x88ca 0x4f4d +0x88cb 0x4f9d +0x88cc 0x5049 +0x88cd 0x56f2 +0x88ce 0x5937 +0x88cf 0x59d4 +0x88d0 0x5a01 +0x88d1 0x5c09 +0x88d2 0x60df +0x88d3 0x610f +0x88d4 0x6170 +0x88d5 0x6613 +0x88d6 0x6905 +0x88d7 0x70ba +0x88d8 0x754f +0x88d9 0x7570 +0x88da 0x79fb +0x88db 0x7dad +0x88dc 0x7def +0x88dd 0x80c3 +0x88de 0x840e +0x88df 0x8863 +0x88e0 0x8b02 +0x88e1 0x9055 +0x88e2 0x907a +0x88e3 0x533b +0x88e4 0x4e95 +0x88e5 0x4ea5 +0x88e6 0x57df +0x88e7 0x80b2 +0x88e8 0x90c1 +0x88e9 0x78ef +0x88ea 0x4e00 +0x88eb 0x58f1 +0x88ec 0x6ea2 +0x88ed 0x9038 +0x88ee 0x7a32 +0x88ef 0x8328 +0x88f0 0x828b +0x88f1 0x9c2f +0x88f2 0x5141 +0x88f3 0x5370 +0x88f4 0x54bd +0x88f5 0x54e1 +0x88f6 0x56e0 +0x88f7 0x59fb +0x88f8 0x5f15 +0x88f9 0x98f2 +0x88fa 0x6deb +0x88fb 0x80e4 +0x88fc 0x852d +0x8940 0x9662 +0x8941 0x9670 +0x8942 0x96a0 +0x8943 0x97fb +0x8944 0x540b +0x8945 0x53f3 +0x8946 0x5b87 +0x8947 0x70cf +0x8948 0x7fbd +0x8949 0x8fc2 +0x894a 0x96e8 +0x894b 0x536f +0x894c 0x9d5c +0x894d 0x7aba +0x894e 0x4e11 +0x894f 0x7893 +0x8950 0x81fc +0x8951 0x6e26 +0x8952 0x5618 +0x8953 0x5504 +0x8954 0x6b1d +0x8955 0x851a +0x8956 0x9c3b +0x8957 0x59e5 +0x8958 0x53a9 +0x8959 0x6d66 +0x895a 0x74dc +0x895b 0x958f +0x895c 0x5642 +0x895d 0x4e91 +0x895e 0x904b +0x895f 0x96f2 +0x8960 0x834f +0x8961 0x990c +0x8962 0x53e1 +0x8963 0x55b6 +0x8964 0x5b30 +0x8965 0x5f71 +0x8966 0x6620 +0x8967 0x66f3 +0x8968 0x6804 +0x8969 0x6c38 +0x896a 0x6cf3 +0x896b 0x6d29 +0x896c 0x745b +0x896d 0x76c8 +0x896e 0x7a4e +0x896f 0x9834 +0x8970 0x82f1 +0x8971 0x885b +0x8972 0x8a60 +0x8973 0x92ed +0x8974 0x6db2 +0x8975 0x75ab +0x8976 0x76ca +0x8977 0x99c5 +0x8978 0x60a6 +0x8979 0x8b01 +0x897a 0x8d8a +0x897b 0x95b2 +0x897c 0x698e +0x897d 0x53ad +0x897e 0x5186 +0x8980 0x5712 +0x8981 0x5830 +0x8982 0x5944 +0x8983 0x5bb4 +0x8984 0x5ef6 +0x8985 0x6028 +0x8986 0x63a9 +0x8987 0x63f4 +0x8988 0x6cbf +0x8989 0x6f14 +0x898a 0x708e +0x898b 0x7114 +0x898c 0x7159 +0x898d 0x71d5 +0x898e 0x733f +0x898f 0x7e01 +0x8990 0x8276 +0x8991 0x82d1 +0x8992 0x8597 +0x8993 0x9060 +0x8994 0x925b +0x8995 0x9d1b +0x8996 0x5869 +0x8997 0x65bc +0x8998 0x6c5a +0x8999 0x7525 +0x899a 0x51f9 +0x899b 0x592e +0x899c 0x5965 +0x899d 0x5f80 +0x899e 0x5fdc +0x899f 0x62bc +0x89a0 0x65fa +0x89a1 0x6a2a +0x89a2 0x6b27 +0x89a3 0x6bb4 +0x89a4 0x738b +0x89a5 0x7fc1 +0x89a6 0x8956 +0x89a7 0x9d2c +0x89a8 0x9d0e +0x89a9 0x9ec4 +0x89aa 0x5ca1 +0x89ab 0x6c96 +0x89ac 0x837b +0x89ad 0x5104 +0x89ae 0x5c4b +0x89af 0x61b6 +0x89b0 0x81c6 +0x89b1 0x6876 +0x89b2 0x7261 +0x89b3 0x4e59 +0x89b4 0x4ffa +0x89b5 0x5378 +0x89b6 0x6069 +0x89b7 0x6e29 +0x89b8 0x7a4f +0x89b9 0x97f3 +0x89ba 0x4e0b +0x89bb 0x5316 +0x89bc 0x4eee +0x89bd 0x4f55 +0x89be 0x4f3d +0x89bf 0x4fa1 +0x89c0 0x4f73 +0x89c1 0x52a0 +0x89c2 0x53ef +0x89c3 0x5609 +0x89c4 0x590f +0x89c5 0x5ac1 +0x89c6 0x5bb6 +0x89c7 0x5be1 +0x89c8 0x79d1 +0x89c9 0x6687 +0x89ca 0x679c +0x89cb 0x67b6 +0x89cc 0x6b4c +0x89cd 0x6cb3 +0x89ce 0x706b +0x89cf 0x73c2 +0x89d0 0x798d +0x89d1 0x79be +0x89d2 0x7a3c +0x89d3 0x7b87 +0x89d4 0x82b1 +0x89d5 0x82db +0x89d6 0x8304 +0x89d7 0x8377 +0x89d8 0x83ef +0x89d9 0x83d3 +0x89da 0x8766 +0x89db 0x8ab2 +0x89dc 0x5629 +0x89dd 0x8ca8 +0x89de 0x8fe6 +0x89df 0x904e +0x89e0 0x971e +0x89e1 0x868a +0x89e2 0x4fc4 +0x89e3 0x5ce8 +0x89e4 0x6211 +0x89e5 0x7259 +0x89e6 0x753b +0x89e7 0x81e5 +0x89e8 0x82bd +0x89e9 0x86fe +0x89ea 0x8cc0 +0x89eb 0x96c5 +0x89ec 0x9913 +0x89ed 0x99d5 +0x89ee 0x4ecb +0x89ef 0x4f1a +0x89f0 0x89e3 +0x89f1 0x56de +0x89f2 0x584a +0x89f3 0x58ca +0x89f4 0x5efb +0x89f5 0x5feb +0x89f6 0x602a +0x89f7 0x6094 +0x89f8 0x6062 +0x89f9 0x61d0 +0x89fa 0x6212 +0x89fb 0x62d0 +0x89fc 0x6539 +0x8a40 0x9b41 +0x8a41 0x6666 +0x8a42 0x68b0 +0x8a43 0x6d77 +0x8a44 0x7070 +0x8a45 0x754c +0x8a46 0x7686 +0x8a47 0x7d75 +0x8a48 0x82a5 +0x8a49 0x87f9 +0x8a4a 0x958b +0x8a4b 0x968e +0x8a4c 0x8c9d +0x8a4d 0x51f1 +0x8a4e 0x52be +0x8a4f 0x5916 +0x8a50 0x54b3 +0x8a51 0x5bb3 +0x8a52 0x5d16 +0x8a53 0x6168 +0x8a54 0x6982 +0x8a55 0x6daf +0x8a56 0x788d +0x8a57 0x84cb +0x8a58 0x8857 +0x8a59 0x8a72 +0x8a5a 0x93a7 +0x8a5b 0x9ab8 +0x8a5c 0x6d6c +0x8a5d 0x99a8 +0x8a5e 0x86d9 +0x8a5f 0x57a3 +0x8a60 0x67ff +0x8a61 0x86ce +0x8a62 0x920e +0x8a63 0x5283 +0x8a64 0x5687 +0x8a65 0x5404 +0x8a66 0x5ed3 +0x8a67 0x62e1 +0x8a68 0x64b9 +0x8a69 0x683c +0x8a6a 0x6838 +0x8a6b 0x6bbb +0x8a6c 0x7372 +0x8a6d 0x78ba +0x8a6e 0x7a6b +0x8a6f 0x899a +0x8a70 0x89d2 +0x8a71 0x8d6b +0x8a72 0x8f03 +0x8a73 0x90ed +0x8a74 0x95a3 +0x8a75 0x9694 +0x8a76 0x9769 +0x8a77 0x5b66 +0x8a78 0x5cb3 +0x8a79 0x697d +0x8a7a 0x984d +0x8a7b 0x984e +0x8a7c 0x639b +0x8a7d 0x7b20 +0x8a7e 0x6a2b +0x8a80 0x6a7f +0x8a81 0x68b6 +0x8a82 0x9c0d +0x8a83 0x6f5f +0x8a84 0x5272 +0x8a85 0x559d +0x8a86 0x6070 +0x8a87 0x62ec +0x8a88 0x6d3b +0x8a89 0x6e07 +0x8a8a 0x6ed1 +0x8a8b 0x845b +0x8a8c 0x8910 +0x8a8d 0x8f44 +0x8a8e 0x4e14 +0x8a8f 0x9c39 +0x8a90 0x53f6 +0x8a91 0x691b +0x8a92 0x6a3a +0x8a93 0x9784 +0x8a94 0x682a +0x8a95 0x515c +0x8a96 0x7ac3 +0x8a97 0x84b2 +0x8a98 0x91dc +0x8a99 0x938c +0x8a9a 0x565b +0x8a9b 0x9d28 +0x8a9c 0x6822 +0x8a9d 0x8305 +0x8a9e 0x8431 +0x8a9f 0x7ca5 +0x8aa0 0x5208 +0x8aa1 0x82c5 +0x8aa2 0x74e6 +0x8aa3 0x4e7e +0x8aa4 0x4f83 +0x8aa5 0x51a0 +0x8aa6 0x5bd2 +0x8aa7 0x520a +0x8aa8 0x52d8 +0x8aa9 0x52e7 +0x8aaa 0x5dfb +0x8aab 0x559a +0x8aac 0x582a +0x8aad 0x59e6 +0x8aae 0x5b8c +0x8aaf 0x5b98 +0x8ab0 0x5bdb +0x8ab1 0x5e72 +0x8ab2 0x5e79 +0x8ab3 0x60a3 +0x8ab4 0x611f +0x8ab5 0x6163 +0x8ab6 0x61be +0x8ab7 0x63db +0x8ab8 0x6562 +0x8ab9 0x67d1 +0x8aba 0x6853 +0x8abb 0x68fa +0x8abc 0x6b3e +0x8abd 0x6b53 +0x8abe 0x6c57 +0x8abf 0x6f22 +0x8ac0 0x6f97 +0x8ac1 0x6f45 +0x8ac2 0x74b0 +0x8ac3 0x7518 +0x8ac4 0x76e3 +0x8ac5 0x770b +0x8ac6 0x7aff +0x8ac7 0x7ba1 +0x8ac8 0x7c21 +0x8ac9 0x7de9 +0x8aca 0x7f36 +0x8acb 0x7ff0 +0x8acc 0x809d +0x8acd 0x8266 +0x8ace 0x839e +0x8acf 0x89b3 +0x8ad0 0x8acc +0x8ad1 0x8cab +0x8ad2 0x9084 +0x8ad3 0x9451 +0x8ad4 0x9593 +0x8ad5 0x9591 +0x8ad6 0x95a2 +0x8ad7 0x9665 +0x8ad8 0x97d3 +0x8ad9 0x9928 +0x8ada 0x8218 +0x8adb 0x4e38 +0x8adc 0x542b +0x8add 0x5cb8 +0x8ade 0x5dcc +0x8adf 0x73a9 +0x8ae0 0x764c +0x8ae1 0x773c +0x8ae2 0x5ca9 +0x8ae3 0x7feb +0x8ae4 0x8d0b +0x8ae5 0x96c1 +0x8ae6 0x9811 +0x8ae7 0x9854 +0x8ae8 0x9858 +0x8ae9 0x4f01 +0x8aea 0x4f0e +0x8aeb 0x5371 +0x8aec 0x559c +0x8aed 0x5668 +0x8aee 0x57fa +0x8aef 0x5947 +0x8af0 0x5b09 +0x8af1 0x5bc4 +0x8af2 0x5c90 +0x8af3 0x5e0c +0x8af4 0x5e7e +0x8af5 0x5fcc +0x8af6 0x63ee +0x8af7 0x673a +0x8af8 0x65d7 +0x8af9 0x65e2 +0x8afa 0x671f +0x8afb 0x68cb +0x8afc 0x68c4 +0x8b40 0x6a5f +0x8b41 0x5e30 +0x8b42 0x6bc5 +0x8b43 0x6c17 +0x8b44 0x6c7d +0x8b45 0x757f +0x8b46 0x7948 +0x8b47 0x5b63 +0x8b48 0x7a00 +0x8b49 0x7d00 +0x8b4a 0x5fbd +0x8b4b 0x898f +0x8b4c 0x8a18 +0x8b4d 0x8cb4 +0x8b4e 0x8d77 +0x8b4f 0x8ecc +0x8b50 0x8f1d +0x8b51 0x98e2 +0x8b52 0x9a0e +0x8b53 0x9b3c +0x8b54 0x4e80 +0x8b55 0x507d +0x8b56 0x5100 +0x8b57 0x5993 +0x8b58 0x5b9c +0x8b59 0x622f +0x8b5a 0x6280 +0x8b5b 0x64ec +0x8b5c 0x6b3a +0x8b5d 0x72a0 +0x8b5e 0x7591 +0x8b5f 0x7947 +0x8b60 0x7fa9 +0x8b61 0x87fb +0x8b62 0x8abc +0x8b63 0x8b70 +0x8b64 0x63ac +0x8b65 0x83ca +0x8b66 0x97a0 +0x8b67 0x5409 +0x8b68 0x5403 +0x8b69 0x55ab +0x8b6a 0x6854 +0x8b6b 0x6a58 +0x8b6c 0x8a70 +0x8b6d 0x7827 +0x8b6e 0x6775 +0x8b6f 0x9ecd +0x8b70 0x5374 +0x8b71 0x5ba2 +0x8b72 0x811a +0x8b73 0x8650 +0x8b74 0x9006 +0x8b75 0x4e18 +0x8b76 0x4e45 +0x8b77 0x4ec7 +0x8b78 0x4f11 +0x8b79 0x53ca +0x8b7a 0x5438 +0x8b7b 0x5bae +0x8b7c 0x5f13 +0x8b7d 0x6025 +0x8b7e 0x6551 +0x8b80 0x673d +0x8b81 0x6c42 +0x8b82 0x6c72 +0x8b83 0x6ce3 +0x8b84 0x7078 +0x8b85 0x7403 +0x8b86 0x7a76 +0x8b87 0x7aae +0x8b88 0x7b08 +0x8b89 0x7d1a +0x8b8a 0x7cfe +0x8b8b 0x7d66 +0x8b8c 0x65e7 +0x8b8d 0x725b +0x8b8e 0x53bb +0x8b8f 0x5c45 +0x8b90 0x5de8 +0x8b91 0x62d2 +0x8b92 0x62e0 +0x8b93 0x6319 +0x8b94 0x6e20 +0x8b95 0x865a +0x8b96 0x8a31 +0x8b97 0x8ddd +0x8b98 0x92f8 +0x8b99 0x6f01 +0x8b9a 0x79a6 +0x8b9b 0x9b5a +0x8b9c 0x4ea8 +0x8b9d 0x4eab +0x8b9e 0x4eac +0x8b9f 0x4f9b +0x8ba0 0x4fa0 +0x8ba1 0x50d1 +0x8ba2 0x5147 +0x8ba3 0x7af6 +0x8ba4 0x5171 +0x8ba5 0x51f6 +0x8ba6 0x5354 +0x8ba7 0x5321 +0x8ba8 0x537f +0x8ba9 0x53eb +0x8baa 0x55ac +0x8bab 0x5883 +0x8bac 0x5ce1 +0x8bad 0x5f37 +0x8bae 0x5f4a +0x8baf 0x602f +0x8bb0 0x6050 +0x8bb1 0x606d +0x8bb2 0x631f +0x8bb3 0x6559 +0x8bb4 0x6a4b +0x8bb5 0x6cc1 +0x8bb6 0x72c2 +0x8bb7 0x72ed +0x8bb8 0x77ef +0x8bb9 0x80f8 +0x8bba 0x8105 +0x8bbb 0x8208 +0x8bbc 0x854e +0x8bbd 0x90f7 +0x8bbe 0x93e1 +0x8bbf 0x97ff +0x8bc0 0x9957 +0x8bc1 0x9a5a +0x8bc2 0x4ef0 +0x8bc3 0x51dd +0x8bc4 0x5c2d +0x8bc5 0x6681 +0x8bc6 0x696d +0x8bc7 0x5c40 +0x8bc8 0x66f2 +0x8bc9 0x6975 +0x8bca 0x7389 +0x8bcb 0x6850 +0x8bcc 0x7c81 +0x8bcd 0x50c5 +0x8bce 0x52e4 +0x8bcf 0x5747 +0x8bd0 0x5dfe +0x8bd1 0x9326 +0x8bd2 0x65a4 +0x8bd3 0x6b23 +0x8bd4 0x6b3d +0x8bd5 0x7434 +0x8bd6 0x7981 +0x8bd7 0x79bd +0x8bd8 0x7b4b +0x8bd9 0x7dca +0x8bda 0x82b9 +0x8bdb 0x83cc +0x8bdc 0x887f +0x8bdd 0x895f +0x8bde 0x8b39 +0x8bdf 0x8fd1 +0x8be0 0x91d1 +0x8be1 0x541f +0x8be2 0x9280 +0x8be3 0x4e5d +0x8be4 0x5036 +0x8be5 0x53e5 +0x8be6 0x533a +0x8be7 0x72d7 +0x8be8 0x7396 +0x8be9 0x77e9 +0x8bea 0x82e6 +0x8beb 0x8eaf +0x8bec 0x99c6 +0x8bed 0x99c8 +0x8bee 0x99d2 +0x8bef 0x5177 +0x8bf0 0x611a +0x8bf1 0x865e +0x8bf2 0x55b0 +0x8bf3 0x7a7a +0x8bf4 0x5076 +0x8bf5 0x5bd3 +0x8bf6 0x9047 +0x8bf7 0x9685 +0x8bf8 0x4e32 +0x8bf9 0x6adb +0x8bfa 0x91e7 +0x8bfb 0x5c51 +0x8bfc 0x5c48 +0x8c40 0x6398 +0x8c41 0x7a9f +0x8c42 0x6c93 +0x8c43 0x9774 +0x8c44 0x8f61 +0x8c45 0x7aaa +0x8c46 0x718a +0x8c47 0x9688 +0x8c48 0x7c82 +0x8c49 0x6817 +0x8c4a 0x7e70 +0x8c4b 0x6851 +0x8c4c 0x936c +0x8c4d 0x52f2 +0x8c4e 0x541b +0x8c4f 0x85ab +0x8c50 0x8a13 +0x8c51 0x7fa4 +0x8c52 0x8ecd +0x8c53 0x90e1 +0x8c54 0x5366 +0x8c55 0x8888 +0x8c56 0x7941 +0x8c57 0x4fc2 +0x8c58 0x50be +0x8c59 0x5211 +0x8c5a 0x5144 +0x8c5b 0x5553 +0x8c5c 0x572d +0x8c5d 0x73ea +0x8c5e 0x578b +0x8c5f 0x5951 +0x8c60 0x5f62 +0x8c61 0x5f84 +0x8c62 0x6075 +0x8c63 0x6176 +0x8c64 0x6167 +0x8c65 0x61a9 +0x8c66 0x63b2 +0x8c67 0x643a +0x8c68 0x656c +0x8c69 0x666f +0x8c6a 0x6842 +0x8c6b 0x6e13 +0x8c6c 0x7566 +0x8c6d 0x7a3d +0x8c6e 0x7cfb +0x8c6f 0x7d4c +0x8c70 0x7d99 +0x8c71 0x7e4b +0x8c72 0x7f6b +0x8c73 0x830e +0x8c74 0x834a +0x8c75 0x86cd +0x8c76 0x8a08 +0x8c77 0x8a63 +0x8c78 0x8b66 +0x8c79 0x8efd +0x8c7a 0x981a +0x8c7b 0x9d8f +0x8c7c 0x82b8 +0x8c7d 0x8fce +0x8c7e 0x9be8 +0x8c80 0x5287 +0x8c81 0x621f +0x8c82 0x6483 +0x8c83 0x6fc0 +0x8c84 0x9699 +0x8c85 0x6841 +0x8c86 0x5091 +0x8c87 0x6b20 +0x8c88 0x6c7a +0x8c89 0x6f54 +0x8c8a 0x7a74 +0x8c8b 0x7d50 +0x8c8c 0x8840 +0x8c8d 0x8a23 +0x8c8e 0x6708 +0x8c8f 0x4ef6 +0x8c90 0x5039 +0x8c91 0x5026 +0x8c92 0x5065 +0x8c93 0x517c +0x8c94 0x5238 +0x8c95 0x5263 +0x8c96 0x55a7 +0x8c97 0x570f +0x8c98 0x5805 +0x8c99 0x5acc +0x8c9a 0x5efa +0x8c9b 0x61b2 +0x8c9c 0x61f8 +0x8c9d 0x62f3 +0x8c9e 0x6372 +0x8c9f 0x691c +0x8ca0 0x6a29 +0x8ca1 0x727d +0x8ca2 0x72ac +0x8ca3 0x732e +0x8ca4 0x7814 +0x8ca5 0x786f +0x8ca6 0x7d79 +0x8ca7 0x770c +0x8ca8 0x80a9 +0x8ca9 0x898b +0x8caa 0x8b19 +0x8cab 0x8ce2 +0x8cac 0x8ed2 +0x8cad 0x9063 +0x8cae 0x9375 +0x8caf 0x967a +0x8cb0 0x9855 +0x8cb1 0x9a13 +0x8cb2 0x9e78 +0x8cb3 0x5143 +0x8cb4 0x539f +0x8cb5 0x53b3 +0x8cb6 0x5e7b +0x8cb7 0x5f26 +0x8cb8 0x6e1b +0x8cb9 0x6e90 +0x8cba 0x7384 +0x8cbb 0x73fe +0x8cbc 0x7d43 +0x8cbd 0x8237 +0x8cbe 0x8a00 +0x8cbf 0x8afa +0x8cc0 0x9650 +0x8cc1 0x4e4e +0x8cc2 0x500b +0x8cc3 0x53e4 +0x8cc4 0x547c +0x8cc5 0x56fa +0x8cc6 0x59d1 +0x8cc7 0x5b64 +0x8cc8 0x5df1 +0x8cc9 0x5eab +0x8cca 0x5f27 +0x8ccb 0x6238 +0x8ccc 0x6545 +0x8ccd 0x67af +0x8cce 0x6e56 +0x8ccf 0x72d0 +0x8cd0 0x7cca +0x8cd1 0x88b4 +0x8cd2 0x80a1 +0x8cd3 0x80e1 +0x8cd4 0x83f0 +0x8cd5 0x864e +0x8cd6 0x8a87 +0x8cd7 0x8de8 +0x8cd8 0x9237 +0x8cd9 0x96c7 +0x8cda 0x9867 +0x8cdb 0x9f13 +0x8cdc 0x4e94 +0x8cdd 0x4e92 +0x8cde 0x4f0d +0x8cdf 0x5348 +0x8ce0 0x5449 +0x8ce1 0x543e +0x8ce2 0x5a2f +0x8ce3 0x5f8c +0x8ce4 0x5fa1 +0x8ce5 0x609f +0x8ce6 0x68a7 +0x8ce7 0x6a8e +0x8ce8 0x745a +0x8ce9 0x7881 +0x8cea 0x8a9e +0x8ceb 0x8aa4 +0x8cec 0x8b77 +0x8ced 0x9190 +0x8cee 0x4e5e +0x8cef 0x9bc9 +0x8cf0 0x4ea4 +0x8cf1 0x4f7c +0x8cf2 0x4faf +0x8cf3 0x5019 +0x8cf4 0x5016 +0x8cf5 0x5149 +0x8cf6 0x516c +0x8cf7 0x529f +0x8cf8 0x52b9 +0x8cf9 0x52fe +0x8cfa 0x539a +0x8cfb 0x53e3 +0x8cfc 0x5411 +0x8d40 0x540e +0x8d41 0x5589 +0x8d42 0x5751 +0x8d43 0x57a2 +0x8d44 0x597d +0x8d45 0x5b54 +0x8d46 0x5b5d +0x8d47 0x5b8f +0x8d48 0x5de5 +0x8d49 0x5de7 +0x8d4a 0x5df7 +0x8d4b 0x5e78 +0x8d4c 0x5e83 +0x8d4d 0x5e9a +0x8d4e 0x5eb7 +0x8d4f 0x5f18 +0x8d50 0x6052 +0x8d51 0x614c +0x8d52 0x6297 +0x8d53 0x62d8 +0x8d54 0x63a7 +0x8d55 0x653b +0x8d56 0x6602 +0x8d57 0x6643 +0x8d58 0x66f4 +0x8d59 0x676d +0x8d5a 0x6821 +0x8d5b 0x6897 +0x8d5c 0x69cb +0x8d5d 0x6c5f +0x8d5e 0x6d2a +0x8d5f 0x6d69 +0x8d60 0x6e2f +0x8d61 0x6e9d +0x8d62 0x7532 +0x8d63 0x7687 +0x8d64 0x786c +0x8d65 0x7a3f +0x8d66 0x7ce0 +0x8d67 0x7d05 +0x8d68 0x7d18 +0x8d69 0x7d5e +0x8d6a 0x7db1 +0x8d6b 0x8015 +0x8d6c 0x8003 +0x8d6d 0x80af +0x8d6e 0x80b1 +0x8d6f 0x8154 +0x8d70 0x818f +0x8d71 0x822a +0x8d72 0x8352 +0x8d73 0x884c +0x8d74 0x8861 +0x8d75 0x8b1b +0x8d76 0x8ca2 +0x8d77 0x8cfc +0x8d78 0x90ca +0x8d79 0x9175 +0x8d7a 0x9271 +0x8d7b 0x783f +0x8d7c 0x92fc +0x8d7d 0x95a4 +0x8d7e 0x964d +0x8d80 0x9805 +0x8d81 0x9999 +0x8d82 0x9ad8 +0x8d83 0x9d3b +0x8d84 0x525b +0x8d85 0x52ab +0x8d86 0x53f7 +0x8d87 0x5408 +0x8d88 0x58d5 +0x8d89 0x62f7 +0x8d8a 0x6fe0 +0x8d8b 0x8c6a +0x8d8c 0x8f5f +0x8d8d 0x9eb9 +0x8d8e 0x514b +0x8d8f 0x523b +0x8d90 0x544a +0x8d91 0x56fd +0x8d92 0x7a40 +0x8d93 0x9177 +0x8d94 0x9d60 +0x8d95 0x9ed2 +0x8d96 0x7344 +0x8d97 0x6f09 +0x8d98 0x8170 +0x8d99 0x7511 +0x8d9a 0x5ffd +0x8d9b 0x60da +0x8d9c 0x9aa8 +0x8d9d 0x72db +0x8d9e 0x8fbc +0x8d9f 0x6b64 +0x8da0 0x9803 +0x8da1 0x4eca +0x8da2 0x56f0 +0x8da3 0x5764 +0x8da4 0x58be +0x8da5 0x5a5a +0x8da6 0x6068 +0x8da7 0x61c7 +0x8da8 0x660f +0x8da9 0x6606 +0x8daa 0x6839 +0x8dab 0x68b1 +0x8dac 0x6df7 +0x8dad 0x75d5 +0x8dae 0x7d3a +0x8daf 0x826e +0x8db0 0x9b42 +0x8db1 0x4e9b +0x8db2 0x4f50 +0x8db3 0x53c9 +0x8db4 0x5506 +0x8db5 0x5d6f +0x8db6 0x5de6 +0x8db7 0x5dee +0x8db8 0x67fb +0x8db9 0x6c99 +0x8dba 0x7473 +0x8dbb 0x7802 +0x8dbc 0x8a50 +0x8dbd 0x9396 +0x8dbe 0x88df +0x8dbf 0x5750 +0x8dc0 0x5ea7 +0x8dc1 0x632b +0x8dc2 0x50b5 +0x8dc3 0x50ac +0x8dc4 0x518d +0x8dc5 0x6700 +0x8dc6 0x54c9 +0x8dc7 0x585e +0x8dc8 0x59bb +0x8dc9 0x5bb0 +0x8dca 0x5f69 +0x8dcb 0x624d +0x8dcc 0x63a1 +0x8dcd 0x683d +0x8dce 0x6b73 +0x8dcf 0x6e08 +0x8dd0 0x707d +0x8dd1 0x91c7 +0x8dd2 0x7280 +0x8dd3 0x7815 +0x8dd4 0x7826 +0x8dd5 0x796d +0x8dd6 0x658e +0x8dd7 0x7d30 +0x8dd8 0x83dc +0x8dd9 0x88c1 +0x8dda 0x8f09 +0x8ddb 0x969b +0x8ddc 0x5264 +0x8ddd 0x5728 +0x8dde 0x6750 +0x8ddf 0x7f6a +0x8de0 0x8ca1 +0x8de1 0x51b4 +0x8de2 0x5742 +0x8de3 0x962a +0x8de4 0x583a +0x8de5 0x698a +0x8de6 0x80b4 +0x8de7 0x54b2 +0x8de8 0x5d0e +0x8de9 0x57fc +0x8dea 0x7895 +0x8deb 0x9dfa +0x8dec 0x4f5c +0x8ded 0x524a +0x8dee 0x548b +0x8def 0x643e +0x8df0 0x6628 +0x8df1 0x6714 +0x8df2 0x67f5 +0x8df3 0x7a84 +0x8df4 0x7b56 +0x8df5 0x7d22 +0x8df6 0x932f +0x8df7 0x685c +0x8df8 0x9bad +0x8df9 0x7b39 +0x8dfa 0x5319 +0x8dfb 0x518a +0x8dfc 0x5237 +0x8e40 0x5bdf +0x8e41 0x62f6 +0x8e42 0x64ae +0x8e43 0x64e6 +0x8e44 0x672d +0x8e45 0x6bba +0x8e46 0x85a9 +0x8e47 0x96d1 +0x8e48 0x7690 +0x8e49 0x9bd6 +0x8e4a 0x634c +0x8e4b 0x9306 +0x8e4c 0x9bab +0x8e4d 0x76bf +0x8e4e 0x6652 +0x8e4f 0x4e09 +0x8e50 0x5098 +0x8e51 0x53c2 +0x8e52 0x5c71 +0x8e53 0x60e8 +0x8e54 0x6492 +0x8e55 0x6563 +0x8e56 0x685f +0x8e57 0x71e6 +0x8e58 0x73ca +0x8e59 0x7523 +0x8e5a 0x7b97 +0x8e5b 0x7e82 +0x8e5c 0x8695 +0x8e5d 0x8b83 +0x8e5e 0x8cdb +0x8e5f 0x9178 +0x8e60 0x9910 +0x8e61 0x65ac +0x8e62 0x66ab +0x8e63 0x6b8b +0x8e64 0x4ed5 +0x8e65 0x4ed4 +0x8e66 0x4f3a +0x8e67 0x4f7f +0x8e68 0x523a +0x8e69 0x53f8 +0x8e6a 0x53f2 +0x8e6b 0x55e3 +0x8e6c 0x56db +0x8e6d 0x58eb +0x8e6e 0x59cb +0x8e6f 0x59c9 +0x8e70 0x59ff +0x8e71 0x5b50 +0x8e72 0x5c4d +0x8e73 0x5e02 +0x8e74 0x5e2b +0x8e75 0x5fd7 +0x8e76 0x601d +0x8e77 0x6307 +0x8e78 0x652f +0x8e79 0x5b5c +0x8e7a 0x65af +0x8e7b 0x65bd +0x8e7c 0x65e8 +0x8e7d 0x679d +0x8e7e 0x6b62 +0x8e80 0x6b7b +0x8e81 0x6c0f +0x8e82 0x7345 +0x8e83 0x7949 +0x8e84 0x79c1 +0x8e85 0x7cf8 +0x8e86 0x7d19 +0x8e87 0x7d2b +0x8e88 0x80a2 +0x8e89 0x8102 +0x8e8a 0x81f3 +0x8e8b 0x8996 +0x8e8c 0x8a5e +0x8e8d 0x8a69 +0x8e8e 0x8a66 +0x8e8f 0x8a8c +0x8e90 0x8aee +0x8e91 0x8cc7 +0x8e92 0x8cdc +0x8e93 0x96cc +0x8e94 0x98fc +0x8e95 0x6b6f +0x8e96 0x4e8b +0x8e97 0x4f3c +0x8e98 0x4f8d +0x8e99 0x5150 +0x8e9a 0x5b57 +0x8e9b 0x5bfa +0x8e9c 0x6148 +0x8e9d 0x6301 +0x8e9e 0x6642 +0x8e9f 0x6b21 +0x8ea0 0x6ecb +0x8ea1 0x6cbb +0x8ea2 0x723e +0x8ea3 0x74bd +0x8ea4 0x75d4 +0x8ea5 0x78c1 +0x8ea6 0x793a +0x8ea7 0x800c +0x8ea8 0x8033 +0x8ea9 0x81ea +0x8eaa 0x8494 +0x8eab 0x8f9e +0x8eac 0x6c50 +0x8ead 0x9e7f +0x8eae 0x5f0f +0x8eaf 0x8b58 +0x8eb0 0x9d2b +0x8eb1 0x7afa +0x8eb2 0x8ef8 +0x8eb3 0x5b8d +0x8eb4 0x96eb +0x8eb5 0x4e03 +0x8eb6 0x53f1 +0x8eb7 0x57f7 +0x8eb8 0x5931 +0x8eb9 0x5ac9 +0x8eba 0x5ba4 +0x8ebb 0x6089 +0x8ebc 0x6e7f +0x8ebd 0x6f06 +0x8ebe 0x75be +0x8ebf 0x8cea +0x8ec0 0x5b9f +0x8ec1 0x8500 +0x8ec2 0x7be0 +0x8ec3 0x5072 +0x8ec4 0x67f4 +0x8ec5 0x829d +0x8ec6 0x5c61 +0x8ec7 0x854a +0x8ec8 0x7e1e +0x8ec9 0x820e +0x8eca 0x5199 +0x8ecb 0x5c04 +0x8ecc 0x6368 +0x8ecd 0x8d66 +0x8ece 0x659c +0x8ecf 0x716e +0x8ed0 0x793e +0x8ed1 0x7d17 +0x8ed2 0x8005 +0x8ed3 0x8b1d +0x8ed4 0x8eca +0x8ed5 0x906e +0x8ed6 0x86c7 +0x8ed7 0x90aa +0x8ed8 0x501f +0x8ed9 0x52fa +0x8eda 0x5c3a +0x8edb 0x6753 +0x8edc 0x707c +0x8edd 0x7235 +0x8ede 0x914c +0x8edf 0x91c8 +0x8ee0 0x932b +0x8ee1 0x82e5 +0x8ee2 0x5bc2 +0x8ee3 0x5f31 +0x8ee4 0x60f9 +0x8ee5 0x4e3b +0x8ee6 0x53d6 +0x8ee7 0x5b88 +0x8ee8 0x624b +0x8ee9 0x6731 +0x8eea 0x6b8a +0x8eeb 0x72e9 +0x8eec 0x73e0 +0x8eed 0x7a2e +0x8eee 0x816b +0x8eef 0x8da3 +0x8ef0 0x9152 +0x8ef1 0x9996 +0x8ef2 0x5112 +0x8ef3 0x53d7 +0x8ef4 0x546a +0x8ef5 0x5bff +0x8ef6 0x6388 +0x8ef7 0x6a39 +0x8ef8 0x7dac +0x8ef9 0x9700 +0x8efa 0x56da +0x8efb 0x53ce +0x8efc 0x5468 +0x8f40 0x5b97 +0x8f41 0x5c31 +0x8f42 0x5dde +0x8f43 0x4fee +0x8f44 0x6101 +0x8f45 0x62fe +0x8f46 0x6d32 +0x8f47 0x79c0 +0x8f48 0x79cb +0x8f49 0x7d42 +0x8f4a 0x7e4d +0x8f4b 0x7fd2 +0x8f4c 0x81ed +0x8f4d 0x821f +0x8f4e 0x8490 +0x8f4f 0x8846 +0x8f50 0x8972 +0x8f51 0x8b90 +0x8f52 0x8e74 +0x8f53 0x8f2f +0x8f54 0x9031 +0x8f55 0x914b +0x8f56 0x916c +0x8f57 0x96c6 +0x8f58 0x919c +0x8f59 0x4ec0 +0x8f5a 0x4f4f +0x8f5b 0x5145 +0x8f5c 0x5341 +0x8f5d 0x5f93 +0x8f5e 0x620e +0x8f5f 0x67d4 +0x8f60 0x6c41 +0x8f61 0x6e0b +0x8f62 0x7363 +0x8f63 0x7e26 +0x8f64 0x91cd +0x8f65 0x9283 +0x8f66 0x53d4 +0x8f67 0x5919 +0x8f68 0x5bbf +0x8f69 0x6dd1 +0x8f6a 0x795d +0x8f6b 0x7e2e +0x8f6c 0x7c9b +0x8f6d 0x587e +0x8f6e 0x719f +0x8f6f 0x51fa +0x8f70 0x8853 +0x8f71 0x8ff0 +0x8f72 0x4fca +0x8f73 0x5cfb +0x8f74 0x6625 +0x8f75 0x77ac +0x8f76 0x7ae3 +0x8f77 0x821c +0x8f78 0x99ff +0x8f79 0x51c6 +0x8f7a 0x5faa +0x8f7b 0x65ec +0x8f7c 0x696f +0x8f7d 0x6b89 +0x8f7e 0x6df3 +0x8f80 0x6e96 +0x8f81 0x6f64 +0x8f82 0x76fe +0x8f83 0x7d14 +0x8f84 0x5de1 +0x8f85 0x9075 +0x8f86 0x9187 +0x8f87 0x9806 +0x8f88 0x51e6 +0x8f89 0x521d +0x8f8a 0x6240 +0x8f8b 0x6691 +0x8f8c 0x66d9 +0x8f8d 0x6e1a +0x8f8e 0x5eb6 +0x8f8f 0x7dd2 +0x8f90 0x7f72 +0x8f91 0x66f8 +0x8f92 0x85af +0x8f93 0x85f7 +0x8f94 0x8af8 +0x8f95 0x52a9 +0x8f96 0x53d9 +0x8f97 0x5973 +0x8f98 0x5e8f +0x8f99 0x5f90 +0x8f9a 0x6055 +0x8f9b 0x92e4 +0x8f9c 0x9664 +0x8f9d 0x50b7 +0x8f9e 0x511f +0x8f9f 0x52dd +0x8fa0 0x5320 +0x8fa1 0x5347 +0x8fa2 0x53ec +0x8fa3 0x54e8 +0x8fa4 0x5546 +0x8fa5 0x5531 +0x8fa6 0x5617 +0x8fa7 0x5968 +0x8fa8 0x59be +0x8fa9 0x5a3c +0x8faa 0x5bb5 +0x8fab 0x5c06 +0x8fac 0x5c0f +0x8fad 0x5c11 +0x8fae 0x5c1a +0x8faf 0x5e84 +0x8fb0 0x5e8a +0x8fb1 0x5ee0 +0x8fb2 0x5f70 +0x8fb3 0x627f +0x8fb4 0x6284 +0x8fb5 0x62db +0x8fb6 0x638c +0x8fb7 0x6377 +0x8fb8 0x6607 +0x8fb9 0x660c +0x8fba 0x662d +0x8fbb 0x6676 +0x8fbc 0x677e +0x8fbd 0x68a2 +0x8fbe 0x6a1f +0x8fbf 0x6a35 +0x8fc0 0x6cbc +0x8fc1 0x6d88 +0x8fc2 0x6e09 +0x8fc3 0x6e58 +0x8fc4 0x713c +0x8fc5 0x7126 +0x8fc6 0x7167 +0x8fc7 0x75c7 +0x8fc8 0x7701 +0x8fc9 0x785d +0x8fca 0x7901 +0x8fcb 0x7965 +0x8fcc 0x79f0 +0x8fcd 0x7ae0 +0x8fce 0x7b11 +0x8fcf 0x7ca7 +0x8fd0 0x7d39 +0x8fd1 0x8096 +0x8fd2 0x83d6 +0x8fd3 0x848b +0x8fd4 0x8549 +0x8fd5 0x885d +0x8fd6 0x88f3 +0x8fd7 0x8a1f +0x8fd8 0x8a3c +0x8fd9 0x8a54 +0x8fda 0x8a73 +0x8fdb 0x8c61 +0x8fdc 0x8cde +0x8fdd 0x91a4 +0x8fde 0x9266 +0x8fdf 0x937e +0x8fe0 0x9418 +0x8fe1 0x969c +0x8fe2 0x9798 +0x8fe3 0x4e0a +0x8fe4 0x4e08 +0x8fe5 0x4e1e +0x8fe6 0x4e57 +0x8fe7 0x5197 +0x8fe8 0x5270 +0x8fe9 0x57ce +0x8fea 0x5834 +0x8feb 0x58cc +0x8fec 0x5b22 +0x8fed 0x5e38 +0x8fee 0x60c5 +0x8fef 0x64fe +0x8ff0 0x6761 +0x8ff1 0x6756 +0x8ff2 0x6d44 +0x8ff3 0x72b6 +0x8ff4 0x7573 +0x8ff5 0x7a63 +0x8ff6 0x84b8 +0x8ff7 0x8b72 +0x8ff8 0x91b8 +0x8ff9 0x9320 +0x8ffa 0x5631 +0x8ffb 0x57f4 +0x8ffc 0x98fe +0x9040 0x62ed +0x9041 0x690d +0x9042 0x6b96 +0x9043 0x71ed +0x9044 0x7e54 +0x9045 0x8077 +0x9046 0x8272 +0x9047 0x89e6 +0x9048 0x98df +0x9049 0x8755 +0x904a 0x8fb1 +0x904b 0x5c3b +0x904c 0x4f38 +0x904d 0x4fe1 +0x904e 0x4fb5 +0x904f 0x5507 +0x9050 0x5a20 +0x9051 0x5bdd +0x9052 0x5be9 +0x9053 0x5fc3 +0x9054 0x614e +0x9055 0x632f +0x9056 0x65b0 +0x9057 0x664b +0x9058 0x68ee +0x9059 0x699b +0x905a 0x6d78 +0x905b 0x6df1 +0x905c 0x7533 +0x905d 0x75b9 +0x905e 0x771f +0x905f 0x795e +0x9060 0x79e6 +0x9061 0x7d33 +0x9062 0x81e3 +0x9063 0x82af +0x9064 0x85aa +0x9065 0x89aa +0x9066 0x8a3a +0x9067 0x8eab +0x9068 0x8f9b +0x9069 0x9032 +0x906a 0x91dd +0x906b 0x9707 +0x906c 0x4eba +0x906d 0x4ec1 +0x906e 0x5203 +0x906f 0x5875 +0x9070 0x58ec +0x9071 0x5c0b +0x9072 0x751a +0x9073 0x5c3d +0x9074 0x814e +0x9075 0x8a0a +0x9076 0x8fc5 +0x9077 0x9663 +0x9078 0x976d +0x9079 0x7b25 +0x907a 0x8acf +0x907b 0x9808 +0x907c 0x9162 +0x907d 0x56f3 +0x907e 0x53a8 +0x9080 0x9017 +0x9081 0x5439 +0x9082 0x5782 +0x9083 0x5e25 +0x9084 0x63a8 +0x9085 0x6c34 +0x9086 0x708a +0x9087 0x7761 +0x9088 0x7c8b +0x9089 0x7fe0 +0x908a 0x8870 +0x908b 0x9042 +0x908c 0x9154 +0x908d 0x9310 +0x908e 0x9318 +0x908f 0x968f +0x9090 0x745e +0x9091 0x9ac4 +0x9092 0x5d07 +0x9093 0x5d69 +0x9094 0x6570 +0x9095 0x67a2 +0x9096 0x8da8 +0x9097 0x96db +0x9098 0x636e +0x9099 0x6749 +0x909a 0x6919 +0x909b 0x83c5 +0x909c 0x9817 +0x909d 0x96c0 +0x909e 0x88fe +0x909f 0x6f84 +0x90a0 0x647a +0x90a1 0x5bf8 +0x90a2 0x4e16 +0x90a3 0x702c +0x90a4 0x755d +0x90a5 0x662f +0x90a6 0x51c4 +0x90a7 0x5236 +0x90a8 0x52e2 +0x90a9 0x59d3 +0x90aa 0x5f81 +0x90ab 0x6027 +0x90ac 0x6210 +0x90ad 0x653f +0x90ae 0x6574 +0x90af 0x661f +0x90b0 0x6674 +0x90b1 0x68f2 +0x90b2 0x6816 +0x90b3 0x6b63 +0x90b4 0x6e05 +0x90b5 0x7272 +0x90b6 0x751f +0x90b7 0x76db +0x90b8 0x7cbe +0x90b9 0x8056 +0x90ba 0x58f0 +0x90bb 0x88fd +0x90bc 0x897f +0x90bd 0x8aa0 +0x90be 0x8a93 +0x90bf 0x8acb +0x90c0 0x901d +0x90c1 0x9192 +0x90c2 0x9752 +0x90c3 0x9759 +0x90c4 0x6589 +0x90c5 0x7a0e +0x90c6 0x8106 +0x90c7 0x96bb +0x90c8 0x5e2d +0x90c9 0x60dc +0x90ca 0x621a +0x90cb 0x65a5 +0x90cc 0x6614 +0x90cd 0x6790 +0x90ce 0x77f3 +0x90cf 0x7a4d +0x90d0 0x7c4d +0x90d1 0x7e3e +0x90d2 0x810a +0x90d3 0x8cac +0x90d4 0x8d64 +0x90d5 0x8de1 +0x90d6 0x8e5f +0x90d7 0x78a9 +0x90d8 0x5207 +0x90d9 0x62d9 +0x90da 0x63a5 +0x90db 0x6442 +0x90dc 0x6298 +0x90dd 0x8a2d +0x90de 0x7a83 +0x90df 0x7bc0 +0x90e0 0x8aac +0x90e1 0x96ea +0x90e2 0x7d76 +0x90e3 0x820c +0x90e4 0x8749 +0x90e5 0x4ed9 +0x90e6 0x5148 +0x90e7 0x5343 +0x90e8 0x5360 +0x90e9 0x5ba3 +0x90ea 0x5c02 +0x90eb 0x5c16 +0x90ec 0x5ddd +0x90ed 0x6226 +0x90ee 0x6247 +0x90ef 0x64b0 +0x90f0 0x6813 +0x90f1 0x6834 +0x90f2 0x6cc9 +0x90f3 0x6d45 +0x90f4 0x6d17 +0x90f5 0x67d3 +0x90f6 0x6f5c +0x90f7 0x714e +0x90f8 0x717d +0x90f9 0x65cb +0x90fa 0x7a7f +0x90fb 0x7bad +0x90fc 0x7dda +0x9140 0x7e4a +0x9141 0x7fa8 +0x9142 0x817a +0x9143 0x821b +0x9144 0x8239 +0x9145 0x85a6 +0x9146 0x8a6e +0x9147 0x8cce +0x9148 0x8df5 +0x9149 0x9078 +0x914a 0x9077 +0x914b 0x92ad +0x914c 0x9291 +0x914d 0x9583 +0x914e 0x9bae +0x914f 0x524d +0x9150 0x5584 +0x9151 0x6f38 +0x9152 0x7136 +0x9153 0x5168 +0x9154 0x7985 +0x9155 0x7e55 +0x9156 0x81b3 +0x9157 0x7cce +0x9158 0x564c +0x9159 0x5851 +0x915a 0x5ca8 +0x915b 0x63aa +0x915c 0x66fe +0x915d 0x66fd +0x915e 0x695a +0x915f 0x72d9 +0x9160 0x758f +0x9161 0x758e +0x9162 0x790e +0x9163 0x7956 +0x9164 0x79df +0x9165 0x7c97 +0x9166 0x7d20 +0x9167 0x7d44 +0x9168 0x8607 +0x9169 0x8a34 +0x916a 0x963b +0x916b 0x9061 +0x916c 0x9f20 +0x916d 0x50e7 +0x916e 0x5275 +0x916f 0x53cc +0x9170 0x53e2 +0x9171 0x5009 +0x9172 0x55aa +0x9173 0x58ee +0x9174 0x594f +0x9175 0x723d +0x9176 0x5b8b +0x9177 0x5c64 +0x9178 0x531d +0x9179 0x60e3 +0x917a 0x60f3 +0x917b 0x635c +0x917c 0x6383 +0x917d 0x633f +0x917e 0x63bb +0x9180 0x64cd +0x9181 0x65e9 +0x9182 0x66f9 +0x9183 0x5de3 +0x9184 0x69cd +0x9185 0x69fd +0x9186 0x6f15 +0x9187 0x71e5 +0x9188 0x4e89 +0x9189 0x75e9 +0x918a 0x76f8 +0x918b 0x7a93 +0x918c 0x7cdf +0x918d 0x7dcf +0x918e 0x7d9c +0x918f 0x8061 +0x9190 0x8349 +0x9191 0x8358 +0x9192 0x846c +0x9193 0x84bc +0x9194 0x85fb +0x9195 0x88c5 +0x9196 0x8d70 +0x9197 0x9001 +0x9198 0x906d +0x9199 0x9397 +0x919a 0x971c +0x919b 0x9a12 +0x919c 0x50cf +0x919d 0x5897 +0x919e 0x618e +0x919f 0x81d3 +0x91a0 0x8535 +0x91a1 0x8d08 +0x91a2 0x9020 +0x91a3 0x4fc3 +0x91a4 0x5074 +0x91a5 0x5247 +0x91a6 0x5373 +0x91a7 0x606f +0x91a8 0x6349 +0x91a9 0x675f +0x91aa 0x6e2c +0x91ab 0x8db3 +0x91ac 0x901f +0x91ad 0x4fd7 +0x91ae 0x5c5e +0x91af 0x8cca +0x91b0 0x65cf +0x91b1 0x7d9a +0x91b2 0x5352 +0x91b3 0x8896 +0x91b4 0x5176 +0x91b5 0x63c3 +0x91b6 0x5b58 +0x91b7 0x5b6b +0x91b8 0x5c0a +0x91b9 0x640d +0x91ba 0x6751 +0x91bb 0x905c +0x91bc 0x4ed6 +0x91bd 0x591a +0x91be 0x592a +0x91bf 0x6c70 +0x91c0 0x8a51 +0x91c1 0x553e +0x91c2 0x5815 +0x91c3 0x59a5 +0x91c4 0x60f0 +0x91c5 0x6253 +0x91c6 0x67c1 +0x91c7 0x8235 +0x91c8 0x6955 +0x91c9 0x9640 +0x91ca 0x99c4 +0x91cb 0x9a28 +0x91cc 0x4f53 +0x91cd 0x5806 +0x91ce 0x5bfe +0x91cf 0x8010 +0x91d0 0x5cb1 +0x91d1 0x5e2f +0x91d2 0x5f85 +0x91d3 0x6020 +0x91d4 0x614b +0x91d5 0x6234 +0x91d6 0x66ff +0x91d7 0x6cf0 +0x91d8 0x6ede +0x91d9 0x80ce +0x91da 0x817f +0x91db 0x82d4 +0x91dc 0x888b +0x91dd 0x8cb8 +0x91de 0x9000 +0x91df 0x902e +0x91e0 0x968a +0x91e1 0x9edb +0x91e2 0x9bdb +0x91e3 0x4ee3 +0x91e4 0x53f0 +0x91e5 0x5927 +0x91e6 0x7b2c +0x91e7 0x918d +0x91e8 0x984c +0x91e9 0x9df9 +0x91ea 0x6edd +0x91eb 0x7027 +0x91ec 0x5353 +0x91ed 0x5544 +0x91ee 0x5b85 +0x91ef 0x6258 +0x91f0 0x629e +0x91f1 0x62d3 +0x91f2 0x6ca2 +0x91f3 0x6fef +0x91f4 0x7422 +0x91f5 0x8a17 +0x91f6 0x9438 +0x91f7 0x6fc1 +0x91f8 0x8afe +0x91f9 0x8338 +0x91fa 0x51e7 +0x91fb 0x86f8 +0x91fc 0x53ea +0x9240 0x53e9 +0x9241 0x4f46 +0x9242 0x9054 +0x9243 0x8fb0 +0x9244 0x596a +0x9245 0x8131 +0x9246 0x5dfd +0x9247 0x7aea +0x9248 0x8fbf +0x9249 0x68da +0x924a 0x8c37 +0x924b 0x72f8 +0x924c 0x9c48 +0x924d 0x6a3d +0x924e 0x8ab0 +0x924f 0x4e39 +0x9250 0x5358 +0x9251 0x5606 +0x9252 0x5766 +0x9253 0x62c5 +0x9254 0x63a2 +0x9255 0x65e6 +0x9256 0x6b4e +0x9257 0x6de1 +0x9258 0x6e5b +0x9259 0x70ad +0x925a 0x77ed +0x925b 0x7aef +0x925c 0x7baa +0x925d 0x7dbb +0x925e 0x803d +0x925f 0x80c6 +0x9260 0x86cb +0x9261 0x8a95 +0x9262 0x935b +0x9263 0x56e3 +0x9264 0x58c7 +0x9265 0x5f3e +0x9266 0x65ad +0x9267 0x6696 +0x9268 0x6a80 +0x9269 0x6bb5 +0x926a 0x7537 +0x926b 0x8ac7 +0x926c 0x5024 +0x926d 0x77e5 +0x926e 0x5730 +0x926f 0x5f1b +0x9270 0x6065 +0x9271 0x667a +0x9272 0x6c60 +0x9273 0x75f4 +0x9274 0x7a1a +0x9275 0x7f6e +0x9276 0x81f4 +0x9277 0x8718 +0x9278 0x9045 +0x9279 0x99b3 +0x927a 0x7bc9 +0x927b 0x755c +0x927c 0x7af9 +0x927d 0x7b51 +0x927e 0x84c4 +0x9280 0x9010 +0x9281 0x79e9 +0x9282 0x7a92 +0x9283 0x8336 +0x9284 0x5ae1 +0x9285 0x7740 +0x9286 0x4e2d +0x9287 0x4ef2 +0x9288 0x5b99 +0x9289 0x5fe0 +0x928a 0x62bd +0x928b 0x663c +0x928c 0x67f1 +0x928d 0x6ce8 +0x928e 0x866b +0x928f 0x8877 +0x9290 0x8a3b +0x9291 0x914e +0x9292 0x92f3 +0x9293 0x99d0 +0x9294 0x6a17 +0x9295 0x7026 +0x9296 0x732a +0x9297 0x82e7 +0x9298 0x8457 +0x9299 0x8caf +0x929a 0x4e01 +0x929b 0x5146 +0x929c 0x51cb +0x929d 0x558b +0x929e 0x5bf5 +0x929f 0x5e16 +0x92a0 0x5e33 +0x92a1 0x5e81 +0x92a2 0x5f14 +0x92a3 0x5f35 +0x92a4 0x5f6b +0x92a5 0x5fb4 +0x92a6 0x61f2 +0x92a7 0x6311 +0x92a8 0x66a2 +0x92a9 0x671d +0x92aa 0x6f6e +0x92ab 0x7252 +0x92ac 0x753a +0x92ad 0x773a +0x92ae 0x8074 +0x92af 0x8139 +0x92b0 0x8178 +0x92b1 0x8776 +0x92b2 0x8abf +0x92b3 0x8adc +0x92b4 0x8d85 +0x92b5 0x8df3 +0x92b6 0x929a +0x92b7 0x9577 +0x92b8 0x9802 +0x92b9 0x9ce5 +0x92ba 0x52c5 +0x92bb 0x6357 +0x92bc 0x76f4 +0x92bd 0x6715 +0x92be 0x6c88 +0x92bf 0x73cd +0x92c0 0x8cc3 +0x92c1 0x93ae +0x92c2 0x9673 +0x92c3 0x6d25 +0x92c4 0x589c +0x92c5 0x690e +0x92c6 0x69cc +0x92c7 0x8ffd +0x92c8 0x939a +0x92c9 0x75db +0x92ca 0x901a +0x92cb 0x585a +0x92cc 0x6802 +0x92cd 0x63b4 +0x92ce 0x69fb +0x92cf 0x4f43 +0x92d0 0x6f2c +0x92d1 0x67d8 +0x92d2 0x8fbb +0x92d3 0x8526 +0x92d4 0x7db4 +0x92d5 0x9354 +0x92d6 0x693f +0x92d7 0x6f70 +0x92d8 0x576a +0x92d9 0x58f7 +0x92da 0x5b2c +0x92db 0x7d2c +0x92dc 0x722a +0x92dd 0x540a +0x92de 0x91e3 +0x92df 0x9db4 +0x92e0 0x4ead +0x92e1 0x4f4e +0x92e2 0x505c +0x92e3 0x5075 +0x92e4 0x5243 +0x92e5 0x8c9e +0x92e6 0x5448 +0x92e7 0x5824 +0x92e8 0x5b9a +0x92e9 0x5e1d +0x92ea 0x5e95 +0x92eb 0x5ead +0x92ec 0x5ef7 +0x92ed 0x5f1f +0x92ee 0x608c +0x92ef 0x62b5 +0x92f0 0x633a +0x92f1 0x63d0 +0x92f2 0x68af +0x92f3 0x6c40 +0x92f4 0x7887 +0x92f5 0x798e +0x92f6 0x7a0b +0x92f7 0x7de0 +0x92f8 0x8247 +0x92f9 0x8a02 +0x92fa 0x8ae6 +0x92fb 0x8e44 +0x92fc 0x9013 +0x9340 0x90b8 +0x9341 0x912d +0x9342 0x91d8 +0x9343 0x9f0e +0x9344 0x6ce5 +0x9345 0x6458 +0x9346 0x64e2 +0x9347 0x6575 +0x9348 0x6ef4 +0x9349 0x7684 +0x934a 0x7b1b +0x934b 0x9069 +0x934c 0x93d1 +0x934d 0x6eba +0x934e 0x54f2 +0x934f 0x5fb9 +0x9350 0x64a4 +0x9351 0x8f4d +0x9352 0x8fed +0x9353 0x9244 +0x9354 0x5178 +0x9355 0x586b +0x9356 0x5929 +0x9357 0x5c55 +0x9358 0x5e97 +0x9359 0x6dfb +0x935a 0x7e8f +0x935b 0x751c +0x935c 0x8cbc +0x935d 0x8ee2 +0x935e 0x985b +0x935f 0x70b9 +0x9360 0x4f1d +0x9361 0x6bbf +0x9362 0x6fb1 +0x9363 0x7530 +0x9364 0x96fb +0x9365 0x514e +0x9366 0x5410 +0x9367 0x5835 +0x9368 0x5857 +0x9369 0x59ac +0x936a 0x5c60 +0x936b 0x5f92 +0x936c 0x6597 +0x936d 0x675c +0x936e 0x6e21 +0x936f 0x767b +0x9370 0x83df +0x9371 0x8ced +0x9372 0x9014 +0x9373 0x90fd +0x9374 0x934d +0x9375 0x7825 +0x9376 0x783a +0x9377 0x52aa +0x9378 0x5ea6 +0x9379 0x571f +0x937a 0x5974 +0x937b 0x6012 +0x937c 0x5012 +0x937d 0x515a +0x937e 0x51ac +0x9380 0x51cd +0x9381 0x5200 +0x9382 0x5510 +0x9383 0x5854 +0x9384 0x5858 +0x9385 0x5957 +0x9386 0x5b95 +0x9387 0x5cf6 +0x9388 0x5d8b +0x9389 0x60bc +0x938a 0x6295 +0x938b 0x642d +0x938c 0x6771 +0x938d 0x6843 +0x938e 0x68bc +0x938f 0x68df +0x9390 0x76d7 +0x9391 0x6dd8 +0x9392 0x6e6f +0x9393 0x6d9b +0x9394 0x706f +0x9395 0x71c8 +0x9396 0x5f53 +0x9397 0x75d8 +0x9398 0x7977 +0x9399 0x7b49 +0x939a 0x7b54 +0x939b 0x7b52 +0x939c 0x7cd6 +0x939d 0x7d71 +0x939e 0x5230 +0x939f 0x8463 +0x93a0 0x8569 +0x93a1 0x85e4 +0x93a2 0x8a0e +0x93a3 0x8b04 +0x93a4 0x8c46 +0x93a5 0x8e0f +0x93a6 0x9003 +0x93a7 0x900f +0x93a8 0x9419 +0x93a9 0x9676 +0x93aa 0x982d +0x93ab 0x9a30 +0x93ac 0x95d8 +0x93ad 0x50cd +0x93ae 0x52d5 +0x93af 0x540c +0x93b0 0x5802 +0x93b1 0x5c0e +0x93b2 0x61a7 +0x93b3 0x649e +0x93b4 0x6d1e +0x93b5 0x77b3 +0x93b6 0x7ae5 +0x93b7 0x80f4 +0x93b8 0x8404 +0x93b9 0x9053 +0x93ba 0x9285 +0x93bb 0x5ce0 +0x93bc 0x9d07 +0x93bd 0x533f +0x93be 0x5f97 +0x93bf 0x5fb3 +0x93c0 0x6d9c +0x93c1 0x7279 +0x93c2 0x7763 +0x93c3 0x79bf +0x93c4 0x7be4 +0x93c5 0x6bd2 +0x93c6 0x72ec +0x93c7 0x8aad +0x93c8 0x6803 +0x93c9 0x6a61 +0x93ca 0x51f8 +0x93cb 0x7a81 +0x93cc 0x6934 +0x93cd 0x5c4a +0x93ce 0x9cf6 +0x93cf 0x82eb +0x93d0 0x5bc5 +0x93d1 0x9149 +0x93d2 0x701e +0x93d3 0x5678 +0x93d4 0x5c6f +0x93d5 0x60c7 +0x93d6 0x6566 +0x93d7 0x6c8c +0x93d8 0x8c5a +0x93d9 0x9041 +0x93da 0x9813 +0x93db 0x5451 +0x93dc 0x66c7 +0x93dd 0x920d +0x93de 0x5948 +0x93df 0x90a3 +0x93e0 0x5185 +0x93e1 0x4e4d +0x93e2 0x51ea +0x93e3 0x8599 +0x93e4 0x8b0e +0x93e5 0x7058 +0x93e6 0x637a +0x93e7 0x934b +0x93e8 0x6962 +0x93e9 0x99b4 +0x93ea 0x7e04 +0x93eb 0x7577 +0x93ec 0x5357 +0x93ed 0x6960 +0x93ee 0x8edf +0x93ef 0x96e3 +0x93f0 0x6c5d +0x93f1 0x4e8c +0x93f2 0x5c3c +0x93f3 0x5f10 +0x93f4 0x8fe9 +0x93f5 0x5302 +0x93f6 0x8cd1 +0x93f7 0x8089 +0x93f8 0x8679 +0x93f9 0x5eff +0x93fa 0x65e5 +0x93fb 0x4e73 +0x93fc 0x5165 +0x9440 0x5982 +0x9441 0x5c3f +0x9442 0x97ee +0x9443 0x4efb +0x9444 0x598a +0x9445 0x5fcd +0x9446 0x8a8d +0x9447 0x6fe1 +0x9448 0x79b0 +0x9449 0x7962 +0x944a 0x5be7 +0x944b 0x8471 +0x944c 0x732b +0x944d 0x71b1 +0x944e 0x5e74 +0x944f 0x5ff5 +0x9450 0x637b +0x9451 0x649a +0x9452 0x71c3 +0x9453 0x7c98 +0x9454 0x4e43 +0x9455 0x5efc +0x9456 0x4e4b +0x9457 0x57dc +0x9458 0x56a2 +0x9459 0x60a9 +0x945a 0x6fc3 +0x945b 0x7d0d +0x945c 0x80fd +0x945d 0x8133 +0x945e 0x81bf +0x945f 0x8fb2 +0x9460 0x8997 +0x9461 0x86a4 +0x9462 0x5df4 +0x9463 0x628a +0x9464 0x64ad +0x9465 0x8987 +0x9466 0x6777 +0x9467 0x6ce2 +0x9468 0x6d3e +0x9469 0x7436 +0x946a 0x7834 +0x946b 0x5a46 +0x946c 0x7f75 +0x946d 0x82ad +0x946e 0x99ac +0x946f 0x4ff3 +0x9470 0x5ec3 +0x9471 0x62dd +0x9472 0x6392 +0x9473 0x6557 +0x9474 0x676f +0x9475 0x76c3 +0x9476 0x724c +0x9477 0x80cc +0x9478 0x80ba +0x9479 0x8f29 +0x947a 0x914d +0x947b 0x500d +0x947c 0x57f9 +0x947d 0x5a92 +0x947e 0x6885 +0x9480 0x6973 +0x9481 0x7164 +0x9482 0x72fd +0x9483 0x8cb7 +0x9484 0x58f2 +0x9485 0x8ce0 +0x9486 0x966a +0x9487 0x9019 +0x9488 0x877f +0x9489 0x79e4 +0x948a 0x77e7 +0x948b 0x8429 +0x948c 0x4f2f +0x948d 0x5265 +0x948e 0x535a +0x948f 0x62cd +0x9490 0x67cf +0x9491 0x6cca +0x9492 0x767d +0x9493 0x7b94 +0x9494 0x7c95 +0x9495 0x8236 +0x9496 0x8584 +0x9497 0x8feb +0x9498 0x66dd +0x9499 0x6f20 +0x949a 0x7206 +0x949b 0x7e1b +0x949c 0x83ab +0x949d 0x99c1 +0x949e 0x9ea6 +0x949f 0x51fd +0x94a0 0x7bb1 +0x94a1 0x7872 +0x94a2 0x7bb8 +0x94a3 0x8087 +0x94a4 0x7b48 +0x94a5 0x6ae8 +0x94a6 0x5e61 +0x94a7 0x808c +0x94a8 0x7551 +0x94a9 0x7560 +0x94aa 0x516b +0x94ab 0x9262 +0x94ac 0x6e8c +0x94ad 0x767a +0x94ae 0x9197 +0x94af 0x9aea +0x94b0 0x4f10 +0x94b1 0x7f70 +0x94b2 0x629c +0x94b3 0x7b4f +0x94b4 0x95a5 +0x94b5 0x9ce9 +0x94b6 0x567a +0x94b7 0x5859 +0x94b8 0x86e4 +0x94b9 0x96bc +0x94ba 0x4f34 +0x94bb 0x5224 +0x94bc 0x534a +0x94bd 0x53cd +0x94be 0x53db +0x94bf 0x5e06 +0x94c0 0x642c +0x94c1 0x6591 +0x94c2 0x677f +0x94c3 0x6c3e +0x94c4 0x6c4e +0x94c5 0x7248 +0x94c6 0x72af +0x94c7 0x73ed +0x94c8 0x7554 +0x94c9 0x7e41 +0x94ca 0x822c +0x94cb 0x85e9 +0x94cc 0x8ca9 +0x94cd 0x7bc4 +0x94ce 0x91c6 +0x94cf 0x7169 +0x94d0 0x9812 +0x94d1 0x98ef +0x94d2 0x633d +0x94d3 0x6669 +0x94d4 0x756a +0x94d5 0x76e4 +0x94d6 0x78d0 +0x94d7 0x8543 +0x94d8 0x86ee +0x94d9 0x532a +0x94da 0x5351 +0x94db 0x5426 +0x94dc 0x5983 +0x94dd 0x5e87 +0x94de 0x5f7c +0x94df 0x60b2 +0x94e0 0x6249 +0x94e1 0x6279 +0x94e2 0x62ab +0x94e3 0x6590 +0x94e4 0x6bd4 +0x94e5 0x6ccc +0x94e6 0x75b2 +0x94e7 0x76ae +0x94e8 0x7891 +0x94e9 0x79d8 +0x94ea 0x7dcb +0x94eb 0x7f77 +0x94ec 0x80a5 +0x94ed 0x88ab +0x94ee 0x8ab9 +0x94ef 0x8cbb +0x94f0 0x907f +0x94f1 0x975e +0x94f2 0x98db +0x94f3 0x6a0b +0x94f4 0x7c38 +0x94f5 0x5099 +0x94f6 0x5c3e +0x94f7 0x5fae +0x94f8 0x6787 +0x94f9 0x6bd8 +0x94fa 0x7435 +0x94fb 0x7709 +0x94fc 0x7f8e +0x9540 0x9f3b +0x9541 0x67ca +0x9542 0x7a17 +0x9543 0x5339 +0x9544 0x758b +0x9545 0x9aed +0x9546 0x5f66 +0x9547 0x819d +0x9548 0x83f1 +0x9549 0x8098 +0x954a 0x5f3c +0x954b 0x5fc5 +0x954c 0x7562 +0x954d 0x7b46 +0x954e 0x903c +0x954f 0x6867 +0x9550 0x59eb +0x9551 0x5a9b +0x9552 0x7d10 +0x9553 0x767e +0x9554 0x8b2c +0x9555 0x4ff5 +0x9556 0x5f6a +0x9557 0x6a19 +0x9558 0x6c37 +0x9559 0x6f02 +0x955a 0x74e2 +0x955b 0x7968 +0x955c 0x8868 +0x955d 0x8a55 +0x955e 0x8c79 +0x955f 0x5edf +0x9560 0x63cf +0x9561 0x75c5 +0x9562 0x79d2 +0x9563 0x82d7 +0x9564 0x9328 +0x9565 0x92f2 +0x9566 0x849c +0x9567 0x86ed +0x9568 0x9c2d +0x9569 0x54c1 +0x956a 0x5f6c +0x956b 0x658c +0x956c 0x6d5c +0x956d 0x7015 +0x956e 0x8ca7 +0x956f 0x8cd3 +0x9570 0x983b +0x9571 0x654f +0x9572 0x74f6 +0x9573 0x4e0d +0x9574 0x4ed8 +0x9575 0x57e0 +0x9576 0x592b +0x9577 0x5a66 +0x9578 0x5bcc +0x9579 0x51a8 +0x957a 0x5e03 +0x957b 0x5e9c +0x957c 0x6016 +0x957d 0x6276 +0x957e 0x6577 +0x9580 0x65a7 +0x9581 0x666e +0x9582 0x6d6e +0x9583 0x7236 +0x9584 0x7b26 +0x9585 0x8150 +0x9586 0x819a +0x9587 0x8299 +0x9588 0x8b5c +0x9589 0x8ca0 +0x958a 0x8ce6 +0x958b 0x8d74 +0x958c 0x961c +0x958d 0x9644 +0x958e 0x4fae +0x958f 0x64ab +0x9590 0x6b66 +0x9591 0x821e +0x9592 0x8461 +0x9593 0x856a +0x9594 0x90e8 +0x9595 0x5c01 +0x9596 0x6953 +0x9597 0x98a8 +0x9598 0x847a +0x9599 0x8557 +0x959a 0x4f0f +0x959b 0x526f +0x959c 0x5fa9 +0x959d 0x5e45 +0x959e 0x670d +0x959f 0x798f +0x95a0 0x8179 +0x95a1 0x8907 +0x95a2 0x8986 +0x95a3 0x6df5 +0x95a4 0x5f17 +0x95a5 0x6255 +0x95a6 0x6cb8 +0x95a7 0x4ecf +0x95a8 0x7269 +0x95a9 0x9b92 +0x95aa 0x5206 +0x95ab 0x543b +0x95ac 0x5674 +0x95ad 0x58b3 +0x95ae 0x61a4 +0x95af 0x626e +0x95b0 0x711a +0x95b1 0x596e +0x95b2 0x7c89 +0x95b3 0x7cde +0x95b4 0x7d1b +0x95b5 0x96f0 +0x95b6 0x6587 +0x95b7 0x805e +0x95b8 0x4e19 +0x95b9 0x4f75 +0x95ba 0x5175 +0x95bb 0x5840 +0x95bc 0x5e63 +0x95bd 0x5e73 +0x95be 0x5f0a +0x95bf 0x67c4 +0x95c0 0x4e26 +0x95c1 0x853d +0x95c2 0x9589 +0x95c3 0x965b +0x95c4 0x7c73 +0x95c5 0x9801 +0x95c6 0x50fb +0x95c7 0x58c1 +0x95c8 0x7656 +0x95c9 0x78a7 +0x95ca 0x5225 +0x95cb 0x77a5 +0x95cc 0x8511 +0x95cd 0x7b86 +0x95ce 0x504f +0x95cf 0x5909 +0x95d0 0x7247 +0x95d1 0x7bc7 +0x95d2 0x7de8 +0x95d3 0x8fba +0x95d4 0x8fd4 +0x95d5 0x904d +0x95d6 0x4fbf +0x95d7 0x52c9 +0x95d8 0x5a29 +0x95d9 0x5f01 +0x95da 0x97ad +0x95db 0x4fdd +0x95dc 0x8217 +0x95dd 0x92ea +0x95de 0x5703 +0x95df 0x6355 +0x95e0 0x6b69 +0x95e1 0x752b +0x95e2 0x88dc +0x95e3 0x8f14 +0x95e4 0x7a42 +0x95e5 0x52df +0x95e6 0x5893 +0x95e7 0x6155 +0x95e8 0x620a +0x95e9 0x66ae +0x95ea 0x6bcd +0x95eb 0x7c3f +0x95ec 0x83e9 +0x95ed 0x5023 +0x95ee 0x4ff8 +0x95ef 0x5305 +0x95f0 0x5446 +0x95f1 0x5831 +0x95f2 0x5949 +0x95f3 0x5b9d +0x95f4 0x5cf0 +0x95f5 0x5cef +0x95f6 0x5d29 +0x95f7 0x5e96 +0x95f8 0x62b1 +0x95f9 0x6367 +0x95fa 0x653e +0x95fb 0x65b9 +0x95fc 0x670b +0x9640 0x6cd5 +0x9641 0x6ce1 +0x9642 0x70f9 +0x9643 0x7832 +0x9644 0x7e2b +0x9645 0x80de +0x9646 0x82b3 +0x9647 0x840c +0x9648 0x84ec +0x9649 0x8702 +0x964a 0x8912 +0x964b 0x8a2a +0x964c 0x8c4a +0x964d 0x90a6 +0x964e 0x92d2 +0x964f 0x98fd +0x9650 0x9cf3 +0x9651 0x9d6c +0x9652 0x4e4f +0x9653 0x4ea1 +0x9654 0x508d +0x9655 0x5256 +0x9656 0x574a +0x9657 0x59a8 +0x9658 0x5e3d +0x9659 0x5fd8 +0x965a 0x5fd9 +0x965b 0x623f +0x965c 0x66b4 +0x965d 0x671b +0x965e 0x67d0 +0x965f 0x68d2 +0x9660 0x5192 +0x9661 0x7d21 +0x9662 0x80aa +0x9663 0x81a8 +0x9664 0x8b00 +0x9665 0x8c8c +0x9666 0x8cbf +0x9667 0x927e +0x9668 0x9632 +0x9669 0x5420 +0x966a 0x982c +0x966b 0x5317 +0x966c 0x50d5 +0x966d 0x535c +0x966e 0x58a8 +0x966f 0x64b2 +0x9670 0x6734 +0x9671 0x7267 +0x9672 0x7766 +0x9673 0x7a46 +0x9674 0x91e6 +0x9675 0x52c3 +0x9676 0x6ca1 +0x9677 0x6b86 +0x9678 0x5800 +0x9679 0x5e4c +0x967a 0x5954 +0x967b 0x672c +0x967c 0x7ffb +0x967d 0x51e1 +0x967e 0x76c6 +0x9680 0x6469 +0x9681 0x78e8 +0x9682 0x9b54 +0x9683 0x9ebb +0x9684 0x57cb +0x9685 0x59b9 +0x9686 0x6627 +0x9687 0x679a +0x9688 0x6bce +0x9689 0x54e9 +0x968a 0x69d9 +0x968b 0x5e55 +0x968c 0x819c +0x968d 0x6795 +0x968e 0x9baa +0x968f 0x67fe +0x9690 0x9c52 +0x9691 0x685d +0x9692 0x4ea6 +0x9693 0x4fe3 +0x9694 0x53c8 +0x9695 0x62b9 +0x9696 0x672b +0x9697 0x6cab +0x9698 0x8fc4 +0x9699 0x4fad +0x969a 0x7e6d +0x969b 0x9ebf +0x969c 0x4e07 +0x969d 0x6162 +0x969e 0x6e80 +0x969f 0x6f2b +0x96a0 0x8513 +0x96a1 0x5473 +0x96a2 0x672a +0x96a3 0x9b45 +0x96a4 0x5df3 +0x96a5 0x7b95 +0x96a6 0x5cac +0x96a7 0x5bc6 +0x96a8 0x871c +0x96a9 0x6e4a +0x96aa 0x84d1 +0x96ab 0x7a14 +0x96ac 0x8108 +0x96ad 0x5999 +0x96ae 0x7c8d +0x96af 0x6c11 +0x96b0 0x7720 +0x96b1 0x52d9 +0x96b2 0x5922 +0x96b3 0x7121 +0x96b4 0x725f +0x96b5 0x77db +0x96b6 0x9727 +0x96b7 0x9d61 +0x96b8 0x690b +0x96b9 0x5a7f +0x96ba 0x5a18 +0x96bb 0x51a5 +0x96bc 0x540d +0x96bd 0x547d +0x96be 0x660e +0x96bf 0x76df +0x96c0 0x8ff7 +0x96c1 0x9298 +0x96c2 0x9cf4 +0x96c3 0x59ea +0x96c4 0x725d +0x96c5 0x6ec5 +0x96c6 0x514d +0x96c7 0x68c9 +0x96c8 0x7dbf +0x96c9 0x7dec +0x96ca 0x9762 +0x96cb 0x9eba +0x96cc 0x6478 +0x96cd 0x6a21 +0x96ce 0x8302 +0x96cf 0x5984 +0x96d0 0x5b5f +0x96d1 0x6bdb +0x96d2 0x731b +0x96d3 0x76f2 +0x96d4 0x7db2 +0x96d5 0x8017 +0x96d6 0x8499 +0x96d7 0x5132 +0x96d8 0x6728 +0x96d9 0x9ed9 +0x96da 0x76ee +0x96db 0x6762 +0x96dc 0x52ff +0x96dd 0x9905 +0x96de 0x5c24 +0x96df 0x623b +0x96e0 0x7c7e +0x96e1 0x8cb0 +0x96e2 0x554f +0x96e3 0x60b6 +0x96e4 0x7d0b +0x96e5 0x9580 +0x96e6 0x5301 +0x96e7 0x4e5f +0x96e8 0x51b6 +0x96e9 0x591c +0x96ea 0x723a +0x96eb 0x8036 +0x96ec 0x91ce +0x96ed 0x5f25 +0x96ee 0x77e2 +0x96ef 0x5384 +0x96f0 0x5f79 +0x96f1 0x7d04 +0x96f2 0x85ac +0x96f3 0x8a33 +0x96f4 0x8e8d +0x96f5 0x9756 +0x96f6 0x67f3 +0x96f7 0x85ae +0x96f8 0x9453 +0x96f9 0x6109 +0x96fa 0x6108 +0x96fb 0x6cb9 +0x96fc 0x7652 +0x9740 0x8aed +0x9741 0x8f38 +0x9742 0x552f +0x9743 0x4f51 +0x9744 0x512a +0x9745 0x52c7 +0x9746 0x53cb +0x9747 0x5ba5 +0x9748 0x5e7d +0x9749 0x60a0 +0x974a 0x6182 +0x974b 0x63d6 +0x974c 0x6709 +0x974d 0x67da +0x974e 0x6e67 +0x974f 0x6d8c +0x9750 0x7336 +0x9751 0x7337 +0x9752 0x7531 +0x9753 0x7950 +0x9754 0x88d5 +0x9755 0x8a98 +0x9756 0x904a +0x9757 0x9091 +0x9758 0x90f5 +0x9759 0x96c4 +0x975a 0x878d +0x975b 0x5915 +0x975c 0x4e88 +0x975d 0x4f59 +0x975e 0x4e0e +0x975f 0x8a89 +0x9760 0x8f3f +0x9761 0x9810 +0x9762 0x50ad +0x9763 0x5e7c +0x9764 0x5996 +0x9765 0x5bb9 +0x9766 0x5eb8 +0x9767 0x63da +0x9768 0x63fa +0x9769 0x64c1 +0x976a 0x66dc +0x976b 0x694a +0x976c 0x69d8 +0x976d 0x6d0b +0x976e 0x6eb6 +0x976f 0x7194 +0x9770 0x7528 +0x9771 0x7aaf +0x9772 0x7f8a +0x9773 0x8000 +0x9774 0x8449 +0x9775 0x84c9 +0x9776 0x8981 +0x9777 0x8b21 +0x9778 0x8e0a +0x9779 0x9065 +0x977a 0x967d +0x977b 0x990a +0x977c 0x617e +0x977d 0x6291 +0x977e 0x6b32 +0x9780 0x6c83 +0x9781 0x6d74 +0x9782 0x7fcc +0x9783 0x7ffc +0x9784 0x6dc0 +0x9785 0x7f85 +0x9786 0x87ba +0x9787 0x88f8 +0x9788 0x6765 +0x9789 0x83b1 +0x978a 0x983c +0x978b 0x96f7 +0x978c 0x6d1b +0x978d 0x7d61 +0x978e 0x843d +0x978f 0x916a +0x9790 0x4e71 +0x9791 0x5375 +0x9792 0x5d50 +0x9793 0x6b04 +0x9794 0x6feb +0x9795 0x85cd +0x9796 0x862d +0x9797 0x89a7 +0x9798 0x5229 +0x9799 0x540f +0x979a 0x5c65 +0x979b 0x674e +0x979c 0x68a8 +0x979d 0x7406 +0x979e 0x7483 +0x979f 0x75e2 +0x97a0 0x88cf +0x97a1 0x88e1 +0x97a2 0x91cc +0x97a3 0x96e2 +0x97a4 0x9678 +0x97a5 0x5f8b +0x97a6 0x7387 +0x97a7 0x7acb +0x97a8 0x844e +0x97a9 0x63a0 +0x97aa 0x7565 +0x97ab 0x5289 +0x97ac 0x6d41 +0x97ad 0x6e9c +0x97ae 0x7409 +0x97af 0x7559 +0x97b0 0x786b +0x97b1 0x7c92 +0x97b2 0x9686 +0x97b3 0x7adc +0x97b4 0x9f8d +0x97b5 0x4fb6 +0x97b6 0x616e +0x97b7 0x65c5 +0x97b8 0x865c +0x97b9 0x4e86 +0x97ba 0x4eae +0x97bb 0x50da +0x97bc 0x4e21 +0x97bd 0x51cc +0x97be 0x5bee +0x97bf 0x6599 +0x97c0 0x6881 +0x97c1 0x6dbc +0x97c2 0x731f +0x97c3 0x7642 +0x97c4 0x77ad +0x97c5 0x7a1c +0x97c6 0x7ce7 +0x97c7 0x826f +0x97c8 0x8ad2 +0x97c9 0x907c +0x97ca 0x91cf +0x97cb 0x9675 +0x97cc 0x9818 +0x97cd 0x529b +0x97ce 0x7dd1 +0x97cf 0x502b +0x97d0 0x5398 +0x97d1 0x6797 +0x97d2 0x6dcb +0x97d3 0x71d0 +0x97d4 0x7433 +0x97d5 0x81e8 +0x97d6 0x8f2a +0x97d7 0x96a3 +0x97d8 0x9c57 +0x97d9 0x9e9f +0x97da 0x7460 +0x97db 0x5841 +0x97dc 0x6d99 +0x97dd 0x7d2f +0x97de 0x985e +0x97df 0x4ee4 +0x97e0 0x4f36 +0x97e1 0x4f8b +0x97e2 0x51b7 +0x97e3 0x52b1 +0x97e4 0x5dba +0x97e5 0x601c +0x97e6 0x73b2 +0x97e7 0x793c +0x97e8 0x82d3 +0x97e9 0x9234 +0x97ea 0x96b7 +0x97eb 0x96f6 +0x97ec 0x970a +0x97ed 0x9e97 +0x97ee 0x9f62 +0x97ef 0x66a6 +0x97f0 0x6b74 +0x97f1 0x5217 +0x97f2 0x52a3 +0x97f3 0x70c8 +0x97f4 0x88c2 +0x97f5 0x5ec9 +0x97f6 0x604b +0x97f7 0x6190 +0x97f8 0x6f23 +0x97f9 0x7149 +0x97fa 0x7c3e +0x97fb 0x7df4 +0x97fc 0x806f +0x9840 0x84ee +0x9841 0x9023 +0x9842 0x932c +0x9843 0x5442 +0x9844 0x9b6f +0x9845 0x6ad3 +0x9846 0x7089 +0x9847 0x8cc2 +0x9848 0x8def +0x9849 0x9732 +0x984a 0x52b4 +0x984b 0x5a41 +0x984c 0x5eca +0x984d 0x5f04 +0x984e 0x6717 +0x984f 0x697c +0x9850 0x6994 +0x9851 0x6d6a +0x9852 0x6f0f +0x9853 0x7262 +0x9854 0x72fc +0x9855 0x7bed +0x9856 0x8001 +0x9857 0x807e +0x9858 0x874b +0x9859 0x90ce +0x985a 0x516d +0x985b 0x9e93 +0x985c 0x7984 +0x985d 0x808b +0x985e 0x9332 +0x985f 0x8ad6 +0x9860 0x502d +0x9861 0x548c +0x9862 0x8a71 +0x9863 0x6b6a +0x9864 0x8cc4 +0x9865 0x8107 +0x9866 0x60d1 +0x9867 0x67a0 +0x9868 0x9df2 +0x9869 0x4e99 +0x986a 0x4e98 +0x986b 0x9c10 +0x986c 0x8a6b +0x986d 0x85c1 +0x986e 0x8568 +0x986f 0x6900 +0x9870 0x6e7e +0x9871 0x7897 +0x9872 0x8155 +0x989f 0x5f0c +0x98a0 0x4e10 +0x98a1 0x4e15 +0x98a2 0x4e2a +0x98a3 0x4e31 +0x98a4 0x4e36 +0x98a5 0x4e3c +0x98a6 0x4e3f +0x98a7 0x4e42 +0x98a8 0x4e56 +0x98a9 0x4e58 +0x98aa 0x4e82 +0x98ab 0x4e85 +0x98ac 0x8c6b +0x98ad 0x4e8a +0x98ae 0x8212 +0x98af 0x5f0d +0x98b0 0x4e8e +0x98b1 0x4e9e +0x98b2 0x4e9f +0x98b3 0x4ea0 +0x98b4 0x4ea2 +0x98b5 0x4eb0 +0x98b6 0x4eb3 +0x98b7 0x4eb6 +0x98b8 0x4ece +0x98b9 0x4ecd +0x98ba 0x4ec4 +0x98bb 0x4ec6 +0x98bc 0x4ec2 +0x98bd 0x4ed7 +0x98be 0x4ede +0x98bf 0x4eed +0x98c0 0x4edf +0x98c1 0x4ef7 +0x98c2 0x4f09 +0x98c3 0x4f5a +0x98c4 0x4f30 +0x98c5 0x4f5b +0x98c6 0x4f5d +0x98c7 0x4f57 +0x98c8 0x4f47 +0x98c9 0x4f76 +0x98ca 0x4f88 +0x98cb 0x4f8f +0x98cc 0x4f98 +0x98cd 0x4f7b +0x98ce 0x4f69 +0x98cf 0x4f70 +0x98d0 0x4f91 +0x98d1 0x4f6f +0x98d2 0x4f86 +0x98d3 0x4f96 +0x98d4 0x5118 +0x98d5 0x4fd4 +0x98d6 0x4fdf +0x98d7 0x4fce +0x98d8 0x4fd8 +0x98d9 0x4fdb +0x98da 0x4fd1 +0x98db 0x4fda +0x98dc 0x4fd0 +0x98dd 0x4fe4 +0x98de 0x4fe5 +0x98df 0x501a +0x98e0 0x5028 +0x98e1 0x5014 +0x98e2 0x502a +0x98e3 0x5025 +0x98e4 0x5005 +0x98e5 0x4f1c +0x98e6 0x4ff6 +0x98e7 0x5021 +0x98e8 0x5029 +0x98e9 0x502c +0x98ea 0x4ffe +0x98eb 0x4fef +0x98ec 0x5011 +0x98ed 0x5006 +0x98ee 0x5043 +0x98ef 0x5047 +0x98f0 0x6703 +0x98f1 0x5055 +0x98f2 0x5050 +0x98f3 0x5048 +0x98f4 0x505a +0x98f5 0x5056 +0x98f6 0x506c +0x98f7 0x5078 +0x98f8 0x5080 +0x98f9 0x509a +0x98fa 0x5085 +0x98fb 0x50b4 +0x98fc 0x50b2 +0x9940 0x50c9 +0x9941 0x50ca +0x9942 0x50b3 +0x9943 0x50c2 +0x9944 0x50d6 +0x9945 0x50de +0x9946 0x50e5 +0x9947 0x50ed +0x9948 0x50e3 +0x9949 0x50ee +0x994a 0x50f9 +0x994b 0x50f5 +0x994c 0x5109 +0x994d 0x5101 +0x994e 0x5102 +0x994f 0x5116 +0x9950 0x5115 +0x9951 0x5114 +0x9952 0x511a +0x9953 0x5121 +0x9954 0x513a +0x9955 0x5137 +0x9956 0x513c +0x9957 0x513b +0x9958 0x513f +0x9959 0x5140 +0x995a 0x5152 +0x995b 0x514c +0x995c 0x5154 +0x995d 0x5162 +0x995e 0x7af8 +0x995f 0x5169 +0x9960 0x516a +0x9961 0x516e +0x9962 0x5180 +0x9963 0x5182 +0x9964 0x56d8 +0x9965 0x518c +0x9966 0x5189 +0x9967 0x518f +0x9968 0x5191 +0x9969 0x5193 +0x996a 0x5195 +0x996b 0x5196 +0x996c 0x51a4 +0x996d 0x51a6 +0x996e 0x51a2 +0x996f 0x51a9 +0x9970 0x51aa +0x9971 0x51ab +0x9972 0x51b3 +0x9973 0x51b1 +0x9974 0x51b2 +0x9975 0x51b0 +0x9976 0x51b5 +0x9977 0x51bd +0x9978 0x51c5 +0x9979 0x51c9 +0x997a 0x51db +0x997b 0x51e0 +0x997c 0x8655 +0x997d 0x51e9 +0x997e 0x51ed +0x9980 0x51f0 +0x9981 0x51f5 +0x9982 0x51fe +0x9983 0x5204 +0x9984 0x520b +0x9985 0x5214 +0x9986 0x520e +0x9987 0x5227 +0x9988 0x522a +0x9989 0x522e +0x998a 0x5233 +0x998b 0x5239 +0x998c 0x524f +0x998d 0x5244 +0x998e 0x524b +0x998f 0x524c +0x9990 0x525e +0x9991 0x5254 +0x9992 0x526a +0x9993 0x5274 +0x9994 0x5269 +0x9995 0x5273 +0x9996 0x527f +0x9997 0x527d +0x9998 0x528d +0x9999 0x5294 +0x999a 0x5292 +0x999b 0x5271 +0x999c 0x5288 +0x999d 0x5291 +0x999e 0x8fa8 +0x999f 0x8fa7 +0x99a0 0x52ac +0x99a1 0x52ad +0x99a2 0x52bc +0x99a3 0x52b5 +0x99a4 0x52c1 +0x99a5 0x52cd +0x99a6 0x52d7 +0x99a7 0x52de +0x99a8 0x52e3 +0x99a9 0x52e6 +0x99aa 0x98ed +0x99ab 0x52e0 +0x99ac 0x52f3 +0x99ad 0x52f5 +0x99ae 0x52f8 +0x99af 0x52f9 +0x99b0 0x5306 +0x99b1 0x5308 +0x99b2 0x7538 +0x99b3 0x530d +0x99b4 0x5310 +0x99b5 0x530f +0x99b6 0x5315 +0x99b7 0x531a +0x99b8 0x5323 +0x99b9 0x532f +0x99ba 0x5331 +0x99bb 0x5333 +0x99bc 0x5338 +0x99bd 0x5340 +0x99be 0x5346 +0x99bf 0x5345 +0x99c0 0x4e17 +0x99c1 0x5349 +0x99c2 0x534d +0x99c3 0x51d6 +0x99c4 0x535e +0x99c5 0x5369 +0x99c6 0x536e +0x99c7 0x5918 +0x99c8 0x537b +0x99c9 0x5377 +0x99ca 0x5382 +0x99cb 0x5396 +0x99cc 0x53a0 +0x99cd 0x53a6 +0x99ce 0x53a5 +0x99cf 0x53ae +0x99d0 0x53b0 +0x99d1 0x53b6 +0x99d2 0x53c3 +0x99d3 0x7c12 +0x99d4 0x96d9 +0x99d5 0x53df +0x99d6 0x66fc +0x99d7 0x71ee +0x99d8 0x53ee +0x99d9 0x53e8 +0x99da 0x53ed +0x99db 0x53fa +0x99dc 0x5401 +0x99dd 0x543d +0x99de 0x5440 +0x99df 0x542c +0x99e0 0x542d +0x99e1 0x543c +0x99e2 0x542e +0x99e3 0x5436 +0x99e4 0x5429 +0x99e5 0x541d +0x99e6 0x544e +0x99e7 0x548f +0x99e8 0x5475 +0x99e9 0x548e +0x99ea 0x545f +0x99eb 0x5471 +0x99ec 0x5477 +0x99ed 0x5470 +0x99ee 0x5492 +0x99ef 0x547b +0x99f0 0x5480 +0x99f1 0x5476 +0x99f2 0x5484 +0x99f3 0x5490 +0x99f4 0x5486 +0x99f5 0x54c7 +0x99f6 0x54a2 +0x99f7 0x54b8 +0x99f8 0x54a5 +0x99f9 0x54ac +0x99fa 0x54c4 +0x99fb 0x54c8 +0x99fc 0x54a8 +0x9a40 0x54ab +0x9a41 0x54c2 +0x9a42 0x54a4 +0x9a43 0x54be +0x9a44 0x54bc +0x9a45 0x54d8 +0x9a46 0x54e5 +0x9a47 0x54e6 +0x9a48 0x550f +0x9a49 0x5514 +0x9a4a 0x54fd +0x9a4b 0x54ee +0x9a4c 0x54ed +0x9a4d 0x54fa +0x9a4e 0x54e2 +0x9a4f 0x5539 +0x9a50 0x5540 +0x9a51 0x5563 +0x9a52 0x554c +0x9a53 0x552e +0x9a54 0x555c +0x9a55 0x5545 +0x9a56 0x5556 +0x9a57 0x5557 +0x9a58 0x5538 +0x9a59 0x5533 +0x9a5a 0x555d +0x9a5b 0x5599 +0x9a5c 0x5580 +0x9a5d 0x54af +0x9a5e 0x558a +0x9a5f 0x559f +0x9a60 0x557b +0x9a61 0x557e +0x9a62 0x5598 +0x9a63 0x559e +0x9a64 0x55ae +0x9a65 0x557c +0x9a66 0x5583 +0x9a67 0x55a9 +0x9a68 0x5587 +0x9a69 0x55a8 +0x9a6a 0x55da +0x9a6b 0x55c5 +0x9a6c 0x55df +0x9a6d 0x55c4 +0x9a6e 0x55dc +0x9a6f 0x55e4 +0x9a70 0x55d4 +0x9a71 0x5614 +0x9a72 0x55f7 +0x9a73 0x5616 +0x9a74 0x55fe +0x9a75 0x55fd +0x9a76 0x561b +0x9a77 0x55f9 +0x9a78 0x564e +0x9a79 0x5650 +0x9a7a 0x71df +0x9a7b 0x5634 +0x9a7c 0x5636 +0x9a7d 0x5632 +0x9a7e 0x5638 +0x9a80 0x566b +0x9a81 0x5664 +0x9a82 0x562f +0x9a83 0x566c +0x9a84 0x566a +0x9a85 0x5686 +0x9a86 0x5680 +0x9a87 0x568a +0x9a88 0x56a0 +0x9a89 0x5694 +0x9a8a 0x568f +0x9a8b 0x56a5 +0x9a8c 0x56ae +0x9a8d 0x56b6 +0x9a8e 0x56b4 +0x9a8f 0x56c2 +0x9a90 0x56bc +0x9a91 0x56c1 +0x9a92 0x56c3 +0x9a93 0x56c0 +0x9a94 0x56c8 +0x9a95 0x56ce +0x9a96 0x56d1 +0x9a97 0x56d3 +0x9a98 0x56d7 +0x9a99 0x56ee +0x9a9a 0x56f9 +0x9a9b 0x5700 +0x9a9c 0x56ff +0x9a9d 0x5704 +0x9a9e 0x5709 +0x9a9f 0x5708 +0x9aa0 0x570b +0x9aa1 0x570d +0x9aa2 0x5713 +0x9aa3 0x5718 +0x9aa4 0x5716 +0x9aa5 0x55c7 +0x9aa6 0x571c +0x9aa7 0x5726 +0x9aa8 0x5737 +0x9aa9 0x5738 +0x9aaa 0x574e +0x9aab 0x573b +0x9aac 0x5740 +0x9aad 0x574f +0x9aae 0x5769 +0x9aaf 0x57c0 +0x9ab0 0x5788 +0x9ab1 0x5761 +0x9ab2 0x577f +0x9ab3 0x5789 +0x9ab4 0x5793 +0x9ab5 0x57a0 +0x9ab6 0x57b3 +0x9ab7 0x57a4 +0x9ab8 0x57aa +0x9ab9 0x57b0 +0x9aba 0x57c3 +0x9abb 0x57c6 +0x9abc 0x57d4 +0x9abd 0x57d2 +0x9abe 0x57d3 +0x9abf 0x580a +0x9ac0 0x57d6 +0x9ac1 0x57e3 +0x9ac2 0x580b +0x9ac3 0x5819 +0x9ac4 0x581d +0x9ac5 0x5872 +0x9ac6 0x5821 +0x9ac7 0x5862 +0x9ac8 0x584b +0x9ac9 0x5870 +0x9aca 0x6bc0 +0x9acb 0x5852 +0x9acc 0x583d +0x9acd 0x5879 +0x9ace 0x5885 +0x9acf 0x58b9 +0x9ad0 0x589f +0x9ad1 0x58ab +0x9ad2 0x58ba +0x9ad3 0x58de +0x9ad4 0x58bb +0x9ad5 0x58b8 +0x9ad6 0x58ae +0x9ad7 0x58c5 +0x9ad8 0x58d3 +0x9ad9 0x58d1 +0x9ada 0x58d7 +0x9adb 0x58d9 +0x9adc 0x58d8 +0x9add 0x58e5 +0x9ade 0x58dc +0x9adf 0x58e4 +0x9ae0 0x58df +0x9ae1 0x58ef +0x9ae2 0x58fa +0x9ae3 0x58f9 +0x9ae4 0x58fb +0x9ae5 0x58fc +0x9ae6 0x58fd +0x9ae7 0x5902 +0x9ae8 0x590a +0x9ae9 0x5910 +0x9aea 0x591b +0x9aeb 0x68a6 +0x9aec 0x5925 +0x9aed 0x592c +0x9aee 0x592d +0x9aef 0x5932 +0x9af0 0x5938 +0x9af1 0x593e +0x9af2 0x7ad2 +0x9af3 0x5955 +0x9af4 0x5950 +0x9af5 0x594e +0x9af6 0x595a +0x9af7 0x5958 +0x9af8 0x5962 +0x9af9 0x5960 +0x9afa 0x5967 +0x9afb 0x596c +0x9afc 0x5969 +0x9b40 0x5978 +0x9b41 0x5981 +0x9b42 0x599d +0x9b43 0x4f5e +0x9b44 0x4fab +0x9b45 0x59a3 +0x9b46 0x59b2 +0x9b47 0x59c6 +0x9b48 0x59e8 +0x9b49 0x59dc +0x9b4a 0x598d +0x9b4b 0x59d9 +0x9b4c 0x59da +0x9b4d 0x5a25 +0x9b4e 0x5a1f +0x9b4f 0x5a11 +0x9b50 0x5a1c +0x9b51 0x5a09 +0x9b52 0x5a1a +0x9b53 0x5a40 +0x9b54 0x5a6c +0x9b55 0x5a49 +0x9b56 0x5a35 +0x9b57 0x5a36 +0x9b58 0x5a62 +0x9b59 0x5a6a +0x9b5a 0x5a9a +0x9b5b 0x5abc +0x9b5c 0x5abe +0x9b5d 0x5acb +0x9b5e 0x5ac2 +0x9b5f 0x5abd +0x9b60 0x5ae3 +0x9b61 0x5ad7 +0x9b62 0x5ae6 +0x9b63 0x5ae9 +0x9b64 0x5ad6 +0x9b65 0x5afa +0x9b66 0x5afb +0x9b67 0x5b0c +0x9b68 0x5b0b +0x9b69 0x5b16 +0x9b6a 0x5b32 +0x9b6b 0x5ad0 +0x9b6c 0x5b2a +0x9b6d 0x5b36 +0x9b6e 0x5b3e +0x9b6f 0x5b43 +0x9b70 0x5b45 +0x9b71 0x5b40 +0x9b72 0x5b51 +0x9b73 0x5b55 +0x9b74 0x5b5a +0x9b75 0x5b5b +0x9b76 0x5b65 +0x9b77 0x5b69 +0x9b78 0x5b70 +0x9b79 0x5b73 +0x9b7a 0x5b75 +0x9b7b 0x5b78 +0x9b7c 0x6588 +0x9b7d 0x5b7a +0x9b7e 0x5b80 +0x9b80 0x5b83 +0x9b81 0x5ba6 +0x9b82 0x5bb8 +0x9b83 0x5bc3 +0x9b84 0x5bc7 +0x9b85 0x5bc9 +0x9b86 0x5bd4 +0x9b87 0x5bd0 +0x9b88 0x5be4 +0x9b89 0x5be6 +0x9b8a 0x5be2 +0x9b8b 0x5bde +0x9b8c 0x5be5 +0x9b8d 0x5beb +0x9b8e 0x5bf0 +0x9b8f 0x5bf6 +0x9b90 0x5bf3 +0x9b91 0x5c05 +0x9b92 0x5c07 +0x9b93 0x5c08 +0x9b94 0x5c0d +0x9b95 0x5c13 +0x9b96 0x5c20 +0x9b97 0x5c22 +0x9b98 0x5c28 +0x9b99 0x5c38 +0x9b9a 0x5c39 +0x9b9b 0x5c41 +0x9b9c 0x5c46 +0x9b9d 0x5c4e +0x9b9e 0x5c53 +0x9b9f 0x5c50 +0x9ba0 0x5c4f +0x9ba1 0x5b71 +0x9ba2 0x5c6c +0x9ba3 0x5c6e +0x9ba4 0x4e62 +0x9ba5 0x5c76 +0x9ba6 0x5c79 +0x9ba7 0x5c8c +0x9ba8 0x5c91 +0x9ba9 0x5c94 +0x9baa 0x599b +0x9bab 0x5cab +0x9bac 0x5cbb +0x9bad 0x5cb6 +0x9bae 0x5cbc +0x9baf 0x5cb7 +0x9bb0 0x5cc5 +0x9bb1 0x5cbe +0x9bb2 0x5cc7 +0x9bb3 0x5cd9 +0x9bb4 0x5ce9 +0x9bb5 0x5cfd +0x9bb6 0x5cfa +0x9bb7 0x5ced +0x9bb8 0x5d8c +0x9bb9 0x5cea +0x9bba 0x5d0b +0x9bbb 0x5d15 +0x9bbc 0x5d17 +0x9bbd 0x5d5c +0x9bbe 0x5d1f +0x9bbf 0x5d1b +0x9bc0 0x5d11 +0x9bc1 0x5d14 +0x9bc2 0x5d22 +0x9bc3 0x5d1a +0x9bc4 0x5d19 +0x9bc5 0x5d18 +0x9bc6 0x5d4c +0x9bc7 0x5d52 +0x9bc8 0x5d4e +0x9bc9 0x5d4b +0x9bca 0x5d6c +0x9bcb 0x5d73 +0x9bcc 0x5d76 +0x9bcd 0x5d87 +0x9bce 0x5d84 +0x9bcf 0x5d82 +0x9bd0 0x5da2 +0x9bd1 0x5d9d +0x9bd2 0x5dac +0x9bd3 0x5dae +0x9bd4 0x5dbd +0x9bd5 0x5d90 +0x9bd6 0x5db7 +0x9bd7 0x5dbc +0x9bd8 0x5dc9 +0x9bd9 0x5dcd +0x9bda 0x5dd3 +0x9bdb 0x5dd2 +0x9bdc 0x5dd6 +0x9bdd 0x5ddb +0x9bde 0x5deb +0x9bdf 0x5df2 +0x9be0 0x5df5 +0x9be1 0x5e0b +0x9be2 0x5e1a +0x9be3 0x5e19 +0x9be4 0x5e11 +0x9be5 0x5e1b +0x9be6 0x5e36 +0x9be7 0x5e37 +0x9be8 0x5e44 +0x9be9 0x5e43 +0x9bea 0x5e40 +0x9beb 0x5e4e +0x9bec 0x5e57 +0x9bed 0x5e54 +0x9bee 0x5e5f +0x9bef 0x5e62 +0x9bf0 0x5e64 +0x9bf1 0x5e47 +0x9bf2 0x5e75 +0x9bf3 0x5e76 +0x9bf4 0x5e7a +0x9bf5 0x9ebc +0x9bf6 0x5e7f +0x9bf7 0x5ea0 +0x9bf8 0x5ec1 +0x9bf9 0x5ec2 +0x9bfa 0x5ec8 +0x9bfb 0x5ed0 +0x9bfc 0x5ecf +0x9c40 0x5ed6 +0x9c41 0x5ee3 +0x9c42 0x5edd +0x9c43 0x5eda +0x9c44 0x5edb +0x9c45 0x5ee2 +0x9c46 0x5ee1 +0x9c47 0x5ee8 +0x9c48 0x5ee9 +0x9c49 0x5eec +0x9c4a 0x5ef1 +0x9c4b 0x5ef3 +0x9c4c 0x5ef0 +0x9c4d 0x5ef4 +0x9c4e 0x5ef8 +0x9c4f 0x5efe +0x9c50 0x5f03 +0x9c51 0x5f09 +0x9c52 0x5f5d +0x9c53 0x5f5c +0x9c54 0x5f0b +0x9c55 0x5f11 +0x9c56 0x5f16 +0x9c57 0x5f29 +0x9c58 0x5f2d +0x9c59 0x5f38 +0x9c5a 0x5f41 +0x9c5b 0x5f48 +0x9c5c 0x5f4c +0x9c5d 0x5f4e +0x9c5e 0x5f2f +0x9c5f 0x5f51 +0x9c60 0x5f56 +0x9c61 0x5f57 +0x9c62 0x5f59 +0x9c63 0x5f61 +0x9c64 0x5f6d +0x9c65 0x5f73 +0x9c66 0x5f77 +0x9c67 0x5f83 +0x9c68 0x5f82 +0x9c69 0x5f7f +0x9c6a 0x5f8a +0x9c6b 0x5f88 +0x9c6c 0x5f91 +0x9c6d 0x5f87 +0x9c6e 0x5f9e +0x9c6f 0x5f99 +0x9c70 0x5f98 +0x9c71 0x5fa0 +0x9c72 0x5fa8 +0x9c73 0x5fad +0x9c74 0x5fbc +0x9c75 0x5fd6 +0x9c76 0x5ffb +0x9c77 0x5fe4 +0x9c78 0x5ff8 +0x9c79 0x5ff1 +0x9c7a 0x5fdd +0x9c7b 0x60b3 +0x9c7c 0x5fff +0x9c7d 0x6021 +0x9c7e 0x6060 +0x9c80 0x6019 +0x9c81 0x6010 +0x9c82 0x6029 +0x9c83 0x600e +0x9c84 0x6031 +0x9c85 0x601b +0x9c86 0x6015 +0x9c87 0x602b +0x9c88 0x6026 +0x9c89 0x600f +0x9c8a 0x603a +0x9c8b 0x605a +0x9c8c 0x6041 +0x9c8d 0x606a +0x9c8e 0x6077 +0x9c8f 0x605f +0x9c90 0x604a +0x9c91 0x6046 +0x9c92 0x604d +0x9c93 0x6063 +0x9c94 0x6043 +0x9c95 0x6064 +0x9c96 0x6042 +0x9c97 0x606c +0x9c98 0x606b +0x9c99 0x6059 +0x9c9a 0x6081 +0x9c9b 0x608d +0x9c9c 0x60e7 +0x9c9d 0x6083 +0x9c9e 0x609a +0x9c9f 0x6084 +0x9ca0 0x609b +0x9ca1 0x6096 +0x9ca2 0x6097 +0x9ca3 0x6092 +0x9ca4 0x60a7 +0x9ca5 0x608b +0x9ca6 0x60e1 +0x9ca7 0x60b8 +0x9ca8 0x60e0 +0x9ca9 0x60d3 +0x9caa 0x60b4 +0x9cab 0x5ff0 +0x9cac 0x60bd +0x9cad 0x60c6 +0x9cae 0x60b5 +0x9caf 0x60d8 +0x9cb0 0x614d +0x9cb1 0x6115 +0x9cb2 0x6106 +0x9cb3 0x60f6 +0x9cb4 0x60f7 +0x9cb5 0x6100 +0x9cb6 0x60f4 +0x9cb7 0x60fa +0x9cb8 0x6103 +0x9cb9 0x6121 +0x9cba 0x60fb +0x9cbb 0x60f1 +0x9cbc 0x610d +0x9cbd 0x610e +0x9cbe 0x6147 +0x9cbf 0x613e +0x9cc0 0x6128 +0x9cc1 0x6127 +0x9cc2 0x614a +0x9cc3 0x613f +0x9cc4 0x613c +0x9cc5 0x612c +0x9cc6 0x6134 +0x9cc7 0x613d +0x9cc8 0x6142 +0x9cc9 0x6144 +0x9cca 0x6173 +0x9ccb 0x6177 +0x9ccc 0x6158 +0x9ccd 0x6159 +0x9cce 0x615a +0x9ccf 0x616b +0x9cd0 0x6174 +0x9cd1 0x616f +0x9cd2 0x6165 +0x9cd3 0x6171 +0x9cd4 0x615f +0x9cd5 0x615d +0x9cd6 0x6153 +0x9cd7 0x6175 +0x9cd8 0x6199 +0x9cd9 0x6196 +0x9cda 0x6187 +0x9cdb 0x61ac +0x9cdc 0x6194 +0x9cdd 0x619a +0x9cde 0x618a +0x9cdf 0x6191 +0x9ce0 0x61ab +0x9ce1 0x61ae +0x9ce2 0x61cc +0x9ce3 0x61ca +0x9ce4 0x61c9 +0x9ce5 0x61f7 +0x9ce6 0x61c8 +0x9ce7 0x61c3 +0x9ce8 0x61c6 +0x9ce9 0x61ba +0x9cea 0x61cb +0x9ceb 0x7f79 +0x9cec 0x61cd +0x9ced 0x61e6 +0x9cee 0x61e3 +0x9cef 0x61f6 +0x9cf0 0x61fa +0x9cf1 0x61f4 +0x9cf2 0x61ff +0x9cf3 0x61fd +0x9cf4 0x61fc +0x9cf5 0x61fe +0x9cf6 0x6200 +0x9cf7 0x6208 +0x9cf8 0x6209 +0x9cf9 0x620d +0x9cfa 0x620c +0x9cfb 0x6214 +0x9cfc 0x621b +0x9d40 0x621e +0x9d41 0x6221 +0x9d42 0x622a +0x9d43 0x622e +0x9d44 0x6230 +0x9d45 0x6232 +0x9d46 0x6233 +0x9d47 0x6241 +0x9d48 0x624e +0x9d49 0x625e +0x9d4a 0x6263 +0x9d4b 0x625b +0x9d4c 0x6260 +0x9d4d 0x6268 +0x9d4e 0x627c +0x9d4f 0x6282 +0x9d50 0x6289 +0x9d51 0x627e +0x9d52 0x6292 +0x9d53 0x6293 +0x9d54 0x6296 +0x9d55 0x62d4 +0x9d56 0x6283 +0x9d57 0x6294 +0x9d58 0x62d7 +0x9d59 0x62d1 +0x9d5a 0x62bb +0x9d5b 0x62cf +0x9d5c 0x62ff +0x9d5d 0x62c6 +0x9d5e 0x64d4 +0x9d5f 0x62c8 +0x9d60 0x62dc +0x9d61 0x62cc +0x9d62 0x62ca +0x9d63 0x62c2 +0x9d64 0x62c7 +0x9d65 0x629b +0x9d66 0x62c9 +0x9d67 0x630c +0x9d68 0x62ee +0x9d69 0x62f1 +0x9d6a 0x6327 +0x9d6b 0x6302 +0x9d6c 0x6308 +0x9d6d 0x62ef +0x9d6e 0x62f5 +0x9d6f 0x6350 +0x9d70 0x633e +0x9d71 0x634d +0x9d72 0x641c +0x9d73 0x634f +0x9d74 0x6396 +0x9d75 0x638e +0x9d76 0x6380 +0x9d77 0x63ab +0x9d78 0x6376 +0x9d79 0x63a3 +0x9d7a 0x638f +0x9d7b 0x6389 +0x9d7c 0x639f +0x9d7d 0x63b5 +0x9d7e 0x636b +0x9d80 0x6369 +0x9d81 0x63be +0x9d82 0x63e9 +0x9d83 0x63c0 +0x9d84 0x63c6 +0x9d85 0x63e3 +0x9d86 0x63c9 +0x9d87 0x63d2 +0x9d88 0x63f6 +0x9d89 0x63c4 +0x9d8a 0x6416 +0x9d8b 0x6434 +0x9d8c 0x6406 +0x9d8d 0x6413 +0x9d8e 0x6426 +0x9d8f 0x6436 +0x9d90 0x651d +0x9d91 0x6417 +0x9d92 0x6428 +0x9d93 0x640f +0x9d94 0x6467 +0x9d95 0x646f +0x9d96 0x6476 +0x9d97 0x644e +0x9d98 0x652a +0x9d99 0x6495 +0x9d9a 0x6493 +0x9d9b 0x64a5 +0x9d9c 0x64a9 +0x9d9d 0x6488 +0x9d9e 0x64bc +0x9d9f 0x64da +0x9da0 0x64d2 +0x9da1 0x64c5 +0x9da2 0x64c7 +0x9da3 0x64bb +0x9da4 0x64d8 +0x9da5 0x64c2 +0x9da6 0x64f1 +0x9da7 0x64e7 +0x9da8 0x8209 +0x9da9 0x64e0 +0x9daa 0x64e1 +0x9dab 0x62ac +0x9dac 0x64e3 +0x9dad 0x64ef +0x9dae 0x652c +0x9daf 0x64f6 +0x9db0 0x64f4 +0x9db1 0x64f2 +0x9db2 0x64fa +0x9db3 0x6500 +0x9db4 0x64fd +0x9db5 0x6518 +0x9db6 0x651c +0x9db7 0x6505 +0x9db8 0x6524 +0x9db9 0x6523 +0x9dba 0x652b +0x9dbb 0x6534 +0x9dbc 0x6535 +0x9dbd 0x6537 +0x9dbe 0x6536 +0x9dbf 0x6538 +0x9dc0 0x754b +0x9dc1 0x6548 +0x9dc2 0x6556 +0x9dc3 0x6555 +0x9dc4 0x654d +0x9dc5 0x6558 +0x9dc6 0x655e +0x9dc7 0x655d +0x9dc8 0x6572 +0x9dc9 0x6578 +0x9dca 0x6582 +0x9dcb 0x6583 +0x9dcc 0x8b8a +0x9dcd 0x659b +0x9dce 0x659f +0x9dcf 0x65ab +0x9dd0 0x65b7 +0x9dd1 0x65c3 +0x9dd2 0x65c6 +0x9dd3 0x65c1 +0x9dd4 0x65c4 +0x9dd5 0x65cc +0x9dd6 0x65d2 +0x9dd7 0x65db +0x9dd8 0x65d9 +0x9dd9 0x65e0 +0x9dda 0x65e1 +0x9ddb 0x65f1 +0x9ddc 0x6772 +0x9ddd 0x660a +0x9dde 0x6603 +0x9ddf 0x65fb +0x9de0 0x6773 +0x9de1 0x6635 +0x9de2 0x6636 +0x9de3 0x6634 +0x9de4 0x661c +0x9de5 0x664f +0x9de6 0x6644 +0x9de7 0x6649 +0x9de8 0x6641 +0x9de9 0x665e +0x9dea 0x665d +0x9deb 0x6664 +0x9dec 0x6667 +0x9ded 0x6668 +0x9dee 0x665f +0x9def 0x6662 +0x9df0 0x6670 +0x9df1 0x6683 +0x9df2 0x6688 +0x9df3 0x668e +0x9df4 0x6689 +0x9df5 0x6684 +0x9df6 0x6698 +0x9df7 0x669d +0x9df8 0x66c1 +0x9df9 0x66b9 +0x9dfa 0x66c9 +0x9dfb 0x66be +0x9dfc 0x66bc +0x9e40 0x66c4 +0x9e41 0x66b8 +0x9e42 0x66d6 +0x9e43 0x66da +0x9e44 0x66e0 +0x9e45 0x663f +0x9e46 0x66e6 +0x9e47 0x66e9 +0x9e48 0x66f0 +0x9e49 0x66f5 +0x9e4a 0x66f7 +0x9e4b 0x670f +0x9e4c 0x6716 +0x9e4d 0x671e +0x9e4e 0x6726 +0x9e4f 0x6727 +0x9e50 0x9738 +0x9e51 0x672e +0x9e52 0x673f +0x9e53 0x6736 +0x9e54 0x6741 +0x9e55 0x6738 +0x9e56 0x6737 +0x9e57 0x6746 +0x9e58 0x675e +0x9e59 0x6760 +0x9e5a 0x6759 +0x9e5b 0x6763 +0x9e5c 0x6764 +0x9e5d 0x6789 +0x9e5e 0x6770 +0x9e5f 0x67a9 +0x9e60 0x677c +0x9e61 0x676a +0x9e62 0x678c +0x9e63 0x678b +0x9e64 0x67a6 +0x9e65 0x67a1 +0x9e66 0x6785 +0x9e67 0x67b7 +0x9e68 0x67ef +0x9e69 0x67b4 +0x9e6a 0x67ec +0x9e6b 0x67b3 +0x9e6c 0x67e9 +0x9e6d 0x67b8 +0x9e6e 0x67e4 +0x9e6f 0x67de +0x9e70 0x67dd +0x9e71 0x67e2 +0x9e72 0x67ee +0x9e73 0x67b9 +0x9e74 0x67ce +0x9e75 0x67c6 +0x9e76 0x67e7 +0x9e77 0x6a9c +0x9e78 0x681e +0x9e79 0x6846 +0x9e7a 0x6829 +0x9e7b 0x6840 +0x9e7c 0x684d +0x9e7d 0x6832 +0x9e7e 0x684e +0x9e80 0x68b3 +0x9e81 0x682b +0x9e82 0x6859 +0x9e83 0x6863 +0x9e84 0x6877 +0x9e85 0x687f +0x9e86 0x689f +0x9e87 0x688f +0x9e88 0x68ad +0x9e89 0x6894 +0x9e8a 0x689d +0x9e8b 0x689b +0x9e8c 0x6883 +0x9e8d 0x6aae +0x9e8e 0x68b9 +0x9e8f 0x6874 +0x9e90 0x68b5 +0x9e91 0x68a0 +0x9e92 0x68ba +0x9e93 0x690f +0x9e94 0x688d +0x9e95 0x687e +0x9e96 0x6901 +0x9e97 0x68ca +0x9e98 0x6908 +0x9e99 0x68d8 +0x9e9a 0x6922 +0x9e9b 0x6926 +0x9e9c 0x68e1 +0x9e9d 0x690c +0x9e9e 0x68cd +0x9e9f 0x68d4 +0x9ea0 0x68e7 +0x9ea1 0x68d5 +0x9ea2 0x6936 +0x9ea3 0x6912 +0x9ea4 0x6904 +0x9ea5 0x68d7 +0x9ea6 0x68e3 +0x9ea7 0x6925 +0x9ea8 0x68f9 +0x9ea9 0x68e0 +0x9eaa 0x68ef +0x9eab 0x6928 +0x9eac 0x692a +0x9ead 0x691a +0x9eae 0x6923 +0x9eaf 0x6921 +0x9eb0 0x68c6 +0x9eb1 0x6979 +0x9eb2 0x6977 +0x9eb3 0x695c +0x9eb4 0x6978 +0x9eb5 0x696b +0x9eb6 0x6954 +0x9eb7 0x697e +0x9eb8 0x696e +0x9eb9 0x6939 +0x9eba 0x6974 +0x9ebb 0x693d +0x9ebc 0x6959 +0x9ebd 0x6930 +0x9ebe 0x6961 +0x9ebf 0x695e +0x9ec0 0x695d +0x9ec1 0x6981 +0x9ec2 0x696a +0x9ec3 0x69b2 +0x9ec4 0x69ae +0x9ec5 0x69d0 +0x9ec6 0x69bf +0x9ec7 0x69c1 +0x9ec8 0x69d3 +0x9ec9 0x69be +0x9eca 0x69ce +0x9ecb 0x5be8 +0x9ecc 0x69ca +0x9ecd 0x69dd +0x9ece 0x69bb +0x9ecf 0x69c3 +0x9ed0 0x69a7 +0x9ed1 0x6a2e +0x9ed2 0x6991 +0x9ed3 0x69a0 +0x9ed4 0x699c +0x9ed5 0x6995 +0x9ed6 0x69b4 +0x9ed7 0x69de +0x9ed8 0x69e8 +0x9ed9 0x6a02 +0x9eda 0x6a1b +0x9edb 0x69ff +0x9edc 0x6b0a +0x9edd 0x69f9 +0x9ede 0x69f2 +0x9edf 0x69e7 +0x9ee0 0x6a05 +0x9ee1 0x69b1 +0x9ee2 0x6a1e +0x9ee3 0x69ed +0x9ee4 0x6a14 +0x9ee5 0x69eb +0x9ee6 0x6a0a +0x9ee7 0x6a12 +0x9ee8 0x6ac1 +0x9ee9 0x6a23 +0x9eea 0x6a13 +0x9eeb 0x6a44 +0x9eec 0x6a0c +0x9eed 0x6a72 +0x9eee 0x6a36 +0x9eef 0x6a78 +0x9ef0 0x6a47 +0x9ef1 0x6a62 +0x9ef2 0x6a59 +0x9ef3 0x6a66 +0x9ef4 0x6a48 +0x9ef5 0x6a38 +0x9ef6 0x6a22 +0x9ef7 0x6a90 +0x9ef8 0x6a8d +0x9ef9 0x6aa0 +0x9efa 0x6a84 +0x9efb 0x6aa2 +0x9efc 0x6aa3 +0x9f40 0x6a97 +0x9f41 0x8617 +0x9f42 0x6abb +0x9f43 0x6ac3 +0x9f44 0x6ac2 +0x9f45 0x6ab8 +0x9f46 0x6ab3 +0x9f47 0x6aac +0x9f48 0x6ade +0x9f49 0x6ad1 +0x9f4a 0x6adf +0x9f4b 0x6aaa +0x9f4c 0x6ada +0x9f4d 0x6aea +0x9f4e 0x6afb +0x9f4f 0x6b05 +0x9f50 0x8616 +0x9f51 0x6afa +0x9f52 0x6b12 +0x9f53 0x6b16 +0x9f54 0x9b31 +0x9f55 0x6b1f +0x9f56 0x6b38 +0x9f57 0x6b37 +0x9f58 0x76dc +0x9f59 0x6b39 +0x9f5a 0x98ee +0x9f5b 0x6b47 +0x9f5c 0x6b43 +0x9f5d 0x6b49 +0x9f5e 0x6b50 +0x9f5f 0x6b59 +0x9f60 0x6b54 +0x9f61 0x6b5b +0x9f62 0x6b5f +0x9f63 0x6b61 +0x9f64 0x6b78 +0x9f65 0x6b79 +0x9f66 0x6b7f +0x9f67 0x6b80 +0x9f68 0x6b84 +0x9f69 0x6b83 +0x9f6a 0x6b8d +0x9f6b 0x6b98 +0x9f6c 0x6b95 +0x9f6d 0x6b9e +0x9f6e 0x6ba4 +0x9f6f 0x6baa +0x9f70 0x6bab +0x9f71 0x6baf +0x9f72 0x6bb2 +0x9f73 0x6bb1 +0x9f74 0x6bb3 +0x9f75 0x6bb7 +0x9f76 0x6bbc +0x9f77 0x6bc6 +0x9f78 0x6bcb +0x9f79 0x6bd3 +0x9f7a 0x6bdf +0x9f7b 0x6bec +0x9f7c 0x6beb +0x9f7d 0x6bf3 +0x9f7e 0x6bef +0x9f80 0x9ebe +0x9f81 0x6c08 +0x9f82 0x6c13 +0x9f83 0x6c14 +0x9f84 0x6c1b +0x9f85 0x6c24 +0x9f86 0x6c23 +0x9f87 0x6c5e +0x9f88 0x6c55 +0x9f89 0x6c62 +0x9f8a 0x6c6a +0x9f8b 0x6c82 +0x9f8c 0x6c8d +0x9f8d 0x6c9a +0x9f8e 0x6c81 +0x9f8f 0x6c9b +0x9f90 0x6c7e +0x9f91 0x6c68 +0x9f92 0x6c73 +0x9f93 0x6c92 +0x9f94 0x6c90 +0x9f95 0x6cc4 +0x9f96 0x6cf1 +0x9f97 0x6cd3 +0x9f98 0x6cbd +0x9f99 0x6cd7 +0x9f9a 0x6cc5 +0x9f9b 0x6cdd +0x9f9c 0x6cae +0x9f9d 0x6cb1 +0x9f9e 0x6cbe +0x9f9f 0x6cba +0x9fa0 0x6cdb +0x9fa1 0x6cef +0x9fa2 0x6cd9 +0x9fa3 0x6cea +0x9fa4 0x6d1f +0x9fa5 0x884d +0x9fa6 0x6d36 +0x9fa7 0x6d2b +0x9fa8 0x6d3d +0x9fa9 0x6d38 +0x9faa 0x6d19 +0x9fab 0x6d35 +0x9fac 0x6d33 +0x9fad 0x6d12 +0x9fae 0x6d0c +0x9faf 0x6d63 +0x9fb0 0x6d93 +0x9fb1 0x6d64 +0x9fb2 0x6d5a +0x9fb3 0x6d79 +0x9fb4 0x6d59 +0x9fb5 0x6d8e +0x9fb6 0x6d95 +0x9fb7 0x6fe4 +0x9fb8 0x6d85 +0x9fb9 0x6df9 +0x9fba 0x6e15 +0x9fbb 0x6e0a +0x9fbc 0x6db5 +0x9fbd 0x6dc7 +0x9fbe 0x6de6 +0x9fbf 0x6db8 +0x9fc0 0x6dc6 +0x9fc1 0x6dec +0x9fc2 0x6dde +0x9fc3 0x6dcc +0x9fc4 0x6de8 +0x9fc5 0x6dd2 +0x9fc6 0x6dc5 +0x9fc7 0x6dfa +0x9fc8 0x6dd9 +0x9fc9 0x6de4 +0x9fca 0x6dd5 +0x9fcb 0x6dea +0x9fcc 0x6dee +0x9fcd 0x6e2d +0x9fce 0x6e6e +0x9fcf 0x6e2e +0x9fd0 0x6e19 +0x9fd1 0x6e72 +0x9fd2 0x6e5f +0x9fd3 0x6e3e +0x9fd4 0x6e23 +0x9fd5 0x6e6b +0x9fd6 0x6e2b +0x9fd7 0x6e76 +0x9fd8 0x6e4d +0x9fd9 0x6e1f +0x9fda 0x6e43 +0x9fdb 0x6e3a +0x9fdc 0x6e4e +0x9fdd 0x6e24 +0x9fde 0x6eff +0x9fdf 0x6e1d +0x9fe0 0x6e38 +0x9fe1 0x6e82 +0x9fe2 0x6eaa +0x9fe3 0x6e98 +0x9fe4 0x6ec9 +0x9fe5 0x6eb7 +0x9fe6 0x6ed3 +0x9fe7 0x6ebd +0x9fe8 0x6eaf +0x9fe9 0x6ec4 +0x9fea 0x6eb2 +0x9feb 0x6ed4 +0x9fec 0x6ed5 +0x9fed 0x6e8f +0x9fee 0x6ea5 +0x9fef 0x6ec2 +0x9ff0 0x6e9f +0x9ff1 0x6f41 +0x9ff2 0x6f11 +0x9ff3 0x704c +0x9ff4 0x6eec +0x9ff5 0x6ef8 +0x9ff6 0x6efe +0x9ff7 0x6f3f +0x9ff8 0x6ef2 +0x9ff9 0x6f31 +0x9ffa 0x6eef +0x9ffb 0x6f32 +0x9ffc 0x6ecc +0xe040 0x6f3e +0xe041 0x6f13 +0xe042 0x6ef7 +0xe043 0x6f86 +0xe044 0x6f7a +0xe045 0x6f78 +0xe046 0x6f81 +0xe047 0x6f80 +0xe048 0x6f6f +0xe049 0x6f5b +0xe04a 0x6ff3 +0xe04b 0x6f6d +0xe04c 0x6f82 +0xe04d 0x6f7c +0xe04e 0x6f58 +0xe04f 0x6f8e +0xe050 0x6f91 +0xe051 0x6fc2 +0xe052 0x6f66 +0xe053 0x6fb3 +0xe054 0x6fa3 +0xe055 0x6fa1 +0xe056 0x6fa4 +0xe057 0x6fb9 +0xe058 0x6fc6 +0xe059 0x6faa +0xe05a 0x6fdf +0xe05b 0x6fd5 +0xe05c 0x6fec +0xe05d 0x6fd4 +0xe05e 0x6fd8 +0xe05f 0x6ff1 +0xe060 0x6fee +0xe061 0x6fdb +0xe062 0x7009 +0xe063 0x700b +0xe064 0x6ffa +0xe065 0x7011 +0xe066 0x7001 +0xe067 0x700f +0xe068 0x6ffe +0xe069 0x701b +0xe06a 0x701a +0xe06b 0x6f74 +0xe06c 0x701d +0xe06d 0x7018 +0xe06e 0x701f +0xe06f 0x7030 +0xe070 0x703e +0xe071 0x7032 +0xe072 0x7051 +0xe073 0x7063 +0xe074 0x7099 +0xe075 0x7092 +0xe076 0x70af +0xe077 0x70f1 +0xe078 0x70ac +0xe079 0x70b8 +0xe07a 0x70b3 +0xe07b 0x70ae +0xe07c 0x70df +0xe07d 0x70cb +0xe07e 0x70dd +0xe080 0x70d9 +0xe081 0x7109 +0xe082 0x70fd +0xe083 0x711c +0xe084 0x7119 +0xe085 0x7165 +0xe086 0x7155 +0xe087 0x7188 +0xe088 0x7166 +0xe089 0x7162 +0xe08a 0x714c +0xe08b 0x7156 +0xe08c 0x716c +0xe08d 0x718f +0xe08e 0x71fb +0xe08f 0x7184 +0xe090 0x7195 +0xe091 0x71a8 +0xe092 0x71ac +0xe093 0x71d7 +0xe094 0x71b9 +0xe095 0x71be +0xe096 0x71d2 +0xe097 0x71c9 +0xe098 0x71d4 +0xe099 0x71ce +0xe09a 0x71e0 +0xe09b 0x71ec +0xe09c 0x71e7 +0xe09d 0x71f5 +0xe09e 0x71fc +0xe09f 0x71f9 +0xe0a0 0x71ff +0xe0a1 0x720d +0xe0a2 0x7210 +0xe0a3 0x721b +0xe0a4 0x7228 +0xe0a5 0x722d +0xe0a6 0x722c +0xe0a7 0x7230 +0xe0a8 0x7232 +0xe0a9 0x723b +0xe0aa 0x723c +0xe0ab 0x723f +0xe0ac 0x7240 +0xe0ad 0x7246 +0xe0ae 0x724b +0xe0af 0x7258 +0xe0b0 0x7274 +0xe0b1 0x727e +0xe0b2 0x7282 +0xe0b3 0x7281 +0xe0b4 0x7287 +0xe0b5 0x7292 +0xe0b6 0x7296 +0xe0b7 0x72a2 +0xe0b8 0x72a7 +0xe0b9 0x72b9 +0xe0ba 0x72b2 +0xe0bb 0x72c3 +0xe0bc 0x72c6 +0xe0bd 0x72c4 +0xe0be 0x72ce +0xe0bf 0x72d2 +0xe0c0 0x72e2 +0xe0c1 0x72e0 +0xe0c2 0x72e1 +0xe0c3 0x72f9 +0xe0c4 0x72f7 +0xe0c5 0x500f +0xe0c6 0x7317 +0xe0c7 0x730a +0xe0c8 0x731c +0xe0c9 0x7316 +0xe0ca 0x731d +0xe0cb 0x7334 +0xe0cc 0x732f +0xe0cd 0x7329 +0xe0ce 0x7325 +0xe0cf 0x733e +0xe0d0 0x734e +0xe0d1 0x734f +0xe0d2 0x9ed8 +0xe0d3 0x7357 +0xe0d4 0x736a +0xe0d5 0x7368 +0xe0d6 0x7370 +0xe0d7 0x7378 +0xe0d8 0x7375 +0xe0d9 0x737b +0xe0da 0x737a +0xe0db 0x73c8 +0xe0dc 0x73b3 +0xe0dd 0x73ce +0xe0de 0x73bb +0xe0df 0x73c0 +0xe0e0 0x73e5 +0xe0e1 0x73ee +0xe0e2 0x73de +0xe0e3 0x74a2 +0xe0e4 0x7405 +0xe0e5 0x746f +0xe0e6 0x7425 +0xe0e7 0x73f8 +0xe0e8 0x7432 +0xe0e9 0x743a +0xe0ea 0x7455 +0xe0eb 0x743f +0xe0ec 0x745f +0xe0ed 0x7459 +0xe0ee 0x7441 +0xe0ef 0x745c +0xe0f0 0x7469 +0xe0f1 0x7470 +0xe0f2 0x7463 +0xe0f3 0x746a +0xe0f4 0x7476 +0xe0f5 0x747e +0xe0f6 0x748b +0xe0f7 0x749e +0xe0f8 0x74a7 +0xe0f9 0x74ca +0xe0fa 0x74cf +0xe0fb 0x74d4 +0xe0fc 0x73f1 +0xe140 0x74e0 +0xe141 0x74e3 +0xe142 0x74e7 +0xe143 0x74e9 +0xe144 0x74ee +0xe145 0x74f2 +0xe146 0x74f0 +0xe147 0x74f1 +0xe148 0x74f8 +0xe149 0x74f7 +0xe14a 0x7504 +0xe14b 0x7503 +0xe14c 0x7505 +0xe14d 0x750c +0xe14e 0x750e +0xe14f 0x750d +0xe150 0x7515 +0xe151 0x7513 +0xe152 0x751e +0xe153 0x7526 +0xe154 0x752c +0xe155 0x753c +0xe156 0x7544 +0xe157 0x754d +0xe158 0x754a +0xe159 0x7549 +0xe15a 0x755b +0xe15b 0x7546 +0xe15c 0x755a +0xe15d 0x7569 +0xe15e 0x7564 +0xe15f 0x7567 +0xe160 0x756b +0xe161 0x756d +0xe162 0x7578 +0xe163 0x7576 +0xe164 0x7586 +0xe165 0x7587 +0xe166 0x7574 +0xe167 0x758a +0xe168 0x7589 +0xe169 0x7582 +0xe16a 0x7594 +0xe16b 0x759a +0xe16c 0x759d +0xe16d 0x75a5 +0xe16e 0x75a3 +0xe16f 0x75c2 +0xe170 0x75b3 +0xe171 0x75c3 +0xe172 0x75b5 +0xe173 0x75bd +0xe174 0x75b8 +0xe175 0x75bc +0xe176 0x75b1 +0xe177 0x75cd +0xe178 0x75ca +0xe179 0x75d2 +0xe17a 0x75d9 +0xe17b 0x75e3 +0xe17c 0x75de +0xe17d 0x75fe +0xe17e 0x75ff +0xe180 0x75fc +0xe181 0x7601 +0xe182 0x75f0 +0xe183 0x75fa +0xe184 0x75f2 +0xe185 0x75f3 +0xe186 0x760b +0xe187 0x760d +0xe188 0x7609 +0xe189 0x761f +0xe18a 0x7627 +0xe18b 0x7620 +0xe18c 0x7621 +0xe18d 0x7622 +0xe18e 0x7624 +0xe18f 0x7634 +0xe190 0x7630 +0xe191 0x763b +0xe192 0x7647 +0xe193 0x7648 +0xe194 0x7646 +0xe195 0x765c +0xe196 0x7658 +0xe197 0x7661 +0xe198 0x7662 +0xe199 0x7668 +0xe19a 0x7669 +0xe19b 0x766a +0xe19c 0x7667 +0xe19d 0x766c +0xe19e 0x7670 +0xe19f 0x7672 +0xe1a0 0x7676 +0xe1a1 0x7678 +0xe1a2 0x767c +0xe1a3 0x7680 +0xe1a4 0x7683 +0xe1a5 0x7688 +0xe1a6 0x768b +0xe1a7 0x768e +0xe1a8 0x7696 +0xe1a9 0x7693 +0xe1aa 0x7699 +0xe1ab 0x769a +0xe1ac 0x76b0 +0xe1ad 0x76b4 +0xe1ae 0x76b8 +0xe1af 0x76b9 +0xe1b0 0x76ba +0xe1b1 0x76c2 +0xe1b2 0x76cd +0xe1b3 0x76d6 +0xe1b4 0x76d2 +0xe1b5 0x76de +0xe1b6 0x76e1 +0xe1b7 0x76e5 +0xe1b8 0x76e7 +0xe1b9 0x76ea +0xe1ba 0x862f +0xe1bb 0x76fb +0xe1bc 0x7708 +0xe1bd 0x7707 +0xe1be 0x7704 +0xe1bf 0x7729 +0xe1c0 0x7724 +0xe1c1 0x771e +0xe1c2 0x7725 +0xe1c3 0x7726 +0xe1c4 0x771b +0xe1c5 0x7737 +0xe1c6 0x7738 +0xe1c7 0x7747 +0xe1c8 0x775a +0xe1c9 0x7768 +0xe1ca 0x776b +0xe1cb 0x775b +0xe1cc 0x7765 +0xe1cd 0x777f +0xe1ce 0x777e +0xe1cf 0x7779 +0xe1d0 0x778e +0xe1d1 0x778b +0xe1d2 0x7791 +0xe1d3 0x77a0 +0xe1d4 0x779e +0xe1d5 0x77b0 +0xe1d6 0x77b6 +0xe1d7 0x77b9 +0xe1d8 0x77bf +0xe1d9 0x77bc +0xe1da 0x77bd +0xe1db 0x77bb +0xe1dc 0x77c7 +0xe1dd 0x77cd +0xe1de 0x77d7 +0xe1df 0x77da +0xe1e0 0x77dc +0xe1e1 0x77e3 +0xe1e2 0x77ee +0xe1e3 0x77fc +0xe1e4 0x780c +0xe1e5 0x7812 +0xe1e6 0x7926 +0xe1e7 0x7820 +0xe1e8 0x792a +0xe1e9 0x7845 +0xe1ea 0x788e +0xe1eb 0x7874 +0xe1ec 0x7886 +0xe1ed 0x787c +0xe1ee 0x789a +0xe1ef 0x788c +0xe1f0 0x78a3 +0xe1f1 0x78b5 +0xe1f2 0x78aa +0xe1f3 0x78af +0xe1f4 0x78d1 +0xe1f5 0x78c6 +0xe1f6 0x78cb +0xe1f7 0x78d4 +0xe1f8 0x78be +0xe1f9 0x78bc +0xe1fa 0x78c5 +0xe1fb 0x78ca +0xe1fc 0x78ec +0xe240 0x78e7 +0xe241 0x78da +0xe242 0x78fd +0xe243 0x78f4 +0xe244 0x7907 +0xe245 0x7912 +0xe246 0x7911 +0xe247 0x7919 +0xe248 0x792c +0xe249 0x792b +0xe24a 0x7940 +0xe24b 0x7960 +0xe24c 0x7957 +0xe24d 0x795f +0xe24e 0x795a +0xe24f 0x7955 +0xe250 0x7953 +0xe251 0x797a +0xe252 0x797f +0xe253 0x798a +0xe254 0x799d +0xe255 0x79a7 +0xe256 0x9f4b +0xe257 0x79aa +0xe258 0x79ae +0xe259 0x79b3 +0xe25a 0x79b9 +0xe25b 0x79ba +0xe25c 0x79c9 +0xe25d 0x79d5 +0xe25e 0x79e7 +0xe25f 0x79ec +0xe260 0x79e1 +0xe261 0x79e3 +0xe262 0x7a08 +0xe263 0x7a0d +0xe264 0x7a18 +0xe265 0x7a19 +0xe266 0x7a20 +0xe267 0x7a1f +0xe268 0x7980 +0xe269 0x7a31 +0xe26a 0x7a3b +0xe26b 0x7a3e +0xe26c 0x7a37 +0xe26d 0x7a43 +0xe26e 0x7a57 +0xe26f 0x7a49 +0xe270 0x7a61 +0xe271 0x7a62 +0xe272 0x7a69 +0xe273 0x9f9d +0xe274 0x7a70 +0xe275 0x7a79 +0xe276 0x7a7d +0xe277 0x7a88 +0xe278 0x7a97 +0xe279 0x7a95 +0xe27a 0x7a98 +0xe27b 0x7a96 +0xe27c 0x7aa9 +0xe27d 0x7ac8 +0xe27e 0x7ab0 +0xe280 0x7ab6 +0xe281 0x7ac5 +0xe282 0x7ac4 +0xe283 0x7abf +0xe284 0x9083 +0xe285 0x7ac7 +0xe286 0x7aca +0xe287 0x7acd +0xe288 0x7acf +0xe289 0x7ad5 +0xe28a 0x7ad3 +0xe28b 0x7ad9 +0xe28c 0x7ada +0xe28d 0x7add +0xe28e 0x7ae1 +0xe28f 0x7ae2 +0xe290 0x7ae6 +0xe291 0x7aed +0xe292 0x7af0 +0xe293 0x7b02 +0xe294 0x7b0f +0xe295 0x7b0a +0xe296 0x7b06 +0xe297 0x7b33 +0xe298 0x7b18 +0xe299 0x7b19 +0xe29a 0x7b1e +0xe29b 0x7b35 +0xe29c 0x7b28 +0xe29d 0x7b36 +0xe29e 0x7b50 +0xe29f 0x7b7a +0xe2a0 0x7b04 +0xe2a1 0x7b4d +0xe2a2 0x7b0b +0xe2a3 0x7b4c +0xe2a4 0x7b45 +0xe2a5 0x7b75 +0xe2a6 0x7b65 +0xe2a7 0x7b74 +0xe2a8 0x7b67 +0xe2a9 0x7b70 +0xe2aa 0x7b71 +0xe2ab 0x7b6c +0xe2ac 0x7b6e +0xe2ad 0x7b9d +0xe2ae 0x7b98 +0xe2af 0x7b9f +0xe2b0 0x7b8d +0xe2b1 0x7b9c +0xe2b2 0x7b9a +0xe2b3 0x7b8b +0xe2b4 0x7b92 +0xe2b5 0x7b8f +0xe2b6 0x7b5d +0xe2b7 0x7b99 +0xe2b8 0x7bcb +0xe2b9 0x7bc1 +0xe2ba 0x7bcc +0xe2bb 0x7bcf +0xe2bc 0x7bb4 +0xe2bd 0x7bc6 +0xe2be 0x7bdd +0xe2bf 0x7be9 +0xe2c0 0x7c11 +0xe2c1 0x7c14 +0xe2c2 0x7be6 +0xe2c3 0x7be5 +0xe2c4 0x7c60 +0xe2c5 0x7c00 +0xe2c6 0x7c07 +0xe2c7 0x7c13 +0xe2c8 0x7bf3 +0xe2c9 0x7bf7 +0xe2ca 0x7c17 +0xe2cb 0x7c0d +0xe2cc 0x7bf6 +0xe2cd 0x7c23 +0xe2ce 0x7c27 +0xe2cf 0x7c2a +0xe2d0 0x7c1f +0xe2d1 0x7c37 +0xe2d2 0x7c2b +0xe2d3 0x7c3d +0xe2d4 0x7c4c +0xe2d5 0x7c43 +0xe2d6 0x7c54 +0xe2d7 0x7c4f +0xe2d8 0x7c40 +0xe2d9 0x7c50 +0xe2da 0x7c58 +0xe2db 0x7c5f +0xe2dc 0x7c64 +0xe2dd 0x7c56 +0xe2de 0x7c65 +0xe2df 0x7c6c +0xe2e0 0x7c75 +0xe2e1 0x7c83 +0xe2e2 0x7c90 +0xe2e3 0x7ca4 +0xe2e4 0x7cad +0xe2e5 0x7ca2 +0xe2e6 0x7cab +0xe2e7 0x7ca1 +0xe2e8 0x7ca8 +0xe2e9 0x7cb3 +0xe2ea 0x7cb2 +0xe2eb 0x7cb1 +0xe2ec 0x7cae +0xe2ed 0x7cb9 +0xe2ee 0x7cbd +0xe2ef 0x7cc0 +0xe2f0 0x7cc5 +0xe2f1 0x7cc2 +0xe2f2 0x7cd8 +0xe2f3 0x7cd2 +0xe2f4 0x7cdc +0xe2f5 0x7ce2 +0xe2f6 0x9b3b +0xe2f7 0x7cef +0xe2f8 0x7cf2 +0xe2f9 0x7cf4 +0xe2fa 0x7cf6 +0xe2fb 0x7cfa +0xe2fc 0x7d06 +0xe340 0x7d02 +0xe341 0x7d1c +0xe342 0x7d15 +0xe343 0x7d0a +0xe344 0x7d45 +0xe345 0x7d4b +0xe346 0x7d2e +0xe347 0x7d32 +0xe348 0x7d3f +0xe349 0x7d35 +0xe34a 0x7d46 +0xe34b 0x7d73 +0xe34c 0x7d56 +0xe34d 0x7d4e +0xe34e 0x7d72 +0xe34f 0x7d68 +0xe350 0x7d6e +0xe351 0x7d4f +0xe352 0x7d63 +0xe353 0x7d93 +0xe354 0x7d89 +0xe355 0x7d5b +0xe356 0x7d8f +0xe357 0x7d7d +0xe358 0x7d9b +0xe359 0x7dba +0xe35a 0x7dae +0xe35b 0x7da3 +0xe35c 0x7db5 +0xe35d 0x7dc7 +0xe35e 0x7dbd +0xe35f 0x7dab +0xe360 0x7e3d +0xe361 0x7da2 +0xe362 0x7daf +0xe363 0x7ddc +0xe364 0x7db8 +0xe365 0x7d9f +0xe366 0x7db0 +0xe367 0x7dd8 +0xe368 0x7ddd +0xe369 0x7de4 +0xe36a 0x7dde +0xe36b 0x7dfb +0xe36c 0x7df2 +0xe36d 0x7de1 +0xe36e 0x7e05 +0xe36f 0x7e0a +0xe370 0x7e23 +0xe371 0x7e21 +0xe372 0x7e12 +0xe373 0x7e31 +0xe374 0x7e1f +0xe375 0x7e09 +0xe376 0x7e0b +0xe377 0x7e22 +0xe378 0x7e46 +0xe379 0x7e66 +0xe37a 0x7e3b +0xe37b 0x7e35 +0xe37c 0x7e39 +0xe37d 0x7e43 +0xe37e 0x7e37 +0xe380 0x7e32 +0xe381 0x7e3a +0xe382 0x7e67 +0xe383 0x7e5d +0xe384 0x7e56 +0xe385 0x7e5e +0xe386 0x7e59 +0xe387 0x7e5a +0xe388 0x7e79 +0xe389 0x7e6a +0xe38a 0x7e69 +0xe38b 0x7e7c +0xe38c 0x7e7b +0xe38d 0x7e83 +0xe38e 0x7dd5 +0xe38f 0x7e7d +0xe390 0x8fae +0xe391 0x7e7f +0xe392 0x7e88 +0xe393 0x7e89 +0xe394 0x7e8c +0xe395 0x7e92 +0xe396 0x7e90 +0xe397 0x7e93 +0xe398 0x7e94 +0xe399 0x7e96 +0xe39a 0x7e8e +0xe39b 0x7e9b +0xe39c 0x7e9c +0xe39d 0x7f38 +0xe39e 0x7f3a +0xe39f 0x7f45 +0xe3a0 0x7f4c +0xe3a1 0x7f4d +0xe3a2 0x7f4e +0xe3a3 0x7f50 +0xe3a4 0x7f51 +0xe3a5 0x7f55 +0xe3a6 0x7f54 +0xe3a7 0x7f58 +0xe3a8 0x7f5f +0xe3a9 0x7f60 +0xe3aa 0x7f68 +0xe3ab 0x7f69 +0xe3ac 0x7f67 +0xe3ad 0x7f78 +0xe3ae 0x7f82 +0xe3af 0x7f86 +0xe3b0 0x7f83 +0xe3b1 0x7f88 +0xe3b2 0x7f87 +0xe3b3 0x7f8c +0xe3b4 0x7f94 +0xe3b5 0x7f9e +0xe3b6 0x7f9d +0xe3b7 0x7f9a +0xe3b8 0x7fa3 +0xe3b9 0x7faf +0xe3ba 0x7fb2 +0xe3bb 0x7fb9 +0xe3bc 0x7fae +0xe3bd 0x7fb6 +0xe3be 0x7fb8 +0xe3bf 0x8b71 +0xe3c0 0x7fc5 +0xe3c1 0x7fc6 +0xe3c2 0x7fca +0xe3c3 0x7fd5 +0xe3c4 0x7fd4 +0xe3c5 0x7fe1 +0xe3c6 0x7fe6 +0xe3c7 0x7fe9 +0xe3c8 0x7ff3 +0xe3c9 0x7ff9 +0xe3ca 0x98dc +0xe3cb 0x8006 +0xe3cc 0x8004 +0xe3cd 0x800b +0xe3ce 0x8012 +0xe3cf 0x8018 +0xe3d0 0x8019 +0xe3d1 0x801c +0xe3d2 0x8021 +0xe3d3 0x8028 +0xe3d4 0x803f +0xe3d5 0x803b +0xe3d6 0x804a +0xe3d7 0x8046 +0xe3d8 0x8052 +0xe3d9 0x8058 +0xe3da 0x805a +0xe3db 0x805f +0xe3dc 0x8062 +0xe3dd 0x8068 +0xe3de 0x8073 +0xe3df 0x8072 +0xe3e0 0x8070 +0xe3e1 0x8076 +0xe3e2 0x8079 +0xe3e3 0x807d +0xe3e4 0x807f +0xe3e5 0x8084 +0xe3e6 0x8086 +0xe3e7 0x8085 +0xe3e8 0x809b +0xe3e9 0x8093 +0xe3ea 0x809a +0xe3eb 0x80ad +0xe3ec 0x5190 +0xe3ed 0x80ac +0xe3ee 0x80db +0xe3ef 0x80e5 +0xe3f0 0x80d9 +0xe3f1 0x80dd +0xe3f2 0x80c4 +0xe3f3 0x80da +0xe3f4 0x80d6 +0xe3f5 0x8109 +0xe3f6 0x80ef +0xe3f7 0x80f1 +0xe3f8 0x811b +0xe3f9 0x8129 +0xe3fa 0x8123 +0xe3fb 0x812f +0xe3fc 0x814b +0xe440 0x968b +0xe441 0x8146 +0xe442 0x813e +0xe443 0x8153 +0xe444 0x8151 +0xe445 0x80fc +0xe446 0x8171 +0xe447 0x816e +0xe448 0x8165 +0xe449 0x8166 +0xe44a 0x8174 +0xe44b 0x8183 +0xe44c 0x8188 +0xe44d 0x818a +0xe44e 0x8180 +0xe44f 0x8182 +0xe450 0x81a0 +0xe451 0x8195 +0xe452 0x81a4 +0xe453 0x81a3 +0xe454 0x815f +0xe455 0x8193 +0xe456 0x81a9 +0xe457 0x81b0 +0xe458 0x81b5 +0xe459 0x81be +0xe45a 0x81b8 +0xe45b 0x81bd +0xe45c 0x81c0 +0xe45d 0x81c2 +0xe45e 0x81ba +0xe45f 0x81c9 +0xe460 0x81cd +0xe461 0x81d1 +0xe462 0x81d9 +0xe463 0x81d8 +0xe464 0x81c8 +0xe465 0x81da +0xe466 0x81df +0xe467 0x81e0 +0xe468 0x81e7 +0xe469 0x81fa +0xe46a 0x81fb +0xe46b 0x81fe +0xe46c 0x8201 +0xe46d 0x8202 +0xe46e 0x8205 +0xe46f 0x8207 +0xe470 0x820a +0xe471 0x820d +0xe472 0x8210 +0xe473 0x8216 +0xe474 0x8229 +0xe475 0x822b +0xe476 0x8238 +0xe477 0x8233 +0xe478 0x8240 +0xe479 0x8259 +0xe47a 0x8258 +0xe47b 0x825d +0xe47c 0x825a +0xe47d 0x825f +0xe47e 0x8264 +0xe480 0x8262 +0xe481 0x8268 +0xe482 0x826a +0xe483 0x826b +0xe484 0x822e +0xe485 0x8271 +0xe486 0x8277 +0xe487 0x8278 +0xe488 0x827e +0xe489 0x828d +0xe48a 0x8292 +0xe48b 0x82ab +0xe48c 0x829f +0xe48d 0x82bb +0xe48e 0x82ac +0xe48f 0x82e1 +0xe490 0x82e3 +0xe491 0x82df +0xe492 0x82d2 +0xe493 0x82f4 +0xe494 0x82f3 +0xe495 0x82fa +0xe496 0x8393 +0xe497 0x8303 +0xe498 0x82fb +0xe499 0x82f9 +0xe49a 0x82de +0xe49b 0x8306 +0xe49c 0x82dc +0xe49d 0x8309 +0xe49e 0x82d9 +0xe49f 0x8335 +0xe4a0 0x8334 +0xe4a1 0x8316 +0xe4a2 0x8332 +0xe4a3 0x8331 +0xe4a4 0x8340 +0xe4a5 0x8339 +0xe4a6 0x8350 +0xe4a7 0x8345 +0xe4a8 0x832f +0xe4a9 0x832b +0xe4aa 0x8317 +0xe4ab 0x8318 +0xe4ac 0x8385 +0xe4ad 0x839a +0xe4ae 0x83aa +0xe4af 0x839f +0xe4b0 0x83a2 +0xe4b1 0x8396 +0xe4b2 0x8323 +0xe4b3 0x838e +0xe4b4 0x8387 +0xe4b5 0x838a +0xe4b6 0x837c +0xe4b7 0x83b5 +0xe4b8 0x8373 +0xe4b9 0x8375 +0xe4ba 0x83a0 +0xe4bb 0x8389 +0xe4bc 0x83a8 +0xe4bd 0x83f4 +0xe4be 0x8413 +0xe4bf 0x83eb +0xe4c0 0x83ce +0xe4c1 0x83fd +0xe4c2 0x8403 +0xe4c3 0x83d8 +0xe4c4 0x840b +0xe4c5 0x83c1 +0xe4c6 0x83f7 +0xe4c7 0x8407 +0xe4c8 0x83e0 +0xe4c9 0x83f2 +0xe4ca 0x840d +0xe4cb 0x8422 +0xe4cc 0x8420 +0xe4cd 0x83bd +0xe4ce 0x8438 +0xe4cf 0x8506 +0xe4d0 0x83fb +0xe4d1 0x846d +0xe4d2 0x842a +0xe4d3 0x843c +0xe4d4 0x855a +0xe4d5 0x8484 +0xe4d6 0x8477 +0xe4d7 0x846b +0xe4d8 0x84ad +0xe4d9 0x846e +0xe4da 0x8482 +0xe4db 0x8469 +0xe4dc 0x8446 +0xe4dd 0x842c +0xe4de 0x846f +0xe4df 0x8479 +0xe4e0 0x8435 +0xe4e1 0x84ca +0xe4e2 0x8462 +0xe4e3 0x84b9 +0xe4e4 0x84bf +0xe4e5 0x849f +0xe4e6 0x84d9 +0xe4e7 0x84cd +0xe4e8 0x84bb +0xe4e9 0x84da +0xe4ea 0x84d0 +0xe4eb 0x84c1 +0xe4ec 0x84c6 +0xe4ed 0x84d6 +0xe4ee 0x84a1 +0xe4ef 0x8521 +0xe4f0 0x84ff +0xe4f1 0x84f4 +0xe4f2 0x8517 +0xe4f3 0x8518 +0xe4f4 0x852c +0xe4f5 0x851f +0xe4f6 0x8515 +0xe4f7 0x8514 +0xe4f8 0x84fc +0xe4f9 0x8540 +0xe4fa 0x8563 +0xe4fb 0x8558 +0xe4fc 0x8548 +0xe540 0x8541 +0xe541 0x8602 +0xe542 0x854b +0xe543 0x8555 +0xe544 0x8580 +0xe545 0x85a4 +0xe546 0x8588 +0xe547 0x8591 +0xe548 0x858a +0xe549 0x85a8 +0xe54a 0x856d +0xe54b 0x8594 +0xe54c 0x859b +0xe54d 0x85ea +0xe54e 0x8587 +0xe54f 0x859c +0xe550 0x8577 +0xe551 0x857e +0xe552 0x8590 +0xe553 0x85c9 +0xe554 0x85ba +0xe555 0x85cf +0xe556 0x85b9 +0xe557 0x85d0 +0xe558 0x85d5 +0xe559 0x85dd +0xe55a 0x85e5 +0xe55b 0x85dc +0xe55c 0x85f9 +0xe55d 0x860a +0xe55e 0x8613 +0xe55f 0x860b +0xe560 0x85fe +0xe561 0x85fa +0xe562 0x8606 +0xe563 0x8622 +0xe564 0x861a +0xe565 0x8630 +0xe566 0x863f +0xe567 0x864d +0xe568 0x4e55 +0xe569 0x8654 +0xe56a 0x865f +0xe56b 0x8667 +0xe56c 0x8671 +0xe56d 0x8693 +0xe56e 0x86a3 +0xe56f 0x86a9 +0xe570 0x86aa +0xe571 0x868b +0xe572 0x868c +0xe573 0x86b6 +0xe574 0x86af +0xe575 0x86c4 +0xe576 0x86c6 +0xe577 0x86b0 +0xe578 0x86c9 +0xe579 0x8823 +0xe57a 0x86ab +0xe57b 0x86d4 +0xe57c 0x86de +0xe57d 0x86e9 +0xe57e 0x86ec +0xe580 0x86df +0xe581 0x86db +0xe582 0x86ef +0xe583 0x8712 +0xe584 0x8706 +0xe585 0x8708 +0xe586 0x8700 +0xe587 0x8703 +0xe588 0x86fb +0xe589 0x8711 +0xe58a 0x8709 +0xe58b 0x870d +0xe58c 0x86f9 +0xe58d 0x870a +0xe58e 0x8734 +0xe58f 0x873f +0xe590 0x8737 +0xe591 0x873b +0xe592 0x8725 +0xe593 0x8729 +0xe594 0x871a +0xe595 0x8760 +0xe596 0x875f +0xe597 0x8778 +0xe598 0x874c +0xe599 0x874e +0xe59a 0x8774 +0xe59b 0x8757 +0xe59c 0x8768 +0xe59d 0x876e +0xe59e 0x8759 +0xe59f 0x8753 +0xe5a0 0x8763 +0xe5a1 0x876a +0xe5a2 0x8805 +0xe5a3 0x87a2 +0xe5a4 0x879f +0xe5a5 0x8782 +0xe5a6 0x87af +0xe5a7 0x87cb +0xe5a8 0x87bd +0xe5a9 0x87c0 +0xe5aa 0x87d0 +0xe5ab 0x96d6 +0xe5ac 0x87ab +0xe5ad 0x87c4 +0xe5ae 0x87b3 +0xe5af 0x87c7 +0xe5b0 0x87c6 +0xe5b1 0x87bb +0xe5b2 0x87ef +0xe5b3 0x87f2 +0xe5b4 0x87e0 +0xe5b5 0x880f +0xe5b6 0x880d +0xe5b7 0x87fe +0xe5b8 0x87f6 +0xe5b9 0x87f7 +0xe5ba 0x880e +0xe5bb 0x87d2 +0xe5bc 0x8811 +0xe5bd 0x8816 +0xe5be 0x8815 +0xe5bf 0x8822 +0xe5c0 0x8821 +0xe5c1 0x8831 +0xe5c2 0x8836 +0xe5c3 0x8839 +0xe5c4 0x8827 +0xe5c5 0x883b +0xe5c6 0x8844 +0xe5c7 0x8842 +0xe5c8 0x8852 +0xe5c9 0x8859 +0xe5ca 0x885e +0xe5cb 0x8862 +0xe5cc 0x886b +0xe5cd 0x8881 +0xe5ce 0x887e +0xe5cf 0x889e +0xe5d0 0x8875 +0xe5d1 0x887d +0xe5d2 0x88b5 +0xe5d3 0x8872 +0xe5d4 0x8882 +0xe5d5 0x8897 +0xe5d6 0x8892 +0xe5d7 0x88ae +0xe5d8 0x8899 +0xe5d9 0x88a2 +0xe5da 0x888d +0xe5db 0x88a4 +0xe5dc 0x88b0 +0xe5dd 0x88bf +0xe5de 0x88b1 +0xe5df 0x88c3 +0xe5e0 0x88c4 +0xe5e1 0x88d4 +0xe5e2 0x88d8 +0xe5e3 0x88d9 +0xe5e4 0x88dd +0xe5e5 0x88f9 +0xe5e6 0x8902 +0xe5e7 0x88fc +0xe5e8 0x88f4 +0xe5e9 0x88e8 +0xe5ea 0x88f2 +0xe5eb 0x8904 +0xe5ec 0x890c +0xe5ed 0x890a +0xe5ee 0x8913 +0xe5ef 0x8943 +0xe5f0 0x891e +0xe5f1 0x8925 +0xe5f2 0x892a +0xe5f3 0x892b +0xe5f4 0x8941 +0xe5f5 0x8944 +0xe5f6 0x893b +0xe5f7 0x8936 +0xe5f8 0x8938 +0xe5f9 0x894c +0xe5fa 0x891d +0xe5fb 0x8960 +0xe5fc 0x895e +0xe640 0x8966 +0xe641 0x8964 +0xe642 0x896d +0xe643 0x896a +0xe644 0x896f +0xe645 0x8974 +0xe646 0x8977 +0xe647 0x897e +0xe648 0x8983 +0xe649 0x8988 +0xe64a 0x898a +0xe64b 0x8993 +0xe64c 0x8998 +0xe64d 0x89a1 +0xe64e 0x89a9 +0xe64f 0x89a6 +0xe650 0x89ac +0xe651 0x89af +0xe652 0x89b2 +0xe653 0x89ba +0xe654 0x89bd +0xe655 0x89bf +0xe656 0x89c0 +0xe657 0x89da +0xe658 0x89dc +0xe659 0x89dd +0xe65a 0x89e7 +0xe65b 0x89f4 +0xe65c 0x89f8 +0xe65d 0x8a03 +0xe65e 0x8a16 +0xe65f 0x8a10 +0xe660 0x8a0c +0xe661 0x8a1b +0xe662 0x8a1d +0xe663 0x8a25 +0xe664 0x8a36 +0xe665 0x8a41 +0xe666 0x8a5b +0xe667 0x8a52 +0xe668 0x8a46 +0xe669 0x8a48 +0xe66a 0x8a7c +0xe66b 0x8a6d +0xe66c 0x8a6c +0xe66d 0x8a62 +0xe66e 0x8a85 +0xe66f 0x8a82 +0xe670 0x8a84 +0xe671 0x8aa8 +0xe672 0x8aa1 +0xe673 0x8a91 +0xe674 0x8aa5 +0xe675 0x8aa6 +0xe676 0x8a9a +0xe677 0x8aa3 +0xe678 0x8ac4 +0xe679 0x8acd +0xe67a 0x8ac2 +0xe67b 0x8ada +0xe67c 0x8aeb +0xe67d 0x8af3 +0xe67e 0x8ae7 +0xe680 0x8ae4 +0xe681 0x8af1 +0xe682 0x8b14 +0xe683 0x8ae0 +0xe684 0x8ae2 +0xe685 0x8af7 +0xe686 0x8ade +0xe687 0x8adb +0xe688 0x8b0c +0xe689 0x8b07 +0xe68a 0x8b1a +0xe68b 0x8ae1 +0xe68c 0x8b16 +0xe68d 0x8b10 +0xe68e 0x8b17 +0xe68f 0x8b20 +0xe690 0x8b33 +0xe691 0x97ab +0xe692 0x8b26 +0xe693 0x8b2b +0xe694 0x8b3e +0xe695 0x8b28 +0xe696 0x8b41 +0xe697 0x8b4c +0xe698 0x8b4f +0xe699 0x8b4e +0xe69a 0x8b49 +0xe69b 0x8b56 +0xe69c 0x8b5b +0xe69d 0x8b5a +0xe69e 0x8b6b +0xe69f 0x8b5f +0xe6a0 0x8b6c +0xe6a1 0x8b6f +0xe6a2 0x8b74 +0xe6a3 0x8b7d +0xe6a4 0x8b80 +0xe6a5 0x8b8c +0xe6a6 0x8b8e +0xe6a7 0x8b92 +0xe6a8 0x8b93 +0xe6a9 0x8b96 +0xe6aa 0x8b99 +0xe6ab 0x8b9a +0xe6ac 0x8c3a +0xe6ad 0x8c41 +0xe6ae 0x8c3f +0xe6af 0x8c48 +0xe6b0 0x8c4c +0xe6b1 0x8c4e +0xe6b2 0x8c50 +0xe6b3 0x8c55 +0xe6b4 0x8c62 +0xe6b5 0x8c6c +0xe6b6 0x8c78 +0xe6b7 0x8c7a +0xe6b8 0x8c82 +0xe6b9 0x8c89 +0xe6ba 0x8c85 +0xe6bb 0x8c8a +0xe6bc 0x8c8d +0xe6bd 0x8c8e +0xe6be 0x8c94 +0xe6bf 0x8c7c +0xe6c0 0x8c98 +0xe6c1 0x621d +0xe6c2 0x8cad +0xe6c3 0x8caa +0xe6c4 0x8cbd +0xe6c5 0x8cb2 +0xe6c6 0x8cb3 +0xe6c7 0x8cae +0xe6c8 0x8cb6 +0xe6c9 0x8cc8 +0xe6ca 0x8cc1 +0xe6cb 0x8ce4 +0xe6cc 0x8ce3 +0xe6cd 0x8cda +0xe6ce 0x8cfd +0xe6cf 0x8cfa +0xe6d0 0x8cfb +0xe6d1 0x8d04 +0xe6d2 0x8d05 +0xe6d3 0x8d0a +0xe6d4 0x8d07 +0xe6d5 0x8d0f +0xe6d6 0x8d0d +0xe6d7 0x8d10 +0xe6d8 0x9f4e +0xe6d9 0x8d13 +0xe6da 0x8ccd +0xe6db 0x8d14 +0xe6dc 0x8d16 +0xe6dd 0x8d67 +0xe6de 0x8d6d +0xe6df 0x8d71 +0xe6e0 0x8d73 +0xe6e1 0x8d81 +0xe6e2 0x8d99 +0xe6e3 0x8dc2 +0xe6e4 0x8dbe +0xe6e5 0x8dba +0xe6e6 0x8dcf +0xe6e7 0x8dda +0xe6e8 0x8dd6 +0xe6e9 0x8dcc +0xe6ea 0x8ddb +0xe6eb 0x8dcb +0xe6ec 0x8dea +0xe6ed 0x8deb +0xe6ee 0x8ddf +0xe6ef 0x8de3 +0xe6f0 0x8dfc +0xe6f1 0x8e08 +0xe6f2 0x8e09 +0xe6f3 0x8dff +0xe6f4 0x8e1d +0xe6f5 0x8e1e +0xe6f6 0x8e10 +0xe6f7 0x8e1f +0xe6f8 0x8e42 +0xe6f9 0x8e35 +0xe6fa 0x8e30 +0xe6fb 0x8e34 +0xe6fc 0x8e4a +0xe740 0x8e47 +0xe741 0x8e49 +0xe742 0x8e4c +0xe743 0x8e50 +0xe744 0x8e48 +0xe745 0x8e59 +0xe746 0x8e64 +0xe747 0x8e60 +0xe748 0x8e2a +0xe749 0x8e63 +0xe74a 0x8e55 +0xe74b 0x8e76 +0xe74c 0x8e72 +0xe74d 0x8e7c +0xe74e 0x8e81 +0xe74f 0x8e87 +0xe750 0x8e85 +0xe751 0x8e84 +0xe752 0x8e8b +0xe753 0x8e8a +0xe754 0x8e93 +0xe755 0x8e91 +0xe756 0x8e94 +0xe757 0x8e99 +0xe758 0x8eaa +0xe759 0x8ea1 +0xe75a 0x8eac +0xe75b 0x8eb0 +0xe75c 0x8ec6 +0xe75d 0x8eb1 +0xe75e 0x8ebe +0xe75f 0x8ec5 +0xe760 0x8ec8 +0xe761 0x8ecb +0xe762 0x8edb +0xe763 0x8ee3 +0xe764 0x8efc +0xe765 0x8efb +0xe766 0x8eeb +0xe767 0x8efe +0xe768 0x8f0a +0xe769 0x8f05 +0xe76a 0x8f15 +0xe76b 0x8f12 +0xe76c 0x8f19 +0xe76d 0x8f13 +0xe76e 0x8f1c +0xe76f 0x8f1f +0xe770 0x8f1b +0xe771 0x8f0c +0xe772 0x8f26 +0xe773 0x8f33 +0xe774 0x8f3b +0xe775 0x8f39 +0xe776 0x8f45 +0xe777 0x8f42 +0xe778 0x8f3e +0xe779 0x8f4c +0xe77a 0x8f49 +0xe77b 0x8f46 +0xe77c 0x8f4e +0xe77d 0x8f57 +0xe77e 0x8f5c +0xe780 0x8f62 +0xe781 0x8f63 +0xe782 0x8f64 +0xe783 0x8f9c +0xe784 0x8f9f +0xe785 0x8fa3 +0xe786 0x8fad +0xe787 0x8faf +0xe788 0x8fb7 +0xe789 0x8fda +0xe78a 0x8fe5 +0xe78b 0x8fe2 +0xe78c 0x8fea +0xe78d 0x8fef +0xe78e 0x9087 +0xe78f 0x8ff4 +0xe790 0x9005 +0xe791 0x8ff9 +0xe792 0x8ffa +0xe793 0x9011 +0xe794 0x9015 +0xe795 0x9021 +0xe796 0x900d +0xe797 0x901e +0xe798 0x9016 +0xe799 0x900b +0xe79a 0x9027 +0xe79b 0x9036 +0xe79c 0x9035 +0xe79d 0x9039 +0xe79e 0x8ff8 +0xe79f 0x904f +0xe7a0 0x9050 +0xe7a1 0x9051 +0xe7a2 0x9052 +0xe7a3 0x900e +0xe7a4 0x9049 +0xe7a5 0x903e +0xe7a6 0x9056 +0xe7a7 0x9058 +0xe7a8 0x905e +0xe7a9 0x9068 +0xe7aa 0x906f +0xe7ab 0x9076 +0xe7ac 0x96a8 +0xe7ad 0x9072 +0xe7ae 0x9082 +0xe7af 0x907d +0xe7b0 0x9081 +0xe7b1 0x9080 +0xe7b2 0x908a +0xe7b3 0x9089 +0xe7b4 0x908f +0xe7b5 0x90a8 +0xe7b6 0x90af +0xe7b7 0x90b1 +0xe7b8 0x90b5 +0xe7b9 0x90e2 +0xe7ba 0x90e4 +0xe7bb 0x6248 +0xe7bc 0x90db +0xe7bd 0x9102 +0xe7be 0x9112 +0xe7bf 0x9119 +0xe7c0 0x9132 +0xe7c1 0x9130 +0xe7c2 0x914a +0xe7c3 0x9156 +0xe7c4 0x9158 +0xe7c5 0x9163 +0xe7c6 0x9165 +0xe7c7 0x9169 +0xe7c8 0x9173 +0xe7c9 0x9172 +0xe7ca 0x918b +0xe7cb 0x9189 +0xe7cc 0x9182 +0xe7cd 0x91a2 +0xe7ce 0x91ab +0xe7cf 0x91af +0xe7d0 0x91aa +0xe7d1 0x91b5 +0xe7d2 0x91b4 +0xe7d3 0x91ba +0xe7d4 0x91c0 +0xe7d5 0x91c1 +0xe7d6 0x91c9 +0xe7d7 0x91cb +0xe7d8 0x91d0 +0xe7d9 0x91d6 +0xe7da 0x91df +0xe7db 0x91e1 +0xe7dc 0x91db +0xe7dd 0x91fc +0xe7de 0x91f5 +0xe7df 0x91f6 +0xe7e0 0x921e +0xe7e1 0x91ff +0xe7e2 0x9214 +0xe7e3 0x922c +0xe7e4 0x9215 +0xe7e5 0x9211 +0xe7e6 0x925e +0xe7e7 0x9257 +0xe7e8 0x9245 +0xe7e9 0x9249 +0xe7ea 0x9264 +0xe7eb 0x9248 +0xe7ec 0x9295 +0xe7ed 0x923f +0xe7ee 0x924b +0xe7ef 0x9250 +0xe7f0 0x929c +0xe7f1 0x9296 +0xe7f2 0x9293 +0xe7f3 0x929b +0xe7f4 0x925a +0xe7f5 0x92cf +0xe7f6 0x92b9 +0xe7f7 0x92b7 +0xe7f8 0x92e9 +0xe7f9 0x930f +0xe7fa 0x92fa +0xe7fb 0x9344 +0xe7fc 0x932e +0xe840 0x9319 +0xe841 0x9322 +0xe842 0x931a +0xe843 0x9323 +0xe844 0x933a +0xe845 0x9335 +0xe846 0x933b +0xe847 0x935c +0xe848 0x9360 +0xe849 0x937c +0xe84a 0x936e +0xe84b 0x9356 +0xe84c 0x93b0 +0xe84d 0x93ac +0xe84e 0x93ad +0xe84f 0x9394 +0xe850 0x93b9 +0xe851 0x93d6 +0xe852 0x93d7 +0xe853 0x93e8 +0xe854 0x93e5 +0xe855 0x93d8 +0xe856 0x93c3 +0xe857 0x93dd +0xe858 0x93d0 +0xe859 0x93c8 +0xe85a 0x93e4 +0xe85b 0x941a +0xe85c 0x9414 +0xe85d 0x9413 +0xe85e 0x9403 +0xe85f 0x9407 +0xe860 0x9410 +0xe861 0x9436 +0xe862 0x942b +0xe863 0x9435 +0xe864 0x9421 +0xe865 0x943a +0xe866 0x9441 +0xe867 0x9452 +0xe868 0x9444 +0xe869 0x945b +0xe86a 0x9460 +0xe86b 0x9462 +0xe86c 0x945e +0xe86d 0x946a +0xe86e 0x9229 +0xe86f 0x9470 +0xe870 0x9475 +0xe871 0x9477 +0xe872 0x947d +0xe873 0x945a +0xe874 0x947c +0xe875 0x947e +0xe876 0x9481 +0xe877 0x947f +0xe878 0x9582 +0xe879 0x9587 +0xe87a 0x958a +0xe87b 0x9594 +0xe87c 0x9596 +0xe87d 0x9598 +0xe87e 0x9599 +0xe880 0x95a0 +0xe881 0x95a8 +0xe882 0x95a7 +0xe883 0x95ad +0xe884 0x95bc +0xe885 0x95bb +0xe886 0x95b9 +0xe887 0x95be +0xe888 0x95ca +0xe889 0x6ff6 +0xe88a 0x95c3 +0xe88b 0x95cd +0xe88c 0x95cc +0xe88d 0x95d5 +0xe88e 0x95d4 +0xe88f 0x95d6 +0xe890 0x95dc +0xe891 0x95e1 +0xe892 0x95e5 +0xe893 0x95e2 +0xe894 0x9621 +0xe895 0x9628 +0xe896 0x962e +0xe897 0x962f +0xe898 0x9642 +0xe899 0x964c +0xe89a 0x964f +0xe89b 0x964b +0xe89c 0x9677 +0xe89d 0x965c +0xe89e 0x965e +0xe89f 0x965d +0xe8a0 0x965f +0xe8a1 0x9666 +0xe8a2 0x9672 +0xe8a3 0x966c +0xe8a4 0x968d +0xe8a5 0x9698 +0xe8a6 0x9695 +0xe8a7 0x9697 +0xe8a8 0x96aa +0xe8a9 0x96a7 +0xe8aa 0x96b1 +0xe8ab 0x96b2 +0xe8ac 0x96b0 +0xe8ad 0x96b4 +0xe8ae 0x96b6 +0xe8af 0x96b8 +0xe8b0 0x96b9 +0xe8b1 0x96ce +0xe8b2 0x96cb +0xe8b3 0x96c9 +0xe8b4 0x96cd +0xe8b5 0x894d +0xe8b6 0x96dc +0xe8b7 0x970d +0xe8b8 0x96d5 +0xe8b9 0x96f9 +0xe8ba 0x9704 +0xe8bb 0x9706 +0xe8bc 0x9708 +0xe8bd 0x9713 +0xe8be 0x970e +0xe8bf 0x9711 +0xe8c0 0x970f +0xe8c1 0x9716 +0xe8c2 0x9719 +0xe8c3 0x9724 +0xe8c4 0x972a +0xe8c5 0x9730 +0xe8c6 0x9739 +0xe8c7 0x973d +0xe8c8 0x973e +0xe8c9 0x9744 +0xe8ca 0x9746 +0xe8cb 0x9748 +0xe8cc 0x9742 +0xe8cd 0x9749 +0xe8ce 0x975c +0xe8cf 0x9760 +0xe8d0 0x9764 +0xe8d1 0x9766 +0xe8d2 0x9768 +0xe8d3 0x52d2 +0xe8d4 0x976b +0xe8d5 0x9771 +0xe8d6 0x9779 +0xe8d7 0x9785 +0xe8d8 0x977c +0xe8d9 0x9781 +0xe8da 0x977a +0xe8db 0x9786 +0xe8dc 0x978b +0xe8dd 0x978f +0xe8de 0x9790 +0xe8df 0x979c +0xe8e0 0x97a8 +0xe8e1 0x97a6 +0xe8e2 0x97a3 +0xe8e3 0x97b3 +0xe8e4 0x97b4 +0xe8e5 0x97c3 +0xe8e6 0x97c6 +0xe8e7 0x97c8 +0xe8e8 0x97cb +0xe8e9 0x97dc +0xe8ea 0x97ed +0xe8eb 0x9f4f +0xe8ec 0x97f2 +0xe8ed 0x7adf +0xe8ee 0x97f6 +0xe8ef 0x97f5 +0xe8f0 0x980f +0xe8f1 0x980c +0xe8f2 0x9838 +0xe8f3 0x9824 +0xe8f4 0x9821 +0xe8f5 0x9837 +0xe8f6 0x983d +0xe8f7 0x9846 +0xe8f8 0x984f +0xe8f9 0x984b +0xe8fa 0x986b +0xe8fb 0x986f +0xe8fc 0x9870 +0xe940 0x9871 +0xe941 0x9874 +0xe942 0x9873 +0xe943 0x98aa +0xe944 0x98af +0xe945 0x98b1 +0xe946 0x98b6 +0xe947 0x98c4 +0xe948 0x98c3 +0xe949 0x98c6 +0xe94a 0x98e9 +0xe94b 0x98eb +0xe94c 0x9903 +0xe94d 0x9909 +0xe94e 0x9912 +0xe94f 0x9914 +0xe950 0x9918 +0xe951 0x9921 +0xe952 0x991d +0xe953 0x991e +0xe954 0x9924 +0xe955 0x9920 +0xe956 0x992c +0xe957 0x992e +0xe958 0x993d +0xe959 0x993e +0xe95a 0x9942 +0xe95b 0x9949 +0xe95c 0x9945 +0xe95d 0x9950 +0xe95e 0x994b +0xe95f 0x9951 +0xe960 0x9952 +0xe961 0x994c +0xe962 0x9955 +0xe963 0x9997 +0xe964 0x9998 +0xe965 0x99a5 +0xe966 0x99ad +0xe967 0x99ae +0xe968 0x99bc +0xe969 0x99df +0xe96a 0x99db +0xe96b 0x99dd +0xe96c 0x99d8 +0xe96d 0x99d1 +0xe96e 0x99ed +0xe96f 0x99ee +0xe970 0x99f1 +0xe971 0x99f2 +0xe972 0x99fb +0xe973 0x99f8 +0xe974 0x9a01 +0xe975 0x9a0f +0xe976 0x9a05 +0xe977 0x99e2 +0xe978 0x9a19 +0xe979 0x9a2b +0xe97a 0x9a37 +0xe97b 0x9a45 +0xe97c 0x9a42 +0xe97d 0x9a40 +0xe97e 0x9a43 +0xe980 0x9a3e +0xe981 0x9a55 +0xe982 0x9a4d +0xe983 0x9a5b +0xe984 0x9a57 +0xe985 0x9a5f +0xe986 0x9a62 +0xe987 0x9a65 +0xe988 0x9a64 +0xe989 0x9a69 +0xe98a 0x9a6b +0xe98b 0x9a6a +0xe98c 0x9aad +0xe98d 0x9ab0 +0xe98e 0x9abc +0xe98f 0x9ac0 +0xe990 0x9acf +0xe991 0x9ad1 +0xe992 0x9ad3 +0xe993 0x9ad4 +0xe994 0x9ade +0xe995 0x9adf +0xe996 0x9ae2 +0xe997 0x9ae3 +0xe998 0x9ae6 +0xe999 0x9aef +0xe99a 0x9aeb +0xe99b 0x9aee +0xe99c 0x9af4 +0xe99d 0x9af1 +0xe99e 0x9af7 +0xe99f 0x9afb +0xe9a0 0x9b06 +0xe9a1 0x9b18 +0xe9a2 0x9b1a +0xe9a3 0x9b1f +0xe9a4 0x9b22 +0xe9a5 0x9b23 +0xe9a6 0x9b25 +0xe9a7 0x9b27 +0xe9a8 0x9b28 +0xe9a9 0x9b29 +0xe9aa 0x9b2a +0xe9ab 0x9b2e +0xe9ac 0x9b2f +0xe9ad 0x9b32 +0xe9ae 0x9b44 +0xe9af 0x9b43 +0xe9b0 0x9b4f +0xe9b1 0x9b4d +0xe9b2 0x9b4e +0xe9b3 0x9b51 +0xe9b4 0x9b58 +0xe9b5 0x9b74 +0xe9b6 0x9b93 +0xe9b7 0x9b83 +0xe9b8 0x9b91 +0xe9b9 0x9b96 +0xe9ba 0x9b97 +0xe9bb 0x9b9f +0xe9bc 0x9ba0 +0xe9bd 0x9ba8 +0xe9be 0x9bb4 +0xe9bf 0x9bc0 +0xe9c0 0x9bca +0xe9c1 0x9bb9 +0xe9c2 0x9bc6 +0xe9c3 0x9bcf +0xe9c4 0x9bd1 +0xe9c5 0x9bd2 +0xe9c6 0x9be3 +0xe9c7 0x9be2 +0xe9c8 0x9be4 +0xe9c9 0x9bd4 +0xe9ca 0x9be1 +0xe9cb 0x9c3a +0xe9cc 0x9bf2 +0xe9cd 0x9bf1 +0xe9ce 0x9bf0 +0xe9cf 0x9c15 +0xe9d0 0x9c14 +0xe9d1 0x9c09 +0xe9d2 0x9c13 +0xe9d3 0x9c0c +0xe9d4 0x9c06 +0xe9d5 0x9c08 +0xe9d6 0x9c12 +0xe9d7 0x9c0a +0xe9d8 0x9c04 +0xe9d9 0x9c2e +0xe9da 0x9c1b +0xe9db 0x9c25 +0xe9dc 0x9c24 +0xe9dd 0x9c21 +0xe9de 0x9c30 +0xe9df 0x9c47 +0xe9e0 0x9c32 +0xe9e1 0x9c46 +0xe9e2 0x9c3e +0xe9e3 0x9c5a +0xe9e4 0x9c60 +0xe9e5 0x9c67 +0xe9e6 0x9c76 +0xe9e7 0x9c78 +0xe9e8 0x9ce7 +0xe9e9 0x9cec +0xe9ea 0x9cf0 +0xe9eb 0x9d09 +0xe9ec 0x9d08 +0xe9ed 0x9ceb +0xe9ee 0x9d03 +0xe9ef 0x9d06 +0xe9f0 0x9d2a +0xe9f1 0x9d26 +0xe9f2 0x9daf +0xe9f3 0x9d23 +0xe9f4 0x9d1f +0xe9f5 0x9d44 +0xe9f6 0x9d15 +0xe9f7 0x9d12 +0xe9f8 0x9d41 +0xe9f9 0x9d3f +0xe9fa 0x9d3e +0xe9fb 0x9d46 +0xe9fc 0x9d48 +0xea40 0x9d5d +0xea41 0x9d5e +0xea42 0x9d64 +0xea43 0x9d51 +0xea44 0x9d50 +0xea45 0x9d59 +0xea46 0x9d72 +0xea47 0x9d89 +0xea48 0x9d87 +0xea49 0x9dab +0xea4a 0x9d6f +0xea4b 0x9d7a +0xea4c 0x9d9a +0xea4d 0x9da4 +0xea4e 0x9da9 +0xea4f 0x9db2 +0xea50 0x9dc4 +0xea51 0x9dc1 +0xea52 0x9dbb +0xea53 0x9db8 +0xea54 0x9dba +0xea55 0x9dc6 +0xea56 0x9dcf +0xea57 0x9dc2 +0xea58 0x9dd9 +0xea59 0x9dd3 +0xea5a 0x9df8 +0xea5b 0x9de6 +0xea5c 0x9ded +0xea5d 0x9def +0xea5e 0x9dfd +0xea5f 0x9e1a +0xea60 0x9e1b +0xea61 0x9e1e +0xea62 0x9e75 +0xea63 0x9e79 +0xea64 0x9e7d +0xea65 0x9e81 +0xea66 0x9e88 +0xea67 0x9e8b +0xea68 0x9e8c +0xea69 0x9e92 +0xea6a 0x9e95 +0xea6b 0x9e91 +0xea6c 0x9e9d +0xea6d 0x9ea5 +0xea6e 0x9ea9 +0xea6f 0x9eb8 +0xea70 0x9eaa +0xea71 0x9ead +0xea72 0x9761 +0xea73 0x9ecc +0xea74 0x9ece +0xea75 0x9ecf +0xea76 0x9ed0 +0xea77 0x9ed4 +0xea78 0x9edc +0xea79 0x9ede +0xea7a 0x9edd +0xea7b 0x9ee0 +0xea7c 0x9ee5 +0xea7d 0x9ee8 +0xea7e 0x9eef +0xea80 0x9ef4 +0xea81 0x9ef6 +0xea82 0x9ef7 +0xea83 0x9ef9 +0xea84 0x9efb +0xea85 0x9efc +0xea86 0x9efd +0xea87 0x9f07 +0xea88 0x9f08 +0xea89 0x76b7 +0xea8a 0x9f15 +0xea8b 0x9f21 +0xea8c 0x9f2c +0xea8d 0x9f3e +0xea8e 0x9f4a +0xea8f 0x9f52 +0xea90 0x9f54 +0xea91 0x9f63 +0xea92 0x9f5f +0xea93 0x9f60 +0xea94 0x9f61 +0xea95 0x9f66 +0xea96 0x9f67 +0xea97 0x9f6c +0xea98 0x9f6a +0xea99 0x9f77 +0xea9a 0x9f72 +0xea9b 0x9f76 +0xea9c 0x9f95 +0xea9d 0x9f9c +0xea9e 0x9fa0 +0xea9f 0x582f +0xeaa0 0x69c7 +0xeaa1 0x9059 +0xeaa2 0x7464 +0xeaa3 0x51dc +0xeaa4 0x7199 diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/dbcs --- a/make/tools/CharsetMapping/dbcs Fri Aug 03 20:56:16 2012 +0100 +++ b/make/tools/CharsetMapping/dbcs Fri Aug 24 09:29:17 2012 +0100 @@ -10,6 +10,8 @@ MS949 x-windows-949 MS949 basic sun.nio.cs.ext true 0x81 0xfe 0x41 0xfe MS950 x-windows-950 MS950 basic sun.nio.cs.ext true 0x81 0xfe 0x40 0xfe GBK GBK GBK basic sun.nio.cs.ext true 0x81 0xfe 0x40 0xfe +SJIS Shift_JIS SJIS basic sun.nio.cs.ext true 0x81 0xfc 0x40 0xfc +PCK x-PCK PCK basic sun.nio.cs.ext true 0x81 0xfc 0x40 0xfc IBM1364 x-IBM1364 Cp1364 ebcdic sun.nio.cs.ext false 0x40 0xde 0x40 0xfe IBM1381 x-IBM1381 Cp1381 basic sun.nio.cs.ext true 0x8c 0xf7 0xa1 0xfe IBM1383 x-IBM1383 Cp1383 euc_sim sun.nio.cs.ext true 0xa1 0xfe 0xa1 0xfe @@ -24,3 +26,10 @@ IBM949 x-IBM949 Cp949 basic sun.nio.cs.ext false 0x8f 0xfe 0xa1 0xfe IBM950 x-IBM950 Cp950 basic sun.nio.cs.ext true 0x81 0xfe 0x40 0xfe IBM970 x-IBM970 Cp970 euc_sim sun.nio.cs.ext true 0xa1 0xfe 0xa1 0xfe +JIS_X_0208 x-JIS0208 JIS0208 dbcsonly sun.nio.cs.ext false 0x21 0x7e 0x21 0x7e +JIS_X_0212 JIS_X0212-1990 JIS0212 dbcsonly sun.nio.cs.ext false 0x21 0x7e 0x21 0x7e +JIS_X_0208_Solaris x-JIS0208_Solaris JIS0208_Solaris dbcsonly sun.nio.cs.ext false 0x21 0x9e 0x21 0x7e +JIS_X_0208_MS5022X x-JIS0208_MS5022X JIS0208_MS5022X dbcsonly sun.nio.cs.ext false 0x21 0x7e 0x21 0x7e +JIS_X_0208_MS932 x-JIS0208_MS932 JIS0208_MS932 dbcsonly sun.nio.cs.ext false 0x21 0x7e 0x21 0x7e +JIS_X_0212_Solaris x-JIS0212_Solaris JIS0212_Solaris dbcsonly sun.nio.cs.ext false 0x21 0x7e 0x21 0x7e +JIS_X_0212_MS5022X x-JIS0212_MS5022X JIS0212_MS5022X dbcsonly sun.nio.cs.ext false 0x21 0x7e 0x21 0x7e diff -r d15095dfd348 -r aa2c9ce06632 make/tools/CharsetMapping/extsbcs --- a/make/tools/CharsetMapping/extsbcs Fri Aug 03 20:56:16 2012 +0100 +++ b/make/tools/CharsetMapping/extsbcs Fri Aug 24 09:29:17 2012 +0100 @@ -53,7 +53,7 @@ ISO_8859_3 ISO-8859-3 ISO8859_3 true sun.nio.cs.ext ISO_8859_6 ISO-8859-6 ISO8859_6 true sun.nio.cs.ext ISO_8859_8 ISO-8859-8 ISO8859_8 true sun.nio.cs.ext -#JIS_X_0201 JIS_X0201 JIS_X0201 true sun.nio.cs.ext +JIS_X_0201 JIS_X0201 JIS_X0201 true sun.nio.cs.ext MS1255 windows-1255 Cp1255 true sun.nio.cs.ext MS1256 windows-1256 Cp1256 true sun.nio.cs.ext MS1258 windows-1258 Cp1258 true sun.nio.cs.ext diff -r d15095dfd348 -r aa2c9ce06632 make/tools/src/build/tools/charsetmapping/DBCS.java --- a/make/tools/src/build/tools/charsetmapping/DBCS.java Fri Aug 03 20:56:16 2012 +0100 +++ b/make/tools/src/build/tools/charsetmapping/DBCS.java Fri Aug 24 09:29:17 2012 +0100 @@ -194,6 +194,15 @@ if (hisName == null) hisName = ""; + // (5) c2b replacement, only used for JIs0208/0212, which + // are two pure db charsets so default '3f' does not work + String c2bRepl = ""; + if (clzName.startsWith("JIS_X_0208")) { + c2bRepl = "new byte[]{ (byte)0x21, (byte)0x29 },"; + } else if (clzName.startsWith("JIS_X_0212")) { + c2bRepl = "new byte[]{ (byte)0x22, (byte)0x44 },"; + } + while (s.hasNextLine()) { String line = s.nextLine(); if (line.indexOf("$") == -1) { @@ -227,7 +236,8 @@ .replace("$B2C$", b2c) .replace("$C2BLENGTH$", "0x" + Integer.toString(c2bOff, 16)) .replace("$NONROUNDTRIP_B2C$", b2cNR) - .replace("$NONROUNDTRIP_C2B$", c2bNR); + .replace("$NONROUNDTRIP_C2B$", c2bNR) + .replace("$ENC_REPLACEMENT$", c2bRepl); ops.println(line); } diff -r d15095dfd348 -r aa2c9ce06632 make/tools/src/build/tools/charsetmapping/SBCS.java --- a/make/tools/src/build/tools/charsetmapping/SBCS.java Fri Aug 03 20:56:16 2012 +0100 +++ b/make/tools/src/build/tools/charsetmapping/SBCS.java Fri Aug 24 09:29:17 2012 +0100 @@ -106,7 +106,7 @@ } } - static Pattern sbmap = Pattern.compile("0x(\\p{XDigit}++)\\s++U\\+(\\p{XDigit}++)(\\s++#.*)?"); + static Pattern sbmap = Pattern.compile("0x(\\p{XDigit}++)\\s++(?:U\\+|0x)?(\\p{XDigit}++)(?:\\s++#.*)?"); private static void genClass0(String srcDir, String dstDir, String template, diff -r d15095dfd348 -r aa2c9ce06632 makefiles/CreateJars.gmk --- a/makefiles/CreateJars.gmk Fri Aug 03 20:56:16 2012 +0100 +++ b/makefiles/CreateJars.gmk Fri Aug 24 09:29:17 2012 +0100 @@ -807,8 +807,7 @@ org/ietf \ org/omg \ org/w3c/dom \ - org/xml/sax \ - sunw + org/xml/sax SRC_ZIP_SRCS = $(JDK_TOPDIR)/src/share/classes $(JDK_TOPDIR)/src/$(LEGACY_OPENJDK_TARGET_OS_API)/classes SRC_ZIP_SRCS += $(JDK_OUTPUTDIR)/gensrc diff -r d15095dfd348 -r aa2c9ce06632 makefiles/docs/CORE_PKGS.gmk --- a/makefiles/docs/CORE_PKGS.gmk Fri Aug 03 20:56:16 2012 +0100 +++ b/makefiles/docs/CORE_PKGS.gmk Fri Aug 24 09:29:17 2012 +0100 @@ -33,7 +33,6 @@ java.awt.peer \ java.awt.dnd.peer \ sun.* \ - sunw.* \ com.sun.* \ org.apache.* \ org.jcp.* \ diff -r d15095dfd348 -r aa2c9ce06632 src/macosx/classes/com/apple/laf/AquaComboBoxUI.java --- a/src/macosx/classes/com/apple/laf/AquaComboBoxUI.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/macosx/classes/com/apple/laf/AquaComboBoxUI.java Fri Aug 24 09:29:17 2012 +0100 @@ -259,7 +259,8 @@ protected void installKeyboardActions() { super.installKeyboardActions(); - final ActionMap actionMap = comboBox.getActionMap(); + ActionMap actionMap = new ActionMapUIResource(); + actionMap.put("aquaSelectNext", highlightNextAction); actionMap.put("aquaSelectPrevious", highlightPreviousAction); actionMap.put("aquaEnterPressed", triggerSelectionAction); @@ -269,6 +270,8 @@ actionMap.put("aquaSelectEnd", highlightLastAction); actionMap.put("aquaSelectPageUp", highlightPageUpAction); actionMap.put("aquaSelectPageDown", highlightPageDownAction); + + SwingUtilities.replaceUIActionMap(comboBox, actionMap); } abstract class ComboBoxAction extends AbstractAction { diff -r d15095dfd348 -r aa2c9ce06632 src/macosx/classes/java/util/prefs/MacOSXPreferences.java --- a/src/macosx/classes/java/util/prefs/MacOSXPreferences.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/macosx/classes/java/util/prefs/MacOSXPreferences.java Fri Aug 24 09:29:17 2012 +0100 @@ -221,9 +221,14 @@ // Flush should *not* check for removal, unlike sync, but should // prevent simultaneous removal. synchronized(lock) { - // fixme! overkill - if (!MacOSXPreferencesFile.flushWorld()) { - throw new BackingStoreException("Synchronization failed for node '" + path + "'"); + if (isUser) { + if (!MacOSXPreferencesFile.flushUser()) { + throw new BackingStoreException("Synchronization failed for node '" + path + "'"); + } + } else { + if (!MacOSXPreferencesFile.flushWorld()) { + throw new BackingStoreException("Synchronization failed for node '" + path + "'"); + } } } } diff -r d15095dfd348 -r aa2c9ce06632 src/macosx/classes/java/util/prefs/MacOSXPreferencesFile.java --- a/src/macosx/classes/java/util/prefs/MacOSXPreferencesFile.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/macosx/classes/java/util/prefs/MacOSXPreferencesFile.java Fri Aug 24 09:29:17 2012 +0100 @@ -233,7 +233,23 @@ return ok; } - + //Flush only current user preferences + static synchronized boolean flushUser() { + boolean ok = true; + if (changedFiles != null && !changedFiles.isEmpty()) { + Iterator iterator = changedFiles.iterator(); + while(iterator.hasNext()) { + MacOSXPreferencesFile f = iterator.next(); + if (f.user == cfCurrentUser) { + if (!f.synchronize()) + ok = false; + else + iterator.remove(); + } + } + } + return ok; + } // Write all prefs changes to disk, but do not clear all cached prefs // values. Also kills any scheduled flush task. diff -r d15095dfd348 -r aa2c9ce06632 src/macosx/classes/sun/lwawt/LWTextAreaPeer.java --- a/src/macosx/classes/sun/lwawt/LWTextAreaPeer.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/macosx/classes/sun/lwawt/LWTextAreaPeer.java Fri Aug 24 09:29:17 2012 +0100 @@ -129,16 +129,6 @@ } @Override - public void setText(final String l) { - // Please note that we do not want to post an event - // if TextArea.setText() replaces an empty text by an empty text, - // that is, if component's text remains unchanged. - if (!l.isEmpty() || getTextComponent().getDocument().getLength() != 0) { - super.setText(l); - } - } - - @Override public void replaceRange(final String text, final int start, final int end) { synchronized (getDelegateLock()) { diff -r d15095dfd348 -r aa2c9ce06632 src/macosx/classes/sun/lwawt/LWTextComponentPeer.java --- a/src/macosx/classes/sun/lwawt/LWTextComponentPeer.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/macosx/classes/sun/lwawt/LWTextComponentPeer.java Fri Aug 24 09:29:17 2012 +0100 @@ -124,7 +124,7 @@ } @Override - public void setText(final String l) { + public final void setText(final String l) { synchronized (getDelegateLock()) { // JTextArea.setText() posts two different events (remove & insert). // Since we make no differences between text events, diff -r d15095dfd348 -r aa2c9ce06632 src/share/bin/java.c --- a/src/share/bin/java.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/bin/java.c Fri Aug 24 09:29:17 2012 +0100 @@ -104,7 +104,6 @@ static jboolean InitializeJVM(JavaVM **pvm, JNIEnv **penv, InvocationFunctions *ifn); static jstring NewPlatformString(JNIEnv *env, char *s); -static jobjectArray NewPlatformStringArray(JNIEnv *env, char **strv, int strc); static jclass LoadMainClass(JNIEnv *env, int mode, char *name); static void TranslateApplicationArgs(int jargc, const char **jargv, int *pargc, char ***pargv); @@ -160,7 +159,7 @@ * Running Java code in primordial thread caused many problems. We will * create a new thread to invoke JVM. See 6316197 for more information. */ -static jlong threadStackSize = 0; /* stack size of the new thread */ +static jlong threadStackSize = 0; /* stack size of the new thread */ static jlong maxHeapSize = 0; /* max heap size */ static jlong initialHeapSize = 0; /* inital heap size */ @@ -202,6 +201,14 @@ InitLauncher(javaw); DumpState(); + if (JLI_IsTraceLauncher()) { + int i; + printf("Command line args:\n"); + for (i = 0; i < argc ; i++) { + printf("argv[%d] = %s\n", i, argv[i]); + } + AddOption("-Dsun.java.launcher.diag=true", NULL); + } /* * Make sure the specified version of the JRE is running. @@ -222,15 +229,6 @@ */ SelectVersion(argc, argv, &main_class); - if (JLI_IsTraceLauncher()) { - int i; - printf("Command line args:\n"); - for (i = 0; i < argc ; i++) { - printf("argv[%d] = %s\n", i, argv[i]); - } - AddOption("-Dsun.java.launcher.diag=true", NULL); - } - CreateExecutionEnvironment(&argc, &argv, jrepath, sizeof(jrepath), jvmpath, sizeof(jvmpath), @@ -435,8 +433,8 @@ "([Ljava/lang/String;)V"); CHECK_EXCEPTION_NULL_LEAVE(mainID); - /* Build argument array */ - mainArgs = NewPlatformStringArray(env, argv, argc); + /* Build platform specific argument array */ + mainArgs = CreateApplicationArgs(env, argv, argc); CHECK_EXCEPTION_NULL_LEAVE(mainArgs); /* Invoke main method. */ @@ -1120,8 +1118,9 @@ static jclass helperClass = NULL; -static jclass -GetLauncherHelperClass(JNIEnv *env) { +jclass +GetLauncherHelperClass(JNIEnv *env) +{ if (helperClass == NULL) { NULL_CHECK0(helperClass = FindBootStrapClass(env, "sun/launcher/LauncherHelper")); @@ -1165,7 +1164,7 @@ * Returns a new array of Java string objects for the specified * array of platform strings. */ -static jobjectArray +jobjectArray NewPlatformStringArray(JNIEnv *env, char **strv, int strc) { jarray cls; @@ -1210,7 +1209,7 @@ end = CounterGet(); printf("%ld micro seconds to load main class\n", (long)(jint)Counter2Micros(end-start)); - printf("----_JAVA_LAUNCHER_DEBUG----\n"); + printf("----%s----\n", JLDEBUG_ENV_ENTRY); } return (jclass)result; @@ -1745,7 +1744,6 @@ JLI_MemFree(knownVMs); } - /* * Displays the splash screen according to the jar file name * and image file names stored in environment variables diff -r d15095dfd348 -r aa2c9ce06632 src/share/bin/java.h --- a/src/share/bin/java.h Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/bin/java.h Fri Aug 24 09:29:17 2012 +0100 @@ -219,6 +219,10 @@ const char *name)); jclass FindBootStrapClass(JNIEnv *env, const char *classname); +jobjectArray CreateApplicationArgs(JNIEnv *env, char **strv, int argc); +jobjectArray NewPlatformStringArray(JNIEnv *env, char **strv, int strc); +jclass GetLauncherHelperClass(JNIEnv *env); + int JNICALL JavaMain(void * args); /* entry point */ enum LaunchMode { // cf. sun.launcher.LauncherHelper diff -r d15095dfd348 -r aa2c9ce06632 src/share/bin/jli_util.c --- a/src/share/bin/jli_util.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/bin/jli_util.c Fri Aug 24 09:29:17 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -102,9 +102,9 @@ void JLI_SetTraceLauncher() { - if (getenv("_JAVA_LAUNCHER_DEBUG") != 0) { + if (getenv(JLDEBUG_ENV_ENTRY) != 0) { _launcher_debug = JNI_TRUE; - JLI_TraceLauncher("----_JAVA_LAUNCHER_DEBUG----\n"); + JLI_TraceLauncher("----%s----\n", JLDEBUG_ENV_ENTRY); } } diff -r d15095dfd348 -r aa2c9ce06632 src/share/bin/jli_util.h --- a/src/share/bin/jli_util.h Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/bin/jli_util.h Fri Aug 24 09:29:17 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,6 +30,7 @@ #include #include #include +#define JLDEBUG_ENV_ENTRY "_JAVA_LAUNCHER_DEBUG" void *JLI_MemAlloc(size_t size); void *JLI_MemRealloc(void *ptr, size_t size); @@ -37,6 +38,14 @@ void JLI_MemFree(void *ptr); int JLI_StrCCmp(const char *s1, const char* s2); +typedef struct { + char *arg; + jboolean has_wildcard; +} StdArg; + +StdArg *JLI_GetStdArgs(); +int JLI_GetStdArgc(); + #define JLI_StrLen(p1) strlen((p1)) #define JLI_StrChr(p1, p2) strchr((p1), (p2)) #define JLI_StrRChr(p1, p2) strrchr((p1), (p2)) @@ -58,6 +67,7 @@ #define JLI_StrCaseCmp(p1, p2) stricmp((p1), (p2)) #define JLI_StrNCaseCmp(p1, p2, p3) strnicmp((p1), (p2), (p3)) #define JLI_Snprintf _snprintf +void JLI_CmdToArgs(char *cmdline); #else #include #include diff -r d15095dfd348 -r aa2c9ce06632 src/share/bin/main.c --- a/src/share/bin/main.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/bin/main.c Fri Aug 24 09:29:17 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -87,22 +87,41 @@ const jboolean const_javaw = JNI_TRUE; __initenv = _environ; - margc = __argc; - margv = __argv; - #else /* JAVAW */ int -main(int argc, char ** argv) +main(int argc, char **argv) { int margc; char** margv; const jboolean const_javaw = JNI_FALSE; - +#endif /* JAVAW */ +#ifdef _WIN32 + { + int i = 0; + if (getenv(JLDEBUG_ENV_ENTRY) != NULL) { + printf("Windows original main args:\n"); + for (i = 0 ; i < __argc ; i++) { + printf("wwwd_args[%d] = %s\n", i, __argv[i]); + } + } + } + JLI_CmdToArgs(GetCommandLine()); + margc = JLI_GetStdArgc(); + // add one more to mark the end + margv = (char **)JLI_MemAlloc((margc + 1) * (sizeof(char *))); + { + int i = 0; + StdArg *stdargs = JLI_GetStdArgs(); + for (i = 0 ; i < margc ; i++) { + margv[i] = stdargs[i].arg; + } + margv[i] = NULL; + } +#else /* *NIXES */ margc = argc; margv = argv; -#endif /* JAVAW */ - +#endif /* WIN32 */ return JLI_Launch(margc, margv, sizeof(const_jargs) / sizeof(char *), const_jargs, sizeof(const_appclasspath) / sizeof(char *), const_appclasspath, diff -r d15095dfd348 -r aa2c9ce06632 src/share/bin/wildcard.c --- a/src/share/bin/wildcard.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/bin/wildcard.c Fri Aug 24 09:29:17 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -129,11 +129,11 @@ HANDLE handle; char *firstFile; /* Stupid FindFirstFile...FindNextFile */ }; - +// since this is used repeatedly we keep it here. +static WIN32_FIND_DATA find_data; static WildcardIterator WildcardIterator_for(const char *wildcard) { - WIN32_FIND_DATA find_data; WildcardIterator it = NEW_(WildcardIterator); HANDLE handle = FindFirstFile(wildcard, &find_data); if (handle == INVALID_HANDLE_VALUE) @@ -146,7 +146,6 @@ static char * WildcardIterator_next(WildcardIterator it) { - WIN32_FIND_DATA find_data; if (it->firstFile != NULL) { char *firstFile = it->firstFile; it->firstFile = NULL; @@ -412,7 +411,7 @@ FileList_expandWildcards(fl); expanded = FileList_join(fl, PATH_SEPARATOR); FileList_free(fl); - if (getenv("_JAVA_LAUNCHER_DEBUG") != 0) + if (getenv(JLDEBUG_ENV_ENTRY) != 0) printf("Expanded wildcards:\n" " before: \"%s\"\n" " after : \"%s\"\n", diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/com/sun/beans/TypeResolver.java --- a/src/share/classes/com/sun/beans/TypeResolver.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/com/sun/beans/TypeResolver.java Fri Aug 24 09:29:17 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -45,6 +45,9 @@ * @author Sergey Malenkov */ public final class TypeResolver { + + private static final WeakCache> CACHE = new WeakCache<>(); + /** * Replaces the given {@code type} in an inherited method * with the actual type it has in the given {@code inClass}. @@ -149,12 +152,55 @@ * @param formal the type where occurrences of the variables * in {@code actual} will be replaced by the corresponding bound values * @return a resolved type - * - * @see #TypeResolver(Type) - * @see #resolve(Type) */ public static Type resolve(Type actual, Type formal) { - return getTypeResolver(actual).resolve(formal); + if (formal instanceof Class) { + return formal; + } + if (formal instanceof GenericArrayType) { + Type comp = ((GenericArrayType) formal).getGenericComponentType(); + comp = resolve(actual, comp); + return (comp instanceof Class) + ? Array.newInstance((Class) comp, 0).getClass() + : GenericArrayTypeImpl.make(comp); + } + if (formal instanceof ParameterizedType) { + ParameterizedType fpt = (ParameterizedType) formal; + Type[] actuals = resolve(actual, fpt.getActualTypeArguments()); + return ParameterizedTypeImpl.make( + (Class) fpt.getRawType(), actuals, fpt.getOwnerType()); + } + if (formal instanceof WildcardType) { + WildcardType fwt = (WildcardType) formal; + Type[] upper = resolve(actual, fwt.getUpperBounds()); + Type[] lower = resolve(actual, fwt.getLowerBounds()); + return new WildcardTypeImpl(upper, lower); + } + if (formal instanceof TypeVariable) { + Map map; + synchronized (CACHE) { + map = CACHE.get(actual); + if (map == null) { + map = new HashMap<>(); + prepare(map, actual); + CACHE.put(actual, map); + } + } + Type result = map.get(formal); + if (result == null || result.equals(formal)) { + return formal; + } + result = fixGenericArray(result); + // A variable can be bound to another variable that is itself bound + // to something. For example, given: + // class Super {...} + // class Mid extends Super {...} + // class Sub extends Mid + // the variable T is bound to X, which is in turn bound to String. + // So if we have to resolve T, we need the tail recursion here. + return resolve(actual, result); + } + throw new IllegalArgumentException("Bad Type kind: " + formal.getClass()); } /** @@ -164,12 +210,14 @@ * @param actual the type that supplies bindings for type variables * @param formals the array of types to resolve * @return an array of resolved types - * - * @see #TypeResolver(Type) - * @see #resolve(Type[]) */ public static Type[] resolve(Type actual, Type[] formals) { - return getTypeResolver(actual).resolve(formals); + int length = formals.length; + Type[] actuals = new Type[length]; + for (int i = 0; i < length; i++) { + actuals[i] = resolve(actual, formals[i]); + } + return actuals; } /** @@ -228,32 +276,6 @@ return classes; } - public static TypeResolver getTypeResolver(Type type) { - synchronized (CACHE) { - TypeResolver resolver = CACHE.get(type); - if (resolver == null) { - resolver = new TypeResolver(type); - CACHE.put(type, resolver); - } - return resolver; - } - } - - private static final WeakCache CACHE = new WeakCache<>(); - - private final Map, Type> map = new HashMap<>(); - - /** - * Constructs the type resolver for the given actual type. - * - * @param actual the type that supplies bindings for type variables - * - * @see #prepare(Type) - */ - private TypeResolver(Type actual) { - prepare(actual); - } - /** * Fills the map from type parameters * to types as seen by the given {@code type}. @@ -265,9 +287,10 @@ * to a {@link ParameterizedType ParameterizedType} with no parameters, * or it represents the erasure of a {@link ParameterizedType ParameterizedType}. * + * @param map the mappings of all type variables * @param type the next type in the hierarchy */ - private void prepare(Type type) { + private static void prepare(Map map, Type type) { Class raw = (Class)((type instanceof Class) ? type : ((ParameterizedType)type).getRawType()); @@ -280,91 +303,25 @@ assert formals.length == actuals.length; for (int i = 0; i < formals.length; i++) { - this.map.put(formals[i], actuals[i]); + map.put(formals[i], actuals[i]); } Type gSuperclass = raw.getGenericSuperclass(); if (gSuperclass != null) { - prepare(gSuperclass); + prepare(map, gSuperclass); } for (Type gInterface : raw.getGenericInterfaces()) { - prepare(gInterface); + prepare(map, gInterface); } // If type is the raw version of a parameterized class, we type-erase // all of its type variables, including inherited ones. if (type instanceof Class && formals.length > 0) { - for (Map.Entry, Type> entry : this.map.entrySet()) { + for (Map.Entry entry : map.entrySet()) { entry.setValue(erase(entry.getValue())); } } } /** - * Replaces the given {@code formal} type - * with the type it stand for in this type resolver. - * - * @param formal the array of types to resolve - * @return a resolved type - */ - private Type resolve(Type formal) { - if (formal instanceof Class) { - return formal; - } - if (formal instanceof GenericArrayType) { - Type comp = ((GenericArrayType)formal).getGenericComponentType(); - comp = resolve(comp); - return (comp instanceof Class) - ? Array.newInstance((Class)comp, 0).getClass() - : GenericArrayTypeImpl.make(comp); - } - if (formal instanceof ParameterizedType) { - ParameterizedType fpt = (ParameterizedType)formal; - Type[] actuals = resolve(fpt.getActualTypeArguments()); - return ParameterizedTypeImpl.make( - (Class)fpt.getRawType(), actuals, fpt.getOwnerType()); - } - if (formal instanceof WildcardType) { - WildcardType fwt = (WildcardType)formal; - Type[] upper = resolve(fwt.getUpperBounds()); - Type[] lower = resolve(fwt.getLowerBounds()); - return new WildcardTypeImpl(upper, lower); - } - if (!(formal instanceof TypeVariable)) { - throw new IllegalArgumentException("Bad Type kind: " + formal.getClass()); - } - Type actual = this.map.get((TypeVariable) formal); - if (actual == null || actual.equals(formal)) { - return formal; - } - actual = fixGenericArray(actual); - return resolve(actual); - // A variable can be bound to another variable that is itself bound - // to something. For example, given: - // class Super {...} - // class Mid extends Super {...} - // class Sub extends Mid - // the variable T is bound to X, which is in turn bound to String. - // So if we have to resolve T, we need the tail recursion here. - } - - /** - * Replaces all formal types in the given array - * with the types they stand for in this type resolver. - * - * @param formals the array of types to resolve - * @return an array of resolved types - * - * @see #resolve(Type) - */ - private Type[] resolve(Type[] formals) { - int length = formals.length; - Type[] actuals = new Type[length]; - for (int i = 0; i < length; i++) { - actuals[i] = resolve(formals[i]); - } - return actuals; - } - - /** * Replaces a {@link GenericArrayType GenericArrayType} * with plain array class where it is possible. * Bug 5041784 diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/com/sun/beans/finder/MethodFinder.java --- a/src/share/classes/com/sun/beans/finder/MethodFinder.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/com/sun/beans/finder/MethodFinder.java Fri Aug 24 09:29:17 2012 +0100 @@ -164,8 +164,10 @@ return findAccessibleMethod(m); } Type[] gpts = m.getGenericParameterTypes(); - if (Arrays.equals(params, TypeResolver.erase(TypeResolver.resolve(pt, gpts)))) { - return findAccessibleMethod(m); + if (params.length == gpts.length) { + if (Arrays.equals(params, TypeResolver.erase(TypeResolver.resolve(pt, gpts)))) { + return findAccessibleMethod(m); + } } } } diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/com/sun/crypto/provider/OAEPParameters.java --- a/src/share/classes/com/sun/crypto/provider/OAEPParameters.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/com/sun/crypto/provider/OAEPParameters.java Fri Aug 24 09:29:17 2012 +0100 @@ -105,22 +105,6 @@ } } - private static String convertToStandardName(String internalName) { - if (internalName.equals("SHA")) { - return "SHA-1"; - } else if (internalName.equals("SHA224")) { - return "SHA-224"; - } else if (internalName.equals("SHA256")) { - return "SHA-256"; - } else if (internalName.equals("SHA384")) { - return "SHA-384"; - } else if (internalName.equals("SHA512")) { - return "SHA-512"; - } else { - return internalName; - } - } - protected void engineInit(byte[] encoded) throws IOException { DerInputStream der = new DerInputStream(encoded); @@ -132,8 +116,8 @@ DerValue data = datum[i]; if (data.isContextSpecific((byte) 0x00)) { // hash algid - mdName = convertToStandardName(AlgorithmId.parse - (data.data.getDerValue()).getName()); + mdName = AlgorithmId.parse + (data.data.getDerValue()).getName(); } else if (data.isContextSpecific((byte) 0x01)) { // mgf algid AlgorithmId val = AlgorithmId.parse(data.data.getDerValue()); @@ -142,7 +126,7 @@ } AlgorithmId params = AlgorithmId.parse( new DerValue(val.getEncodedParams())); - String mgfDigestName = convertToStandardName(params.getName()); + String mgfDigestName = params.getName(); if (mgfDigestName.equals("SHA-1")) { mgfSpec = MGF1ParameterSpec.SHA1; } else if (mgfDigestName.equals("SHA-224")) { diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/awt/GraphicsEnvironment.java --- a/src/share/classes/java/awt/GraphicsEnvironment.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/awt/GraphicsEnvironment.java Fri Aug 24 09:29:17 2012 +0100 @@ -170,12 +170,12 @@ if (System.getProperty("javaplugin.version") != null) { headless = defaultHeadless = Boolean.FALSE; } else { - if ("sun.awt.HeadlessGraphicsEnvironment".equals( - System.getProperty("java.awt.graphicsenv"))) + String osName = System.getProperty("os.name"); + if (osName.contains("OS X") && "sun.awt.HToolkit".equals( + System.getProperty("awt.toolkit"))) { headless = defaultHeadless = Boolean.TRUE; } else { - String osName = System.getProperty("os.name"); headless = defaultHeadless = Boolean.valueOf(("Linux".equals(osName) || "SunOS".equals(osName) || diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/awt/TextComponent.java --- a/src/share/classes/java/awt/TextComponent.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/awt/TextComponent.java Fri Aug 24 09:29:17 2012 +0100 @@ -235,9 +235,14 @@ * @see java.awt.TextComponent#getText */ public synchronized void setText(String t) { + boolean skipTextEvent = (text == null || text.isEmpty()) + && (t == null || t.isEmpty()); text = (t != null) ? t : ""; TextComponentPeer peer = (TextComponentPeer)this.peer; - if (peer != null) { + // Please note that we do not want to post an event + // if TextArea.setText() or TextField.setText() replaces an empty text + // by an empty text, that is, if component's text remains unchanged. + if (peer != null && !skipTextEvent) { peer.setText(text); } } diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/beans/IndexedPropertyDescriptor.java --- a/src/share/classes/java/beans/IndexedPropertyDescriptor.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/beans/IndexedPropertyDescriptor.java Fri Aug 24 09:29:17 2012 +0100 @@ -181,20 +181,21 @@ // the Indexed readMethod was explicitly set to null. return null; } + String nextMethodName = Introspector.GET_PREFIX + getBaseName(); if (indexedReadMethodName == null) { Class type = getIndexedPropertyType0(); if (type == boolean.class || type == null) { indexedReadMethodName = Introspector.IS_PREFIX + getBaseName(); } else { - indexedReadMethodName = Introspector.GET_PREFIX + getBaseName(); + indexedReadMethodName = nextMethodName; } } Class[] args = { int.class }; indexedReadMethod = Introspector.findMethod(cls, indexedReadMethodName, 1, args); - if (indexedReadMethod == null) { + if ((indexedReadMethod == null) && !indexedReadMethodName.equals(nextMethodName)) { // no "is" method, so look for a "get" method. - indexedReadMethodName = Introspector.GET_PREFIX + getBaseName(); + indexedReadMethodName = nextMethodName; indexedReadMethod = Introspector.findMethod(cls, indexedReadMethodName, 1, args); } setIndexedReadMethod0(indexedReadMethod); diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/beans/Introspector.java --- a/src/share/classes/java/beans/Introspector.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/beans/Introspector.java Fri Aug 24 09:29:17 2012 +0100 @@ -25,6 +25,7 @@ package java.beans; +import com.sun.beans.TypeResolver; import com.sun.beans.WeakCache; import com.sun.beans.finder.ClassFinder; @@ -34,6 +35,7 @@ import java.lang.ref.SoftReference; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.lang.reflect.Type; import java.util.Map; import java.util.ArrayList; @@ -951,44 +953,61 @@ continue; } - Class[] argTypes = FeatureDescriptor.getParameterTypes(beanClass, method); - Class resultType = FeatureDescriptor.getReturnType(beanClass, method); - - if (name.startsWith(ADD_PREFIX) && argTypes.length == 1 && - resultType == Void.TYPE && - Introspector.isSubclass(argTypes[0], eventListenerType)) { - String listenerName = name.substring(3); - if (listenerName.length() > 0 && - argTypes[0].getName().endsWith(listenerName)) { - if (adds == null) { - adds = new HashMap<>(); + if (name.startsWith(ADD_PREFIX)) { + Class returnType = method.getReturnType(); + if (returnType == void.class) { + Type[] parameterTypes = method.getGenericParameterTypes(); + if (parameterTypes.length == 1) { + Class type = TypeResolver.erase(TypeResolver.resolveInClass(beanClass, parameterTypes[0])); + if (Introspector.isSubclass(type, eventListenerType)) { + String listenerName = name.substring(3); + if (listenerName.length() > 0 && + type.getName().endsWith(listenerName)) { + if (adds == null) { + adds = new HashMap<>(); + } + adds.put(listenerName, method); + } + } } - adds.put(listenerName, method); } } - else if (name.startsWith(REMOVE_PREFIX) && argTypes.length == 1 && - resultType == Void.TYPE && - Introspector.isSubclass(argTypes[0], eventListenerType)) { - String listenerName = name.substring(6); - if (listenerName.length() > 0 && - argTypes[0].getName().endsWith(listenerName)) { - if (removes == null) { - removes = new HashMap<>(); + else if (name.startsWith(REMOVE_PREFIX)) { + Class returnType = method.getReturnType(); + if (returnType == void.class) { + Type[] parameterTypes = method.getGenericParameterTypes(); + if (parameterTypes.length == 1) { + Class type = TypeResolver.erase(TypeResolver.resolveInClass(beanClass, parameterTypes[0])); + if (Introspector.isSubclass(type, eventListenerType)) { + String listenerName = name.substring(6); + if (listenerName.length() > 0 && + type.getName().endsWith(listenerName)) { + if (removes == null) { + removes = new HashMap<>(); + } + removes.put(listenerName, method); + } + } } - removes.put(listenerName, method); } } - else if (name.startsWith(GET_PREFIX) && argTypes.length == 0 && - resultType.isArray() && - Introspector.isSubclass(resultType.getComponentType(), - eventListenerType)) { - String listenerName = name.substring(3, name.length() - 1); - if (listenerName.length() > 0 && - resultType.getComponentType().getName().endsWith(listenerName)) { - if (gets == null) { - gets = new HashMap<>(); + else if (name.startsWith(GET_PREFIX)) { + Class[] parameterTypes = method.getParameterTypes(); + if (parameterTypes.length == 0) { + Class returnType = FeatureDescriptor.getReturnType(beanClass, method); + if (returnType.isArray()) { + Class type = returnType.getComponentType(); + if (Introspector.isSubclass(type, eventListenerType)) { + String listenerName = name.substring(3, name.length() - 1); + if (listenerName.length() > 0 && + type.getName().endsWith(listenerName)) { + if (gets == null) { + gets = new HashMap<>(); + } + gets.put(listenerName, method); + } + } } - gets.put(listenerName, method); } } } @@ -1240,11 +1259,11 @@ private boolean isEventHandler(Method m) { // We assume that a method is an event handler if it has a single // argument, whose type inherit from java.util.Event. - Class argTypes[] = FeatureDescriptor.getParameterTypes(beanClass, m); + Type argTypes[] = m.getGenericParameterTypes(); if (argTypes.length != 1) { return false; } - return isSubclass(argTypes[0], EventObject.class); + return isSubclass(TypeResolver.erase(TypeResolver.resolveInClass(beanClass, argTypes[0])), EventObject.class); } /* @@ -1296,24 +1315,25 @@ } // make sure method signature matches. - Class params[] = FeatureDescriptor.getParameterTypes(start, method); - if (method.getName().equals(methodName) && - params.length == argCount) { - if (args != null) { - boolean different = false; - if (argCount > 0) { - for (int j = 0; j < argCount; j++) { - if (params[j] != args[j]) { - different = true; + if (method.getName().equals(methodName)) { + Type[] params = method.getGenericParameterTypes(); + if (params.length == argCount) { + if (args != null) { + boolean different = false; + if (argCount > 0) { + for (int j = 0; j < argCount; j++) { + if (TypeResolver.erase(TypeResolver.resolveInClass(start, params[j])) != args[j]) { + different = true; + continue; + } + } + if (different) { continue; } } - if (different) { - continue; - } } + return method; } - return method; } } } diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/beans/PropertyDescriptor.java --- a/src/share/classes/java/beans/PropertyDescriptor.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/beans/PropertyDescriptor.java Fri Aug 24 09:29:17 2012 +0100 @@ -210,12 +210,13 @@ // The read method was explicitly set to null. return null; } + String nextMethodName = Introspector.GET_PREFIX + getBaseName(); if (readMethodName == null) { Class type = getPropertyType0(); if (type == boolean.class || type == null) { readMethodName = Introspector.IS_PREFIX + getBaseName(); } else { - readMethodName = Introspector.GET_PREFIX + getBaseName(); + readMethodName = nextMethodName; } } @@ -225,8 +226,8 @@ // methods. If an "is" method exists, this is the official // reader method so look for this one first. readMethod = Introspector.findMethod(cls, readMethodName, 0); - if (readMethod == null) { - readMethodName = Introspector.GET_PREFIX + getBaseName(); + if ((readMethod == null) && !readMethodName.equals(nextMethodName)) { + readMethodName = nextMethodName; readMethod = Introspector.findMethod(cls, readMethodName, 0); } try { diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/ClassValue.java --- a/src/share/classes/java/lang/ClassValue.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/ClassValue.java Fri Aug 24 09:29:17 2012 +0100 @@ -489,9 +489,18 @@ /** Remove an entry. */ synchronized void removeEntry(ClassValue classValue) { - // make all cache elements for this guy go stale: - if (remove(classValue.identity) != null) { + Entry e = remove(classValue.identity); + if (e == null) { + // Uninitialized, and no pending calls to computeValue. No change. + } else if (e.isPromise()) { + // State is uninitialized, with a pending call to finishEntry. + // Since remove is a no-op in such a state, keep the promise + // by putting it back into the map. + put(classValue.identity, e); + } else { + // In an initialized state. Bump forward, and de-initialize. classValue.bumpVersion(); + // Make all cache elements for this guy go stale. removeStaleEntries(classValue); } } diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/String.java --- a/src/share/classes/java/lang/String.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/String.java Fri Aug 24 09:29:17 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -987,7 +987,8 @@ /** * Compares this string to the specified {@code StringBuffer}. The result * is {@code true} if and only if this {@code String} represents the same - * sequence of characters as the specified {@code StringBuffer}. + * sequence of characters as the specified {@code StringBuffer}. This method + * synchronizes on the {@code StringBuffer}. * * @param sb * The {@code StringBuffer} to compare this {@code String} against @@ -999,15 +1000,29 @@ * @since 1.4 */ public boolean contentEquals(StringBuffer sb) { - synchronized (sb) { - return contentEquals((CharSequence) sb); + return contentEquals((CharSequence) sb); + } + + private boolean nonSyncContentEquals(AbstractStringBuilder sb) { + char v1[] = value; + char v2[] = sb.getValue(); + int i = 0; + int n = value.length; + while (n-- != 0) { + if (v1[i] != v2[i]) { + return false; + } + i++; } + return true; } /** - * Compares this string to the specified {@code CharSequence}. The result - * is {@code true} if and only if this {@code String} represents the same - * sequence of char values as the specified sequence. + * Compares this string to the specified {@code CharSequence}. The + * result is {@code true} if and only if this {@code String} represents the + * same sequence of char values as the specified sequence. Note that if the + * {@code CharSequence} is a {@code StringBuffer} then the method + * synchronizes on it. * * @param cs * The sequence to compare this {@code String} against @@ -1023,16 +1038,13 @@ return false; // Argument is a StringBuffer, StringBuilder if (cs instanceof AbstractStringBuilder) { - char v1[] = value; - char v2[] = ((AbstractStringBuilder) cs).getValue(); - int i = 0; - int n = value.length; - while (n-- != 0) { - if (v1[i] != v2[i]) - return false; - i++; + if (cs instanceof StringBuffer) { + synchronized(cs) { + return nonSyncContentEquals((AbstractStringBuilder)cs); + } + } else { + return nonSyncContentEquals((AbstractStringBuilder)cs); } - return true; } // Argument is a String if (cs.equals(this)) diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/AdapterMethodHandle.java --- a/src/share/classes/java/lang/invoke/AdapterMethodHandle.java Fri Aug 03 20:56:16 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1204 +0,0 @@ -/* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package java.lang.invoke; - -import sun.invoke.util.VerifyType; -import sun.invoke.util.Wrapper; -import sun.invoke.util.ValueConversions; -import java.util.Arrays; -import java.util.ArrayList; -import java.util.Collections; -import static java.lang.invoke.MethodHandleNatives.Constants.*; -import static java.lang.invoke.MethodHandleStatics.*; - -/** - * This method handle performs simple conversion or checking of a single argument. - * @author jrose - */ -class AdapterMethodHandle extends BoundMethodHandle { - - //MethodHandle vmtarget; // next AMH or BMH in chain or final DMH - //Object argument; // parameter to the conversion if needed - //int vmargslot; // which argument slot is affected - private final int conversion; // the type of conversion: RETYPE_ONLY, etc. - - // Constructors in this class *must* be package scoped or private. - private AdapterMethodHandle(MethodHandle target, MethodType newType, - long conv, Object convArg) { - super(newType, convArg, newType.parameterSlotDepth(1+convArgPos(conv))); - this.conversion = convCode(conv); - // JVM might update VM-specific bits of conversion (ignore) - MethodHandleNatives.init(this, target, convArgPos(conv)); - } - AdapterMethodHandle(MethodHandle target, MethodType newType, - long conv) { - this(target, newType, conv, null); - } - - int getConversion() { return conversion; } - - // TO DO: When adapting another MH with a null conversion, clone - // the target and change its type, instead of adding another layer. - - /** Can a JVM-level adapter directly implement the proposed - * argument conversions, as if by fixed-arity MethodHandle.asType? - */ - static boolean canPairwiseConvert(MethodType newType, MethodType oldType, int level) { - // same number of args, of course - int len = newType.parameterCount(); - if (len != oldType.parameterCount()) - return false; - - // Check return type. - Class exp = newType.returnType(); - Class ret = oldType.returnType(); - if (!VerifyType.isNullConversion(ret, exp)) { - if (!convOpSupported(OP_COLLECT_ARGS)) - return false; - if (!canConvertArgument(ret, exp, level)) - return false; - } - - // Check args pairwise. - for (int i = 0; i < len; i++) { - Class src = newType.parameterType(i); // source type - Class dst = oldType.parameterType(i); // destination type - if (!canConvertArgument(src, dst, level)) - return false; - } - - return true; - } - - /** Can a JVM-level adapter directly implement the proposed - * argument conversion, as if by fixed-arity MethodHandle.asType? - */ - static boolean canConvertArgument(Class src, Class dst, int level) { - // ? Retool this logic to use RETYPE_ONLY, CHECK_CAST, etc., as opcodes, - // so we don't need to repeat so much decision making. - if (VerifyType.isNullConversion(src, dst)) { - return true; - } else if (convOpSupported(OP_COLLECT_ARGS)) { - // If we can build filters, we can convert anything to anything. - return true; - } else if (src.isPrimitive()) { - if (dst.isPrimitive()) - return canPrimCast(src, dst); - else - return canBoxArgument(src, dst); - } else { - if (dst.isPrimitive()) - return canUnboxArgument(src, dst, level); - else - return true; // any two refs can be interconverted - } - } - - /** - * Create a JVM-level adapter method handle to conform the given method - * handle to the similar newType, using only pairwise argument conversions. - * For each argument, convert incoming argument to the exact type needed. - * The argument conversions allowed are casting, boxing and unboxing, - * integral widening or narrowing, and floating point widening or narrowing. - * @param newType required call type - * @param target original method handle - * @param level which strength of conversion is allowed - * @return an adapter to the original handle with the desired new type, - * or the original target if the types are already identical - * or null if the adaptation cannot be made - */ - static MethodHandle makePairwiseConvert(MethodType newType, MethodHandle target, int level) { - MethodType oldType = target.type(); - if (newType == oldType) return target; - - if (!canPairwiseConvert(newType, oldType, level)) - return null; - // (after this point, it is an assertion error to fail to convert) - - // Find last non-trivial conversion (if any). - int lastConv = newType.parameterCount()-1; - while (lastConv >= 0) { - Class src = newType.parameterType(lastConv); // source type - Class dst = oldType.parameterType(lastConv); // destination type - if (isTrivialConversion(src, dst, level)) { - --lastConv; - } else { - break; - } - } - - Class needReturn = newType.returnType(); - Class haveReturn = oldType.returnType(); - boolean retConv = !isTrivialConversion(haveReturn, needReturn, level); - - // Now build a chain of one or more adapters. - MethodHandle adapter = target, adapter2; - MethodType midType = oldType; - for (int i = 0; i <= lastConv; i++) { - Class src = newType.parameterType(i); // source type - Class dst = midType.parameterType(i); // destination type - if (isTrivialConversion(src, dst, level)) { - // do nothing: difference is trivial - continue; - } - // Work the current type backward toward the desired caller type: - midType = midType.changeParameterType(i, src); - if (i == lastConv) { - // When doing the last (or only) real conversion, - // force all remaining null conversions to happen also. - MethodType lastMidType = newType; - if (retConv) lastMidType = lastMidType.changeReturnType(haveReturn); - assert(VerifyType.isNullConversion(lastMidType, midType)); - midType = lastMidType; - } - - // Tricky case analysis follows. - // It parallels canConvertArgument() above. - if (src.isPrimitive()) { - if (dst.isPrimitive()) { - adapter2 = makePrimCast(midType, adapter, i, dst); - } else { - adapter2 = makeBoxArgument(midType, adapter, i, src); - } - } else { - if (dst.isPrimitive()) { - // Caller has boxed a primitive. Unbox it for the target. - // The box type must correspond exactly to the primitive type. - // This is simpler than the powerful set of widening - // conversions supported by reflect.Method.invoke. - // Those conversions require a big nest of if/then/else logic, - // which we prefer to make a user responsibility. - adapter2 = makeUnboxArgument(midType, adapter, i, dst, level); - } else { - // Simple reference conversion. - // Note: Do not check for a class hierarchy relation - // between src and dst. In all cases a 'null' argument - // will pass the cast conversion. - adapter2 = makeCheckCast(midType, adapter, i, dst); - } - } - assert(adapter2 != null) : Arrays.asList(src, dst, midType, adapter, i, target, newType); - assert(adapter2.type() == midType); - adapter = adapter2; - } - if (retConv) { - adapter2 = makeReturnConversion(adapter, haveReturn, needReturn); - assert(adapter2 != null); - adapter = adapter2; - } - if (adapter.type() != newType) { - // Only trivial conversions remain. - adapter2 = makeRetypeOnly(newType, adapter); - assert(adapter2 != null); - adapter = adapter2; - // Actually, that's because there were no non-trivial ones: - assert(lastConv == -1 || retConv); - } - assert(adapter.type() == newType); - return adapter; - } - - private static boolean isTrivialConversion(Class src, Class dst, int level) { - if (src == dst || dst == void.class) return true; - if (!VerifyType.isNullConversion(src, dst)) return false; - if (level > 1) return true; // explicitCastArguments - boolean sp = src.isPrimitive(); - boolean dp = dst.isPrimitive(); - if (sp != dp) return false; - if (sp) { - // in addition to being a null conversion, forbid boolean->int etc. - return Wrapper.forPrimitiveType(dst) - .isConvertibleFrom(Wrapper.forPrimitiveType(src)); - } else { - return dst.isAssignableFrom(src); - } - } - - private static MethodHandle makeReturnConversion(MethodHandle target, Class haveReturn, Class needReturn) { - MethodHandle adjustReturn; - if (haveReturn == void.class) { - // synthesize a zero value for the given void - Object zero = Wrapper.forBasicType(needReturn).zero(); - adjustReturn = MethodHandles.constant(needReturn, zero); - } else { - MethodType needConversion = MethodType.methodType(needReturn, haveReturn); - adjustReturn = MethodHandles.identity(needReturn).asType(needConversion); - } - return makeCollectArguments(adjustReturn, target, 0, false); - } - - /** - * Create a JVM-level adapter method handle to permute the arguments - * of the given method. - * @param newType required call type - * @param target original method handle - * @param argumentMap for each target argument, position of its source in newType - * @return an adapter to the original handle with the desired new type, - * or the original target if the types are already identical - * and the permutation is null - * @throws IllegalArgumentException if the adaptation cannot be made - * directly by a JVM-level adapter, without help from Java code - */ - static MethodHandle makePermutation(MethodType newType, MethodHandle target, - int[] argumentMap) { - MethodType oldType = target.type(); - boolean nullPermutation = true; - for (int i = 0; i < argumentMap.length; i++) { - int pos = argumentMap[i]; - if (pos != i) - nullPermutation = false; - if (pos < 0 || pos >= newType.parameterCount()) { - argumentMap = new int[0]; break; - } - } - if (argumentMap.length != oldType.parameterCount()) - throw newIllegalArgumentException("bad permutation: "+Arrays.toString(argumentMap)); - if (nullPermutation) { - MethodHandle res = makePairwiseConvert(newType, target, 0); - // well, that was easy - if (res == null) - throw newIllegalArgumentException("cannot convert pairwise: "+newType); - return res; - } - - // Check return type. (Not much can be done with it.) - Class exp = newType.returnType(); - Class ret = oldType.returnType(); - if (!VerifyType.isNullConversion(ret, exp)) - throw newIllegalArgumentException("bad return conversion for "+newType); - - // See if the argument types match up. - for (int i = 0; i < argumentMap.length; i++) { - int j = argumentMap[i]; - Class src = newType.parameterType(j); - Class dst = oldType.parameterType(i); - if (!VerifyType.isNullConversion(src, dst)) - throw newIllegalArgumentException("bad argument #"+j+" conversion for "+newType); - } - - // Now figure out a nice mix of SWAP, ROT, DUP, and DROP adapters. - // A workable greedy algorithm is as follows: - // Drop unused outgoing arguments (right to left: shallowest first). - // Duplicate doubly-used outgoing arguments (left to right: deepest first). - // Then the remaining problem is a true argument permutation. - // Marshal the outgoing arguments as required from left to right. - // That is, find the deepest outgoing stack position that does not yet - // have the correct argument value, and correct at least that position - // by swapping or rotating in the misplaced value (from a shallower place). - // If the misplaced value is followed by one or more consecutive values - // (also misplaced) issue a rotation which brings as many as possible - // into position. Otherwise make progress with either a swap or a - // rotation. Prefer the swap as cheaper, but do not use it if it - // breaks a slot pair. Prefer the rotation over the swap if it would - // preserve more consecutive values shallower than the target position. - // When more than one rotation will work (because the required value - // is already adjacent to the target position), then use a rotation - // which moves the old value in the target position adjacent to - // one of its consecutive values. Also, prefer shorter rotation - // spans, since they use fewer memory cycles for shuffling. - - throw new UnsupportedOperationException("NYI"); - } - - private static byte basicType(Class type) { - if (type == null) return T_VOID; - switch (Wrapper.forBasicType(type)) { - case BOOLEAN: return T_BOOLEAN; - case CHAR: return T_CHAR; - case FLOAT: return T_FLOAT; - case DOUBLE: return T_DOUBLE; - case BYTE: return T_BYTE; - case SHORT: return T_SHORT; - case INT: return T_INT; - case LONG: return T_LONG; - case OBJECT: return T_OBJECT; - case VOID: return T_VOID; - } - return 99; // T_ILLEGAL or some such - } - - /** Number of stack slots for the given type. - * Two for T_DOUBLE and T_FLOAT, one for the rest. - */ - private static int type2size(int type) { - assert(type >= T_BOOLEAN && type <= T_OBJECT); - return (type == T_LONG || type == T_DOUBLE) ? 2 : 1; - } - private static int type2size(Class type) { - return type2size(basicType(type)); - } - - /** The given stackMove is the number of slots pushed. - * It might be negative. Scale it (multiply) by the - * VM's notion of how an address changes with a push, - * to get the raw SP change for stackMove. - * Then shift and mask it into the correct field. - */ - private static long insertStackMove(int stackMove) { - // following variable must be long to avoid sign extension after '<<' - long spChange = stackMove * MethodHandleNatives.JVM_STACK_MOVE_UNIT; - return (spChange & CONV_STACK_MOVE_MASK) << CONV_STACK_MOVE_SHIFT; - } - - static int extractStackMove(int convOp) { - int spChange = convOp >> CONV_STACK_MOVE_SHIFT; - return spChange / MethodHandleNatives.JVM_STACK_MOVE_UNIT; - } - - static int extractStackMove(MethodHandle target) { - if (target instanceof AdapterMethodHandle) { - AdapterMethodHandle amh = (AdapterMethodHandle) target; - return extractStackMove(amh.getConversion()); - } else { - return 0; - } - } - - /** Construct an adapter conversion descriptor for a single-argument conversion. */ - @SuppressWarnings("cast") // some (int) casts below provide clarity but trigger warnings - private static long makeConv(int convOp, int argnum, int src, int dest) { - assert(src == (src & CONV_TYPE_MASK)); - assert(dest == (dest & CONV_TYPE_MASK)); - assert(convOp >= OP_CHECK_CAST && convOp <= OP_PRIM_TO_REF || convOp == OP_COLLECT_ARGS); - int stackMove = type2size(dest) - type2size(src); - return ((long) argnum << 32 | - (long) convOp << CONV_OP_SHIFT | - (int) src << CONV_SRC_TYPE_SHIFT | - (int) dest << CONV_DEST_TYPE_SHIFT | - insertStackMove(stackMove) - ); - } - @SuppressWarnings("cast") // some (int) casts below provide clarity but trigger warnings - private static long makeDupConv(int convOp, int argnum, int stackMove) { - // simple argument motion, requiring one slot to specify - assert(convOp == OP_DUP_ARGS || convOp == OP_DROP_ARGS); - byte src = 0, dest = 0; - return ((long) argnum << 32 | - (long) convOp << CONV_OP_SHIFT | - (int) src << CONV_SRC_TYPE_SHIFT | - (int) dest << CONV_DEST_TYPE_SHIFT | - insertStackMove(stackMove) - ); - } - @SuppressWarnings("cast") // some (int) casts below provide clarity but trigger warnings - private static long makeSwapConv(int convOp, int srcArg, byte srcType, int destSlot, byte destType) { - // more complex argument motion, requiring two slots to specify - assert(convOp == OP_SWAP_ARGS || convOp == OP_ROT_ARGS); - return ((long) srcArg << 32 | - (long) convOp << CONV_OP_SHIFT | - (int) srcType << CONV_SRC_TYPE_SHIFT | - (int) destType << CONV_DEST_TYPE_SHIFT | - (int) destSlot << CONV_VMINFO_SHIFT - ); - } - @SuppressWarnings("cast") // some (int) casts below provide clarity but trigger warnings - private static long makeSpreadConv(int convOp, int argnum, int src, int dest, int stackMove) { - // spreading or collecting, at a particular slot location - assert(convOp == OP_SPREAD_ARGS || convOp == OP_COLLECT_ARGS || convOp == OP_FOLD_ARGS); - // src = spread ? T_OBJECT (for array) : common type of collected args (else void) - // dest = spread ? element type of array : result type of collector (can be void) - return ((long) argnum << 32 | - (long) convOp << CONV_OP_SHIFT | - (int) src << CONV_SRC_TYPE_SHIFT | - (int) dest << CONV_DEST_TYPE_SHIFT | - insertStackMove(stackMove) - ); - } - static long makeConv(int convOp) { - assert(convOp == OP_RETYPE_ONLY || convOp == OP_RETYPE_RAW); - return ((long)-1 << 32) | (convOp << CONV_OP_SHIFT); // stackMove, src, dst all zero - } - private static int convCode(long conv) { - return (int)conv; - } - private static int convArgPos(long conv) { - return (int)(conv >>> 32); - } - private static boolean convOpSupported(int convOp) { - assert(convOp >= 0 && convOp <= CONV_OP_LIMIT); - return ((1<> CONV_OP_SHIFT; } - - /* Return one plus the position of the first non-trivial difference - * between the given types. This is not a symmetric operation; - * we are considering adapting the targetType to adapterType. - * Trivial differences are those which could be ignored by the JVM - * without subverting the verifier. Otherwise, adaptable differences - * are ones for which we could create an adapter to make the type change. - * Return zero if there are no differences (other than trivial ones). - * Return 1+N if N is the only adaptable argument difference. - * Return the -2-N where N is the first of several adaptable - * argument differences. - * Return -1 if there there are differences which are not adaptable. - */ - private static int diffTypes(MethodType adapterType, - MethodType targetType, - boolean raw) { - int diff; - diff = diffReturnTypes(adapterType, targetType, raw); - if (diff != 0) return diff; - int nargs = adapterType.parameterCount(); - if (nargs != targetType.parameterCount()) - return -1; - diff = diffParamTypes(adapterType, 0, targetType, 0, nargs, raw); - //System.out.println("diff "+adapterType); - //System.out.println(" "+diff+" "+targetType); - return diff; - } - private static int diffReturnTypes(MethodType adapterType, - MethodType targetType, - boolean raw) { - Class src = targetType.returnType(); - Class dst = adapterType.returnType(); - if ((!raw - ? VerifyType.canPassUnchecked(src, dst) - : VerifyType.canPassRaw(src, dst) - ) > 0) - return 0; // no significant difference - if (raw && !src.isPrimitive() && !dst.isPrimitive()) - return 0; // can force a reference return (very carefully!) - //if (false) return 1; // never adaptable! - return -1; // some significant difference - } - private static int diffParamTypes(MethodType adapterType, int astart, - MethodType targetType, int tstart, - int nargs, boolean raw) { - assert(nargs >= 0); - int res = 0; - for (int i = 0; i < nargs; i++) { - Class src = adapterType.parameterType(astart+i); - Class dest = targetType.parameterType(tstart+i); - if ((!raw - ? VerifyType.canPassUnchecked(src, dest) - : VerifyType.canPassRaw(src, dest) - ) <= 0) { - // found a difference; is it the only one so far? - if (res != 0) - return -1-res; // return -2-i for prev. i - res = 1+i; - } - } - return res; - } - - /** Can a retyping adapter (alone) validly convert the target to newType? */ - static boolean canRetypeOnly(MethodType newType, MethodType targetType) { - return canRetype(newType, targetType, false); - } - /** Can a retyping adapter (alone) convert the target to newType? - * It is allowed to widen subword types and void to int, to make bitwise - * conversions between float/int and double/long, and to perform unchecked - * reference conversions on return. This last feature requires that the - * caller be trusted, and perform explicit cast conversions on return values. - */ - static boolean canRetypeRaw(MethodType newType, MethodType targetType) { - return canRetype(newType, targetType, true); - } - static boolean canRetype(MethodType newType, MethodType targetType, boolean raw) { - if (!convOpSupported(raw ? OP_RETYPE_RAW : OP_RETYPE_ONLY)) return false; - int diff = diffTypes(newType, targetType, raw); - // %%% This assert is too strong. Factor diff into VerifyType and reconcile. - assert(raw || (diff == 0) == VerifyType.isNullConversion(newType, targetType)); - return diff == 0; - } - - /** Factory method: Performs no conversions; simply retypes the adapter. - * Allows unchecked argument conversions pairwise, if they are safe. - * Returns null if not possible. - */ - static MethodHandle makeRetypeOnly(MethodType newType, MethodHandle target) { - return makeRetype(newType, target, false); - } - static MethodHandle makeRetypeRaw(MethodType newType, MethodHandle target) { - return makeRetype(newType, target, true); - } - static MethodHandle makeRetype(MethodType newType, MethodHandle target, boolean raw) { - MethodType oldType = target.type(); - if (oldType == newType) return target; - if (!canRetype(newType, oldType, raw)) - return null; - // TO DO: clone the target guy, whatever he is, with new type. - return new AdapterMethodHandle(target, newType, makeConv(raw ? OP_RETYPE_RAW : OP_RETYPE_ONLY)); - } - - static MethodHandle makeVarargsCollector(MethodHandle target, Class arrayType) { - MethodType type = target.type(); - int last = type.parameterCount() - 1; - if (type.parameterType(last) != arrayType) - target = target.asType(type.changeParameterType(last, arrayType)); - target = target.asFixedArity(); // make sure this attribute is turned off - return new AsVarargsCollector(target, arrayType); - } - - static class AsVarargsCollector extends AdapterMethodHandle { - final MethodHandle target; - final Class arrayType; - MethodHandle cache; - - AsVarargsCollector(MethodHandle target, Class arrayType) { - super(target, target.type(), makeConv(OP_RETYPE_ONLY)); - this.target = target; - this.arrayType = arrayType; - this.cache = target.asCollector(arrayType, 0); - } - - @Override - public boolean isVarargsCollector() { - return true; - } - - @Override - public MethodHandle asFixedArity() { - return target; - } - - @Override - public MethodHandle asType(MethodType newType) { - MethodType type = this.type(); - int collectArg = type.parameterCount() - 1; - int newArity = newType.parameterCount(); - if (newArity == collectArg+1 && - type.parameterType(collectArg).isAssignableFrom(newType.parameterType(collectArg))) { - // if arity and trailing parameter are compatible, do normal thing - return super.asType(newType); - } - // check cache - if (cache.type().parameterCount() == newArity) - return cache.asType(newType); - // build and cache a collector - int arrayLength = newArity - collectArg; - MethodHandle collector; - try { - collector = target.asCollector(arrayType, arrayLength); - } catch (IllegalArgumentException ex) { - throw new WrongMethodTypeException("cannot build collector"); - } - cache = collector; - return collector.asType(newType); - } - } - - /** Can a checkcast adapter validly convert the target to newType? - * The JVM supports all kind of reference casts, even silly ones. - */ - static boolean canCheckCast(MethodType newType, MethodType targetType, - int arg, Class castType) { - if (!convOpSupported(OP_CHECK_CAST)) return false; - Class src = newType.parameterType(arg); - Class dst = targetType.parameterType(arg); - if (!canCheckCast(src, castType) - || !VerifyType.isNullConversion(castType, dst)) - return false; - int diff = diffTypes(newType, targetType, false); - return (diff == arg+1) || (diff == 0); // arg is sole non-trivial diff - } - /** Can an primitive conversion adapter validly convert src to dst? */ - static boolean canCheckCast(Class src, Class dst) { - return (!src.isPrimitive() && !dst.isPrimitive()); - } - - /** Factory method: Forces a cast at the given argument. - * The castType is the target of the cast, and can be any type - * with a null conversion to the corresponding target parameter. - * Return null if this cannot be done. - */ - static MethodHandle makeCheckCast(MethodType newType, MethodHandle target, - int arg, Class castType) { - if (!canCheckCast(newType, target.type(), arg, castType)) - return null; - long conv = makeConv(OP_CHECK_CAST, arg, T_OBJECT, T_OBJECT); - return new AdapterMethodHandle(target, newType, conv, castType); - } - - /** Can an primitive conversion adapter validly convert the target to newType? - * The JVM currently supports all conversions except those between - * floating and integral types. - */ - static boolean canPrimCast(MethodType newType, MethodType targetType, - int arg, Class convType) { - if (!convOpSupported(OP_PRIM_TO_PRIM)) return false; - Class src = newType.parameterType(arg); - Class dst = targetType.parameterType(arg); - if (!canPrimCast(src, convType) - || !VerifyType.isNullConversion(convType, dst)) - return false; - int diff = diffTypes(newType, targetType, false); - return (diff == arg+1); // arg is sole non-trivial diff - } - /** Can an primitive conversion adapter validly convert src to dst? */ - static boolean canPrimCast(Class src, Class dst) { - if (src == dst || !src.isPrimitive() || !dst.isPrimitive()) { - return false; - } else { - boolean sflt = Wrapper.forPrimitiveType(src).isFloating(); - boolean dflt = Wrapper.forPrimitiveType(dst).isFloating(); - return !(sflt | dflt); // no float support at present - } - } - - /** Factory method: Truncate the given argument with zero or sign extension, - * and/or convert between single and doubleword versions of integer or float. - * The convType is the target of the conversion, and can be any type - * with a null conversion to the corresponding target parameter. - * Return null if this cannot be done. - */ - static MethodHandle makePrimCast(MethodType newType, MethodHandle target, - int arg, Class convType) { - Class src = newType.parameterType(arg); - if (canPrimCast(src, convType)) - return makePrimCastOnly(newType, target, arg, convType); - Class dst = convType; - boolean sflt = Wrapper.forPrimitiveType(src).isFloating(); - boolean dflt = Wrapper.forPrimitiveType(dst).isFloating(); - if (sflt | dflt) { - MethodHandle convMethod; - if (sflt) - convMethod = ((src == double.class) - ? ValueConversions.convertFromDouble(dst) - : ValueConversions.convertFromFloat(dst)); - else - convMethod = ((dst == double.class) - ? ValueConversions.convertToDouble(src) - : ValueConversions.convertToFloat(src)); - long conv = makeConv(OP_COLLECT_ARGS, arg, basicType(src), basicType(dst)); - return new AdapterMethodHandle(target, newType, conv, convMethod); - } - throw new InternalError("makePrimCast"); - } - static MethodHandle makePrimCastOnly(MethodType newType, MethodHandle target, - int arg, Class convType) { - MethodType oldType = target.type(); - if (!canPrimCast(newType, oldType, arg, convType)) - return null; - Class src = newType.parameterType(arg); - long conv = makeConv(OP_PRIM_TO_PRIM, arg, basicType(src), basicType(convType)); - return new AdapterMethodHandle(target, newType, conv); - } - - /** Can an unboxing conversion validly convert src to dst? - * The JVM currently supports all kinds of casting and unboxing. - * The convType is the unboxed type; it can be either a primitive or wrapper. - */ - static boolean canUnboxArgument(MethodType newType, MethodType targetType, - int arg, Class convType, int level) { - if (!convOpSupported(OP_REF_TO_PRIM)) return false; - Class src = newType.parameterType(arg); - Class dst = targetType.parameterType(arg); - Class boxType = Wrapper.asWrapperType(convType); - convType = Wrapper.asPrimitiveType(convType); - if (!canCheckCast(src, boxType) - || boxType == convType - || !VerifyType.isNullConversion(convType, dst)) - return false; - int diff = diffTypes(newType, targetType, false); - return (diff == arg+1); // arg is sole non-trivial diff - } - /** Can an primitive unboxing adapter validly convert src to dst? */ - static boolean canUnboxArgument(Class src, Class dst, int level) { - assert(dst.isPrimitive()); - // if we have JVM support for boxing, we can also do complex unboxing - if (convOpSupported(OP_PRIM_TO_REF)) return true; - Wrapper dw = Wrapper.forPrimitiveType(dst); - // Level 0 means cast and unbox. This works on any reference. - if (level == 0) return !src.isPrimitive(); - assert(level >= 0 && level <= 2); - // Levels 1 and 2 allow widening and/or narrowing conversions. - // These are not supported directly by the JVM. - // But if the input reference is monomorphic, we can do it. - return dw.wrapperType() == src; - } - - /** Factory method: Unbox the given argument. - * Return null if this cannot be done. - */ - static MethodHandle makeUnboxArgument(MethodType newType, MethodHandle target, - int arg, Class convType, int level) { - MethodType oldType = target.type(); - Class src = newType.parameterType(arg); - Class dst = oldType.parameterType(arg); - Class boxType = Wrapper.asWrapperType(convType); - Class primType = Wrapper.asPrimitiveType(convType); - if (!canUnboxArgument(newType, oldType, arg, convType, level)) - return null; - MethodType castDone = newType; - if (!VerifyType.isNullConversion(src, boxType)) { - // Examples: Object->int, Number->int, Comparable->int; Byte->int, Character->int - if (level != 0) { - // must include additional conversions - if (src == Object.class || !Wrapper.isWrapperType(src)) { - // src must be examined at runtime, to detect Byte, Character, etc. - MethodHandle unboxMethod = (level == 1 - ? ValueConversions.unbox(dst) - : ValueConversions.unboxCast(dst)); - long conv = makeConv(OP_COLLECT_ARGS, arg, basicType(src), basicType(dst)); - return new AdapterMethodHandle(target, newType, conv, unboxMethod); - } - // Example: Byte->int - // Do this by reformulating the problem to Byte->byte. - Class srcPrim = Wrapper.forWrapperType(src).primitiveType(); - MethodType midType = newType.changeParameterType(arg, srcPrim); - MethodHandle fixPrim; // makePairwiseConvert(midType, target, 0); - if (canPrimCast(midType, oldType, arg, dst)) - fixPrim = makePrimCast(midType, target, arg, dst); - else - fixPrim = target; - return makeUnboxArgument(newType, fixPrim, arg, srcPrim, 0); - } - castDone = newType.changeParameterType(arg, boxType); - } - long conv = makeConv(OP_REF_TO_PRIM, arg, T_OBJECT, basicType(primType)); - MethodHandle adapter = new AdapterMethodHandle(target, castDone, conv, boxType); - if (castDone == newType) - return adapter; - return makeCheckCast(newType, adapter, arg, boxType); - } - - /** Can a boxing conversion validly convert src to dst? */ - static boolean canBoxArgument(MethodType newType, MethodType targetType, - int arg, Class convType) { - if (!convOpSupported(OP_PRIM_TO_REF)) return false; - Class src = newType.parameterType(arg); - Class dst = targetType.parameterType(arg); - Class boxType = Wrapper.asWrapperType(convType); - convType = Wrapper.asPrimitiveType(convType); - if (!canCheckCast(boxType, dst) - || boxType == convType - || !VerifyType.isNullConversion(src, convType)) - return false; - int diff = diffTypes(newType, targetType, false); - return (diff == arg+1); // arg is sole non-trivial diff - } - - /** Can an primitive boxing adapter validly convert src to dst? */ - static boolean canBoxArgument(Class src, Class dst) { - if (!convOpSupported(OP_PRIM_TO_REF)) return false; - return (src.isPrimitive() && !dst.isPrimitive()); - } - - /** Factory method: Box the given argument. - * Return null if this cannot be done. - */ - static MethodHandle makeBoxArgument(MethodType newType, MethodHandle target, - int arg, Class convType) { - MethodType oldType = target.type(); - Class src = newType.parameterType(arg); - Class dst = oldType.parameterType(arg); - Class boxType = Wrapper.asWrapperType(convType); - Class primType = Wrapper.asPrimitiveType(convType); - if (!canBoxArgument(newType, oldType, arg, convType)) { - return null; - } - if (!VerifyType.isNullConversion(boxType, dst)) - target = makeCheckCast(oldType.changeParameterType(arg, boxType), target, arg, dst); - MethodHandle boxerMethod = ValueConversions.box(Wrapper.forPrimitiveType(primType)); - long conv = makeConv(OP_PRIM_TO_REF, arg, basicType(primType), T_OBJECT); - return new AdapterMethodHandle(target, newType, conv, boxerMethod); - } - - /** Can an adapter simply drop arguments to convert the target to newType? */ - static boolean canDropArguments(MethodType newType, MethodType targetType, - int dropArgPos, int dropArgCount) { - if (dropArgCount == 0) - return canRetypeOnly(newType, targetType); - if (!convOpSupported(OP_DROP_ARGS)) return false; - if (diffReturnTypes(newType, targetType, false) != 0) - return false; - int nptypes = newType.parameterCount(); - // parameter types must be the same up to the drop point - if (dropArgPos != 0 && diffParamTypes(newType, 0, targetType, 0, dropArgPos, false) != 0) - return false; - int afterPos = dropArgPos + dropArgCount; - int afterCount = nptypes - afterPos; - if (dropArgPos < 0 || dropArgPos >= nptypes || - dropArgCount < 1 || afterPos > nptypes || - targetType.parameterCount() != nptypes - dropArgCount) - return false; - // parameter types after the drop point must also be the same - if (afterCount != 0 && diffParamTypes(newType, afterPos, targetType, dropArgPos, afterCount, false) != 0) - return false; - return true; - } - - /** Factory method: Drop selected arguments. - * Allow unchecked retyping of remaining arguments, pairwise. - * Return null if this is not possible. - */ - static MethodHandle makeDropArguments(MethodType newType, MethodHandle target, - int dropArgPos, int dropArgCount) { - if (dropArgCount == 0) - return makeRetypeOnly(newType, target); - if (!canDropArguments(newType, target.type(), dropArgPos, dropArgCount)) - return null; - // in arglist: [0: ...keep1 | dpos: drop... | dpos+dcount: keep2... ] - // out arglist: [0: ...keep1 | dpos: keep2... ] - int keep2InPos = dropArgPos + dropArgCount; - int dropSlot = newType.parameterSlotDepth(keep2InPos); - int keep1InSlot = newType.parameterSlotDepth(dropArgPos); - int slotCount = keep1InSlot - dropSlot; - assert(slotCount >= dropArgCount); - assert(target.type().parameterSlotCount() + slotCount == newType.parameterSlotCount()); - long conv = makeDupConv(OP_DROP_ARGS, dropArgPos + dropArgCount - 1, -slotCount); - return new AdapterMethodHandle(target, newType, conv); - } - - /** Can an adapter duplicate an argument to convert the target to newType? */ - static boolean canDupArguments(MethodType newType, MethodType targetType, - int dupArgPos, int dupArgCount) { - if (!convOpSupported(OP_DUP_ARGS)) return false; - if (diffReturnTypes(newType, targetType, false) != 0) - return false; - int nptypes = newType.parameterCount(); - if (dupArgCount < 0 || dupArgPos + dupArgCount > nptypes) - return false; - if (targetType.parameterCount() != nptypes + dupArgCount) - return false; - // parameter types must be the same up to the duplicated arguments - if (diffParamTypes(newType, 0, targetType, 0, nptypes, false) != 0) - return false; - // duplicated types must be, well, duplicates - if (diffParamTypes(newType, dupArgPos, targetType, nptypes, dupArgCount, false) != 0) - return false; - return true; - } - - /** Factory method: Duplicate the selected argument. - * Return null if this is not possible. - */ - static MethodHandle makeDupArguments(MethodType newType, MethodHandle target, - int dupArgPos, int dupArgCount) { - if (!canDupArguments(newType, target.type(), dupArgPos, dupArgCount)) - return null; - if (dupArgCount == 0) - return target; - // in arglist: [0: ...keep1 | dpos: dup... | dpos+dcount: keep2... ] - // out arglist: [0: ...keep1 | dpos: dup... | dpos+dcount: keep2... | dup... ] - int keep2InPos = dupArgPos + dupArgCount; - int dupSlot = newType.parameterSlotDepth(keep2InPos); - int keep1InSlot = newType.parameterSlotDepth(dupArgPos); - int slotCount = keep1InSlot - dupSlot; - assert(target.type().parameterSlotCount() - slotCount == newType.parameterSlotCount()); - long conv = makeDupConv(OP_DUP_ARGS, dupArgPos + dupArgCount - 1, slotCount); - return new AdapterMethodHandle(target, newType, conv); - } - - /** Can an adapter swap two arguments to convert the target to newType? */ - static boolean canSwapArguments(MethodType newType, MethodType targetType, - int swapArg1, int swapArg2) { - if (!convOpSupported(OP_SWAP_ARGS)) return false; - if (diffReturnTypes(newType, targetType, false) != 0) - return false; - if (swapArg1 >= swapArg2) return false; // caller resp - int nptypes = newType.parameterCount(); - if (targetType.parameterCount() != nptypes) - return false; - if (swapArg1 < 0 || swapArg2 >= nptypes) - return false; - if (diffParamTypes(newType, 0, targetType, 0, swapArg1, false) != 0) - return false; - if (diffParamTypes(newType, swapArg1, targetType, swapArg2, 1, false) != 0) - return false; - if (diffParamTypes(newType, swapArg1+1, targetType, swapArg1+1, swapArg2-swapArg1-1, false) != 0) - return false; - if (diffParamTypes(newType, swapArg2, targetType, swapArg1, 1, false) != 0) - return false; - if (diffParamTypes(newType, swapArg2+1, targetType, swapArg2+1, nptypes-swapArg2-1, false) != 0) - return false; - return true; - } - - /** Factory method: Swap the selected arguments. - * Return null if this is not possible. - */ - static MethodHandle makeSwapArguments(MethodType newType, MethodHandle target, - int swapArg1, int swapArg2) { - if (swapArg1 == swapArg2) - return target; - if (swapArg1 > swapArg2) { int t = swapArg1; swapArg1 = swapArg2; swapArg2 = t; } - if (type2size(newType.parameterType(swapArg1)) != - type2size(newType.parameterType(swapArg2))) { - // turn a swap into a pair of rotates: - // [x a b c y] rot2(-1,argc=5) => [a b c y x] rot1(+1,argc=4) => target[y a b c x] - int argc = swapArg2 - swapArg1 + 1; - final int ROT = 1; - ArrayList> rot1Params = new ArrayList>(target.type().parameterList()); - Collections.rotate(rot1Params.subList(swapArg1, swapArg1 + argc), -ROT); - MethodType rot1Type = MethodType.methodType(target.type().returnType(), rot1Params); - MethodHandle rot1 = makeRotateArguments(rot1Type, target, swapArg1, argc, +ROT); - assert(rot1 != null); - if (argc == 2) return rot1; - MethodHandle rot2 = makeRotateArguments(newType, rot1, swapArg1, argc-1, -ROT); - assert(rot2 != null); - return rot2; - } - if (!canSwapArguments(newType, target.type(), swapArg1, swapArg2)) - return null; - Class type1 = newType.parameterType(swapArg1); - Class type2 = newType.parameterType(swapArg2); - // in arglist: [0: ...keep1 | pos1: a1 | pos1+1: keep2... | pos2: a2 | pos2+1: keep3... ] - // out arglist: [0: ...keep1 | pos1: a2 | pos1+1: keep2... | pos2: a1 | pos2+1: keep3... ] - int swapSlot2 = newType.parameterSlotDepth(swapArg2 + 1); - long conv = makeSwapConv(OP_SWAP_ARGS, swapArg1, basicType(type1), swapSlot2, basicType(type2)); - return new AdapterMethodHandle(target, newType, conv); - } - - static int positiveRotation(int argCount, int rotateBy) { - assert(argCount > 0); - if (rotateBy >= 0) { - if (rotateBy < argCount) - return rotateBy; - return rotateBy % argCount; - } else if (rotateBy >= -argCount) { - return rotateBy + argCount; - } else { - return (-1-((-1-rotateBy) % argCount)) + argCount; - } - } - - final static int MAX_ARG_ROTATION = 1; - - /** Can an adapter rotate arguments to convert the target to newType? */ - static boolean canRotateArguments(MethodType newType, MethodType targetType, - int firstArg, int argCount, int rotateBy) { - if (!convOpSupported(OP_ROT_ARGS)) return false; - rotateBy = positiveRotation(argCount, rotateBy); - if (rotateBy == 0) return false; // no rotation - if (rotateBy > MAX_ARG_ROTATION && rotateBy < argCount - MAX_ARG_ROTATION) - return false; // too many argument positions - // Rotate incoming args right N to the out args, N in 1..(argCouunt-1). - if (diffReturnTypes(newType, targetType, false) != 0) - return false; - int nptypes = newType.parameterCount(); - if (targetType.parameterCount() != nptypes) - return false; - if (firstArg < 0 || firstArg >= nptypes) return false; - int argLimit = firstArg + argCount; - if (argLimit > nptypes) return false; - if (diffParamTypes(newType, 0, targetType, 0, firstArg, false) != 0) - return false; - int newChunk1 = argCount - rotateBy, newChunk2 = rotateBy; - // swap new chunk1 with target chunk2 - if (diffParamTypes(newType, firstArg, targetType, argLimit-newChunk1, newChunk1, false) != 0) - return false; - // swap new chunk2 with target chunk1 - if (diffParamTypes(newType, firstArg+newChunk1, targetType, firstArg, newChunk2, false) != 0) - return false; - return true; - } - - /** Factory method: Rotate the selected argument range. - * Return null if this is not possible. - */ - static MethodHandle makeRotateArguments(MethodType newType, MethodHandle target, - int firstArg, int argCount, int rotateBy) { - rotateBy = positiveRotation(argCount, rotateBy); - if (!canRotateArguments(newType, target.type(), firstArg, argCount, rotateBy)) - return null; - // Decide whether it should be done as a right or left rotation, - // on the JVM stack. Return the number of stack slots to rotate by, - // positive if right, negative if left. - int limit = firstArg + argCount; - int depth0 = newType.parameterSlotDepth(firstArg); - int depth1 = newType.parameterSlotDepth(limit-rotateBy); - int depth2 = newType.parameterSlotDepth(limit); - int chunk1Slots = depth0 - depth1; assert(chunk1Slots > 0); - int chunk2Slots = depth1 - depth2; assert(chunk2Slots > 0); - // From here on out, it assumes a single-argument shift. - assert(MAX_ARG_ROTATION == 1); - int srcArg, dstArg; - int dstSlot; - int moveChunk; - if (rotateBy == 1) { - // Rotate right/down N (rotateBy = +N, N small, c2 small): - // in arglist: [0: ...keep1 | arg1: c1... | limit-N: c2 | limit: keep2... ] - // out arglist: [0: ...keep1 | arg1: c2 | arg1+N: c1... | limit: keep2... ] - srcArg = limit-1; - dstArg = firstArg; - //dstSlot = depth0 - chunk2Slots; //chunk2Slots is not relevant - dstSlot = depth0 + MethodHandleNatives.OP_ROT_ARGS_DOWN_LIMIT_BIAS; - moveChunk = chunk2Slots; - } else { - // Rotate left/up N (rotateBy = -N, N small, c1 small): - // in arglist: [0: ...keep1 | arg1: c1 | arg1+N: c2... | limit: keep2... ] - // out arglist: [0: ...keep1 | arg1: c2 ... | limit-N: c1 | limit: keep2... ] - srcArg = firstArg; - dstArg = limit-1; - dstSlot = depth2; - moveChunk = chunk1Slots; - } - byte srcType = basicType(newType.parameterType(srcArg)); - byte dstType = basicType(newType.parameterType(dstArg)); - assert(moveChunk == type2size(srcType)); - long conv = makeSwapConv(OP_ROT_ARGS, srcArg, srcType, dstSlot, dstType); - return new AdapterMethodHandle(target, newType, conv); - } - - /** Can an adapter spread an argument to convert the target to newType? */ - static boolean canSpreadArguments(MethodType newType, MethodType targetType, - Class spreadArgType, int spreadArgPos, int spreadArgCount) { - if (!convOpSupported(OP_SPREAD_ARGS)) return false; - if (diffReturnTypes(newType, targetType, false) != 0) - return false; - int nptypes = newType.parameterCount(); - // parameter types must be the same up to the spread point - if (spreadArgPos != 0 && diffParamTypes(newType, 0, targetType, 0, spreadArgPos, false) != 0) - return false; - int afterPos = spreadArgPos + spreadArgCount; - int afterCount = nptypes - (spreadArgPos + 1); - if (spreadArgPos < 0 || spreadArgPos >= nptypes || - spreadArgCount < 0 || - targetType.parameterCount() != afterPos + afterCount) - return false; - // parameter types after the spread point must also be the same - if (afterCount != 0 && diffParamTypes(newType, spreadArgPos+1, targetType, afterPos, afterCount, false) != 0) - return false; - // match the array element type to the spread arg types - Class rawSpreadArgType = newType.parameterType(spreadArgPos); - if (rawSpreadArgType != spreadArgType && !canCheckCast(rawSpreadArgType, spreadArgType)) - return false; - for (int i = 0; i < spreadArgCount; i++) { - Class src = VerifyType.spreadArgElementType(spreadArgType, i); - Class dst = targetType.parameterType(spreadArgPos + i); - if (src == null || !canConvertArgument(src, dst, 1)) - return false; - } - return true; - } - - - /** Factory method: Spread selected argument. */ - static MethodHandle makeSpreadArguments(MethodType newType, MethodHandle target, - Class spreadArgType, int spreadArgPos, int spreadArgCount) { - // FIXME: Get rid of newType; derive new arguments from structure of spreadArgType - MethodType targetType = target.type(); - assert(canSpreadArguments(newType, targetType, spreadArgType, spreadArgPos, spreadArgCount)) - : "[newType, targetType, spreadArgType, spreadArgPos, spreadArgCount] = " - + Arrays.asList(newType, targetType, spreadArgType, spreadArgPos, spreadArgCount); - // dest is not significant; remove? - int dest = T_VOID; - for (int i = 0; i < spreadArgCount; i++) { - Class arg = VerifyType.spreadArgElementType(spreadArgType, i); - if (arg == null) arg = Object.class; - int dest2 = basicType(arg); - if (dest == T_VOID) dest = dest2; - else if (dest != dest2) dest = T_VOID; - if (dest == T_VOID) break; - targetType = targetType.changeParameterType(spreadArgPos + i, arg); - } - target = target.asType(targetType); - int arrayArgSize = 1; // always a reference - // in arglist: [0: ...keep1 | spos: spreadArg | spos+1: keep2... ] - // out arglist: [0: ...keep1 | spos: spread... | spos+scount: keep2... ] - int keep2OutPos = spreadArgPos + spreadArgCount; - int keep1OutSlot = targetType.parameterSlotDepth(spreadArgPos); // leading edge of |spread...| - int spreadSlot = targetType.parameterSlotDepth(keep2OutPos); // trailing edge of |spread...| - assert(spreadSlot == newType.parameterSlotDepth(spreadArgPos+arrayArgSize)); - int slotCount = keep1OutSlot - spreadSlot; // slots in |spread...| - assert(slotCount >= spreadArgCount); - int stackMove = - arrayArgSize + slotCount; // pop array, push N slots - long conv = makeSpreadConv(OP_SPREAD_ARGS, spreadArgPos, T_OBJECT, dest, stackMove); - MethodHandle res = new AdapterMethodHandle(target, newType, conv, spreadArgType); - assert(res.type().parameterType(spreadArgPos) == spreadArgType); - return res; - } - - /** Can an adapter collect a series of arguments, replacing them by zero or one results? */ - static boolean canCollectArguments(MethodType targetType, - MethodType collectorType, int collectArgPos, boolean retainOriginalArgs) { - if (!convOpSupported(retainOriginalArgs ? OP_FOLD_ARGS : OP_COLLECT_ARGS)) return false; - int collectArgCount = collectorType.parameterCount(); - Class rtype = collectorType.returnType(); - assert(rtype == void.class || targetType.parameterType(collectArgPos) == rtype) - // [(Object)Object[], (Object[])Object[], 0, 1] - : Arrays.asList(targetType, collectorType, collectArgPos, collectArgCount) - ; - return true; - } - - /** Factory method: Collect or filter selected argument(s). */ - static MethodHandle makeCollectArguments(MethodHandle target, - MethodHandle collector, int collectArgPos, boolean retainOriginalArgs) { - assert(canCollectArguments(target.type(), collector.type(), collectArgPos, retainOriginalArgs)); - MethodType targetType = target.type(); - MethodType collectorType = collector.type(); - int collectArgCount = collectorType.parameterCount(); - Class collectValType = collectorType.returnType(); - int collectValCount = (collectValType == void.class ? 0 : 1); - int collectValSlots = collectorType.returnSlotCount(); - MethodType newType = targetType - .dropParameterTypes(collectArgPos, collectArgPos+collectValCount); - if (!retainOriginalArgs) { - newType = newType - .insertParameterTypes(collectArgPos, collectorType.parameterList()); - } else { - // parameter types at the fold point must be the same - assert(diffParamTypes(newType, collectArgPos, targetType, collectValCount, collectArgCount, false) == 0) - : Arrays.asList(target, collector, collectArgPos, retainOriginalArgs); - } - // in arglist: [0: ...keep1 | cpos: collect... | cpos+cacount: keep2... ] - // out arglist: [0: ...keep1 | cpos: collectVal? | cpos+cvcount: keep2... ] - // out(retain): [0: ...keep1 | cpos: cV? coll... | cpos+cvc+cac: keep2... ] - int keep2InPos = collectArgPos + collectArgCount; - int keep1InSlot = newType.parameterSlotDepth(collectArgPos); // leading edge of |collect...| - int collectSlot = newType.parameterSlotDepth(keep2InPos); // trailing edge of |collect...| - int slotCount = keep1InSlot - collectSlot; // slots in |collect...| - assert(slotCount >= collectArgCount); - assert(collectSlot == targetType.parameterSlotDepth( - collectArgPos + collectValCount + (retainOriginalArgs ? collectArgCount : 0) )); - int dest = basicType(collectValType); - int src = T_VOID; - // src is not significant; remove? - for (int i = 0; i < collectArgCount; i++) { - int src2 = basicType(collectorType.parameterType(i)); - if (src == T_VOID) src = src2; - else if (src != src2) src = T_VOID; - if (src == T_VOID) break; - } - int stackMove = collectValSlots; // push 0..2 results - if (!retainOriginalArgs) stackMove -= slotCount; // pop N arguments - int lastCollectArg = keep2InPos-1; - long conv = makeSpreadConv(retainOriginalArgs ? OP_FOLD_ARGS : OP_COLLECT_ARGS, - lastCollectArg, src, dest, stackMove); - MethodHandle res = new AdapterMethodHandle(target, newType, conv, collector); - assert(res.type().parameterList().subList(collectArgPos, collectArgPos+collectArgCount) - .equals(collector.type().parameterList())); - return res; - } - - @Override - String debugString() { - return getNameString(nonAdapter((MethodHandle)vmtarget), this); - } - - private static MethodHandle nonAdapter(MethodHandle mh) { - while (mh instanceof AdapterMethodHandle) { - mh = (MethodHandle) mh.vmtarget; - } - return mh; - } -} diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/BoundMethodHandle.java --- a/src/share/classes/java/lang/invoke/BoundMethodHandle.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/invoke/BoundMethodHandle.java Fri Aug 24 09:29:17 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,164 +25,828 @@ package java.lang.invoke; -import sun.invoke.util.VerifyType; +import static com.sun.xml.internal.ws.org.objectweb.asm.Opcodes.*; +import static java.lang.invoke.LambdaForm.basicTypes; +import static java.lang.invoke.MethodHandleNatives.Constants.REF_invokeStatic; +import static java.lang.invoke.MethodHandleStatics.*; + +import java.lang.invoke.LambdaForm.Name; +import java.lang.invoke.LambdaForm.NamedFunction; +import java.lang.invoke.MethodHandles.Lookup; +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.HashMap; + +import sun.invoke.util.ValueConversions; import sun.invoke.util.Wrapper; -import static java.lang.invoke.MethodHandleStatics.*; + +import com.sun.xml.internal.ws.org.objectweb.asm.ClassWriter; +import com.sun.xml.internal.ws.org.objectweb.asm.MethodVisitor; +import com.sun.xml.internal.ws.org.objectweb.asm.Type; /** * The flavor of method handle which emulates an invoke instruction * on a predetermined argument. The JVM dispatches to the correct method * when the handle is created, not when it is invoked. - * @author jrose + * + * All bound arguments are encapsulated in dedicated species. */ -class BoundMethodHandle extends MethodHandle { - //MethodHandle vmtarget; // next BMH or final DMH or methodOop - private final Object argument; // argument to insert - private final int vmargslot; // position at which it is inserted - - // Constructors in this class *must* be package scoped or private. +/* non-public */ abstract class BoundMethodHandle extends MethodHandle { - /** Bind a direct MH to its receiver (or first ref. argument). - * The JVM will pre-dispatch the MH if it is not already static. - */ - /*non-public*/ BoundMethodHandle(DirectMethodHandle mh, Object argument) { - super(mh.type().dropParameterTypes(0, 1)); - // check the type now, once for all: - this.argument = checkReferenceArgument(argument, mh, 0); - this.vmargslot = this.type().parameterSlotCount(); - initTarget(mh, 0); + /* non-public */ BoundMethodHandle(MethodType type, LambdaForm form) { + super(type, form); } - /** Insert an argument into an arbitrary method handle. - * If argnum is zero, inserts the first argument, etc. - * The argument type must be a reference. - */ - /*non-public*/ BoundMethodHandle(MethodHandle mh, Object argument, int argnum) { - this(mh.type().dropParameterTypes(argnum, argnum+1), - mh, argument, argnum); - } + // + // BMH API and internals + // - /** Insert an argument into an arbitrary method handle. - * If argnum is zero, inserts the first argument, etc. - */ - /*non-public*/ BoundMethodHandle(MethodType type, MethodHandle mh, Object argument, int argnum) { - super(type); - if (mh.type().parameterType(argnum).isPrimitive()) - this.argument = bindPrimitiveArgument(argument, mh, argnum); - else { - this.argument = checkReferenceArgument(argument, mh, argnum); + static MethodHandle bindSingle(MethodType type, LambdaForm form, char xtype, Object x) { + // for some type signatures, there exist pre-defined concrete BMH classes + try { + switch (xtype) { + case 'L': + if (true) return bindSingle(type, form, x); // Use known fast path. + return (BoundMethodHandle) SpeciesData.EMPTY.extendWithType('L').constructor[0].invokeBasic(type, form, x); + case 'I': + return (BoundMethodHandle) SpeciesData.EMPTY.extendWithType('I').constructor[0].invokeBasic(type, form, ValueConversions.widenSubword(x)); + case 'J': + return (BoundMethodHandle) SpeciesData.EMPTY.extendWithType('J').constructor[0].invokeBasic(type, form, (long) x); + case 'F': + return (BoundMethodHandle) SpeciesData.EMPTY.extendWithType('F').constructor[0].invokeBasic(type, form, (float) x); + case 'D': + return (BoundMethodHandle) SpeciesData.EMPTY.extendWithType('D').constructor[0].invokeBasic(type, form, (double) x); + default : throw new InternalError("unexpected xtype: " + xtype); + } + } catch (Throwable t) { + throw new InternalError(t); } - this.vmargslot = type.parameterSlotDepth(argnum); - initTarget(mh, argnum); - } - - private void initTarget(MethodHandle mh, int argnum) { - //this.vmtarget = mh; // maybe updated by JVM - MethodHandleNatives.init(this, mh, argnum); - } - - /** For the AdapterMethodHandle subclass. - */ - /*non-public*/ BoundMethodHandle(MethodType type, Object argument, int vmargslot) { - super(type); - this.argument = argument; - this.vmargslot = vmargslot; - assert(this instanceof AdapterMethodHandle); } - /** Initialize the current object as a self-bound method handle, binding it - * as the first argument of the method handle {@code entryPoint}. - * The invocation type of the resulting method handle will be the - * same as {@code entryPoint}, except that the first argument - * type will be dropped. - */ - /*non-public*/ BoundMethodHandle(MethodHandle entryPoint) { - super(entryPoint.type().dropParameterTypes(0, 1)); - this.argument = this; // kludge; get rid of - this.vmargslot = this.type().parameterSlotDepth(0); - initTarget(entryPoint, 0); + static MethodHandle bindSingle(MethodType type, LambdaForm form, Object x) { + return new Species_L(type, form, x); } - /** Make sure the given {@code argument} can be used as {@code argnum}-th - * parameter of the given method handle {@code mh}, which must be a reference. - *

- * If this fails, throw a suitable {@code WrongMethodTypeException}, - * which will prevent the creation of an illegally typed bound - * method handle. - */ - final static Object checkReferenceArgument(Object argument, MethodHandle mh, int argnum) { - Class ptype = mh.type().parameterType(argnum); - if (ptype.isPrimitive()) { - // fail - } else if (argument == null) { - return null; - } else if (VerifyType.isNullReferenceConversion(argument.getClass(), ptype)) { - return argument; + MethodHandle cloneExtend(MethodType type, LambdaForm form, char xtype, Object x) { + try { + switch (xtype) { + case 'L': return cloneExtendL(type, form, x); + case 'I': return cloneExtendI(type, form, ValueConversions.widenSubword(x)); + case 'J': return cloneExtendJ(type, form, (long) x); + case 'F': return cloneExtendF(type, form, (float) x); + case 'D': return cloneExtendD(type, form, (double) x); + } + } catch (Throwable t) { + throw new InternalError(t); } - throw badBoundArgumentException(argument, mh, argnum); + throw new InternalError("unexpected type: " + xtype); } - /** Make sure the given {@code argument} can be used as {@code argnum}-th - * parameter of the given method handle {@code mh}, which must be a primitive. - *

- * If this fails, throw a suitable {@code WrongMethodTypeException}, - * which will prevent the creation of an illegally typed bound - * method handle. - */ - final static Object bindPrimitiveArgument(Object argument, MethodHandle mh, int argnum) { - Class ptype = mh.type().parameterType(argnum); - Wrapper wrap = Wrapper.forPrimitiveType(ptype); - Object zero = wrap.zero(); - if (zero == null) { - // fail - } else if (argument == null) { - if (ptype != int.class && wrap.isSubwordOrInt()) - return Integer.valueOf(0); - else - return zero; - } else if (VerifyType.isNullReferenceConversion(argument.getClass(), zero.getClass())) { - if (ptype != int.class && wrap.isSubwordOrInt()) - return Wrapper.INT.wrap(argument); - else - return argument; - } - throw badBoundArgumentException(argument, mh, argnum); + @Override + MethodHandle bindArgument(int pos, char basicType, Object value) { + MethodType type = type().dropParameterTypes(pos, pos+1); + LambdaForm form = internalForm().bind(1+pos, speciesData()); + return cloneExtend(type, form, basicType, value); } - final static RuntimeException badBoundArgumentException(Object argument, MethodHandle mh, int argnum) { - String atype = (argument == null) ? "null" : argument.getClass().toString(); - return new ClassCastException("cannot bind "+atype+" argument to parameter #"+argnum+" of "+mh.type()); + @Override + MethodHandle dropArguments(MethodType srcType, int pos, int drops) { + LambdaForm form = internalForm().addArguments(pos, srcType.parameterList().subList(pos, pos+drops)); + try { + return clone(srcType, form); + } catch (Throwable t) { + throw new InternalError(t); + } } @Override - String debugString() { - return addTypeString(baseName(), this); + MethodHandle permuteArguments(MethodType newType, int[] reorder) { + try { + return clone(newType, form.permuteArguments(1, reorder, basicTypes(newType.parameterList()))); + } catch (Throwable t) { + throw new InternalError(t); + } + } + + static final String EXTENSION_TYPES = "LIJFD"; + static final byte INDEX_L = 0, INDEX_I = 1, INDEX_J = 2, INDEX_F = 3, INDEX_D = 4; + static byte extensionIndex(char type) { + int i = EXTENSION_TYPES.indexOf(type); + if (i < 0) throw new InternalError(); + return (byte) i; + } + + /** + * Return the {@link SpeciesData} instance representing this BMH species. All subclasses must provide a + * static field containing this value, and they must accordingly implement this method. + */ + protected abstract SpeciesData speciesData(); + + @Override + final Object internalValues() { + Object[] boundValues = new Object[speciesData().fieldCount()]; + for (int i = 0; i < boundValues.length; ++i) { + boundValues[i] = arg(i); + } + return Arrays.asList(boundValues); + } + + public final Object arg(int i) { + try { + switch (speciesData().fieldType(i)) { + case 'L': return argL(i); + case 'I': return argI(i); + case 'F': return argF(i); + case 'D': return argD(i); + case 'J': return argJ(i); + } + } catch (Throwable ex) { + throw new InternalError(ex); + } + throw new InternalError("unexpected type: " + speciesData().types+"."+i); + } + public final Object argL(int i) throws Throwable { return speciesData().getters[i].invokeBasic(this); } + public final int argI(int i) throws Throwable { return (int) speciesData().getters[i].invokeBasic(this); } + public final float argF(int i) throws Throwable { return (float) speciesData().getters[i].invokeBasic(this); } + public final double argD(int i) throws Throwable { return (double) speciesData().getters[i].invokeBasic(this); } + public final long argJ(int i) throws Throwable { return (long) speciesData().getters[i].invokeBasic(this); } + + // + // cloning API + // + + public abstract BoundMethodHandle clone(MethodType mt, LambdaForm lf) throws Throwable; + public abstract BoundMethodHandle cloneExtendL(MethodType mt, LambdaForm lf, Object narg) throws Throwable; + public abstract BoundMethodHandle cloneExtendI(MethodType mt, LambdaForm lf, int narg) throws Throwable; + public abstract BoundMethodHandle cloneExtendJ(MethodType mt, LambdaForm lf, long narg) throws Throwable; + public abstract BoundMethodHandle cloneExtendF(MethodType mt, LambdaForm lf, float narg) throws Throwable; + public abstract BoundMethodHandle cloneExtendD(MethodType mt, LambdaForm lf, double narg) throws Throwable; + + // The following is a grossly irregular hack: + @Override MethodHandle reinvokerTarget() { + try { + return (MethodHandle) argL(0); + } catch (Throwable ex) { + throw new InternalError(ex); + } + } + + // + // concrete BMH classes required to close bootstrap loops + // + + private // make it private to force users to access the enclosing class first + static final class Species_L extends BoundMethodHandle { + final Object argL0; + public Species_L(MethodType mt, LambdaForm lf, Object argL0) { + super(mt, lf); + this.argL0 = argL0; + } + // The following is a grossly irregular hack: + @Override MethodHandle reinvokerTarget() { return (MethodHandle) argL0; } + @Override + public SpeciesData speciesData() { + return SPECIES_DATA; + } + public static final SpeciesData SPECIES_DATA = SpeciesData.getForClass("L", Species_L.class); + @Override + public final BoundMethodHandle clone(MethodType mt, LambdaForm lf) throws Throwable { + return new Species_L(mt, lf, argL0); + } + @Override + public final BoundMethodHandle cloneExtendL(MethodType mt, LambdaForm lf, Object narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_L).constructor[0].invokeBasic(mt, lf, argL0, narg); + } + @Override + public final BoundMethodHandle cloneExtendI(MethodType mt, LambdaForm lf, int narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_I).constructor[0].invokeBasic(mt, lf, argL0, narg); + } + @Override + public final BoundMethodHandle cloneExtendJ(MethodType mt, LambdaForm lf, long narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_J).constructor[0].invokeBasic(mt, lf, argL0, narg); + } + @Override + public final BoundMethodHandle cloneExtendF(MethodType mt, LambdaForm lf, float narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_F).constructor[0].invokeBasic(mt, lf, argL0, narg); + } + @Override + public final BoundMethodHandle cloneExtendD(MethodType mt, LambdaForm lf, double narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_D).constructor[0].invokeBasic(mt, lf, argL0, narg); + } + } + +/* + static final class Species_LL extends BoundMethodHandle { + final Object argL0; + final Object argL1; + public Species_LL(MethodType mt, LambdaForm lf, Object argL0, Object argL1) { + super(mt, lf); + this.argL0 = argL0; + this.argL1 = argL1; + } + @Override + public SpeciesData speciesData() { + return SPECIES_DATA; + } + public static final SpeciesData SPECIES_DATA = SpeciesData.getForClass("LL", Species_LL.class); + @Override + public final BoundMethodHandle clone(MethodType mt, LambdaForm lf) throws Throwable { + return new Species_LL(mt, lf, argL0, argL1); + } + @Override + public final BoundMethodHandle cloneExtendL(MethodType mt, LambdaForm lf, Object narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_L).constructor[0].invokeBasic(mt, lf, argL0, argL1, narg); + } + @Override + public final BoundMethodHandle cloneExtendI(MethodType mt, LambdaForm lf, int narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_I).constructor[0].invokeBasic(mt, lf, argL0, argL1, narg); + } + @Override + public final BoundMethodHandle cloneExtendJ(MethodType mt, LambdaForm lf, long narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_J).constructor[0].invokeBasic(mt, lf, argL0, argL1, narg); + } + @Override + public final BoundMethodHandle cloneExtendF(MethodType mt, LambdaForm lf, float narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_F).constructor[0].invokeBasic(mt, lf, argL0, argL1, narg); + } + @Override + public final BoundMethodHandle cloneExtendD(MethodType mt, LambdaForm lf, double narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_D).constructor[0].invokeBasic(mt, lf, argL0, argL1, narg); + } + } + + static final class Species_JL extends BoundMethodHandle { + final long argJ0; + final Object argL1; + public Species_JL(MethodType mt, LambdaForm lf, long argJ0, Object argL1) { + super(mt, lf); + this.argJ0 = argJ0; + this.argL1 = argL1; + } + @Override + public SpeciesData speciesData() { + return SPECIES_DATA; + } + public static final SpeciesData SPECIES_DATA = SpeciesData.getForClass("JL", Species_JL.class); + @Override public final long argJ0() { return argJ0; } + @Override public final Object argL1() { return argL1; } + @Override + public final BoundMethodHandle clone(MethodType mt, LambdaForm lf) throws Throwable { + return new Species_JL(mt, lf, argJ0, argL1); + } + @Override + public final BoundMethodHandle cloneExtendL(MethodType mt, LambdaForm lf, Object narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_L).constructor[0].invokeBasic(mt, lf, argJ0, argL1, narg); + } + @Override + public final BoundMethodHandle cloneExtendI(MethodType mt, LambdaForm lf, int narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_I).constructor[0].invokeBasic(mt, lf, argJ0, argL1, narg); + } + @Override + public final BoundMethodHandle cloneExtendJ(MethodType mt, LambdaForm lf, long narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_J).constructor[0].invokeBasic(mt, lf, argJ0, argL1, narg); + } + @Override + public final BoundMethodHandle cloneExtendF(MethodType mt, LambdaForm lf, float narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_F).constructor[0].invokeBasic(mt, lf, argJ0, argL1, narg); + } + @Override + public final BoundMethodHandle cloneExtendD(MethodType mt, LambdaForm lf, double narg) throws Throwable { + return (BoundMethodHandle) SPECIES_DATA.extendWithIndex(INDEX_D).constructor[0].invokeBasic(mt, lf, argJ0, argL1, narg); + } + } +*/ + + // + // BMH species meta-data + // + + /** + * Meta-data wrapper for concrete BMH classes. + */ + static class SpeciesData { + final String types; + final Class clazz; + // Bootstrapping requires circular relations MH -> BMH -> SpeciesData -> MH + // Therefore, we need a non-final link in the chain. Use array elements. + final MethodHandle[] constructor; + final MethodHandle[] getters; + final SpeciesData[] extensions; + + public int fieldCount() { + return types.length(); + } + public char fieldType(int i) { + return types.charAt(i); + } + + public String toString() { + return "SpeciesData["+(isPlaceholder() ? "" : clazz.getSimpleName())+":"+types+"]"; + } + + /** + * Return a {@link LambdaForm.Name} containing a {@link LambdaForm.NamedFunction} that + * represents a MH bound to a generic invoker, which in turn forwards to the corresponding + * getter. + */ + Name getterName(Name mhName, int i) { + MethodHandle mh = getters[i]; + assert(mh != null) : this+"."+i; + return new Name(mh, mhName); + } + + static final SpeciesData EMPTY = new SpeciesData("", BoundMethodHandle.class); + + private SpeciesData(String types, Class clazz) { + this.types = types; + this.clazz = clazz; + if (!INIT_DONE) { + this.constructor = new MethodHandle[1]; + this.getters = new MethodHandle[types.length()]; + } else { + this.constructor = Factory.makeCtors(clazz, types, null); + this.getters = Factory.makeGetters(clazz, types, null); + } + this.extensions = new SpeciesData[EXTENSION_TYPES.length()]; + } + + private void initForBootstrap() { + assert(!INIT_DONE); + if (constructor[0] == null) { + Factory.makeCtors(clazz, types, this.constructor); + Factory.makeGetters(clazz, types, this.getters); + } + } + + private SpeciesData(String types) { + // Placeholder only. + this.types = types; + this.clazz = null; + this.constructor = null; + this.getters = null; + this.extensions = null; + } + private boolean isPlaceholder() { return clazz == null; } + + private static final HashMap CACHE = new HashMap<>(); + private static final boolean INIT_DONE; // set after finishes... + + SpeciesData extendWithType(char type) { + int i = extensionIndex(type); + SpeciesData d = extensions[i]; + if (d != null) return d; + extensions[i] = d = get(types+type); + return d; + } + + SpeciesData extendWithIndex(byte index) { + SpeciesData d = extensions[index]; + if (d != null) return d; + extensions[index] = d = get(types+EXTENSION_TYPES.charAt(index)); + return d; + } + + private static SpeciesData get(String types) { + // Acquire cache lock for query. + SpeciesData d = lookupCache(types); + if (!d.isPlaceholder()) + return d; + synchronized (d) { + // Use synch. on the placeholder to prevent multiple instantiation of one species. + // Creating this class forces a recursive call to getForClass. + if (lookupCache(types).isPlaceholder()) + Factory.generateConcreteBMHClass(types); + } + // Reacquire cache lock. + d = lookupCache(types); + // Class loading must have upgraded the cache. + assert(d != null && !d.isPlaceholder()); + return d; + } + static SpeciesData getForClass(String types, Class clazz) { + // clazz is a new class which is initializing its SPECIES_DATA field + return updateCache(types, new SpeciesData(types, clazz)); + } + private static synchronized SpeciesData lookupCache(String types) { + SpeciesData d = CACHE.get(types); + if (d != null) return d; + d = new SpeciesData(types); + assert(d.isPlaceholder()); + CACHE.put(types, d); + return d; + } + private static synchronized SpeciesData updateCache(String types, SpeciesData d) { + SpeciesData d2; + assert((d2 = CACHE.get(types)) == null || d2.isPlaceholder()); + assert(!d.isPlaceholder()); + CACHE.put(types, d); + return d; + } + + static { + // pre-fill the BMH speciesdata cache with BMH's inner classes + final Class rootCls = BoundMethodHandle.class; + SpeciesData d0 = BoundMethodHandle.SPECIES_DATA; // trigger class init + assert(d0 == null || d0 == lookupCache("")) : d0; + try { + for (Class c : rootCls.getDeclaredClasses()) { + if (rootCls.isAssignableFrom(c)) { + final Class cbmh = c.asSubclass(BoundMethodHandle.class); + SpeciesData d = Factory.speciesDataFromConcreteBMHClass(cbmh); + assert(d != null) : cbmh.getName(); + assert(d.clazz == cbmh); + assert(d == lookupCache(d.types)); + } + } + } catch (Throwable e) { + throw new InternalError(e); + } + + for (SpeciesData d : CACHE.values()) { + d.initForBootstrap(); + } + // Note: Do not simplify this, because INIT_DONE must not be + // a compile-time constant during bootstrapping. + INIT_DONE = Boolean.TRUE; + } + } + + static SpeciesData getSpeciesData(String types) { + return SpeciesData.get(types); } - /** Component of toString() before the type string. */ - protected String baseName() { - MethodHandle mh = this; - while (mh instanceof BoundMethodHandle) { - Object info = MethodHandleNatives.getTargetInfo(mh); - if (info instanceof MethodHandle) { - mh = (MethodHandle) info; - } else { - String name = null; - if (info instanceof MemberName) - name = ((MemberName)info).getName(); - if (name != null) - return name; - else - return noParens(super.toString()); // "invoke", probably + /** + * Generation of concrete BMH classes. + * + * A concrete BMH species is fit for binding a number of values adhering to a + * given type pattern. Reference types are erased. + * + * BMH species are cached by type pattern. + * + * A BMH species has a number of fields with the concrete (possibly erased) types of + * bound values. Setters are provided as an API in BMH. Getters are exposed as MHs, + * which can be included as names in lambda forms. + */ + static class Factory { + + static final String JLO_SIG = "Ljava/lang/Object;"; + static final String JLS_SIG = "Ljava/lang/String;"; + static final String JLC_SIG = "Ljava/lang/Class;"; + static final String MH = "java/lang/invoke/MethodHandle"; + static final String MH_SIG = "L"+MH+";"; + static final String BMH = "java/lang/invoke/BoundMethodHandle"; + static final String BMH_SIG = "L"+BMH+";"; + static final String SPECIES_DATA = "java/lang/invoke/BoundMethodHandle$SpeciesData"; + static final String SPECIES_DATA_SIG = "L"+SPECIES_DATA+";"; + + static final String SPECIES_PREFIX_NAME = "Species_"; + static final String SPECIES_PREFIX_PATH = BMH + "$" + SPECIES_PREFIX_NAME; + + static final String BMHSPECIES_DATA_EWI_SIG = "(B)" + SPECIES_DATA_SIG; + static final String BMHSPECIES_DATA_GFC_SIG = "(" + JLS_SIG + JLC_SIG + ")" + SPECIES_DATA_SIG; + static final String MYSPECIES_DATA_SIG = "()" + SPECIES_DATA_SIG; + static final String VOID_SIG = "()V"; + + static final String SIG_INCIPIT = "(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;"; + + static final Class[] TYPES = new Class[] { Object.class, int.class, long.class, float.class, double.class }; + + static final String[] E_THROWABLE = new String[] { "java/lang/Throwable" }; + + /** + * Generate a concrete subclass of BMH for a given combination of bound types. + * + * A concrete BMH species adheres to the following schema: + * + *

+         * class Species_<> extends BoundMethodHandle {
+         *     <>
+         *     final SpeciesData speciesData() { return SpeciesData.get("<>"); }
+         * }
+         * 
+ * + * The {@code <>} signature is precisely the string that is passed to this + * method. + * + * The {@code <>} section consists of one field definition per character in + * the type signature, adhering to the naming schema described in the definition of + * {@link #makeFieldName()}. + * + * For example, a concrete BMH species for two reference and one integral bound values + * would have the following shape: + * + *
+         * class BoundMethodHandle { ... private static
+         * final class Species_LLI extends BoundMethodHandle {
+         *     final Object argL0;
+         *     final Object argL1;
+         *     final int argI2;
+         *     public Species_LLI(MethodType mt, LambdaForm lf, Object argL0, Object argL1, int argI2) {
+         *         super(mt, lf);
+         *         this.argL0 = argL0;
+         *         this.argL1 = argL1;
+         *         this.argI2 = argI2;
+         *     }
+         *     public final SpeciesData speciesData() { return SPECIES_DATA; }
+         *     public static final SpeciesData SPECIES_DATA = SpeciesData.getForClass("LLI", Species_LLI.class);
+         *     public final BoundMethodHandle clone(MethodType mt, LambdaForm lf) {
+         *         return SPECIES_DATA.constructor[0].invokeBasic(mt, lf, argL0, argL1, argI2);
+         *     }
+         *     public final BoundMethodHandle cloneExtendL(MethodType mt, LambdaForm lf, Object narg) {
+         *         return SPECIES_DATA.extendWithIndex(INDEX_L).constructor[0].invokeBasic(mt, lf, argL0, argL1, argI2, narg);
+         *     }
+         *     public final BoundMethodHandle cloneExtendI(MethodType mt, LambdaForm lf, int narg) {
+         *         return SPECIES_DATA.extendWithIndex(INDEX_I).constructor[0].invokeBasic(mt, lf, argL0, argL1, argI2, narg);
+         *     }
+         *     public final BoundMethodHandle cloneExtendJ(MethodType mt, LambdaForm lf, long narg) {
+         *         return SPECIES_DATA.extendWithIndex(INDEX_J).constructor[0].invokeBasic(mt, lf, argL0, argL1, argI2, narg);
+         *     }
+         *     public final BoundMethodHandle cloneExtendF(MethodType mt, LambdaForm lf, float narg) {
+         *         return SPECIES_DATA.extendWithIndex(INDEX_F).constructor[0].invokeBasic(mt, lf, argL0, argL1, argI2, narg);
+         *     }
+         *     public final BoundMethodHandle cloneExtendD(MethodType mt, LambdaForm lf, double narg) {
+         *         return SPECIES_DATA.extendWithIndex(INDEX_D).constructor[0].invokeBasic(mt, lf, argL0, argL1, argI2, narg);
+         *     }
+         * }
+         * 
+ * + * @param types the type signature, wherein reference types are erased to 'L' + * @return the generated concrete BMH class + */ + static Class generateConcreteBMHClass(String types) { + final ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS + ClassWriter.COMPUTE_FRAMES); + + final String className = SPECIES_PREFIX_PATH + types; + final String sourceFile = SPECIES_PREFIX_NAME + types; + cw.visit(V1_6, ACC_PUBLIC + ACC_FINAL + ACC_SUPER, className, null, BMH, null); + cw.visitSource(sourceFile, null); + + // emit static types and SPECIES_DATA fields + cw.visitField(ACC_PUBLIC + ACC_STATIC, "SPECIES_DATA", SPECIES_DATA_SIG, null, null).visitEnd(); + + // emit bound argument fields + for (int i = 0; i < types.length(); ++i) { + final char t = types.charAt(i); + final String fieldName = makeFieldName(types, i); + final String fieldDesc = t == 'L' ? JLO_SIG : String.valueOf(t); + cw.visitField(ACC_FINAL, fieldName, fieldDesc, null, null).visitEnd(); + } + + MethodVisitor mv; + + // emit constructor + mv = cw.visitMethod(ACC_PUBLIC, "", makeSignature(types, true), null, null); + mv.visitCode(); + mv.visitVarInsn(ALOAD, 0); + mv.visitVarInsn(ALOAD, 1); + mv.visitVarInsn(ALOAD, 2); + + mv.visitMethodInsn(INVOKESPECIAL, BMH, "", makeSignature("", true)); + + for (int i = 0, j = 0; i < types.length(); ++i, ++j) { + // i counts the arguments, j counts corresponding argument slots + char t = types.charAt(i); + mv.visitVarInsn(ALOAD, 0); + mv.visitVarInsn(typeLoadOp(t), j + 3); // parameters start at 3 + mv.visitFieldInsn(PUTFIELD, className, makeFieldName(types, i), typeSig(t)); + if (t == 'J' || t == 'D') { + ++j; // adjust argument register access + } } - assert(mh != this); + + mv.visitInsn(RETURN); + mv.visitMaxs(0, 0); + mv.visitEnd(); + + // emit implementation of reinvokerTarget() + mv = cw.visitMethod(ACC_PUBLIC + ACC_FINAL, "reinvokerTarget", "()" + MH_SIG, null, null); + mv.visitCode(); + mv.visitVarInsn(ALOAD, 0); + mv.visitFieldInsn(GETFIELD, className, "argL0", JLO_SIG); + mv.visitTypeInsn(CHECKCAST, MH); + mv.visitInsn(ARETURN); + mv.visitMaxs(0, 0); + mv.visitEnd(); + + // emit implementation of speciesData() + mv = cw.visitMethod(ACC_PUBLIC + ACC_FINAL, "speciesData", MYSPECIES_DATA_SIG, null, null); + mv.visitCode(); + mv.visitFieldInsn(GETSTATIC, className, "SPECIES_DATA", SPECIES_DATA_SIG); + mv.visitInsn(ARETURN); + mv.visitMaxs(0, 0); + mv.visitEnd(); + + // emit clone() + mv = cw.visitMethod(ACC_PUBLIC + ACC_FINAL, "clone", makeSignature("", false), null, E_THROWABLE); + mv.visitCode(); + // return speciesData().constructor[0].invokeBasic(mt, lf, argL0, ...) + // obtain constructor + mv.visitVarInsn(ALOAD, 0); + mv.visitFieldInsn(GETSTATIC, className, "SPECIES_DATA", SPECIES_DATA_SIG); + mv.visitFieldInsn(GETFIELD, SPECIES_DATA, "constructor", "[" + MH_SIG); + mv.visitInsn(ICONST_0); + mv.visitInsn(AALOAD); + // load mt, lf + mv.visitVarInsn(ALOAD, 1); + mv.visitVarInsn(ALOAD, 2); + // put fields on the stack + emitPushFields(types, className, mv); + // finally, invoke the constructor and return + mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types, false)); + mv.visitInsn(ARETURN); + mv.visitMaxs(0, 0); + mv.visitEnd(); + + // for each type, emit cloneExtendT() + for (Class c : TYPES) { + char t = Wrapper.basicTypeChar(c); + mv = cw.visitMethod(ACC_PUBLIC + ACC_FINAL, "cloneExtend" + t, makeSignature(String.valueOf(t), false), null, E_THROWABLE); + mv.visitCode(); + // return SPECIES_DATA.extendWithIndex(extensionIndex(t)).constructor[0].invokeBasic(mt, lf, argL0, ..., narg) + // obtain constructor + mv.visitFieldInsn(GETSTATIC, className, "SPECIES_DATA", SPECIES_DATA_SIG); + int iconstInsn = ICONST_0 + extensionIndex(t); + assert(iconstInsn <= ICONST_5); + mv.visitInsn(iconstInsn); + mv.visitMethodInsn(INVOKEVIRTUAL, SPECIES_DATA, "extendWithIndex", BMHSPECIES_DATA_EWI_SIG); + mv.visitFieldInsn(GETFIELD, SPECIES_DATA, "constructor", "[" + MH_SIG); + mv.visitInsn(ICONST_0); + mv.visitInsn(AALOAD); + // load mt, lf + mv.visitVarInsn(ALOAD, 1); + mv.visitVarInsn(ALOAD, 2); + // put fields on the stack + emitPushFields(types, className, mv); + // put narg on stack + mv.visitVarInsn(typeLoadOp(t), 3); + // finally, invoke the constructor and return + mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types + t, false)); + mv.visitInsn(ARETURN); + mv.visitMaxs(0, 0); + mv.visitEnd(); + } + + // emit class initializer + mv = cw.visitMethod(ACC_PUBLIC | ACC_STATIC, "", VOID_SIG, null, null); + mv.visitCode(); + mv.visitLdcInsn(types); + mv.visitLdcInsn(Type.getObjectType(className)); + mv.visitMethodInsn(INVOKESTATIC, SPECIES_DATA, "getForClass", BMHSPECIES_DATA_GFC_SIG); + mv.visitFieldInsn(PUTSTATIC, className, "SPECIES_DATA", SPECIES_DATA_SIG); + mv.visitInsn(RETURN); + mv.visitMaxs(0, 0); + mv.visitEnd(); + + cw.visitEnd(); + + // load class + final byte[] classFile = cw.toByteArray(); + InvokerBytecodeGenerator.maybeDump(className, classFile); + Class bmhClass = + //UNSAFE.defineAnonymousClass(BoundMethodHandle.class, classFile, null).asSubclass(BoundMethodHandle.class); + UNSAFE.defineClass(className, classFile, 0, classFile.length).asSubclass(BoundMethodHandle.class); + UNSAFE.ensureClassInitialized(bmhClass); + + return bmhClass; + } + + private static int typeLoadOp(char t) { + switch (t) { + case 'L': return ALOAD; + case 'I': return ILOAD; + case 'J': return LLOAD; + case 'F': return FLOAD; + case 'D': return DLOAD; + default : throw new InternalError("unrecognized type " + t); + } } - return noParens(mh.toString()); + + private static void emitPushFields(String types, String className, MethodVisitor mv) { + for (int i = 0; i < types.length(); ++i) { + char tc = types.charAt(i); + mv.visitVarInsn(ALOAD, 0); + mv.visitFieldInsn(GETFIELD, className, makeFieldName(types, i), typeSig(tc)); + } + } + + static String typeSig(char t) { + return t == 'L' ? JLO_SIG : String.valueOf(t); + } + + // + // Getter MH generation. + // + + private static MethodHandle makeGetter(Class cbmhClass, String types, int index) { + String fieldName = makeFieldName(types, index); + Class fieldType = Wrapper.forBasicType(types.charAt(index)).primitiveType(); + try { + return LOOKUP.findGetter(cbmhClass, fieldName, fieldType); + } catch (NoSuchFieldException | IllegalAccessException e) { + throw new InternalError(e); + } + } + + static MethodHandle[] makeGetters(Class cbmhClass, String types, MethodHandle[] mhs) { + if (mhs == null) mhs = new MethodHandle[types.length()]; + for (int i = 0; i < mhs.length; ++i) { + mhs[i] = makeGetter(cbmhClass, types, i); + assert(mhs[i].internalMemberName().getDeclaringClass() == cbmhClass); + } + return mhs; + } + + static MethodHandle[] makeCtors(Class cbmh, String types, MethodHandle mhs[]) { + if (mhs == null) mhs = new MethodHandle[1]; + mhs[0] = makeCbmhCtor(cbmh, types); + return mhs; + } + + // + // Auxiliary methods. + // + + static SpeciesData speciesDataFromConcreteBMHClass(Class cbmh) { + try { + Field F_SPECIES_DATA = cbmh.getDeclaredField("SPECIES_DATA"); + return (SpeciesData) F_SPECIES_DATA.get(null); + } catch (ReflectiveOperationException ex) { + throw new InternalError(ex); + } + } + + /** + * Field names in concrete BMHs adhere to this pattern: + * arg + type + index + * where type is a single character (L, I, J, F, D). + */ + private static String makeFieldName(String types, int index) { + assert index >= 0 && index < types.length(); + return "arg" + types.charAt(index) + index; + } + + private static String makeSignature(String types, boolean ctor) { + StringBuilder buf = new StringBuilder(SIG_INCIPIT); + for (char c : types.toCharArray()) { + buf.append(typeSig(c)); + } + return buf.append(')').append(ctor ? "V" : BMH_SIG).toString(); + } + + static MethodHandle makeCbmhCtor(Class cbmh, String types) { + try { + return linkConstructor(LOOKUP.findConstructor(cbmh, MethodType.fromMethodDescriptorString(makeSignature(types, true), null))); + } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException | TypeNotPresentException e) { + throw new InternalError(e); + } + } + + /** + * Wrap a constructor call in a {@link LambdaForm}. + * + * If constructors ({@code } methods) are called in LFs, problems might arise if the LFs + * are turned into bytecode, because the call to the allocator is routed through an MH, and the + * verifier cannot find a {@code NEW} instruction preceding the {@code INVOKESPECIAL} to + * {@code }. To avoid this, we add an indirection by invoking {@code } through + * {@link MethodHandle#linkToSpecial}. + * + * The last {@link LambdaForm#Name Name} in the argument's form is expected to be the {@code void} + * result of the {@code } invocation. This entry is replaced. + */ + private static MethodHandle linkConstructor(MethodHandle cmh) { + final LambdaForm lf = cmh.form; + final int initNameIndex = lf.names.length - 1; + final Name initName = lf.names[initNameIndex]; + final MemberName ctorMN = initName.function.member; + final MethodType ctorMT = ctorMN.getInvocationType(); + + // obtain function member (call target) + // linker method type replaces initial parameter (BMH species) with BMH to avoid naming a species (anonymous class!) + final MethodType linkerMT = ctorMT.changeParameterType(0, BoundMethodHandle.class).appendParameterTypes(MemberName.class); + MemberName linkerMN = new MemberName(MethodHandle.class, "linkToSpecial", linkerMT, REF_invokeStatic); + try { + linkerMN = MemberName.getFactory().resolveOrFail(REF_invokeStatic, linkerMN, null, NoSuchMethodException.class); + assert(linkerMN.isStatic()); + } catch (ReflectiveOperationException ex) { + throw new InternalError(ex); + } + // extend arguments array + Object[] newArgs = Arrays.copyOf(initName.arguments, initName.arguments.length + 1); + newArgs[newArgs.length - 1] = ctorMN; + // replace function + final NamedFunction nf = new NamedFunction(linkerMN); + final Name linkedCtor = new Name(nf, newArgs); + linkedCtor.initIndex(initNameIndex); + lf.names[initNameIndex] = linkedCtor; + return cmh; + } + } - private static String noParens(String str) { - int paren = str.indexOf('('); - if (paren >= 0) str = str.substring(0, paren); - return str; - } + private static final Lookup LOOKUP = Lookup.IMPL_LOOKUP; + + /** + * All subclasses must provide such a value describing their type signature. + */ + static final SpeciesData SPECIES_DATA = SpeciesData.EMPTY; } diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/CallSite.java --- a/src/share/classes/java/lang/invoke/CallSite.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/invoke/CallSite.java Fri Aug 24 09:29:17 2012 +0100 @@ -26,7 +26,7 @@ package java.lang.invoke; import sun.invoke.empty.Empty; -import sun.misc.Unsafe; +import static java.lang.invoke.MethodHandleStatics.*; import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; /** @@ -86,13 +86,9 @@ public class CallSite { static { MethodHandleImpl.initStatics(); } - // Fields used only by the JVM. Do not use or change. - private MemberName vmmethod; // supplied by the JVM (ref. to calling method) - private int vmindex; // supplied by the JVM (BCI within calling method) - // The actual payload of this call site: /*package-private*/ - MethodHandle target; + MethodHandle target; // Note: This field is known to the JVM. Do not change. /** * Make a blank call site object with the given method type. @@ -151,24 +147,6 @@ return target.type(); } - /** Called from JVM (or low-level Java code) after the BSM returns the newly created CallSite. - * The parameters are JVM-specific. - */ - void initializeFromJVM(String name, - MethodType type, - MemberName callerMethod, - int callerBCI) { - if (this.vmmethod != null) { - // FIXME - throw new BootstrapMethodError("call site has already been linked to an invokedynamic instruction"); - } - if (!this.type().equals(type)) { - throw wrongTargetType(target, type); - } - this.vmindex = callerBCI; - this.vmmethod = callerMethod; - } - /** * Returns the target method of the call site, according to the * behavior defined by this call site's specific class. @@ -233,7 +211,7 @@ public abstract MethodHandle dynamicInvoker(); /*non-public*/ MethodHandle makeDynamicInvoker() { - MethodHandle getTarget = MethodHandleImpl.bindReceiver(GET_TARGET, this); + MethodHandle getTarget = GET_TARGET.bindReceiver(this); MethodHandle invoker = MethodHandles.exactInvoker(this.type()); return MethodHandles.foldArguments(invoker, getTarget); } @@ -255,12 +233,10 @@ } // unsafe stuff: - private static final Unsafe unsafe = Unsafe.getUnsafe(); private static final long TARGET_OFFSET; - static { try { - TARGET_OFFSET = unsafe.objectFieldOffset(CallSite.class.getDeclaredField("target")); + TARGET_OFFSET = UNSAFE.objectFieldOffset(CallSite.class.getDeclaredField("target")); } catch (Exception ex) { throw new Error(ex); } } @@ -270,7 +246,7 @@ } /*package-private*/ MethodHandle getTargetVolatile() { - return (MethodHandle) unsafe.getObjectVolatile(this, TARGET_OFFSET); + return (MethodHandle) UNSAFE.getObjectVolatile(this, TARGET_OFFSET); } /*package-private*/ void setTargetVolatile(MethodHandle newTarget) { @@ -284,8 +260,7 @@ // Extra arguments for BSM, if any: Object info, // Caller information: - MemberName callerMethod, int callerBCI) { - Class callerClass = callerMethod.getDeclaringClass(); + Class callerClass) { Object caller = IMPL_LOOKUP.in(callerClass); CallSite site; try { diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/CountingMethodHandle.java --- a/src/share/classes/java/lang/invoke/CountingMethodHandle.java Fri Aug 03 20:56:16 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package java.lang.invoke; - -import static java.lang.invoke.MethodHandleNatives.Constants.*; - -/** - * This method handle is used to optionally provide a count of how - * many times it was invoked. - * - * @author never - */ -class CountingMethodHandle extends AdapterMethodHandle { - private int vmcount; - - private CountingMethodHandle(MethodHandle target) { - super(target, target.type(), AdapterMethodHandle.makeConv(OP_RETYPE_ONLY)); - } - - /** Wrap the incoming MethodHandle in a CountingMethodHandle if they are enabled */ - static MethodHandle wrap(MethodHandle mh) { - if (MethodHandleNatives.COUNT_GWT) { - return new CountingMethodHandle(mh); - } - return mh; - } -} diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/DirectMethodHandle.java --- a/src/share/classes/java/lang/invoke/DirectMethodHandle.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/invoke/DirectMethodHandle.java Fri Aug 24 09:29:17 2012 +0100 @@ -25,29 +25,635 @@ package java.lang.invoke; +import sun.misc.Unsafe; +import java.lang.reflect.Method; +import java.util.Arrays; +import sun.invoke.util.VerifyAccess; import static java.lang.invoke.MethodHandleNatives.Constants.*; +import static java.lang.invoke.LambdaForm.*; +import static java.lang.invoke.MethodTypeForm.*; +import static java.lang.invoke.MethodHandleStatics.*; +import java.lang.ref.WeakReference; +import java.lang.reflect.Field; +import sun.invoke.util.ValueConversions; +import sun.invoke.util.VerifyType; +import sun.invoke.util.Wrapper; /** - * The flavor of method handle which emulates invokespecial or invokestatic. + * The flavor of method handle which implements a constant reference + * to a class member. * @author jrose */ class DirectMethodHandle extends MethodHandle { - //inherited oop vmtarget; // methodOop or virtual class/interface oop - private final int vmindex; // method index within class or interface - { vmindex = VM_INDEX_UNINITIALIZED; } // JVM may change this + final MemberName member; + + // Constructors and factory methods in this class *must* be package scoped or private. + private DirectMethodHandle(MethodType mtype, LambdaForm form, MemberName member) { + super(mtype, form); + if (!member.isResolved()) throw new InternalError(); + this.member = member; + } + + // Factory methods: + + static DirectMethodHandle make(Class receiver, MemberName member) { + MethodType mtype = member.getMethodOrFieldType(); + if (!member.isStatic()) { + if (!member.getDeclaringClass().isAssignableFrom(receiver) || member.isConstructor()) + throw new InternalError(member.toString()); + mtype = mtype.insertParameterTypes(0, receiver); + } + if (!member.isField()) { + LambdaForm lform = preparedLambdaForm(member); + return new DirectMethodHandle(mtype, lform, member); + } else { + LambdaForm lform = preparedFieldLambdaForm(member); + if (member.isStatic()) { + long offset = MethodHandleNatives.staticFieldOffset(member); + Object base = MethodHandleNatives.staticFieldBase(member); + return new StaticAccessor(mtype, lform, member, base, offset); + } else { + long offset = MethodHandleNatives.objectFieldOffset(member); + assert(offset == (int)offset); + return new Accessor(mtype, lform, member, (int)offset); + } + } + } + static DirectMethodHandle make(MemberName member) { + if (member.isConstructor()) + return makeAllocator(member); + return make(member.getDeclaringClass(), member); + } + static DirectMethodHandle make(Method method) { + return make(method.getDeclaringClass(), new MemberName(method)); + } + static DirectMethodHandle make(Field field) { + return make(field.getDeclaringClass(), new MemberName(field)); + } + private static DirectMethodHandle makeAllocator(MemberName ctor) { + assert(ctor.isConstructor() && ctor.getName().equals("")); + Class instanceClass = ctor.getDeclaringClass(); + ctor = ctor.asConstructor(); + assert(ctor.isConstructor() && ctor.getReferenceKind() == REF_newInvokeSpecial) : ctor; + MethodType mtype = ctor.getMethodType().changeReturnType(instanceClass); + LambdaForm lform = preparedLambdaForm(ctor); + MemberName init = ctor.asSpecial(); + assert(init.getMethodType().returnType() == void.class); + return new Constructor(mtype, lform, ctor, init, instanceClass); + } + + @Override + MethodHandle copyWith(MethodType mt, LambdaForm lf) { + return new DirectMethodHandle(mt, lf, member); + } + + @Override + String debugString() { + return "DMH["+member.toString()+"]="+super.debugString(); + } + + //// Implementation methods. + @Override + @ForceInline + MemberName internalMemberName() { + return member; + } + + @Override + MethodHandle bindArgument(int pos, char basicType, Object value) { + // If the member needs dispatching, do so. + if (pos == 0 && basicType == 'L') { + DirectMethodHandle concrete = maybeRebind(value); + if (concrete != null) + return concrete.bindReceiver(value); + } + return super.bindArgument(pos, basicType, value); + } + + @Override + MethodHandle bindReceiver(Object receiver) { + // If the member needs dispatching, do so. + DirectMethodHandle concrete = maybeRebind(receiver); + if (concrete != null) + return concrete.bindReceiver(receiver); + return super.bindReceiver(receiver); + } + + private static final MemberName.Factory IMPL_NAMES = MemberName.getFactory(); + + private DirectMethodHandle maybeRebind(Object receiver) { + if (receiver != null) { + switch (member.getReferenceKind()) { + case REF_invokeInterface: + case REF_invokeVirtual: + // Pre-dispatch the member. + Class concreteClass = receiver.getClass(); + MemberName concrete = new MemberName(concreteClass, member.getName(), member.getMethodType(), REF_invokeSpecial); + concrete = IMPL_NAMES.resolveOrNull(REF_invokeSpecial, concrete, concreteClass); + if (concrete != null) + return new DirectMethodHandle(type(), preparedLambdaForm(concrete), concrete); + break; + } + } + return null; + } - // Constructors in this class *must* be package scoped or private. - DirectMethodHandle(MethodType mtype, MemberName m, boolean doDispatch, Class lookupClass) { - super(mtype); + /** + * Create a LF which can invoke the given method. + * Cache and share this structure among all methods with + * the same basicType and refKind. + */ + private static LambdaForm preparedLambdaForm(MemberName m) { + assert(m.isInvocable()) : m; // call preparedFieldLambdaForm instead + MethodType mtype = m.getInvocationType().basicType(); + assert(!m.isMethodHandleInvoke() || "invokeBasic".equals(m.getName())) : m; + int which; + switch (m.getReferenceKind()) { + case REF_invokeVirtual: which = LF_INVVIRTUAL; break; + case REF_invokeStatic: which = LF_INVSTATIC; break; + case REF_invokeSpecial: which = LF_INVSPECIAL; break; + case REF_invokeInterface: which = LF_INVINTERFACE; break; + case REF_newInvokeSpecial: which = LF_NEWINVSPECIAL; break; + default: throw new InternalError(m.toString()); + } + if (which == LF_INVSTATIC && shouldBeInitialized(m)) { + // precompute the barrier-free version: + preparedLambdaForm(mtype, which); + which = LF_INVSTATIC_INIT; + } + LambdaForm lform = preparedLambdaForm(mtype, which); + maybeCompile(lform, m); + assert(lform.methodType().dropParameterTypes(0, 1) + .equals(m.getInvocationType().basicType())) + : Arrays.asList(m, m.getInvocationType().basicType(), lform, lform.methodType()); + return lform; + } + + private static LambdaForm preparedLambdaForm(MethodType mtype, int which) { + LambdaForm lform = mtype.form().cachedLambdaForm(which); + if (lform != null) return lform; + lform = makePreparedLambdaForm(mtype, which); + return mtype.form().setCachedLambdaForm(which, lform); + } - assert(m.isMethod() || !doDispatch && m.isConstructor()); - if (!m.isResolved()) - throw new InternalError(); + private static LambdaForm makePreparedLambdaForm(MethodType mtype, int which) { + boolean needsInit = (which == LF_INVSTATIC_INIT); + boolean doesAlloc = (which == LF_NEWINVSPECIAL); + String linkerName, lambdaName; + switch (which) { + case LF_INVVIRTUAL: linkerName = "linkToVirtual"; lambdaName = "DMH.invokeVirtual"; break; + case LF_INVSTATIC: linkerName = "linkToStatic"; lambdaName = "DMH.invokeStatic"; break; + case LF_INVSTATIC_INIT:linkerName = "linkToStatic"; lambdaName = "DMH.invokeStaticInit"; break; + case LF_INVSPECIAL: linkerName = "linkToSpecial"; lambdaName = "DMH.invokeSpecial"; break; + case LF_INVINTERFACE: linkerName = "linkToInterface"; lambdaName = "DMH.invokeInterface"; break; + case LF_NEWINVSPECIAL: linkerName = "linkToSpecial"; lambdaName = "DMH.newInvokeSpecial"; break; + default: throw new InternalError("which="+which); + } + MethodType mtypeWithArg = mtype.appendParameterTypes(MemberName.class); + if (doesAlloc) + mtypeWithArg = mtypeWithArg + .insertParameterTypes(0, Object.class) // insert newly allocated obj + .changeReturnType(void.class); // returns void + MemberName linker = new MemberName(MethodHandle.class, linkerName, mtypeWithArg, REF_invokeStatic); + try { + linker = IMPL_NAMES.resolveOrFail(REF_invokeStatic, linker, null, NoSuchMethodException.class); + } catch (ReflectiveOperationException ex) { + throw new InternalError(ex); + } + final int DMH_THIS = 0; + final int ARG_BASE = 1; + final int ARG_LIMIT = ARG_BASE + mtype.parameterCount(); + int nameCursor = ARG_LIMIT; + final int NEW_OBJ = (doesAlloc ? nameCursor++ : -1); + final int GET_MEMBER = nameCursor++; + final int LINKER_CALL = nameCursor++; + Name[] names = arguments(nameCursor - ARG_LIMIT, mtype.invokerType()); + assert(names.length == nameCursor); + if (doesAlloc) { + // names = { argx,y,z,... new C, init method } + names[NEW_OBJ] = new Name(NF_allocateInstance, names[DMH_THIS]); + names[GET_MEMBER] = new Name(NF_constructorMethod, names[DMH_THIS]); + } else if (needsInit) { + names[GET_MEMBER] = new Name(NF_internalMemberNameEnsureInit, names[DMH_THIS]); + } else { + names[GET_MEMBER] = new Name(NF_internalMemberName, names[DMH_THIS]); + } + Object[] outArgs = Arrays.copyOfRange(names, ARG_BASE, GET_MEMBER+1, Object[].class); + assert(outArgs[outArgs.length-1] == names[GET_MEMBER]); // look, shifted args! + int result = LambdaForm.LAST_RESULT; + if (doesAlloc) { + assert(outArgs[outArgs.length-2] == names[NEW_OBJ]); // got to move this one + System.arraycopy(outArgs, 0, outArgs, 1, outArgs.length-2); + outArgs[0] = names[NEW_OBJ]; + result = NEW_OBJ; + } + names[LINKER_CALL] = new Name(linker, outArgs); + lambdaName += "_" + LambdaForm.basicTypeSignature(mtype); + LambdaForm lform = new LambdaForm(lambdaName, ARG_LIMIT, names, result); + // This is a tricky bit of code. Don't send it through the LF interpreter. + lform.compileToBytecode(); + return lform; + } - MethodHandleNatives.init(this, (Object) m, doDispatch, lookupClass); + private static void maybeCompile(LambdaForm lform, MemberName m) { + if (VerifyAccess.isSamePackage(m.getDeclaringClass(), MethodHandle.class)) + // Help along bootstrapping... + lform.compileToBytecode(); + } + + /** Static wrapper for DirectMethodHandle.internalMemberName. */ + @ForceInline + /*non-public*/ static Object internalMemberName(Object mh) { + return ((DirectMethodHandle)mh).member; + } + + /** Static wrapper for DirectMethodHandle.internalMemberName. + * This one also forces initialization. + */ + /*non-public*/ static Object internalMemberNameEnsureInit(Object mh) { + DirectMethodHandle dmh = (DirectMethodHandle)mh; + dmh.ensureInitialized(); + return dmh.member; + } + + /*non-public*/ static + boolean shouldBeInitialized(MemberName member) { + switch (member.getReferenceKind()) { + case REF_invokeStatic: + case REF_getStatic: + case REF_putStatic: + case REF_newInvokeSpecial: + break; + default: + // No need to initialize the class on this kind of member. + return false; + } + Class cls = member.getDeclaringClass(); + if (cls == ValueConversions.class || + cls == MethodHandleImpl.class || + cls == Invokers.class) { + // These guys have lots of DMH creation but we know + // the MHs will not be used until the system is booted. + return false; + } + if (VerifyAccess.isSamePackage(MethodHandle.class, cls) || + VerifyAccess.isSamePackage(ValueConversions.class, cls)) { + // It is a system class. It is probably in the process of + // being initialized, but we will help it along just to be safe. + if (UNSAFE.shouldBeInitialized(cls)) { + UNSAFE.ensureClassInitialized(cls); + } + return false; + } + return UNSAFE.shouldBeInitialized(cls); + } + + private static class EnsureInitialized extends ClassValue> { + @Override + protected WeakReference computeValue(Class type) { + UNSAFE.ensureClassInitialized(type); + if (UNSAFE.shouldBeInitialized(type)) + // If the previous call didn't block, this can happen. + // We are executing inside . + return new WeakReference<>(Thread.currentThread()); + return null; + } + static final EnsureInitialized INSTANCE = new EnsureInitialized(); } - boolean isValid() { - return (vmindex != VM_INDEX_UNINITIALIZED); + private void ensureInitialized() { + if (checkInitialized(member)) { + // The coast is clear. Delete the barrier. + if (member.isField()) + updateForm(preparedFieldLambdaForm(member)); + else + updateForm(preparedLambdaForm(member)); + } + } + private static boolean checkInitialized(MemberName member) { + Class defc = member.getDeclaringClass(); + WeakReference ref = EnsureInitialized.INSTANCE.get(defc); + if (ref == null) { + return true; // the final state + } + Thread clinitThread = ref.get(); + // Somebody may still be running defc.. + if (clinitThread == Thread.currentThread()) { + // If anybody is running defc., it is this thread. + if (UNSAFE.shouldBeInitialized(defc)) + // Yes, we are running it; keep the barrier for now. + return false; + } else { + // We are in a random thread. Block. + UNSAFE.ensureClassInitialized(defc); + } + assert(!UNSAFE.shouldBeInitialized(defc)); + // put it into the final state + EnsureInitialized.INSTANCE.remove(defc); + return true; + } + + /*non-public*/ static void ensureInitialized(Object mh) { + ((DirectMethodHandle)mh).ensureInitialized(); + } + + /** This subclass handles constructor references. */ + static class Constructor extends DirectMethodHandle { + final MemberName initMethod; + final Class instanceClass; + + private Constructor(MethodType mtype, LambdaForm form, MemberName constructor, + MemberName initMethod, Class instanceClass) { + super(mtype, form, constructor); + this.initMethod = initMethod; + this.instanceClass = instanceClass; + assert(initMethod.isResolved()); + } + } + + /*non-public*/ static Object constructorMethod(Object mh) { + Constructor dmh = (Constructor)mh; + return dmh.initMethod; + } + + /*non-public*/ static Object allocateInstance(Object mh) throws InstantiationException { + Constructor dmh = (Constructor)mh; + return UNSAFE.allocateInstance(dmh.instanceClass); + } + + /** This subclass handles non-static field references. */ + static class Accessor extends DirectMethodHandle { + final Class fieldType; + final int fieldOffset; + private Accessor(MethodType mtype, LambdaForm form, MemberName member, + int fieldOffset) { + super(mtype, form, member); + this.fieldType = member.getFieldType(); + this.fieldOffset = fieldOffset; + } + + @Override Object checkCast(Object obj) { + return fieldType.cast(obj); + } + } + + @ForceInline + /*non-public*/ static long fieldOffset(Object accessorObj) { + // Note: We return a long because that is what Unsafe.getObject likes. + // We store a plain int because it is more compact. + return ((Accessor)accessorObj).fieldOffset; + } + + @ForceInline + /*non-public*/ static Object checkBase(Object obj) { + // Note that the object's class has already been verified, + // since the parameter type of the Accessor method handle + // is either member.getDeclaringClass or a subclass. + // This was verified in DirectMethodHandle.make. + // Therefore, the only remaining check is for null. + // Since this check is *not* guaranteed by Unsafe.getInt + // and its siblings, we need to make an explicit one here. + obj.getClass(); // maybe throw NPE + return obj; + } + + /** This subclass handles static field references. */ + static class StaticAccessor extends DirectMethodHandle { + final private Class fieldType; + final private Object staticBase; + final private long staticOffset; + + private StaticAccessor(MethodType mtype, LambdaForm form, MemberName member, + Object staticBase, long staticOffset) { + super(mtype, form, member); + this.fieldType = member.getFieldType(); + this.staticBase = staticBase; + this.staticOffset = staticOffset; + } + + @Override Object checkCast(Object obj) { + return fieldType.cast(obj); + } + } + + @ForceInline + /*non-public*/ static Object nullCheck(Object obj) { + obj.getClass(); + return obj; + } + + @ForceInline + /*non-public*/ static Object staticBase(Object accessorObj) { + return ((StaticAccessor)accessorObj).staticBase; + } + + @ForceInline + /*non-public*/ static long staticOffset(Object accessorObj) { + return ((StaticAccessor)accessorObj).staticOffset; + } + + @ForceInline + /*non-public*/ static Object checkCast(Object mh, Object obj) { + return ((DirectMethodHandle) mh).checkCast(obj); + } + + Object checkCast(Object obj) { + return member.getReturnType().cast(obj); + } + + // Caching machinery for field accessors: + private static byte + AF_GETFIELD = 0, + AF_PUTFIELD = 1, + AF_GETSTATIC = 2, + AF_PUTSTATIC = 3, + AF_GETSTATIC_INIT = 4, + AF_PUTSTATIC_INIT = 5, + AF_LIMIT = 6; + // Enumerate the different field kinds using Wrapper, + // with an extra case added for checked references. + private static int + FT_LAST_WRAPPER = Wrapper.values().length-1, + FT_UNCHECKED_REF = Wrapper.OBJECT.ordinal(), + FT_CHECKED_REF = FT_LAST_WRAPPER+1, + FT_LIMIT = FT_LAST_WRAPPER+2; + private static int afIndex(byte formOp, boolean isVolatile, int ftypeKind) { + return ((formOp * FT_LIMIT * 2) + + (isVolatile ? FT_LIMIT : 0) + + ftypeKind); + } + private static final LambdaForm[] ACCESSOR_FORMS + = new LambdaForm[afIndex(AF_LIMIT, false, 0)]; + private static int ftypeKind(Class ftype) { + if (ftype.isPrimitive()) + return Wrapper.forPrimitiveType(ftype).ordinal(); + else if (VerifyType.isNullReferenceConversion(Object.class, ftype)) + return FT_UNCHECKED_REF; + else + return FT_CHECKED_REF; + } + + /** + * Create a LF which can access the given field. + * Cache and share this structure among all fields with + * the same basicType and refKind. + */ + private static LambdaForm preparedFieldLambdaForm(MemberName m) { + Class ftype = m.getFieldType(); + boolean isVolatile = m.isVolatile(); + byte formOp; + switch (m.getReferenceKind()) { + case REF_getField: formOp = AF_GETFIELD; break; + case REF_putField: formOp = AF_PUTFIELD; break; + case REF_getStatic: formOp = AF_GETSTATIC; break; + case REF_putStatic: formOp = AF_PUTSTATIC; break; + default: throw new InternalError(m.toString()); + } + if (shouldBeInitialized(m)) { + // precompute the barrier-free version: + preparedFieldLambdaForm(formOp, isVolatile, ftype); + assert((AF_GETSTATIC_INIT - AF_GETSTATIC) == + (AF_PUTSTATIC_INIT - AF_PUTSTATIC)); + formOp += (AF_GETSTATIC_INIT - AF_GETSTATIC); + } + LambdaForm lform = preparedFieldLambdaForm(formOp, isVolatile, ftype); + maybeCompile(lform, m); + assert(lform.methodType().dropParameterTypes(0, 1) + .equals(m.getInvocationType().basicType())) + : Arrays.asList(m, m.getInvocationType().basicType(), lform, lform.methodType()); + return lform; + } + private static LambdaForm preparedFieldLambdaForm(byte formOp, boolean isVolatile, Class ftype) { + int afIndex = afIndex(formOp, isVolatile, ftypeKind(ftype)); + LambdaForm lform = ACCESSOR_FORMS[afIndex]; + if (lform != null) return lform; + lform = makePreparedFieldLambdaForm(formOp, isVolatile, ftypeKind(ftype)); + ACCESSOR_FORMS[afIndex] = lform; // don't bother with a CAS + return lform; + } + + private static LambdaForm makePreparedFieldLambdaForm(byte formOp, boolean isVolatile, int ftypeKind) { + boolean isGetter = (formOp & 1) == (AF_GETFIELD & 1); + boolean isStatic = (formOp >= AF_GETSTATIC); + boolean needsInit = (formOp >= AF_GETSTATIC_INIT); + boolean needsCast = (ftypeKind == FT_CHECKED_REF); + Wrapper fw = (needsCast ? Wrapper.OBJECT : Wrapper.values()[ftypeKind]); + Class ft = fw.primitiveType(); + assert(ftypeKind(needsCast ? String.class : ft) == ftypeKind); + String tname = fw.primitiveSimpleName(); + String ctname = Character.toUpperCase(tname.charAt(0)) + tname.substring(1); + if (isVolatile) ctname += "Volatile"; + String getOrPut = (isGetter ? "get" : "put"); + String linkerName = (getOrPut + ctname); // getObject, putIntVolatile, etc. + MethodType linkerType; + if (isGetter) + linkerType = MethodType.methodType(ft, Object.class, long.class); + else + linkerType = MethodType.methodType(void.class, Object.class, long.class, ft); + MemberName linker = new MemberName(Unsafe.class, linkerName, linkerType, REF_invokeVirtual); + try { + linker = IMPL_NAMES.resolveOrFail(REF_invokeVirtual, linker, null, NoSuchMethodException.class); + } catch (ReflectiveOperationException ex) { + throw new InternalError(ex); + } + + // What is the external type of the lambda form? + MethodType mtype; + if (isGetter) + mtype = MethodType.methodType(ft); + else + mtype = MethodType.methodType(void.class, ft); + mtype = mtype.basicType(); // erase short to int, etc. + if (!isStatic) + mtype = mtype.insertParameterTypes(0, Object.class); + final int DMH_THIS = 0; + final int ARG_BASE = 1; + final int ARG_LIMIT = ARG_BASE + mtype.parameterCount(); + // if this is for non-static access, the base pointer is stored at this index: + final int OBJ_BASE = isStatic ? -1 : ARG_BASE; + // if this is for write access, the value to be written is stored at this index: + final int SET_VALUE = isGetter ? -1 : ARG_LIMIT - 1; + int nameCursor = ARG_LIMIT; + final int F_HOLDER = (isStatic ? nameCursor++ : -1); // static base if any + final int F_OFFSET = nameCursor++; // Either static offset or field offset. + final int OBJ_CHECK = (OBJ_BASE >= 0 ? nameCursor++ : -1); + final int INIT_BAR = (needsInit ? nameCursor++ : -1); + final int PRE_CAST = (needsCast && !isGetter ? nameCursor++ : -1); + final int LINKER_CALL = nameCursor++; + final int POST_CAST = (needsCast && isGetter ? nameCursor++ : -1); + final int RESULT = nameCursor-1; // either the call or the cast + Name[] names = arguments(nameCursor - ARG_LIMIT, mtype.invokerType()); + if (needsInit) + names[INIT_BAR] = new Name(NF_ensureInitialized, names[DMH_THIS]); + if (needsCast && !isGetter) + names[PRE_CAST] = new Name(NF_checkCast, names[DMH_THIS], names[SET_VALUE]); + Object[] outArgs = new Object[1 + linkerType.parameterCount()]; + assert(outArgs.length == (isGetter ? 3 : 4)); + outArgs[0] = UNSAFE; + if (isStatic) { + outArgs[1] = names[F_HOLDER] = new Name(NF_staticBase, names[DMH_THIS]); + outArgs[2] = names[F_OFFSET] = new Name(NF_staticOffset, names[DMH_THIS]); + } else { + outArgs[1] = names[OBJ_CHECK] = new Name(NF_checkBase, names[OBJ_BASE]); + outArgs[2] = names[F_OFFSET] = new Name(NF_fieldOffset, names[DMH_THIS]); + } + if (!isGetter) { + outArgs[3] = (needsCast ? names[PRE_CAST] : names[SET_VALUE]); + } + for (Object a : outArgs) assert(a != null); + names[LINKER_CALL] = new Name(linker, outArgs); + if (needsCast && isGetter) + names[POST_CAST] = new Name(NF_checkCast, names[DMH_THIS], names[LINKER_CALL]); + for (Name n : names) assert(n != null); + String fieldOrStatic = (isStatic ? "Static" : "Field"); + String lambdaName = (linkerName + fieldOrStatic); // significant only for debugging + if (needsCast) lambdaName += "Cast"; + if (needsInit) lambdaName += "Init"; + return new LambdaForm(lambdaName, ARG_LIMIT, names, RESULT); + } + + private static final NamedFunction + NF_internalMemberName, + NF_internalMemberNameEnsureInit, + NF_ensureInitialized, + NF_fieldOffset, + NF_checkBase, + NF_staticBase, + NF_staticOffset, + NF_checkCast, + NF_allocateInstance, + NF_constructorMethod; + static { + try { + NamedFunction nfs[] = { + NF_internalMemberName = new NamedFunction(DirectMethodHandle.class + .getDeclaredMethod("internalMemberName", Object.class)), + NF_internalMemberNameEnsureInit = new NamedFunction(DirectMethodHandle.class + .getDeclaredMethod("internalMemberNameEnsureInit", Object.class)), + NF_ensureInitialized = new NamedFunction(DirectMethodHandle.class + .getDeclaredMethod("ensureInitialized", Object.class)), + NF_fieldOffset = new NamedFunction(DirectMethodHandle.class + .getDeclaredMethod("fieldOffset", Object.class)), + NF_checkBase = new NamedFunction(DirectMethodHandle.class + .getDeclaredMethod("checkBase", Object.class)), + NF_staticBase = new NamedFunction(DirectMethodHandle.class + .getDeclaredMethod("staticBase", Object.class)), + NF_staticOffset = new NamedFunction(DirectMethodHandle.class + .getDeclaredMethod("staticOffset", Object.class)), + NF_checkCast = new NamedFunction(DirectMethodHandle.class + .getDeclaredMethod("checkCast", Object.class, Object.class)), + NF_allocateInstance = new NamedFunction(DirectMethodHandle.class + .getDeclaredMethod("allocateInstance", Object.class)), + NF_constructorMethod = new NamedFunction(DirectMethodHandle.class + .getDeclaredMethod("constructorMethod", Object.class)) + }; + for (NamedFunction nf : nfs) { + // Each nf must be statically invocable or we get tied up in our bootstraps. + assert(InvokerBytecodeGenerator.isStaticallyInvocable(nf.member)) : nf; + nf.resolve(); + } + } catch (ReflectiveOperationException ex) { + throw new InternalError(ex); + } } } diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/DontInline.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/classes/java/lang/invoke/DontInline.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package java.lang.invoke; + +import java.lang.annotation.*; + +/** + * Internal marker for some methods in the JSR 292 implementation. + */ +/*non-public*/ +@Target({ElementType.METHOD, ElementType.CONSTRUCTOR}) +@Retention(RetentionPolicy.RUNTIME) +@interface DontInline { +} diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/ForceInline.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/classes/java/lang/invoke/ForceInline.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package java.lang.invoke; + +import java.lang.annotation.*; + +/** + * Internal marker for some methods in the JSR 292 implementation. + */ +/*non-public*/ +@Target({ElementType.METHOD, ElementType.CONSTRUCTOR}) +@Retention(RetentionPolicy.RUNTIME) +@interface ForceInline { +} diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,1065 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package java.lang.invoke; + +import sun.invoke.util.VerifyAccess; +import java.lang.invoke.LambdaForm.Name; +import java.lang.invoke.MethodHandles.Lookup; + +import sun.invoke.util.Wrapper; + +import java.io.*; +import java.util.*; + +import com.sun.xml.internal.ws.org.objectweb.asm.*; + +import java.lang.reflect.*; +import static java.lang.invoke.MethodHandleStatics.*; +import static java.lang.invoke.MethodHandleNatives.Constants.*; +import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; +import sun.invoke.util.ValueConversions; +import sun.invoke.util.VerifyType; + +/** + * Code generation backend for LambdaForm. + *

+ * @author John Rose, JSR 292 EG + */ +class InvokerBytecodeGenerator { + /** Define class names for convenience. */ + private static final String MH = "java/lang/invoke/MethodHandle"; + private static final String BMH = "java/lang/invoke/BoundMethodHandle"; + private static final String LF = "java/lang/invoke/LambdaForm"; + private static final String LFN = "java/lang/invoke/LambdaForm$Name"; + private static final String CLS = "java/lang/Class"; + private static final String OBJ = "java/lang/Object"; + private static final String OBJARY = "[Ljava/lang/Object;"; + + private static final String LF_SIG = "L" + LF + ";"; + private static final String LFN_SIG = "L" + LFN + ";"; + private static final String LL_SIG = "(L" + OBJ + ";)L" + OBJ + ";"; + + /** Name of its super class*/ + private static final String superName = LF; + + /** Name of new class */ + private final String className; + + /** Name of the source file (for stack trace printing). */ + private final String sourceFile; + + private final LambdaForm lambdaForm; + private final String invokerName; + private final MethodType invokerType; + private final int[] localsMap; + + /** ASM bytecode generation. */ + private ClassWriter cw; + private MethodVisitor mv; + + private static final MemberName.Factory MEMBERNAME_FACTORY = MemberName.getFactory(); + private static final Class HOST_CLASS = LambdaForm.class; + + private InvokerBytecodeGenerator(LambdaForm lambdaForm, int localsMapSize, + String className, String invokerName, MethodType invokerType) { + if (invokerName.contains(".")) { + int p = invokerName.indexOf("."); + className = invokerName.substring(0, p); + invokerName = invokerName.substring(p+1); + } + if (DUMP_CLASS_FILES) { + className = makeDumpableClassName(className); + } + this.className = superName + "$" + className; + this.sourceFile = "LambdaForm$" + className; + this.lambdaForm = lambdaForm; + this.invokerName = invokerName; + this.invokerType = invokerType; + this.localsMap = new int[localsMapSize]; + } + + private InvokerBytecodeGenerator(String className, String invokerName, MethodType invokerType) { + this(null, invokerType.parameterCount(), + className, invokerName, invokerType); + // Create an array to map name indexes to locals indexes. + for (int i = 0; i < localsMap.length; i++) { + localsMap[i] = invokerType.parameterSlotCount() - invokerType.parameterSlotDepth(i); + } + } + + private InvokerBytecodeGenerator(String className, LambdaForm form, MethodType invokerType) { + this(form, form.names.length, + className, form.debugName, invokerType); + // Create an array to map name indexes to locals indexes. + Name[] names = form.names; + for (int i = 0, index = 0; i < localsMap.length; i++) { + localsMap[i] = index; + index += Wrapper.forBasicType(names[i].type).stackSlots(); + } + } + + + /** instance counters for dumped classes */ + private final static HashMap DUMP_CLASS_FILES_COUNTERS; + /** debugging flag for saving generated class files */ + private final static File DUMP_CLASS_FILES_DIR; + + static { + if (DUMP_CLASS_FILES) { + DUMP_CLASS_FILES_COUNTERS = new HashMap<>(); + try { + File dumpDir = new File("DUMP_CLASS_FILES"); + if (!dumpDir.exists()) { + dumpDir.mkdirs(); + } + DUMP_CLASS_FILES_DIR = dumpDir; + System.out.println("Dumping class files to "+DUMP_CLASS_FILES_DIR+"/..."); + } catch (Exception e) { + throw new InternalError(e); + } + } else { + DUMP_CLASS_FILES_COUNTERS = null; + DUMP_CLASS_FILES_DIR = null; + } + } + + static void maybeDump(final String className, final byte[] classFile) { + if (DUMP_CLASS_FILES) { + System.out.println("dump: " + className); + java.security.AccessController.doPrivileged( + new java.security.PrivilegedAction() { + public Void run() { + try { + String dumpName = className; + //dumpName = dumpName.replace('/', '-'); + File dumpFile = new File(DUMP_CLASS_FILES_DIR, dumpName+".class"); + dumpFile.getParentFile().mkdirs(); + FileOutputStream file = new FileOutputStream(dumpFile); + file.write(classFile); + file.close(); + return null; + } catch (IOException ex) { + throw new InternalError(ex); + } + } + }); + } + + } + + private static String makeDumpableClassName(String className) { + Integer ctr; + synchronized (DUMP_CLASS_FILES_COUNTERS) { + ctr = DUMP_CLASS_FILES_COUNTERS.get(className); + if (ctr == null) ctr = 0; + DUMP_CLASS_FILES_COUNTERS.put(className, ctr+1); + } + String sfx = ctr.toString(); + while (sfx.length() < 3) + sfx = "0"+sfx; + className += sfx; + return className; + } + + class CpPatch { + int index; + Object value; + CpPatch(int index, Object value) { + this.index = index; + this.value = value; + } + } + + Map cpPatches = new HashMap<>(); + + int cph = 0; // for counting constant placeholders + + String constantPlaceholder(Object arg) { + String cpPlaceholder = "CONSTANT_PLACEHOLDER_" + cph++; + if (DUMP_CLASS_FILES) cpPlaceholder += " <<" + arg.toString() + ">>"; // debugging aid + if (cpPatches.containsKey(cpPlaceholder)) { + throw new InternalError("observed CP placeholder twice: " + cpPlaceholder); + } + // insert placeholder in CP and remember the patch + int index = cw.newConst((Object) cpPlaceholder); // TODO check if aready in the constant pool + cpPatches.put(cpPlaceholder, new CpPatch(index, arg)); + return cpPlaceholder; + } + + Object[] cpPatches(byte[] classFile) { + int size = getConstantPoolSize(classFile); + Object[] res = new Object[size]; + for (CpPatch p : cpPatches.values()) { + res[p.index] = p.value; + } + return res; + } + + /** + * Extract the number of constant pool entries from a given class file. + * + * @param classFile the bytes of the class file in question. + * @return the number of entries in the constant pool. + */ + private static int getConstantPoolSize(byte[] classFile) { + // The first few bytes: + // u4 magic; + // u2 minor_version; + // u2 major_version; + // u2 constant_pool_count; + return ((classFile[8] & 0xFF) << 8) | (classFile[9] & 0xFF); + } + + /** + * Extract the MemberName of a newly-defined method. + * + * @param classFile + * @return + */ + private MemberName loadMethod(byte[] classFile) { + Class invokerClass = loadAndInitializeInvokerClass(classFile, cpPatches(classFile)); + return resolveInvokerMember(invokerClass, invokerName, invokerType); + } + + /** + * Define a given class as anonymous class in the runtime system. + * + * @param classBytes + * @param patches + * @return + */ + private static Class loadAndInitializeInvokerClass(byte[] classBytes, Object[] patches) { + Class invokerClass = UNSAFE.defineAnonymousClass(HOST_CLASS, classBytes, patches); + UNSAFE.ensureClassInitialized(invokerClass); // Make sure the class is initialized; VM might complain. + return invokerClass; + } + + /** + * TODO + * + * @param invokerClass + * @param name + * @param type + * @return + */ + private static MemberName resolveInvokerMember(Class invokerClass, String name, MethodType type) { + MemberName member = new MemberName(invokerClass, name, type, REF_invokeStatic); + //System.out.println("resolveInvokerMember => "+member); + //for (Method m : invokerClass.getDeclaredMethods()) System.out.println(" "+m); + try { + member = MEMBERNAME_FACTORY.resolveOrFail(REF_invokeStatic, member, HOST_CLASS, ReflectiveOperationException.class); + } catch (ReflectiveOperationException e) { + throw new InternalError(e); + } + //System.out.println("resolveInvokerMember => "+member); + return member; + } + + /** + * Set up class file generation. + */ + private void classFilePrologue() { + cw = new ClassWriter(ClassWriter.COMPUTE_MAXS + ClassWriter.COMPUTE_FRAMES); + cw.visit(Opcodes.V1_6, Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER, className, null, superName, null); + cw.visitSource(sourceFile, null); + + String invokerDesc = invokerType.toMethodDescriptorString(); + mv = cw.visitMethod(Opcodes.ACC_STATIC, invokerName, invokerDesc, null, null); + + // Force inlining of this invoker method. + mv.visitAnnotation("Ljava/lang/invoke/ForceInline;", true); + } + + /** + * Tear down class file generation. + */ + private void classFileEpilogue() { + mv.visitMaxs(0, 0); + mv.visitEnd(); + } + + /* + * Low-level emit helpers. + */ + private void emitConst(Object con) { + if (con == null) { + mv.visitInsn(Opcodes.ACONST_NULL); + return; + } + if (con instanceof Integer) { + emitIconstInsn((int) con); + return; + } + if (con instanceof Long) { + long x = (long) con; + if (x == (short) x) { + emitIconstInsn((int) x); + mv.visitInsn(Opcodes.I2L); + return; + } + } + if (con instanceof Float) { + float x = (float) con; + if (x == (short) x) { + emitIconstInsn((int) x); + mv.visitInsn(Opcodes.I2F); + return; + } + } + if (con instanceof Double) { + double x = (double) con; + if (x == (short) x) { + emitIconstInsn((int) x); + mv.visitInsn(Opcodes.I2D); + return; + } + } + if (con instanceof Boolean) { + emitIconstInsn((boolean) con ? 1 : 0); + return; + } + // fall through: + mv.visitLdcInsn(con); + } + + private void emitIconstInsn(int i) { + int opcode; + switch (i) { + case 0: opcode = Opcodes.ICONST_0; break; + case 1: opcode = Opcodes.ICONST_1; break; + case 2: opcode = Opcodes.ICONST_2; break; + case 3: opcode = Opcodes.ICONST_3; break; + case 4: opcode = Opcodes.ICONST_4; break; + case 5: opcode = Opcodes.ICONST_5; break; + default: + if (i == (byte) i) { + mv.visitIntInsn(Opcodes.BIPUSH, i & 0xFF); + } else if (i == (short) i) { + mv.visitIntInsn(Opcodes.SIPUSH, (char) i); + } else { + mv.visitLdcInsn(i); + } + return; + } + mv.visitInsn(opcode); + } + + /* + * NOTE: These load/store methods use the localsMap to find the correct index! + */ + private void emitLoadInsn(char type, int index) { + int opcode; + switch (type) { + case 'I': opcode = Opcodes.ILOAD; break; + case 'J': opcode = Opcodes.LLOAD; break; + case 'F': opcode = Opcodes.FLOAD; break; + case 'D': opcode = Opcodes.DLOAD; break; + case 'L': opcode = Opcodes.ALOAD; break; + default: + throw new InternalError("unknown type: " + type); + } + mv.visitVarInsn(opcode, localsMap[index]); + } + private void emitAloadInsn(int index) { + emitLoadInsn('L', index); + } + + private void emitStoreInsn(char type, int index) { + int opcode; + switch (type) { + case 'I': opcode = Opcodes.ISTORE; break; + case 'J': opcode = Opcodes.LSTORE; break; + case 'F': opcode = Opcodes.FSTORE; break; + case 'D': opcode = Opcodes.DSTORE; break; + case 'L': opcode = Opcodes.ASTORE; break; + default: + throw new InternalError("unknown type: " + type); + } + mv.visitVarInsn(opcode, localsMap[index]); + } + private void emitAstoreInsn(int index) { + emitStoreInsn('L', index); + } + + /** + * Emit a boxing call. + * + * @param type primitive type class to box. + */ + private void emitBoxing(Class type) { + Wrapper wrapper = Wrapper.forPrimitiveType(type); + String owner = "java/lang/" + wrapper.wrapperType().getSimpleName(); + String name = "valueOf"; + String desc = "(" + wrapper.basicTypeChar() + ")L" + owner + ";"; + mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc); + } + + /** + * Emit an unboxing call (plus preceding checkcast). + * + * @param type wrapper type class to unbox. + */ + private void emitUnboxing(Class type) { + Wrapper wrapper = Wrapper.forWrapperType(type); + String owner = "java/lang/" + wrapper.wrapperType().getSimpleName(); + String name = wrapper.primitiveSimpleName() + "Value"; + String desc = "()" + wrapper.basicTypeChar(); + mv.visitTypeInsn(Opcodes.CHECKCAST, owner); + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, owner, name, desc); + } + + /** + * Emit an implicit conversion. + * + * @param ptype type of value present on stack + * @param pclass type of value required on stack + */ + private void emitImplicitConversion(char ptype, Class pclass) { + switch (ptype) { + case 'L': + if (VerifyType.isNullConversion(Object.class, pclass)) + return; + if (isStaticallyNameable(pclass)) { + mv.visitTypeInsn(Opcodes.CHECKCAST, getInternalName(pclass)); + } else { + mv.visitLdcInsn(constantPlaceholder(pclass)); + mv.visitTypeInsn(Opcodes.CHECKCAST, CLS); + mv.visitInsn(Opcodes.SWAP); + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, CLS, "cast", LL_SIG); + if (pclass.isArray()) + mv.visitTypeInsn(Opcodes.CHECKCAST, OBJARY); + } + return; + case 'I': + if (!VerifyType.isNullConversion(int.class, pclass)) + emitPrimCast(ptype, Wrapper.basicTypeChar(pclass)); + return; + case 'J': + assert(pclass == long.class); + return; + case 'F': + assert(pclass == float.class); + return; + case 'D': + assert(pclass == double.class); + return; + } + throw new InternalError("bad implicit conversion: tc="+ptype+": "+pclass); + } + + /** + * Emits an actual return instruction conforming to the given return type. + */ + private void emitReturnInsn(Class type) { + int opcode; + switch (Wrapper.basicTypeChar(type)) { + case 'I': opcode = Opcodes.IRETURN; break; + case 'J': opcode = Opcodes.LRETURN; break; + case 'F': opcode = Opcodes.FRETURN; break; + case 'D': opcode = Opcodes.DRETURN; break; + case 'L': opcode = Opcodes.ARETURN; break; + case 'V': opcode = Opcodes.RETURN; break; + default: + throw new InternalError("unknown return type: " + type); + } + mv.visitInsn(opcode); + } + + private static String getInternalName(Class c) { + assert(VerifyAccess.isTypeVisible(c, Object.class)); + return c.getName().replace('.', '/'); + } + + /** + * Generate customized bytecode for a given LambdaForm. + * + * @param form + * @param invokerType + * @return + */ + static MemberName generateCustomizedCode(LambdaForm form, MethodType invokerType) { + InvokerBytecodeGenerator g = new InvokerBytecodeGenerator("MH", form, invokerType); + return g.loadMethod(g.generateCustomizedCodeBytes()); + } + + /** + * Generate an invoker method for the passed {@link LambdaForm}. + */ + private byte[] generateCustomizedCodeBytes() { + classFilePrologue(); + + // Suppress this method in backtraces displayed to the user. + mv.visitAnnotation("Ljava/lang/invoke/LambdaForm$Hidden;", true); + + // Mark this method as a compiled LambdaForm + mv.visitAnnotation("Ljava/lang/invoke/LambdaForm$Compiled;", true); + + // iterate over the form's names, generating bytecode instructions for each + // start iterating at the first name following the arguments + for (int i = lambdaForm.arity; i < lambdaForm.names.length; i++) { + Name name = lambdaForm.names[i]; + MemberName member = name.function.member(); + + if (isSelectAlternative(member)) { + // selectAlternative idiom + // FIXME: make sure this idiom is really present! + emitSelectAlternative(name, lambdaForm.names[i + 1]); + i++; // skip MH.invokeBasic of the selectAlternative result + } else if (isStaticallyInvocable(member)) { + emitStaticInvoke(member, name); + } else { + emitInvoke(name); + } + + // store the result from evaluating to the target name in a local if required + // (if this is the last value, i.e., the one that is going to be returned, + // avoid store/load/return and just return) + if (i == lambdaForm.names.length - 1 && i == lambdaForm.result) { + // return value - do nothing + } else if (name.type != 'V') { + // non-void: actually assign + emitStoreInsn(name.type, name.index()); + } + } + + // return statement + emitReturn(); + + classFileEpilogue(); + bogusMethod(lambdaForm); + + final byte[] classFile = cw.toByteArray(); + maybeDump(className, classFile); + return classFile; + } + + /** + * Emit an invoke for the given name. + * + * @param name + */ + void emitInvoke(Name name) { + if (true) { + // push receiver + MethodHandle target = name.function.resolvedHandle; + assert(target != null) : name.exprString(); + mv.visitLdcInsn(constantPlaceholder(target)); + mv.visitTypeInsn(Opcodes.CHECKCAST, MH); + } else { + // load receiver + emitAloadInsn(0); + mv.visitTypeInsn(Opcodes.CHECKCAST, MH); + mv.visitFieldInsn(Opcodes.GETFIELD, MH, "form", LF_SIG); + mv.visitFieldInsn(Opcodes.GETFIELD, LF, "names", LFN_SIG); + // TODO more to come + } + + // push arguments + for (int i = 0; i < name.arguments.length; i++) { + emitPushArgument(name, i); + } + + // invocation + MethodType type = name.function.methodType(); + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", type.basicType().toMethodDescriptorString()); + } + + static private Class[] STATICALLY_INVOCABLE_PACKAGES = { + // Sample classes from each package we are willing to bind to statically: + java.lang.Object.class, + java.util.Arrays.class, + sun.misc.Unsafe.class + //MethodHandle.class already covered + }; + + static boolean isStaticallyInvocable(MemberName member) { + if (member == null) return false; + if (member.isConstructor()) return false; + Class cls = member.getDeclaringClass(); + if (cls.isArray() || cls.isPrimitive()) + return false; // FIXME + if (cls.isAnonymousClass() || cls.isLocalClass()) + return false; // inner class of some sort + if (cls.getClassLoader() != MethodHandle.class.getClassLoader()) + return false; // not on BCP + if (!member.isPrivate() && VerifyAccess.isSamePackage(MethodHandle.class, cls)) + return true; // in java.lang.invoke package + if (member.isPublic() && isStaticallyNameable(cls)) + return true; + return false; + } + + static boolean isStaticallyNameable(Class cls) { + while (cls.isArray()) + cls = cls.getComponentType(); + if (cls.isPrimitive()) + return true; // int[].class, for example + if (cls.getClassLoader() != Object.class.getClassLoader()) + return false; + if (VerifyAccess.isSamePackage(MethodHandle.class, cls)) + return true; + if (!Modifier.isPublic(cls.getModifiers())) + return false; + for (Class pkgcls : STATICALLY_INVOCABLE_PACKAGES) { + if (VerifyAccess.isSamePackage(pkgcls, cls)) + return true; + } + return false; + } + + /** + * Emit an invoke for the given name, using the MemberName directly. + * + * @param name + */ + void emitStaticInvoke(MemberName member, Name name) { + assert(member.equals(name.function.member())); + String cname = getInternalName(member.getDeclaringClass()); + String mname = member.getName(); + String mtype; + byte refKind = member.getReferenceKind(); + if (refKind == REF_invokeSpecial) { + // in order to pass the verifier, we need to convert this to invokevirtual in all cases + assert(member.canBeStaticallyBound()) : member; + refKind = REF_invokeVirtual; + } + + // push arguments + for (int i = 0; i < name.arguments.length; i++) { + emitPushArgument(name, i); + } + + // invocation + if (member.isMethod()) { + mtype = member.getMethodType().toMethodDescriptorString(); + mv.visitMethodInsn(refKindOpcode(refKind), cname, mname, mtype); + } else { + mtype = MethodType.toFieldDescriptorString(member.getFieldType()); + mv.visitFieldInsn(refKindOpcode(refKind), cname, mname, mtype); + } + } + int refKindOpcode(byte refKind) { + switch (refKind) { + case REF_invokeVirtual: return Opcodes.INVOKEVIRTUAL; + case REF_invokeStatic: return Opcodes.INVOKESTATIC; + case REF_invokeSpecial: return Opcodes.INVOKESPECIAL; + case REF_invokeInterface: return Opcodes.INVOKEINTERFACE; + case REF_getField: return Opcodes.GETFIELD; + case REF_putField: return Opcodes.PUTFIELD; + case REF_getStatic: return Opcodes.GETSTATIC; + case REF_putStatic: return Opcodes.PUTSTATIC; + } + throw new InternalError("refKind="+refKind); + } + + /** + * Check if MemberName is a call to MethodHandleImpl.selectAlternative. + * + * @param member + * @return true if member is a call to MethodHandleImpl.selectAlternative + */ + private boolean isSelectAlternative(MemberName member) { + return member != null && + member.getDeclaringClass() == MethodHandleImpl.class && + member.getName().equals("selectAlternative"); + } + + /** + * Emit bytecode for the selectAlternative idiom. + * + * The pattern looks like (Cf. MethodHandleImpl.makeGuardWithTest): + * + * Lambda(a0:L,a1:I)=>{ + * t2:I=foo.test(a1:I); + * t3:L=MethodHandleImpl.selectAlternative(t2:I,(MethodHandle(int)int),(MethodHandle(int)int)); + * t4:I=MethodHandle.invokeBasic(t3:L,a1:I);t4:I} + * + * @param selectAlternativeName + * @param invokeBasicName + */ + private void emitSelectAlternative(Name selectAlternativeName, Name invokeBasicName) { + MethodType type = selectAlternativeName.function.methodType(); + + Name receiver = (Name) invokeBasicName.arguments[0]; + + Label L_fallback = new Label(); + Label L_done = new Label(); + + // load test result + emitPushArgument(selectAlternativeName, 0); + mv.visitInsn(Opcodes.ICONST_1); + + // if_icmpne L_fallback + mv.visitJumpInsn(Opcodes.IF_ICMPNE, L_fallback); + + // invoke selectAlternativeName.arguments[1] + MethodHandle target = (MethodHandle) selectAlternativeName.arguments[1]; + emitPushArgument(selectAlternativeName, 1); // get 2nd argument of selectAlternative + emitAstoreInsn(receiver.index()); // store the MH in the receiver slot + emitInvoke(invokeBasicName); + + // goto L_done + mv.visitJumpInsn(Opcodes.GOTO, L_done); + + // L_fallback: + mv.visitLabel(L_fallback); + + // invoke selectAlternativeName.arguments[2] + MethodHandle fallback = (MethodHandle) selectAlternativeName.arguments[2]; + emitPushArgument(selectAlternativeName, 2); // get 3rd argument of selectAlternative + emitAstoreInsn(receiver.index()); // store the MH in the receiver slot + emitInvoke(invokeBasicName); + + // L_done: + mv.visitLabel(L_done); + } + + /** + * + * @param name + * @param paramIndex + */ + private void emitPushArgument(Name name, int paramIndex) { + Object arg = name.arguments[paramIndex]; + char ptype = name.function.parameterType(paramIndex); + MethodType mtype = name.function.methodType(); + if (arg instanceof Name) { + Name n = (Name) arg; + emitLoadInsn(n.type, n.index()); + emitImplicitConversion(n.type, mtype.parameterType(paramIndex)); + } else if ((arg == null || arg instanceof String) && ptype == 'L') { + emitConst(arg); + } else { + if (Wrapper.isWrapperType(arg.getClass()) && ptype != 'L') { + emitConst(arg); + } else { + mv.visitLdcInsn(constantPlaceholder(arg)); + emitImplicitConversion('L', mtype.parameterType(paramIndex)); + } + } + } + + /** + * Emits a return statement from a LF invoker. If required, the result type is cast to the correct return type. + */ + private void emitReturn() { + // return statement + if (lambdaForm.result == -1) { + // void + mv.visitInsn(Opcodes.RETURN); + } else { + LambdaForm.Name rn = lambdaForm.names[lambdaForm.result]; + char rtype = Wrapper.basicTypeChar(invokerType.returnType()); + + // put return value on the stack if it is not already there + if (lambdaForm.result != lambdaForm.names.length - 1) { + emitLoadInsn(rn.type, lambdaForm.result); + } + + // potentially generate cast + // rtype is the return type of the invoker - generated code must conform to this + // rn.type is the type of the result Name in the LF + if (rtype != rn.type) { + // need cast + if (rtype == 'L') { + // possibly cast the primitive to the correct type for boxing + char boxedType = Wrapper.forWrapperType(invokerType.returnType()).basicTypeChar(); + if (boxedType != rn.type) { + emitPrimCast(rn.type, boxedType); + } + // cast primitive to reference ("boxing") + emitBoxing(invokerType.returnType()); + } else { + // to-primitive cast + if (rn.type != 'L') { + // prim-to-prim cast + emitPrimCast(rn.type, rtype); + } else { + // ref-to-prim cast ("unboxing") + throw new InternalError("no ref-to-prim (unboxing) casts supported right now"); + } + } + } + + // generate actual return statement + emitReturnInsn(invokerType.returnType()); + } + } + + /** + * Emit a type conversion bytecode casting from "from" to "to". + */ + private void emitPrimCast(char from, char to) { + // Here's how. + // - indicates forbidden + // <-> indicates implicit + // to ----> boolean byte short char int long float double + // from boolean <-> - - - - - - - + // byte - <-> i2s i2c <-> i2l i2f i2d + // short - i2b <-> i2c <-> i2l i2f i2d + // char - i2b i2s <-> <-> i2l i2f i2d + // int - i2b i2s i2c <-> i2l i2f i2d + // long - l2i,i2b l2i,i2s l2i,i2c l2i <-> l2f l2d + // float - f2i,i2b f2i,i2s f2i,i2c f2i f2l <-> f2d + // double - d2i,i2b d2i,i2s d2i,i2c d2i d2l d2f <-> + if (from == to) { + // no cast required, should be dead code anyway + return; + } + Wrapper wfrom = Wrapper.forBasicType(from); + Wrapper wto = Wrapper.forBasicType(to); + if (wfrom.isSubwordOrInt()) { + // cast from {byte,short,char,int} to anything + emitI2X(to); + } else { + // cast from {long,float,double} to anything + if (wto.isSubwordOrInt()) { + // cast to {byte,short,char,int} + emitX2I(from); + if (wto.bitWidth() < 32) { + // targets other than int require another conversion + emitI2X(to); + } + } else { + // cast to {long,float,double} - this is verbose + boolean error = false; + switch (from) { + case 'J': + if (to == 'F') { mv.visitInsn(Opcodes.L2F); } + else if (to == 'D') { mv.visitInsn(Opcodes.L2D); } + else error = true; + break; + case 'F': + if (to == 'J') { mv.visitInsn(Opcodes.F2L); } + else if (to == 'D') { mv.visitInsn(Opcodes.F2D); } + else error = true; + break; + case 'D': + if (to == 'J') { mv.visitInsn(Opcodes.D2L); } + else if (to == 'F') { mv.visitInsn(Opcodes.D2F); } + else error = true; + break; + default: + error = true; + break; + } + if (error) { + throw new IllegalStateException("unhandled prim cast: " + from + "2" + to); + } + } + } + } + + private void emitI2X(char type) { + switch (type) { + case 'B': mv.visitInsn(Opcodes.I2B); break; + case 'S': mv.visitInsn(Opcodes.I2S); break; + case 'C': mv.visitInsn(Opcodes.I2C); break; + case 'I': /* naught */ break; + case 'J': mv.visitInsn(Opcodes.I2L); break; + case 'F': mv.visitInsn(Opcodes.I2F); break; + case 'D': mv.visitInsn(Opcodes.I2D); break; + case 'Z': + // For compatibility with ValueConversions and explicitCastArguments: + mv.visitInsn(Opcodes.ICONST_1); + mv.visitInsn(Opcodes.IAND); + break; + default: throw new InternalError("unknown type: " + type); + } + } + + private void emitX2I(char type) { + switch (type) { + case 'J': mv.visitInsn(Opcodes.L2I); break; + case 'F': mv.visitInsn(Opcodes.F2I); break; + case 'D': mv.visitInsn(Opcodes.D2I); break; + default: throw new InternalError("unknown type: " + type); + } + } + + private static String basicTypeCharSignature(String prefix, MethodType type) { + StringBuilder buf = new StringBuilder(prefix); + for (Class ptype : type.parameterList()) + buf.append(Wrapper.forBasicType(ptype).basicTypeChar()); + buf.append('_').append(Wrapper.forBasicType(type.returnType()).basicTypeChar()); + return buf.toString(); + } + + /** + * Generate bytecode for a LambdaForm.vmentry which calls interpretWithArguments. + * + * @param sig + * @return + */ + static MemberName generateLambdaFormInterpreterEntryPoint(String sig) { + assert(LambdaForm.isValidSignature(sig)); + //System.out.println("generateExactInvoker "+sig); + // compute method type + // first parameter and return type + char tret = LambdaForm.signatureReturn(sig); + MethodType type = MethodType.methodType(LambdaForm.typeClass(tret), MethodHandle.class); + // other parameter types + int arity = LambdaForm.signatureArity(sig); + for (int i = 1; i < arity; i++) { + type = type.appendParameterTypes(LambdaForm.typeClass(sig.charAt(i))); + } + InvokerBytecodeGenerator g = new InvokerBytecodeGenerator("LFI", "interpret_"+tret, type); + return g.loadMethod(g.generateLambdaFormInterpreterEntryPointBytes()); + } + + private byte[] generateLambdaFormInterpreterEntryPointBytes() { + classFilePrologue(); + + // Suppress this method in backtraces displayed to the user. + mv.visitAnnotation("Ljava/lang/invoke/LambdaForm$Hidden;", true); + + // create parameter array + emitIconstInsn(invokerType.parameterCount()); + mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/Object"); + + // fill parameter array + for (int i = 0; i < invokerType.parameterCount(); i++) { + Class ptype = invokerType.parameterType(i); + mv.visitInsn(Opcodes.DUP); + emitIconstInsn(i); + emitLoadInsn(Wrapper.basicTypeChar(ptype), i); + // box if primitive type + if (ptype.isPrimitive()) { + emitBoxing(ptype); + } + mv.visitInsn(Opcodes.AASTORE); + } + // invoke + emitAloadInsn(0); + mv.visitFieldInsn(Opcodes.GETFIELD, MH, "form", "Ljava/lang/invoke/LambdaForm;"); + mv.visitInsn(Opcodes.SWAP); // swap form and array; avoid local variable + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, LF, "interpretWithArguments", "([Ljava/lang/Object;)Ljava/lang/Object;"); + + // maybe unbox + Class rtype = invokerType.returnType(); + if (rtype.isPrimitive() && rtype != void.class) { + emitUnboxing(Wrapper.asWrapperType(rtype)); + } + + // return statement + emitReturnInsn(rtype); + + classFileEpilogue(); + bogusMethod(invokerType); + + final byte[] classFile = cw.toByteArray(); + maybeDump(className, classFile); + return classFile; + } + + /** + * Generate bytecode for a NamedFunction invoker. + * + * @param srcType + * @param dstType + * @return + */ + static MemberName generateNamedFunctionInvoker(MethodTypeForm typeForm) { + MethodType invokerType = LambdaForm.NamedFunction.INVOKER_METHOD_TYPE; + String invokerName = basicTypeCharSignature("invoke_", typeForm.erasedType()); + InvokerBytecodeGenerator g = new InvokerBytecodeGenerator("NFI", invokerName, invokerType); + return g.loadMethod(g.generateNamedFunctionInvokerImpl(typeForm)); + } + + static int nfi = 0; + + private byte[] generateNamedFunctionInvokerImpl(MethodTypeForm typeForm) { + MethodType dstType = typeForm.erasedType(); + classFilePrologue(); + + // Suppress this method in backtraces displayed to the user. + mv.visitAnnotation("Ljava/lang/invoke/LambdaForm$Hidden;", true); + + // Load receiver + emitAloadInsn(0); + + // Load arguments from array + for (int i = 0; i < dstType.parameterCount(); i++) { + emitAloadInsn(1); + emitIconstInsn(i); + mv.visitInsn(Opcodes.AALOAD); + + // Maybe unbox + Class dptype = dstType.parameterType(i); + if (dptype.isPrimitive()) { + Class sptype = dstType.basicType().wrap().parameterType(i); + Wrapper dstWrapper = Wrapper.forBasicType(dptype); + Wrapper srcWrapper = dstWrapper.isSubwordOrInt() ? Wrapper.INT : dstWrapper; // narrow subword from int + emitUnboxing(srcWrapper.wrapperType()); + emitPrimCast(srcWrapper.basicTypeChar(), dstWrapper.basicTypeChar()); + } + } + + // Invoke + String targetDesc = dstType.basicType().toMethodDescriptorString(); + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", targetDesc); + + // Box primitive types + Class rtype = dstType.returnType(); + if (rtype != void.class && rtype.isPrimitive()) { + Wrapper srcWrapper = Wrapper.forBasicType(rtype); + Wrapper dstWrapper = srcWrapper.isSubwordOrInt() ? Wrapper.INT : srcWrapper; // widen subword to int + // boolean casts not allowed + emitPrimCast(srcWrapper.basicTypeChar(), dstWrapper.basicTypeChar()); + emitBoxing(dstWrapper.primitiveType()); + } + + // If the return type is void we return a null reference. + if (rtype == void.class) { + mv.visitInsn(Opcodes.ACONST_NULL); + } + emitReturnInsn(Object.class); // NOTE: NamedFunction invokers always return a reference value. + + classFileEpilogue(); + bogusMethod(dstType); + + final byte[] classFile = cw.toByteArray(); + maybeDump(className, classFile); + return classFile; + } + + /** + * Emit a bogus method that just loads some string constants. This is to get the constants into the constant pool + * for debugging purposes. + */ + private void bogusMethod(Object... os) { + if (DUMP_CLASS_FILES) { + mv = cw.visitMethod(Opcodes.ACC_STATIC, "dummy", "()V", null, null); + for (Object o : os) { + mv.visitLdcInsn(o.toString()); + mv.visitInsn(Opcodes.POP); + } + mv.visitInsn(Opcodes.RETURN); + mv.visitMaxs(0, 0); + mv.visitEnd(); + } + } +} diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/Invokers.java --- a/src/share/classes/java/lang/invoke/Invokers.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/invoke/Invokers.java Fri Aug 24 09:29:17 2012 +0100 @@ -25,8 +25,11 @@ package java.lang.invoke; +import java.util.Arrays; import sun.invoke.empty.Empty; +import static java.lang.invoke.MethodHandleNatives.Constants.*; import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; +import static java.lang.invoke.LambdaForm.*; /** * Construction and caching of often-used invokers. @@ -36,11 +39,15 @@ // exact type (sans leading taget MH) for the outgoing call private final MethodType targetType; + // FIXME: Get rid of the invokers that are not useful. + // exact invoker for the outgoing call private /*lazy*/ MethodHandle exactInvoker; // erased (partially untyped but with primitives) invoker for the outgoing call + // FIXME: get rid of private /*lazy*/ MethodHandle erasedInvoker; + // FIXME: get rid of /*lazy*/ MethodHandle erasedInvokerWithDrops; // for InvokeGeneric // general invoker for the outgoing call @@ -63,14 +70,13 @@ this.spreadInvokers = new MethodHandle[targetType.parameterCount()+1]; } - /*non-public*/ static MethodType invokerType(MethodType targetType) { - return targetType.insertParameterTypes(0, MethodHandle.class); - } - /*non-public*/ MethodHandle exactInvoker() { MethodHandle invoker = exactInvoker; if (invoker != null) return invoker; - invoker = lookupInvoker("invokeExact"); + MethodType mtype = targetType; + LambdaForm lform = invokeForm(mtype, MethodTypeForm.LF_EX_INVOKER); + invoker = BoundMethodHandle.bindSingle(mtype.invokerType(), lform, mtype); + assert(checkInvoker(invoker)); exactInvoker = invoker; return invoker; } @@ -78,29 +84,50 @@ /*non-public*/ MethodHandle generalInvoker() { MethodHandle invoker = generalInvoker; if (invoker != null) return invoker; - invoker = lookupInvoker("invoke"); + MethodType mtype = targetType; + prepareForGenericCall(mtype); + LambdaForm lform = invokeForm(mtype, MethodTypeForm.LF_GEN_INVOKER); + invoker = BoundMethodHandle.bindSingle(mtype.invokerType(), lform, mtype); + assert(checkInvoker(invoker)); generalInvoker = invoker; return invoker; } - private MethodHandle lookupInvoker(String name) { - MethodHandle invoker; - try { - invoker = IMPL_LOOKUP.findVirtual(MethodHandle.class, name, targetType); - } catch (ReflectiveOperationException ex) { - throw new InternalError("JVM cannot find invoker for "+targetType, ex); - } - assert(invokerType(targetType) == invoker.type()); - assert(!invoker.isVarargsCollector()); + /*non-public*/ MethodHandle makeBasicInvoker() { + MethodHandle invoker = DirectMethodHandle.make(invokeBasicMethod(targetType)); + assert(targetType == targetType.basicType()); + // Note: This is not cached here. It is cached by the calling MethodTypeForm. + assert(checkInvoker(invoker)); return invoker; } + static MemberName invokeBasicMethod(MethodType type) { + String name = "invokeBasic"; + try { + //Lookup.findVirtual(MethodHandle.class, name, type); + return IMPL_LOOKUP.resolveOrFail(REF_invokeVirtual, MethodHandle.class, name, type); + + } catch (ReflectiveOperationException ex) { + throw new InternalError("JVM cannot find invoker for "+type, ex); + } + } + + private boolean checkInvoker(MethodHandle invoker) { + assert(targetType.invokerType().equals(invoker.type())) + : java.util.Arrays.asList(targetType, targetType.invokerType(), invoker); + assert(invoker.internalMemberName() == null || + invoker.internalMemberName().getMethodType().equals(targetType)); + assert(!invoker.isVarargsCollector()); + return true; + } + + // FIXME: get rid of /*non-public*/ MethodHandle erasedInvoker() { MethodHandle xinvoker = exactInvoker(); MethodHandle invoker = erasedInvoker; if (invoker != null) return invoker; MethodType erasedType = targetType.erase(); - invoker = xinvoker.asType(invokerType(erasedType)); + invoker = xinvoker.asType(erasedType.invokerType()); erasedInvoker = invoker; return invoker; } @@ -118,7 +145,7 @@ /*non-public*/ MethodHandle varargsInvoker() { MethodHandle vaInvoker = varargsInvoker; if (vaInvoker != null) return vaInvoker; - vaInvoker = spreadInvoker(0).asType(invokerType(MethodType.genericMethodType(0, true))); + vaInvoker = spreadInvoker(0).asType(MethodType.genericMethodType(0, true).invokerType()); varargsInvoker = vaInvoker; return vaInvoker; } @@ -137,16 +164,18 @@ uninitializedCallSite = invoker; return invoker; } - if (THROW_UCS == null) { + invoker = THROW_UCS; + if (invoker == null) { try { - THROW_UCS = IMPL_LOOKUP + THROW_UCS = invoker = IMPL_LOOKUP .findStatic(CallSite.class, "uninitializedCallSite", MethodType.methodType(Empty.class)); } catch (ReflectiveOperationException ex) { throw new RuntimeException(ex); } } - invoker = AdapterMethodHandle.makeRetypeRaw(targetType, THROW_UCS); + invoker = MethodHandles.explicitCastArguments(invoker, MethodType.methodType(targetType.returnType())); + invoker = invoker.dropArguments(targetType, 0, targetType.parameterCount()); assert(invoker.type().equals(targetType)); uninitializedCallSite = invoker; return invoker; @@ -155,4 +184,208 @@ public String toString() { return "Invokers"+targetType; } + + private static MethodType fixMethodType(Class callerClass, Object type) { + if (type instanceof MethodType) + return (MethodType) type; + else + return MethodType.fromMethodDescriptorString((String)type, callerClass.getClassLoader()); + } + + static MemberName exactInvokerMethod(Class callerClass, Object type, Object[] appendixResult) { + MethodType mtype = fixMethodType(callerClass, type); + LambdaForm lform = invokeForm(mtype, MethodTypeForm.LF_EX_LINKER); + appendixResult[0] = mtype; + return lform.vmentry; + } + + static MemberName genericInvokerMethod(Class callerClass, Object type, Object[] appendixResult) { + MethodType mtype = fixMethodType(callerClass, type); + LambdaForm lform = invokeForm(mtype, MethodTypeForm.LF_GEN_LINKER); + prepareForGenericCall(mtype); + appendixResult[0] = mtype; + return lform.vmentry; + } + + private static LambdaForm invokeForm(MethodType mtype, int which) { + mtype = mtype.basicType(); // normalize Z to I, String to Object, etc. + boolean isLinker, isGeneric; + String debugName; + switch (which) { + case MethodTypeForm.LF_EX_LINKER: isLinker = true; isGeneric = false; debugName = "invokeExact_MT"; break; + case MethodTypeForm.LF_EX_INVOKER: isLinker = false; isGeneric = false; debugName = "exactInvoker"; break; + case MethodTypeForm.LF_GEN_LINKER: isLinker = true; isGeneric = true; debugName = "invoke_MT"; break; + case MethodTypeForm.LF_GEN_INVOKER: isLinker = false; isGeneric = true; debugName = "invoker"; break; + default: throw new InternalError(); + } + LambdaForm lform = mtype.form().cachedLambdaForm(which); + if (lform != null) return lform; + // exactInvokerForm (Object,Object)Object + // link with java.lang.invoke.MethodHandle.invokeBasic(MethodHandle,Object,Object)Object/invokeSpecial + final int THIS_MH = 0; + final int CALL_MH = THIS_MH + (isLinker ? 0 : 1); + final int ARG_BASE = CALL_MH + 1; + final int OUTARG_LIMIT = ARG_BASE + mtype.parameterCount(); + final int INARG_LIMIT = OUTARG_LIMIT + (isLinker ? 1 : 0); + int nameCursor = OUTARG_LIMIT; + final int MTYPE_ARG = nameCursor++; // might be last in-argument + final int CHECK_TYPE = nameCursor++; + final int LINKER_CALL = nameCursor++; + MethodType invokerFormType = mtype.invokerType(); + if (isLinker) { + invokerFormType = invokerFormType.appendParameterTypes(MemberName.class); + } else { + invokerFormType = invokerFormType.invokerType(); + } + Name[] names = arguments(nameCursor - INARG_LIMIT, invokerFormType); + assert(names.length == nameCursor); + if (MTYPE_ARG >= INARG_LIMIT) { + assert(names[MTYPE_ARG] == null); + names[MTYPE_ARG] = BoundMethodHandle.getSpeciesData("L").getterName(names[THIS_MH], 0); + // else if isLinker, then MTYPE is passed in from the caller (e.g., the JVM) + } + + // Make the final call. If isGeneric, then prepend the result of type checking. + MethodType outCallType; + Object[] outArgs; + if (!isGeneric) { + names[CHECK_TYPE] = new Name(NF_checkExactType, names[CALL_MH], names[MTYPE_ARG]); + // mh.invokeExact(a*):R => checkExactType(mh, TYPEOF(a*:R)); mh.invokeBasic(a*) + outArgs = Arrays.copyOfRange(names, CALL_MH, OUTARG_LIMIT, Object[].class); + outCallType = mtype; + } else { + names[CHECK_TYPE] = new Name(NF_checkGenericType, names[CALL_MH], names[MTYPE_ARG]); + // mh.invokeGeneric(a*):R => + // let mt=TYPEOF(a*:R), gamh=checkGenericType(mh, mt); + // gamh.invokeBasic(mt, mh, a*) + final int PREPEND_GAMH = 0, PREPEND_MT = 1, PREPEND_COUNT = 2; + outArgs = Arrays.copyOfRange(names, CALL_MH, OUTARG_LIMIT + PREPEND_COUNT, Object[].class); + // prepend arguments: + System.arraycopy(outArgs, 0, outArgs, PREPEND_COUNT, outArgs.length - PREPEND_COUNT); + outArgs[PREPEND_GAMH] = names[CHECK_TYPE]; + outArgs[PREPEND_MT] = names[MTYPE_ARG]; + outCallType = mtype.insertParameterTypes(0, MethodType.class, MethodHandle.class); + } + names[LINKER_CALL] = new Name(invokeBasicMethod(outCallType), outArgs); + lform = new LambdaForm(debugName, INARG_LIMIT, names); + if (isLinker) + lform.compileToBytecode(); // JVM needs a real methodOop + lform = mtype.form().setCachedLambdaForm(which, lform); + return lform; + } + + /*non-public*/ static + WrongMethodTypeException newWrongMethodTypeException(MethodType actual, MethodType expected) { + // FIXME: merge with JVM logic for throwing WMTE + return new WrongMethodTypeException("expected "+expected+" but found "+actual); + } + + /** Static definition of MethodHandle.invokeExact checking code. */ + /*non-public*/ static + @ForceInline + void checkExactType(Object mhObj, Object expectedObj) { + MethodHandle mh = (MethodHandle) mhObj; + MethodType expected = (MethodType) expectedObj; + MethodType actual = mh.type(); + if (actual != expected) + throw newWrongMethodTypeException(expected, actual); + } + + /** Static definition of MethodHandle.invokeGeneric checking code. */ + /*non-public*/ static + @ForceInline + Object checkGenericType(Object mhObj, Object expectedObj) { + MethodHandle mh = (MethodHandle) mhObj; + MethodType expected = (MethodType) expectedObj; + //MethodType actual = mh.type(); + MethodHandle gamh = expected.form().genericInvoker; + if (gamh != null) return gamh; + return prepareForGenericCall(expected); + } + + /** + * Returns an adapter GA for invoking a MH with type adjustments. + * The MethodType of the generic invocation site is prepended to MH + * and its arguments as follows: + * {@code (R)MH.invoke(A*) => GA.invokeBasic(TYPEOF, MH, A*)} + */ + /*non-public*/ static MethodHandle prepareForGenericCall(MethodType mtype) { + // force any needed adapters to be preconstructed + MethodTypeForm form = mtype.form(); + MethodHandle gamh = form.genericInvoker; + if (gamh != null) return gamh; + try { + // Trigger adapter creation. + gamh = InvokeGeneric.generalInvokerOf(form.erasedType); + form.genericInvoker = gamh; + return gamh; + } catch (Exception ex) { + throw new InternalError("Exception while resolving inexact invoke", ex); + } + } + + static MemberName linkToCallSiteMethod(MethodType mtype) { + LambdaForm lform = callSiteForm(mtype); + return lform.vmentry; + } + + private static LambdaForm callSiteForm(MethodType mtype) { + mtype = mtype.basicType(); // normalize Z to I, String to Object, etc. + LambdaForm lform = mtype.form().cachedLambdaForm(MethodTypeForm.LF_CS_LINKER); + if (lform != null) return lform; + // exactInvokerForm (Object,Object)Object + // link with java.lang.invoke.MethodHandle.invokeBasic(MethodHandle,Object,Object)Object/invokeSpecial + final int ARG_BASE = 0; + final int OUTARG_LIMIT = ARG_BASE + mtype.parameterCount(); + final int INARG_LIMIT = OUTARG_LIMIT + 1; + int nameCursor = OUTARG_LIMIT; + final int CSITE_ARG = nameCursor++; // the last in-argument + final int CALL_MH = nameCursor++; // result of getTarget + final int LINKER_CALL = nameCursor++; + MethodType invokerFormType = mtype.appendParameterTypes(CallSite.class); + Name[] names = arguments(nameCursor - INARG_LIMIT, invokerFormType); + assert(names.length == nameCursor); + assert(names[CSITE_ARG] != null); + names[CALL_MH] = new Name(NF_getCallSiteTarget, names[CSITE_ARG]); + // (site.)invokedynamic(a*):R => mh = site.getTarget(); mh.invokeBasic(a*) + final int PREPEND_MH = 0, PREPEND_COUNT = 1; + Object[] outArgs = Arrays.copyOfRange(names, ARG_BASE, OUTARG_LIMIT + PREPEND_COUNT, Object[].class); + // prepend MH argument: + System.arraycopy(outArgs, 0, outArgs, PREPEND_COUNT, outArgs.length - PREPEND_COUNT); + outArgs[PREPEND_MH] = names[CALL_MH]; + names[LINKER_CALL] = new Name(invokeBasicMethod(mtype), outArgs); + lform = new LambdaForm("linkToCallSite", INARG_LIMIT, names); + lform.compileToBytecode(); // JVM needs a real methodOop + lform = mtype.form().setCachedLambdaForm(MethodTypeForm.LF_CS_LINKER, lform); + return lform; + } + + /** Static definition of MethodHandle.invokeGeneric checking code. */ + /*non-public*/ static + @ForceInline + Object getCallSiteTarget(Object site) { + return ((CallSite)site).getTarget(); + } + + // Local constant functions: + private static final NamedFunction NF_checkExactType; + private static final NamedFunction NF_checkGenericType; + private static final NamedFunction NF_getCallSiteTarget; + static { + try { + NF_checkExactType = new NamedFunction(Invokers.class + .getDeclaredMethod("checkExactType", Object.class, Object.class)); + NF_checkGenericType = new NamedFunction(Invokers.class + .getDeclaredMethod("checkGenericType", Object.class, Object.class)); + NF_getCallSiteTarget = new NamedFunction(Invokers.class + .getDeclaredMethod("getCallSiteTarget", Object.class)); + NF_checkExactType.resolve(); + NF_checkGenericType.resolve(); + NF_getCallSiteTarget.resolve(); + // bound + } catch (ReflectiveOperationException ex) { + throw new InternalError(ex); + } + } + } diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/LambdaForm.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/classes/java/lang/invoke/LambdaForm.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,1620 @@ +/* + * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package java.lang.invoke; + +import java.lang.annotation.*; +import java.lang.reflect.Method; +import java.util.Map; +import java.util.List; +import java.util.Arrays; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.concurrent.ConcurrentHashMap; +import sun.invoke.util.Wrapper; +import static java.lang.invoke.MethodHandleStatics.*; +import static java.lang.invoke.MethodHandleNatives.Constants.*; +import java.lang.reflect.Field; +import java.util.Objects; + +/** + * The symbolic, non-executable form of a method handle's invocation semantics. + * It consists of a series of names. + * The first N (N=arity) names are parameters, + * while any remaining names are temporary values. + * Each temporary specifies the application of a function to some arguments. + * The functions are method handles, while the arguments are mixes of + * constant values and local names. + * The result of the lambda is defined as one of the names, often the last one. + *

+ * Here is an approximate grammar: + *

+ * LambdaForm = "(" ArgName* ")=>{" TempName* Result "}"
+ * ArgName = "a" N ":" T
+ * TempName = "t" N ":" T "=" Function "(" Argument* ");"
+ * Function = ConstantValue
+ * Argument = NameRef | ConstantValue
+ * Result = NameRef | "void"
+ * NameRef = "a" N | "t" N
+ * N = (any whole number)
+ * T = "L" | "I" | "J" | "F" | "D" | "V"
+ * 
+ * Names are numbered consecutively from left to right starting at zero. + * (The letters are merely a taste of syntax sugar.) + * Thus, the first temporary (if any) is always numbered N (where N=arity). + * Every occurrence of a name reference in an argument list must refer to + * a name previously defined within the same lambda. + * A lambda has a void result if and only if its result index is -1. + * If a temporary has the type "V", it cannot be the subject of a NameRef, + * even though possesses a number. + * Note that all reference types are erased to "L", which stands for {@code Object). + * All subword types (boolean, byte, short, char) are erased to "I" which is {@code int}. + * The other types stand for the usual primitive types. + *

+ * Function invocation closely follows the static rules of the Java verifier. + * Arguments and return values must exactly match when their "Name" types are + * considered. + * Conversions are allowed only if they do not change the erased type. + *

    + *
  • L = Object: casts are used freely to convert into and out of reference types + *
  • I = int: subword types are forcibly narrowed when passed as arguments (see {@code explicitCastArguments}) + *
  • J = long: no implicit conversions + *
  • F = float: no implicit conversions + *
  • D = double: no implicit conversions + *
  • V = void: a function result may be void if and only if its Name is of type "V" + *
+ * Although implicit conversions are not allowed, explicit ones can easily be + * encoded by using temporary expressions which call type-transformed identity functions. + *

+ * Examples: + *

+ * (a0:J)=>{ a0 }
+ *     == identity(long)
+ * (a0:I)=>{ t1:V = System.out#println(a0); void }
+ *     == System.out#println(int)
+ * (a0:L)=>{ t1:V = System.out#println(a0); a0 }
+ *     == identity, with printing side-effect
+ * (a0:L, a1:L)=>{ t2:L = BoundMethodHandle#argument(a0);
+ *                 t3:L = BoundMethodHandle#target(a0);
+ *                 t4:L = MethodHandle#invoke(t3, t2, a1); t4 }
+ *     == general invoker for unary insertArgument combination
+ * (a0:L, a1:L)=>{ t2:L = FilterMethodHandle#filter(a0);
+ *                 t3:L = MethodHandle#invoke(t2, a1);
+ *                 t4:L = FilterMethodHandle#target(a0);
+ *                 t5:L = MethodHandle#invoke(t4, t3); t5 }
+ *     == general invoker for unary filterArgument combination
+ * (a0:L, a1:L)=>{ ...(same as previous example)...
+ *                 t5:L = MethodHandle#invoke(t4, t3, a1); t5 }
+ *     == general invoker for unary/unary foldArgument combination
+ * (a0:L, a1:I)=>{ t2:I = identity(long).asType((int)->long)(a1); t2 }
+ *     == invoker for identity method handle which performs i2l
+ * (a0:L, a1:L)=>{ t2:L = BoundMethodHandle#argument(a0);
+ *                 t3:L = Class#cast(t2,a1); t3 }
+ *     == invoker for identity method handle which performs cast
+ * 
+ *

+ * @author John Rose, JSR 292 EG + */ +class LambdaForm { + final int arity; + final int result; + final Name[] names; + final String debugName; + MemberName vmentry; // low-level behavior, or null if not yet prepared + private boolean isCompiled; + + // Caches for common structural transforms: + LambdaForm[] bindCache; + + public static final int VOID_RESULT = -1, LAST_RESULT = -2; + + LambdaForm(String debugName, + int arity, Name[] names, int result) { + assert(namesOK(arity, names)); + this.arity = arity; + this.result = fixResult(result, names); + this.names = names.clone(); + this.debugName = debugName; + normalize(); + } + + LambdaForm(String debugName, + int arity, Name[] names) { + this(debugName, + arity, names, LAST_RESULT); + } + + LambdaForm(String debugName, + Name[] formals, Name[] temps, Name result) { + this(debugName, + formals.length, buildNames(formals, temps, result), LAST_RESULT); + } + + private static Name[] buildNames(Name[] formals, Name[] temps, Name result) { + int arity = formals.length; + int length = arity + temps.length + (result == null ? 0 : 1); + Name[] names = Arrays.copyOf(formals, length); + System.arraycopy(temps, 0, names, arity, temps.length); + if (result != null) + names[length - 1] = result; + return names; + } + + private LambdaForm(String sig) { + // Make a blank lambda form, which returns a constant zero or null. + // It is used as a template for managing the invocation of similar forms that are non-empty. + // Called only from getPreparedForm. + assert(isValidSignature(sig)); + this.arity = signatureArity(sig); + this.result = (signatureReturn(sig) == 'V' ? -1 : arity); + this.names = buildEmptyNames(arity, sig); + this.debugName = "LF.zero"; + assert(nameRefsAreLegal()); + assert(isEmpty()); + assert(sig.equals(basicTypeSignature())); + } + + private static Name[] buildEmptyNames(int arity, String basicTypeSignature) { + assert(isValidSignature(basicTypeSignature)); + int resultPos = arity + 1; // skip '_' + if (arity < 0 || basicTypeSignature.length() != resultPos+1) + throw new IllegalArgumentException("bad arity for "+basicTypeSignature); + int numRes = (basicTypeSignature.charAt(resultPos) == 'V' ? 0 : 1); + Name[] names = arguments(numRes, basicTypeSignature.substring(0, arity)); + for (int i = 0; i < numRes; i++) { + names[arity + i] = constantZero(arity + i, basicTypeSignature.charAt(resultPos + i)); + } + return names; + } + + private static int fixResult(int result, Name[] names) { + if (result >= 0) { + if (names[result].type == 'V') + return -1; + } else if (result == LAST_RESULT) { + return names.length - 1; + } + return result; + } + + private static boolean namesOK(int arity, Name[] names) { + for (int i = 0; i < names.length; i++) { + Name n = names[i]; + assert(n != null) : "n is null"; + if (i < arity) + assert( n.isParam()) : n + " is not param at " + i; + else + assert(!n.isParam()) : n + " is param at " + i; + } + return true; + } + + /** Renumber and/or replace params so that they are interned and canonically numbered. */ + private void normalize() { + Name[] oldNames = null; + int changesStart = 0; + for (int i = 0; i < names.length; i++) { + Name n = names[i]; + if (!n.initIndex(i)) { + if (oldNames == null) { + oldNames = names.clone(); + changesStart = i; + } + names[i] = n.cloneWithIndex(i); + } + } + if (oldNames != null) { + int startFixing = arity; + if (startFixing <= changesStart) + startFixing = changesStart+1; + for (int i = startFixing; i < names.length; i++) { + Name fixed = names[i].replaceNames(oldNames, names, changesStart, i); + names[i] = fixed.newIndex(i); + } + } + assert(nameRefsAreLegal()); + int maxInterned = Math.min(arity, INTERNED_ARGUMENT_LIMIT); + boolean needIntern = false; + for (int i = 0; i < maxInterned; i++) { + Name n = names[i], n2 = internArgument(n); + if (n != n2) { + names[i] = n2; + needIntern = true; + } + } + if (needIntern) { + for (int i = arity; i < names.length; i++) { + names[i].internArguments(); + } + assert(nameRefsAreLegal()); + } + } + + /** + * Check that all embedded Name references are localizable to this lambda, + * and are properly ordered after their corresponding definitions. + *

+ * Note that a Name can be local to multiple lambdas, as long as + * it possesses the same index in each use site. + * This allows Name references to be freely reused to construct + * fresh lambdas, without confusion. + */ + private boolean nameRefsAreLegal() { + assert(arity >= 0 && arity <= names.length); + assert(result >= -1 && result < names.length); + // Do all names possess an index consistent with their local definition order? + for (int i = 0; i < arity; i++) { + Name n = names[i]; + assert(n.index() == i) : Arrays.asList(n.index(), i); + assert(n.isParam()); + } + // Also, do all local name references + for (int i = arity; i < names.length; i++) { + Name n = names[i]; + assert(n.index() == i); + for (Object arg : n.arguments) { + if (arg instanceof Name) { + Name n2 = (Name) arg; + int i2 = n2.index; + assert(0 <= i2 && i2 < names.length) : n.debugString() + ": 0 <= i2 && i2 < names.length: 0 <= " + i2 + " < " + names.length; + assert(names[i2] == n2) : Arrays.asList("-1-", i, "-2-", n.debugString(), "-3-", i2, "-4-", n2.debugString(), "-5-", names[i2].debugString(), "-6-", this); + assert(i2 < i); // ref must come after def! + } + } + } + return true; + } + + /** Invoke this form on the given arguments. */ + // final Object invoke(Object... args) throws Throwable { + // // NYI: fit this into the fast path? + // return interpretWithArguments(args); + // } + + /** Report the return type. */ + char returnType() { + if (result < 0) return 'V'; + Name n = names[result]; + return n.type; + } + + /** Report the N-th argument type. */ + char parameterType(int n) { + assert(n < arity); + return names[n].type; + } + + /** Report the arity. */ + int arity() { + return arity; + } + + /** Return the method type corresponding to my basic type signature. */ + MethodType methodType() { + return signatureType(basicTypeSignature()); + } + /** Return ABC_Z, where the ABC are parameter type characters, and Z is the return type character. */ + final String basicTypeSignature() { + StringBuilder buf = new StringBuilder(arity() + 3); + for (int i = 0, a = arity(); i < a; i++) + buf.append(parameterType(i)); + return buf.append('_').append(returnType()).toString(); + } + static int signatureArity(String sig) { + assert(isValidSignature(sig)); + return sig.indexOf('_'); + } + static char signatureReturn(String sig) { + return sig.charAt(signatureArity(sig)+1); + } + static boolean isValidSignature(String sig) { + int arity = sig.indexOf('_'); + if (arity < 0) return false; // must be of the form *_* + int siglen = sig.length(); + if (siglen != arity + 2) return false; // *_X + for (int i = 0; i < siglen; i++) { + if (i == arity) continue; // skip '_' + char c = sig.charAt(i); + if (c == 'V') + return (i == siglen - 1 && arity == siglen - 2); + if (ALL_TYPES.indexOf(c) < 0) return false; // must be [LIJFD] + } + return true; // [LIJFD]*_[LIJFDV] + } + static Class typeClass(char t) { + switch (t) { + case 'I': return int.class; + case 'J': return long.class; + case 'F': return float.class; + case 'D': return double.class; + case 'L': return Object.class; + case 'V': return void.class; + default: assert false; + } + return null; + } + static MethodType signatureType(String sig) { + Class[] ptypes = new Class[signatureArity(sig)]; + for (int i = 0; i < ptypes.length; i++) + ptypes[i] = typeClass(sig.charAt(i)); + Class rtype = typeClass(signatureReturn(sig)); + return MethodType.methodType(rtype, ptypes); + } + + /* + * Code generation issues: + * + * Compiled LFs should be reusable in general. + * The biggest issue is how to decide when to pull a name into + * the bytecode, versus loading a reified form from the MH data. + * + * For example, an asType wrapper may require execution of a cast + * after a call to a MH. The target type of the cast can be placed + * as a constant in the LF itself. This will force the cast type + * to be compiled into the bytecodes and native code for the MH. + * Or, the target type of the cast can be erased in the LF, and + * loaded from the MH data. (Later on, if the MH as a whole is + * inlined, the data will flow into the inlined instance of the LF, + * as a constant, and the end result will be an optimal cast.) + * + * This erasure of cast types can be done with any use of + * reference types. It can also be done with whole method + * handles. Erasing a method handle might leave behind + * LF code that executes correctly for any MH of a given + * type, and load the required MH from the enclosing MH's data. + * Or, the erasure might even erase the expected MT. + * + * Also, for direct MHs, the MemberName of the target + * could be erased, and loaded from the containing direct MH. + * As a simple case, a LF for all int-valued non-static + * field getters would perform a cast on its input argument + * (to non-constant base type derived from the MemberName) + * and load an integer value from the input object + * (at a non-constant offset also derived from the MemberName). + * Such MN-erased LFs would be inlinable back to optimized + * code, whenever a constant enclosing DMH is available + * to supply a constant MN from its data. + * + * The main problem here is to keep LFs reasonably generic, + * while ensuring that hot spots will inline good instances. + * "Reasonably generic" means that we don't end up with + * repeated versions of bytecode or machine code that do + * not differ in their optimized form. Repeated versions + * of machine would have the undesirable overheads of + * (a) redundant compilation work and (b) extra I$ pressure. + * To control repeated versions, we need to be ready to + * erase details from LFs and move them into MH data, + * whevener those details are not relevant to significant + * optimization. "Significant" means optimization of + * code that is actually hot. + * + * Achieving this may require dynamic splitting of MHs, by replacing + * a generic LF with a more specialized one, on the same MH, + * if (a) the MH is frequently executed and (b) the MH cannot + * be inlined into a containing caller, such as an invokedynamic. + * + * Compiled LFs that are no longer used should be GC-able. + * If they contain non-BCP references, they should be properly + * interlinked with the class loader(s) that their embedded types + * depend on. This probably means that reusable compiled LFs + * will be tabulated (indexed) on relevant class loaders, + * or else that the tables that cache them will have weak links. + */ + + /** + * Make this LF directly executable, as part of a MethodHandle. + * Invariant: Every MH which is invoked must prepare its LF + * before invocation. + * (In principle, the JVM could do this very lazily, + * as a sort of pre-invocation linkage step.) + */ + public void prepare() { + if (COMPILE_THRESHOLD == 0) { + compileToBytecode(); + } + if (this.vmentry != null) { + // already prepared (e.g., a primitive DMH invoker form) + return; + } + LambdaForm prep = getPreparedForm(basicTypeSignature()); + this.vmentry = prep.vmentry; + // TO DO: Maybe add invokeGeneric, invokeWithArguments + } + + /** Generate optimizable bytecode for this form. */ + MemberName compileToBytecode() { + MethodType invokerType = methodType(); + assert(vmentry == null || vmentry.getMethodType().basicType().equals(invokerType)); + if (vmentry != null && isCompiled) { + return vmentry; // already compiled somehow + } + try { + vmentry = InvokerBytecodeGenerator.generateCustomizedCode(this, invokerType); + if (TRACE_INTERPRETER) + traceInterpreter("compileToBytecode", this); + isCompiled = true; + return vmentry; + } catch (Error | Exception ex) { + throw new InternalError(this.toString(), ex); + } + } + + private static final ConcurrentHashMap PREPARED_FORMS; + static { + int capacity = 512; // expect many distinct signatures over time + float loadFactor = 0.75f; // normal default + int writers = 1; + PREPARED_FORMS = new ConcurrentHashMap<>(capacity, loadFactor, writers); + } + + private static Map computeInitialPreparedForms() { + // Find all predefined invokers and associate them with canonical empty lambda forms. + HashMap forms = new HashMap<>(); + for (MemberName m : MemberName.getFactory().getMethods(LambdaForm.class, false, null, null, null)) { + if (!m.isStatic() || !m.isPackage()) continue; + MethodType mt = m.getMethodType(); + if (mt.parameterCount() > 0 && + mt.parameterType(0) == MethodHandle.class && + m.getName().startsWith("interpret_")) { + String sig = basicTypeSignature(mt); + assert(m.getName().equals("interpret" + sig.substring(sig.indexOf('_')))); + LambdaForm form = new LambdaForm(sig); + form.vmentry = m; + mt.form().setCachedLambdaForm(MethodTypeForm.LF_COUNTER, form); + // FIXME: get rid of PREPARED_FORMS; use MethodTypeForm cache only + forms.put(sig, form); + } + } + //System.out.println("computeInitialPreparedForms => "+forms); + return forms; + } + + // Set this false to disable use of the interpret_L methods defined in this file. + private static final boolean USE_PREDEFINED_INTERPRET_METHODS = true; + + // The following are predefined exact invokers. The system must build + // a separate invoker for each distinct signature. + static Object interpret_L(MethodHandle mh) throws Throwable { + Object[] av = {mh}; + String sig = null; + assert(argumentTypesMatch(sig = "L_L", av)); + Object res = mh.form.interpretWithArguments(av); + assert(returnTypesMatch(sig, av, res)); + return res; + } + static Object interpret_L(MethodHandle mh, Object x1) throws Throwable { + Object[] av = {mh, x1}; + String sig = null; + assert(argumentTypesMatch(sig = "LL_L", av)); + Object res = mh.form.interpretWithArguments(av); + assert(returnTypesMatch(sig, av, res)); + return res; + } + static Object interpret_L(MethodHandle mh, Object x1, Object x2) throws Throwable { + Object[] av = {mh, x1, x2}; + String sig = null; + assert(argumentTypesMatch(sig = "LLL_L", av)); + Object res = mh.form.interpretWithArguments(av); + assert(returnTypesMatch(sig, av, res)); + return res; + } + private static LambdaForm getPreparedForm(String sig) { + MethodType mtype = signatureType(sig); + //LambdaForm prep = PREPARED_FORMS.get(sig); + LambdaForm prep = mtype.form().cachedLambdaForm(MethodTypeForm.LF_INTERPRET); + if (prep != null) return prep; + assert(isValidSignature(sig)); + prep = new LambdaForm(sig); + prep.vmentry = InvokerBytecodeGenerator.generateLambdaFormInterpreterEntryPoint(sig); + //LambdaForm prep2 = PREPARED_FORMS.putIfAbsent(sig.intern(), prep); + return mtype.form().setCachedLambdaForm(MethodTypeForm.LF_INTERPRET, prep); + } + + // The next few routines are called only from assert expressions + // They verify that the built-in invokers process the correct raw data types. + private static boolean argumentTypesMatch(String sig, Object[] av) { + int arity = signatureArity(sig); + assert(av.length == arity) : "av.length == arity: av.length=" + av.length + ", arity=" + arity; + assert(av[0] instanceof MethodHandle) : "av[0] not instace of MethodHandle: " + av[0]; + MethodHandle mh = (MethodHandle) av[0]; + MethodType mt = mh.type(); + assert(mt.parameterCount() == arity-1); + for (int i = 0; i < av.length; i++) { + Class pt = (i == 0 ? MethodHandle.class : mt.parameterType(i-1)); + assert(valueMatches(sig.charAt(i), pt, av[i])); + } + return true; + } + private static boolean valueMatches(char tc, Class type, Object x) { + // The following line is needed because (...)void method handles can use non-void invokers + if (type == void.class) tc = 'V'; // can drop any kind of value + assert tc == basicType(type) : tc + " == basicType(" + type + ")=" + basicType(type); + switch (tc) { + case 'I': assert checkInt(type, x) : "checkInt(" + type + "," + x +")"; break; + case 'J': assert x instanceof Long : "instanceof Long: " + x; break; + case 'F': assert x instanceof Float : "instanceof Float: " + x; break; + case 'D': assert x instanceof Double : "instanceof Double: " + x; break; + case 'L': assert checkRef(type, x) : "checkRef(" + type + "," + x + ")"; break; + case 'V': break; // allow anything here; will be dropped + default: assert(false); + } + return true; + } + private static boolean returnTypesMatch(String sig, Object[] av, Object res) { + MethodHandle mh = (MethodHandle) av[0]; + return valueMatches(signatureReturn(sig), mh.type().returnType(), res); + } + private static boolean checkInt(Class type, Object x) { + assert(x instanceof Integer); + if (type == int.class) return true; + Wrapper w = Wrapper.forBasicType(type); + assert(w.isSubwordOrInt()); + Object x1 = Wrapper.INT.wrap(w.wrap(x)); + return x.equals(x1); + } + private static boolean checkRef(Class type, Object x) { + assert(!type.isPrimitive()); + if (x == null) return true; + if (type.isInterface()) return true; + return type.isInstance(x); + } + + /** If the invocation count hits the threshold we spin bytecodes and call that subsequently. */ + private static final int COMPILE_THRESHOLD; + static { + if (MethodHandleStatics.COMPILE_THRESHOLD != null) + COMPILE_THRESHOLD = MethodHandleStatics.COMPILE_THRESHOLD; + else + COMPILE_THRESHOLD = 30; // default value + } + private int invocationCounter = 0; + + @Hidden + /** Interpretively invoke this form on the given arguments. */ + Object interpretWithArguments(Object... argumentValues) throws Throwable { + if (TRACE_INTERPRETER) + return interpretWithArgumentsTracing(argumentValues); + if (COMPILE_THRESHOLD != 0 && + invocationCounter < COMPILE_THRESHOLD) { + invocationCounter++; // benign race + if (invocationCounter >= COMPILE_THRESHOLD) { + // Replace vmentry with a bytecode version of this LF. + compileToBytecode(); + } + } + assert(arityCheck(argumentValues)); + Object[] values = Arrays.copyOf(argumentValues, names.length); + for (int i = argumentValues.length; i < values.length; i++) { + values[i] = interpretName(names[i], values); + } + return (result < 0) ? null : values[result]; + } + + @Hidden + /** Evaluate a single Name within this form, applying its function to its arguments. */ + Object interpretName(Name name, Object[] values) throws Throwable { + if (TRACE_INTERPRETER) + traceInterpreter("| interpretName", name.debugString(), (Object[]) null); + Object[] arguments = Arrays.copyOf(name.arguments, name.arguments.length, Object[].class); + for (int i = 0; i < arguments.length; i++) { + Object a = arguments[i]; + if (a instanceof Name) { + int i2 = ((Name)a).index(); + assert(names[i2] == a); + a = values[i2]; + arguments[i] = a; + } + } + return name.function.invokeWithArguments(arguments); + } + + Object interpretWithArgumentsTracing(Object... argumentValues) throws Throwable { + traceInterpreter("[ interpretWithArguments", this, argumentValues); + if (invocationCounter < COMPILE_THRESHOLD) { + int ctr = invocationCounter++; // benign race + traceInterpreter("| invocationCounter", ctr); + if (invocationCounter >= COMPILE_THRESHOLD) { + compileToBytecode(); + } + } + Object rval; + try { + assert(arityCheck(argumentValues)); + Object[] values = Arrays.copyOf(argumentValues, names.length); + for (int i = argumentValues.length; i < values.length; i++) { + values[i] = interpretName(names[i], values); + } + rval = (result < 0) ? null : values[result]; + } catch (Throwable ex) { + traceInterpreter("] throw =>", ex); + throw ex; + } + traceInterpreter("] return =>", rval); + return rval; + } + + //** This transform is applied (statically) to every name.function. */ + /* + private static MethodHandle eraseSubwordTypes(MethodHandle mh) { + MethodType mt = mh.type(); + if (mt.hasPrimitives()) { + mt = mt.changeReturnType(eraseSubwordType(mt.returnType())); + for (int i = 0; i < mt.parameterCount(); i++) { + mt = mt.changeParameterType(i, eraseSubwordType(mt.parameterType(i))); + } + mh = MethodHandles.explicitCastArguments(mh, mt); + } + return mh; + } + private static Class eraseSubwordType(Class type) { + if (!type.isPrimitive()) return type; + if (type == int.class) return type; + Wrapper w = Wrapper.forPrimitiveType(type); + if (w.isSubwordOrInt()) return int.class; + return type; + } + */ + + static void traceInterpreter(String event, Object obj, Object... args) { + if (!TRACE_INTERPRETER) return; + System.out.println("LFI: "+event+" "+(obj != null ? obj : "")+(args != null && args.length != 0 ? Arrays.asList(args) : "")); + } + static void traceInterpreter(String event, Object obj) { + traceInterpreter(event, obj, (Object[])null); + } + private boolean arityCheck(Object[] argumentValues) { + assert(argumentValues.length == arity) : arity+"!="+Arrays.asList(argumentValues)+".length"; + // also check that the leading (receiver) argument is somehow bound to this LF: + assert(argumentValues[0] instanceof MethodHandle) : "not MH: " + argumentValues[0]; + assert(((MethodHandle)argumentValues[0]).internalForm() == this); + // note: argument #0 could also be an interface wrapper, in the future + return true; + } + + private boolean isEmpty() { + if (result < 0) + return (names.length == arity); + else if (result == arity && names.length == arity + 1) + return names[arity].isConstantZero(); + else + return false; + } + + public String toString() { + StringBuilder buf = new StringBuilder("Lambda("); + for (int i = 0; i < names.length; i++) { + if (i == arity) buf.append(")=>{"); + Name n = names[i]; + if (i >= arity) buf.append("\n "); + buf.append(n); + if (i < arity) { + if (i+1 < arity) buf.append(","); + continue; + } + buf.append("=").append(n.exprString()); + buf.append(";"); + } + buf.append(result < 0 ? "void" : names[result]).append("}"); + if (TRACE_INTERPRETER) { + // Extra verbosity: + buf.append(":").append(basicTypeSignature()); + buf.append("/").append(vmentry); + } + return buf.toString(); + } + + /** + * Apply immediate binding for a Name in this form indicated by its position relative to the form. + * The first parameter to a LambdaForm, a0:L, always represents the form's method handle, so 0 is not + * accepted as valid. + */ + LambdaForm bindImmediate(int pos, char basicType, Object value) { + // must be an argument, and the types must match + assert pos > 0 && pos < arity && names[pos].type == basicType && Name.typesMatch(basicType, value); + + int arity2 = arity - 1; + Name[] names2 = new Name[names.length - 1]; + for (int r = 0, w = 0; r < names.length; ++r, ++w) { // (r)ead from names, (w)rite to names2 + Name n = names[r]; + if (n.isParam()) { + if (n.index == pos) { + // do not copy over the argument that is to be replaced with a literal, + // but adjust the write index + --w; + } else { + names2[w] = new Name(w, n.type); + } + } else { + Object[] arguments2 = new Object[n.arguments.length]; + for (int i = 0; i < n.arguments.length; ++i) { + Object arg = n.arguments[i]; + if (arg instanceof Name) { + int ni = ((Name) arg).index; + if (ni == pos) { + arguments2[i] = value; + } else if (ni < pos) { + // replacement position not yet passed + arguments2[i] = names2[ni]; + } else { + // replacement position passed + arguments2[i] = names2[ni - 1]; + } + } else { + arguments2[i] = arg; + } + } + names2[w] = new Name(n.function, arguments2); + names2[w].initIndex(w); + } + } + + int result2 = result == -1 ? -1 : result - 1; + return new LambdaForm(debugName, arity2, names2, result2); + } + + LambdaForm bind(int namePos, BoundMethodHandle.SpeciesData oldData) { + Name name = names[namePos]; + BoundMethodHandle.SpeciesData newData = oldData.extendWithType(name.type); + return bind(name, newData.getterName(names[0], oldData.fieldCount()), oldData, newData); + } + LambdaForm bind(Name name, Name binding, + BoundMethodHandle.SpeciesData oldData, + BoundMethodHandle.SpeciesData newData) { + int pos = name.index; + assert(name.isParam()); + assert(!binding.isParam()); + assert(name.type == binding.type); + assert(0 <= pos && pos < arity && names[pos] == name); + assert(binding.function.memberDeclaringClassOrNull() == newData.clazz); + assert(oldData.getters.length == newData.getters.length-1); + if (bindCache != null) { + LambdaForm form = bindCache[pos]; + if (form != null) { + assert(form.contains(binding)) : "form << " + form + " >> does not contain binding << " + binding + " >>"; + return form; + } + } else { + bindCache = new LambdaForm[arity]; + } + assert(nameRefsAreLegal()); + int arity2 = arity-1; + Name[] names2 = names.clone(); + names2[pos] = binding; // we might move this in a moment + + // The newly created LF will run with a different BMH. + // Switch over any pre-existing BMH field references to the new BMH class. + int firstOldRef = -1; + for (int i = 0; i < names2.length; i++) { + Name n = names[i]; + if (n.function != null && + n.function.memberDeclaringClassOrNull() == oldData.clazz) { + MethodHandle oldGetter = n.function.resolvedHandle; + MethodHandle newGetter = null; + for (int j = 0; j < oldData.getters.length; j++) { + if (oldGetter == oldData.getters[j]) + newGetter = newData.getters[j]; + } + if (newGetter != null) { + if (firstOldRef < 0) firstOldRef = i; + Name n2 = new Name(newGetter, n.arguments); + names2[i] = n2; + } + } + } + + // Walk over the new list of names once, in forward order. + // Replace references to 'name' with 'binding'. + // Replace data structure references to the old BMH species with the new. + // This might cause a ripple effect, but it will settle in one pass. + assert(firstOldRef < 0 || firstOldRef > pos); + for (int i = pos+1; i < names2.length; i++) { + if (i <= arity2) continue; + names2[i] = names2[i].replaceNames(names, names2, pos, i); + } + + // (a0, a1, name=a2, a3, a4) => (a0, a1, a3, a4, binding) + int insPos = pos; + for (; insPos+1 < names2.length; insPos++) { + Name n = names2[insPos+1]; + if (n.isSiblingBindingBefore(binding)) { + names2[insPos] = n; + } else { + break; + } + } + names2[insPos] = binding; + + // Since we moved some stuff, maybe update the result reference: + int result2 = result; + if (result2 == pos) + result2 = insPos; + else if (result2 > pos && result2 <= insPos) + result2 -= 1; + + return bindCache[pos] = new LambdaForm(debugName, arity2, names2, result2); + } + + boolean contains(Name name) { + int pos = name.index(); + if (pos >= 0) { + return pos < names.length && name.equals(names[pos]); + } + for (int i = arity; i < names.length; i++) { + if (name.equals(names[i])) + return true; + } + return false; + } + + LambdaForm addArguments(int pos, char... types) { + assert(pos <= arity); + int length = names.length; + int inTypes = types.length; + Name[] names2 = Arrays.copyOf(names, length + inTypes); + int arity2 = arity + inTypes; + int result2 = result; + if (result2 >= arity) + result2 += inTypes; + // names array has MH in slot 0; skip it. + int argpos = pos + 1; + // Note: The LF constructor will rename names2[argpos...]. + // Make space for new arguments (shift temporaries). + System.arraycopy(names, argpos, names2, argpos + inTypes, length - argpos); + for (int i = 0; i < inTypes; i++) { + names2[argpos + i] = new Name(types[i]); + } + return new LambdaForm(debugName, arity2, names2, result2); + } + + LambdaForm addArguments(int pos, List> types) { + char[] basicTypes = new char[types.size()]; + for (int i = 0; i < basicTypes.length; i++) + basicTypes[i] = basicType(types.get(i)); + return addArguments(pos, basicTypes); + } + + LambdaForm permuteArguments(int skip, int[] reorder, char[] types) { + // Note: When inArg = reorder[outArg], outArg is fed by a copy of inArg. + // The types are the types of the new (incoming) arguments. + int length = names.length; + int inTypes = types.length; + int outArgs = reorder.length; + assert(skip+outArgs == arity); + assert(permutedTypesMatch(reorder, types, names, skip)); + int pos = 0; + // skip trivial first part of reordering: + while (pos < outArgs && reorder[pos] == pos) pos += 1; + Name[] names2 = new Name[length - outArgs + inTypes]; + System.arraycopy(names, 0, names2, 0, skip+pos); + // copy the body: + int bodyLength = length - arity; + System.arraycopy(names, skip+outArgs, names2, skip+inTypes, bodyLength); + int arity2 = names2.length - bodyLength; + int result2 = result; + if (result2 >= 0) { + if (result2 < skip+outArgs) { + // return the corresponding inArg + result2 = reorder[result2-skip]; + } else { + result2 = result2 - outArgs + inTypes; + } + } + // rework names in the body: + for (int j = pos; j < outArgs; j++) { + Name n = names[skip+j]; + int i = reorder[j]; + // replace names[skip+j] by names2[skip+i] + Name n2 = names2[skip+i]; + if (n2 == null) + names2[skip+i] = n2 = new Name(types[i]); + else + assert(n2.type == types[i]); + for (int k = arity2; k < names2.length; k++) { + names2[k] = names2[k].replaceName(n, n2); + } + } + // some names are unused, but must be filled in + for (int i = skip+pos; i < arity2; i++) { + if (names2[i] == null) + names2[i] = argument(i, types[i - skip]); + } + for (int j = arity; j < names.length; j++) { + int i = j - arity + arity2; + // replace names2[i] by names[j] + Name n = names[j]; + Name n2 = names2[i]; + if (n != n2) { + for (int k = i+1; k < names2.length; k++) { + names2[k] = names2[k].replaceName(n, n2); + } + } + } + return new LambdaForm(debugName, arity2, names2, result2); + } + + static boolean permutedTypesMatch(int[] reorder, char[] types, Name[] names, int skip) { + int inTypes = types.length; + int outArgs = reorder.length; + for (int i = 0; i < outArgs; i++) { + assert(names[skip+i].isParam()); + assert(names[skip+i].type == types[reorder[i]]); + } + return true; + } + + static class NamedFunction { + final MemberName member; + MethodHandle resolvedHandle; + MethodHandle invoker; + + NamedFunction(MethodHandle resolvedHandle) { + this(resolvedHandle.internalMemberName(), resolvedHandle); + } + NamedFunction(MemberName member, MethodHandle resolvedHandle) { + this.member = member; + //resolvedHandle = eraseSubwordTypes(resolvedHandle); + this.resolvedHandle = resolvedHandle; + } + + // The next 3 constructors are used to break circular dependencies on MH.invokeStatic, etc. + // Any LambdaForm containing such a member is not interpretable. + // This is OK, since all such LFs are prepared with special primitive vmentry points. + // And even without the resolvedHandle, the name can still be compiled and optimized. + NamedFunction(Method method) { + this(new MemberName(method)); + } + NamedFunction(Field field) { + this(new MemberName(field)); + } + NamedFunction(MemberName member) { + this.member = member; + this.resolvedHandle = null; + } + + MethodHandle resolvedHandle() { + if (resolvedHandle == null) resolve(); + return resolvedHandle; + } + + void resolve() { + resolvedHandle = DirectMethodHandle.make(member); + } + + @Override + public boolean equals(Object other) { + if (this == other) return true; + if (other == null) return false; + if (!(other instanceof NamedFunction)) return false; + NamedFunction that = (NamedFunction) other; + return this.member != null && this.member.equals(that.member); + } + + @Override + public int hashCode() { + if (member != null) + return member.hashCode(); + return super.hashCode(); + } + + // Put the predefined NamedFunction invokers into the table. + static void initializeInvokers() { + for (MemberName m : MemberName.getFactory().getMethods(NamedFunction.class, false, null, null, null)) { + if (!m.isStatic() || !m.isPackage()) continue; + MethodType type = m.getMethodType(); + if (type.equals(INVOKER_METHOD_TYPE) && + m.getName().startsWith("invoke_")) { + String sig = m.getName().substring("invoke_".length()); + int arity = LambdaForm.signatureArity(sig); + MethodType srcType = MethodType.genericMethodType(arity); + if (LambdaForm.signatureReturn(sig) == 'V') + srcType = srcType.changeReturnType(void.class); + MethodTypeForm typeForm = srcType.form(); + typeForm.namedFunctionInvoker = DirectMethodHandle.make(m); + } + } + } + + // The following are predefined NamedFunction invokers. The system must build + // a separate invoker for each distinct signature. + /** void return type invokers. */ + @Hidden + static Object invoke__V(MethodHandle mh, Object[] a) throws Throwable { + assert(a.length == 0); + mh.invokeBasic(); + return null; + } + @Hidden + static Object invoke_L_V(MethodHandle mh, Object[] a) throws Throwable { + assert(a.length == 1); + mh.invokeBasic(a[0]); + return null; + } + @Hidden + static Object invoke_LL_V(MethodHandle mh, Object[] a) throws Throwable { + assert(a.length == 2); + mh.invokeBasic(a[0], a[1]); + return null; + } + @Hidden + static Object invoke_LLL_V(MethodHandle mh, Object[] a) throws Throwable { + assert(a.length == 3); + mh.invokeBasic(a[0], a[1], a[2]); + return null; + } + @Hidden + static Object invoke_LLLL_V(MethodHandle mh, Object[] a) throws Throwable { + assert(a.length == 4); + mh.invokeBasic(a[0], a[1], a[2], a[3]); + return null; + } + @Hidden + static Object invoke_LLLLL_V(MethodHandle mh, Object[] a) throws Throwable { + assert(a.length == 5); + mh.invokeBasic(a[0], a[1], a[2], a[3], a[4]); + return null; + } + /** Object return type invokers. */ + @Hidden + static Object invoke__L(MethodHandle mh, Object[] a) throws Throwable { + assert(a.length == 0); + return mh.invokeBasic(); + } + @Hidden + static Object invoke_L_L(MethodHandle mh, Object[] a) throws Throwable { + assert(a.length == 1); + return mh.invokeBasic(a[0]); + } + @Hidden + static Object invoke_LL_L(MethodHandle mh, Object[] a) throws Throwable { + assert(a.length == 2); + return mh.invokeBasic(a[0], a[1]); + } + @Hidden + static Object invoke_LLL_L(MethodHandle mh, Object[] a) throws Throwable { + assert(a.length == 3); + return mh.invokeBasic(a[0], a[1], a[2]); + } + @Hidden + static Object invoke_LLLL_L(MethodHandle mh, Object[] a) throws Throwable { + assert(a.length == 4); + return mh.invokeBasic(a[0], a[1], a[2], a[3]); + } + @Hidden + static Object invoke_LLLLL_L(MethodHandle mh, Object[] a) throws Throwable { + assert(a.length == 5); + return mh.invokeBasic(a[0], a[1], a[2], a[3], a[4]); + } + + static final MethodType INVOKER_METHOD_TYPE = + MethodType.methodType(Object.class, MethodHandle.class, Object[].class); + + private static MethodHandle computeInvoker(MethodTypeForm typeForm) { + MethodHandle mh = typeForm.namedFunctionInvoker; + if (mh != null) return mh; + MemberName invoker = InvokerBytecodeGenerator.generateNamedFunctionInvoker(typeForm); // this could take a while + mh = DirectMethodHandle.make(invoker); + MethodHandle mh2 = typeForm.namedFunctionInvoker; + if (mh2 != null) return mh2; // benign race + if (!mh.type().equals(INVOKER_METHOD_TYPE)) + throw new InternalError(mh.debugString()); + return typeForm.namedFunctionInvoker = mh; + } + + @Hidden + Object invokeWithArguments(Object... arguments) throws Throwable { + // If we have a cached invoker, call it right away. + // NOTE: The invoker always returns a reference value. + if (TRACE_INTERPRETER) return invokeWithArgumentsTracing(arguments); + assert(checkArgumentTypes(arguments, methodType())); + return invoker().invokeBasic(resolvedHandle(), arguments); + } + + @Hidden + Object invokeWithArgumentsTracing(Object[] arguments) throws Throwable { + Object rval; + try { + traceInterpreter("[ call", this, arguments); + if (invoker == null) { + traceInterpreter("| getInvoker", this); + invoker(); + } + if (resolvedHandle == null) { + traceInterpreter("| resolve", this); + resolvedHandle(); + } + assert(checkArgumentTypes(arguments, methodType())); + rval = invoker().invokeBasic(resolvedHandle(), arguments); + } catch (Throwable ex) { + traceInterpreter("] throw =>", ex); + throw ex; + } + traceInterpreter("] return =>", rval); + return rval; + } + + private MethodHandle invoker() { + if (invoker != null) return invoker; + // Get an invoker and cache it. + return invoker = computeInvoker(methodType().form()); + } + + private static boolean checkArgumentTypes(Object[] arguments, MethodType methodType) { + if (true) return true; // FIXME + MethodType dstType = methodType.form().erasedType(); + MethodType srcType = dstType.basicType().wrap(); + Class[] ptypes = new Class[arguments.length]; + for (int i = 0; i < arguments.length; i++) { + Object arg = arguments[i]; + Class ptype = arg == null ? Object.class : arg.getClass(); + // If the dest. type is a primitive we keep the + // argument type. + ptypes[i] = dstType.parameterType(i).isPrimitive() ? ptype : Object.class; + } + MethodType argType = MethodType.methodType(srcType.returnType(), ptypes).wrap(); + assert(argType.isConvertibleTo(srcType)) : "wrong argument types: cannot convert " + argType + " to " + srcType; + return true; + } + + String basicTypeSignature() { + //return LambdaForm.basicTypeSignature(resolvedHandle.type()); + return LambdaForm.basicTypeSignature(methodType()); + } + + MethodType methodType() { + if (resolvedHandle != null) + return resolvedHandle.type(); + else + // only for certain internal LFs during bootstrapping + return member.getInvocationType(); + } + + MemberName member() { + assert(assertMemberIsConsistent()); + return member; + } + + // Called only from assert. + private boolean assertMemberIsConsistent() { + if (resolvedHandle instanceof DirectMethodHandle) { + MemberName m = resolvedHandle.internalMemberName(); + assert(m.equals(member)); + } + return true; + } + + Class memberDeclaringClassOrNull() { + return (member == null) ? null : member.getDeclaringClass(); + } + + char returnType() { + return basicType(methodType().returnType()); + } + + char parameterType(int n) { + return basicType(methodType().parameterType(n)); + } + + int arity() { + //int siglen = member.getMethodType().parameterCount(); + //if (!member.isStatic()) siglen += 1; + //return siglen; + return methodType().parameterCount(); + } + + public String toString() { + if (member == null) return resolvedHandle.toString(); + return member.getDeclaringClass().getSimpleName()+"."+member.getName(); + } + } + + void resolve() { + for (Name n : names) n.resolve(); + } + + public static char basicType(Class type) { + char c = Wrapper.basicTypeChar(type); + if ("ZBSC".indexOf(c) >= 0) c = 'I'; + assert("LIJFDV".indexOf(c) >= 0); + return c; + } + public static char[] basicTypes(List> types) { + char[] btypes = new char[types.size()]; + for (int i = 0; i < btypes.length; i++) { + btypes[i] = basicType(types.get(i)); + } + return btypes; + } + public static String basicTypeSignature(MethodType type) { + char[] sig = new char[type.parameterCount() + 2]; + int sigp = 0; + for (Class pt : type.parameterList()) { + sig[sigp++] = basicType(pt); + } + sig[sigp++] = '_'; + sig[sigp++] = basicType(type.returnType()); + assert(sigp == sig.length); + return String.valueOf(sig); + } + + static final class Name { + final char type; + private short index; + final NamedFunction function; + final Object[] arguments; + + private Name(int index, char type, NamedFunction function, Object[] arguments) { + this.index = (short)index; + this.type = type; + this.function = function; + this.arguments = arguments; + assert(this.index == index); + } + Name(MethodHandle function, Object... arguments) { + this(new NamedFunction(function), arguments); + } + Name(MemberName function, Object... arguments) { + this(new NamedFunction(function), arguments); + } + Name(NamedFunction function, Object... arguments) { + this(-1, function.returnType(), function, arguments = arguments.clone()); + assert(arguments.length == function.arity()) : "arity mismatch: arguments.length=" + arguments.length + " == function.arity()=" + function.arity() + " in " + debugString(); + for (int i = 0; i < arguments.length; i++) + assert(typesMatch(function.parameterType(i), arguments[i])) : "types don't match: function.parameterType(" + i + ")=" + function.parameterType(i) + ", arguments[" + i + "]=" + arguments[i] + " in " + debugString(); + } + Name(int index, char type) { + this(index, type, null, null); + } + Name(char type) { + this(-1, type); + } + + char type() { return type; } + int index() { return index; } + boolean initIndex(int i) { + if (index != i) { + if (index != -1) return false; + index = (short)i; + } + return true; + } + + + void resolve() { + if (function != null) + function.resolve(); + } + + Name newIndex(int i) { + if (initIndex(i)) return this; + return cloneWithIndex(i); + } + Name cloneWithIndex(int i) { + Object[] newArguments = (arguments == null) ? null : arguments.clone(); + return new Name(i, type, function, newArguments); + } + Name replaceName(Name oldName, Name newName) { // FIXME: use replaceNames uniformly + if (oldName == newName) return this; + @SuppressWarnings("LocalVariableHidesMemberVariable") + Object[] arguments = this.arguments; + if (arguments == null) return this; + boolean replaced = false; + for (int j = 0; j < arguments.length; j++) { + if (arguments[j] == oldName) { + if (!replaced) { + replaced = true; + arguments = arguments.clone(); + } + arguments[j] = newName; + } + } + if (!replaced) return this; + return new Name(function, arguments); + } + Name replaceNames(Name[] oldNames, Name[] newNames, int start, int end) { + @SuppressWarnings("LocalVariableHidesMemberVariable") + Object[] arguments = this.arguments; + boolean replaced = false; + eachArg: + for (int j = 0; j < arguments.length; j++) { + if (arguments[j] instanceof Name) { + Name n = (Name) arguments[j]; + int check = n.index; + // harmless check to see if the thing is already in newNames: + if (check >= 0 && check < newNames.length && n == newNames[check]) + continue eachArg; + // n might not have the correct index: n != oldNames[n.index]. + for (int i = start; i < end; i++) { + if (n == oldNames[i]) { + if (n == newNames[i]) + continue eachArg; + if (!replaced) { + replaced = true; + arguments = arguments.clone(); + } + arguments[j] = newNames[i]; + continue eachArg; + } + } + } + } + if (!replaced) return this; + return new Name(function, arguments); + } + void internArguments() { + @SuppressWarnings("LocalVariableHidesMemberVariable") + Object[] arguments = this.arguments; + for (int j = 0; j < arguments.length; j++) { + if (arguments[j] instanceof Name) { + Name n = (Name) arguments[j]; + if (n.isParam() && n.index < INTERNED_ARGUMENT_LIMIT) + arguments[j] = internArgument(n); + } + } + } + boolean isParam() { + return function == null; + } + boolean isConstantZero() { + return !isParam() && arguments.length == 0 && function.equals(constantZero(0, type).function); + } + + public String toString() { + return (isParam()?"a":"t")+(index >= 0 ? index : System.identityHashCode(this))+":"+type; + } + public String debugString() { + String s = toString(); + return (function == null) ? s : s + "=" + exprString(); + } + public String exprString() { + if (function == null) return "null"; + StringBuilder buf = new StringBuilder(function.toString()); + buf.append("("); + String cma = ""; + for (Object a : arguments) { + buf.append(cma); cma = ","; + if (a instanceof Name || a instanceof Integer) + buf.append(a); + else + buf.append("(").append(a).append(")"); + } + buf.append(")"); + return buf.toString(); + } + + private static boolean typesMatch(char parameterType, Object object) { + if (object instanceof Name) { + return ((Name)object).type == parameterType; + } + switch (parameterType) { + case 'I': return object instanceof Integer; + case 'J': return object instanceof Long; + case 'F': return object instanceof Float; + case 'D': return object instanceof Double; + } + assert(parameterType == 'L'); + return true; + } + + /** + * Does this Name precede the given binding node in some canonical order? + * This predicate is used to order data bindings (via insertion sort) + * with some stability. + * @param binding + * @return + */ + boolean isSiblingBindingBefore(Name binding) { + assert(!binding.isParam()); + if (isParam()) return true; + if (function.equals(binding.function) && + arguments.length == binding.arguments.length) { + boolean sawInt = false; + for (int i = 0; i < arguments.length; i++) { + Object a1 = arguments[i]; + Object a2 = binding.arguments[i]; + if (!a1.equals(a2)) { + if (a1 instanceof Integer && a2 instanceof Integer) { + if (sawInt) continue; + sawInt = true; + if ((int)a1 < (int)a2) continue; // still might be true + } + return false; + } + } + return sawInt; + } + return false; + } + + public boolean equals(Name that) { + if (this == that) return true; + if (isParam()) + // each parameter is a unique atom + return false; // this != that + return + //this.index == that.index && + this.type == that.type && + this.function.equals(that.function) && + Arrays.equals(this.arguments, that.arguments); + } + @Override + public boolean equals(Object x) { + return x instanceof Name && equals((Name)x); + } + @Override + public int hashCode() { + if (isParam()) + return index | (type << 8); + return function.hashCode() ^ Arrays.hashCode(arguments); + } + } + + static Name argument(int which, char type) { + int tn = ALL_TYPES.indexOf(type); + if (tn < 0 || which >= INTERNED_ARGUMENT_LIMIT) + return new Name(which, type); + return INTERNED_ARGUMENTS[tn][which]; + } + static Name internArgument(Name n) { + assert(n.isParam()) : "not param: " + n; + assert(n.index < INTERNED_ARGUMENT_LIMIT); + return argument(n.index, n.type); + } + static Name[] arguments(int extra, String types) { + int length = types.length(); + Name[] names = new Name[length + extra]; + for (int i = 0; i < length; i++) + names[i] = argument(i, types.charAt(i)); + return names; + } + static Name[] arguments(int extra, char... types) { + int length = types.length; + Name[] names = new Name[length + extra]; + for (int i = 0; i < length; i++) + names[i] = argument(i, types[i]); + return names; + } + static Name[] arguments(int extra, List> types) { + int length = types.size(); + Name[] names = new Name[length + extra]; + for (int i = 0; i < length; i++) + names[i] = argument(i, basicType(types.get(i))); + return names; + } + static Name[] arguments(int extra, Class... types) { + int length = types.length; + Name[] names = new Name[length + extra]; + for (int i = 0; i < length; i++) + names[i] = argument(i, basicType(types[i])); + return names; + } + static Name[] arguments(int extra, MethodType types) { + int length = types.parameterCount(); + Name[] names = new Name[length + extra]; + for (int i = 0; i < length; i++) + names[i] = argument(i, basicType(types.parameterType(i))); + return names; + } + static final String ALL_TYPES = "LIJFD"; // omit V, not an argument type + static final int INTERNED_ARGUMENT_LIMIT = 10; + private static final Name[][] INTERNED_ARGUMENTS + = new Name[ALL_TYPES.length()][INTERNED_ARGUMENT_LIMIT]; + static { + for (int tn = 0; tn < ALL_TYPES.length(); tn++) { + for (int i = 0; i < INTERNED_ARGUMENTS[tn].length; i++) { + char type = ALL_TYPES.charAt(tn); + INTERNED_ARGUMENTS[tn][i] = new Name(i, type); + } + } + } + + private static final MemberName.Factory IMPL_NAMES = MemberName.getFactory(); + + static Name constantZero(int which, char type) { + return CONSTANT_ZERO[ALL_TYPES.indexOf(type)].newIndex(which); + } + private static final Name[] CONSTANT_ZERO + = new Name[ALL_TYPES.length()]; + static { + for (int tn = 0; tn < ALL_TYPES.length(); tn++) { + char bt = ALL_TYPES.charAt(tn); + Wrapper wrap = Wrapper.forBasicType(bt); + MemberName zmem = new MemberName(LambdaForm.class, "zero"+bt, MethodType.methodType(wrap.primitiveType()), REF_invokeStatic); + try { + zmem = IMPL_NAMES.resolveOrFail(REF_invokeStatic, zmem, null, NoSuchMethodException.class); + } catch (IllegalAccessException|NoSuchMethodException ex) { + throw new InternalError(ex); + } + NamedFunction zcon = new NamedFunction(zmem); + Name n = new Name(zcon).newIndex(0); + assert(n.type == ALL_TYPES.charAt(tn)); + CONSTANT_ZERO[tn] = n; + assert(n.isConstantZero()); + } + } + + // Avoid appealing to ValueConversions at bootstrap time: + private static int zeroI() { return 0; } + private static long zeroJ() { return 0; } + private static float zeroF() { return 0; } + private static double zeroD() { return 0; } + private static Object zeroL() { return null; } + + // Put this last, so that previous static inits can run before. + static { + if (USE_PREDEFINED_INTERPRET_METHODS) + PREPARED_FORMS.putAll(computeInitialPreparedForms()); + } + + /** + * Internal marker for byte-compiled LambdaForms. + */ + /*non-public*/ + @Target(ElementType.METHOD) + @Retention(RetentionPolicy.RUNTIME) + @interface Compiled { + } + + /** + * Internal marker for LambdaForm interpreter frames. + */ + /*non-public*/ + @Target(ElementType.METHOD) + @Retention(RetentionPolicy.RUNTIME) + @interface Hidden { + } + + +/* + // Smoke-test for the invokers used in this file. + static void testMethodHandleLinkers() throws Throwable { + MemberName.Factory lookup = MemberName.getFactory(); + MemberName asList_MN = new MemberName(Arrays.class, "asList", + MethodType.methodType(List.class, Object[].class), + REF_invokeStatic); + //MethodHandleNatives.resolve(asList_MN, null); + asList_MN = lookup.resolveOrFail(asList_MN, REF_invokeStatic, null, NoSuchMethodException.class); + System.out.println("about to call "+asList_MN); + Object[] abc = { "a", "bc" }; + List lst = (List) MethodHandle.linkToStatic(abc, asList_MN); + System.out.println("lst="+lst); + MemberName toString_MN = new MemberName(Object.class.getMethod("toString")); + String s1 = (String) MethodHandle.linkToVirtual(lst, toString_MN); + toString_MN = new MemberName(Object.class.getMethod("toString"), true); + String s2 = (String) MethodHandle.linkToSpecial(lst, toString_MN); + System.out.println("[s1,s2,lst]="+Arrays.asList(s1, s2, lst.toString())); + MemberName toArray_MN = new MemberName(List.class.getMethod("toArray")); + Object[] arr = (Object[]) MethodHandle.linkToInterface(lst, toArray_MN); + System.out.println("toArray="+Arrays.toString(arr)); + } + static { try { testMethodHandleLinkers(); } catch (Throwable ex) { throw new RuntimeException(ex); } } + // Requires these definitions in MethodHandle: + static final native Object linkToStatic(Object x1, MemberName mn) throws Throwable; + static final native Object linkToVirtual(Object x1, MemberName mn) throws Throwable; + static final native Object linkToSpecial(Object x1, MemberName mn) throws Throwable; + static final native Object linkToInterface(Object x1, MemberName mn) throws Throwable; + */ + + static { NamedFunction.initializeInvokers(); } +} diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/MemberName.java --- a/src/share/classes/java/lang/invoke/MemberName.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/invoke/MemberName.java Fri Aug 24 09:29:17 2012 +0100 @@ -26,6 +26,8 @@ package java.lang.invoke; import sun.invoke.util.BytecodeDescriptor; +import sun.invoke.util.VerifyAccess; + import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -38,6 +40,7 @@ import java.util.List; import static java.lang.invoke.MethodHandleNatives.Constants.*; import static java.lang.invoke.MethodHandleStatics.*; +import java.util.Objects; /** * A {@code MemberName} is a compact symbolic datum which fully characterizes @@ -71,19 +74,14 @@ private String name; // may be null if not yet materialized private Object type; // may be null if not yet materialized private int flags; // modifier bits; see reflect.Modifier - - private Object vmtarget; // VM-specific target value - private int vmindex; // method index within class or interface - - { vmindex = VM_INDEX_UNINITIALIZED; } + //@Injected JVM_Method* vmtarget; + //@Injected int vmindex; + private Object resolution; // if null, this guy is resolved /** Return the declaring class of this member. * In the case of a bare name and type, the declaring class will be null. */ public Class getDeclaringClass() { - if (clazz == null && isResolved()) { - expandFromVM(); - } return clazz; } @@ -105,6 +103,16 @@ return name; } + public MethodType getMethodOrFieldType() { + if (isInvocable()) + return getMethodType(); + if (isGetter()) + return MethodType.methodType(getFieldType()); + if (isSetter()) + return MethodType.methodType(void.class, getFieldType()); + throw new InternalError("not a method or field: "+this); + } + /** Return the declared type of this member, which * must be a method or constructor. */ @@ -140,9 +148,11 @@ * a reference to declaring class. For static methods, it is the same as the declared type. */ public MethodType getInvocationType() { - MethodType itype = getMethodType(); + MethodType itype = getMethodOrFieldType(); + if (isConstructor() && getReferenceKind() == REF_newInvokeSpecial) + return itype.changeReturnType(clazz); if (!isStatic()) - itype = itype.insertParameterTypes(0, clazz); + return itype.insertParameterTypes(0, clazz); return itype; } @@ -208,9 +218,98 @@ return (flags & RECOGNIZED_MODIFIERS); } + /** Return the reference kind of this member, or zero if none. + */ + public byte getReferenceKind() { + return (byte) ((flags >>> MN_REFERENCE_KIND_SHIFT) & MN_REFERENCE_KIND_MASK); + } + private boolean referenceKindIsConsistent() { + byte refKind = getReferenceKind(); + if (refKind == REF_NONE) return isType(); + if (isField()) { + assert(staticIsConsistent()); + assert(MethodHandleNatives.refKindIsField(refKind)); + } else if (isConstructor()) { + assert(refKind == REF_newInvokeSpecial || refKind == REF_invokeSpecial); + } else if (isMethod()) { + assert(staticIsConsistent()); + assert(MethodHandleNatives.refKindIsMethod(refKind)); + if (clazz.isInterface()) + assert(refKind == REF_invokeInterface || + refKind == REF_invokeVirtual && isObjectPublicMethod()); + } else { + assert(false); + } + return true; + } + private boolean isObjectPublicMethod() { + if (clazz == Object.class) return true; + MethodType mtype = getMethodType(); + if (name.equals("toString") && mtype.returnType() == String.class && mtype.parameterCount() == 0) + return true; + if (name.equals("hashCode") && mtype.returnType() == int.class && mtype.parameterCount() == 0) + return true; + if (name.equals("equals") && mtype.returnType() == boolean.class && mtype.parameterCount() == 1 && mtype.parameterType(0) == Object.class) + return true; + return false; + } + /*non-public*/ boolean referenceKindIsConsistentWith(int originalRefKind) { + int refKind = getReferenceKind(); + if (refKind == originalRefKind) return true; + switch (originalRefKind) { + case REF_invokeInterface: + // Looking up an interface method, can get (e.g.) Object.hashCode + assert(refKind == REF_invokeVirtual || + refKind == REF_invokeSpecial) : this; + return true; + case REF_invokeVirtual: + case REF_newInvokeSpecial: + // Looked up a virtual, can get (e.g.) final String.hashCode. + assert(refKind == REF_invokeSpecial) : this; + return true; + } + assert(false) : this; + return true; + } + private boolean staticIsConsistent() { + byte refKind = getReferenceKind(); + return MethodHandleNatives.refKindIsStatic(refKind) == isStatic() || getModifiers() == 0; + } + private boolean vminfoIsConsistent() { + byte refKind = getReferenceKind(); + assert(isResolved()); // else don't call + Object vminfo = MethodHandleNatives.getMemberVMInfo(this); + assert(vminfo instanceof Object[]); + long vmindex = (Long) ((Object[])vminfo)[0]; + Object vmtarget = ((Object[])vminfo)[1]; + if (MethodHandleNatives.refKindIsField(refKind)) { + assert(vmindex >= 0) : vmindex + ":" + this; + assert(vmtarget instanceof Class); + } else { + if (MethodHandleNatives.refKindDoesDispatch(refKind)) + assert(vmindex >= 0) : vmindex + ":" + this; + else + assert(vmindex < 0) : vmindex; + assert(vmtarget instanceof MemberName) : vmtarget + " in " + this; + } + return true; + } + + private MemberName changeReferenceKind(byte refKind, byte oldKind) { + assert(getReferenceKind() == oldKind); + assert(MethodHandleNatives.refKindIsValid(refKind)); + flags += (((int)refKind - oldKind) << MN_REFERENCE_KIND_SHIFT); +// if (isConstructor() && refKind != REF_newInvokeSpecial) +// flags += (IS_METHOD - IS_CONSTRUCTOR); +// else if (refKind == REF_newInvokeSpecial && isMethod()) +// flags += (IS_CONSTRUCTOR - IS_METHOD); + return this; + } + private void setFlags(int flags) { this.flags = flags; assert(testAnyFlags(ALL_KINDS)); + assert(referenceKindIsConsistent()); } private boolean testFlags(int mask, int value) { @@ -223,6 +322,17 @@ return !testFlags(mask, 0); } + /** Utility method to query if this member is a method handle invocation (invoke or invokeExact). */ + public boolean isMethodHandleInvoke() { + final int bits = Modifier.NATIVE | Modifier.FINAL; + final int negs = Modifier.STATIC; + if (testFlags(bits | negs, bits) && + clazz == MethodHandle.class) { + return name.equals("invoke") || name.equals("invokeExact"); + } + return false; + } + /** Utility method to query the modifier flags of this member. */ public boolean isStatic() { return Modifier.isStatic(flags); @@ -243,10 +353,22 @@ public boolean isFinal() { return Modifier.isFinal(flags); } + /** Utility method to query whether this member or its defining class is final. */ + public boolean canBeStaticallyBound() { + return Modifier.isFinal(flags | clazz.getModifiers()); + } + /** Utility method to query the modifier flags of this member. */ + public boolean isVolatile() { + return Modifier.isVolatile(flags); + } /** Utility method to query the modifier flags of this member. */ public boolean isAbstract() { return Modifier.isAbstract(flags); } + /** Utility method to query the modifier flags of this member. */ + public boolean isNative() { + return Modifier.isNative(flags); + } // let the rest (native, volatile, transient, etc.) be tested via Modifier.isFoo // unofficial modifier flags, used by HotSpot: @@ -279,15 +401,12 @@ IS_CONSTRUCTOR = MN_IS_CONSTRUCTOR, // constructor IS_FIELD = MN_IS_FIELD, // field IS_TYPE = MN_IS_TYPE; // nested type - static final int // for MethodHandleNatives.getMembers - SEARCH_SUPERCLASSES = MN_SEARCH_SUPERCLASSES, - SEARCH_INTERFACES = MN_SEARCH_INTERFACES; static final int ALL_ACCESS = Modifier.PUBLIC | Modifier.PRIVATE | Modifier.PROTECTED; static final int ALL_KINDS = IS_METHOD | IS_CONSTRUCTOR | IS_FIELD | IS_TYPE; static final int IS_INVOCABLE = IS_METHOD | IS_CONSTRUCTOR; static final int IS_FIELD_OR_METHOD = IS_METHOD | IS_FIELD; - static final int SEARCH_ALL_SUPERS = SEARCH_SUPERCLASSES | SEARCH_INTERFACES; + static final int SEARCH_ALL_SUPERS = MN_SEARCH_SUPERCLASSES | MN_SEARCH_INTERFACES; /** Utility method to query whether this member is a method or constructor. */ public boolean isInvocable() { @@ -318,6 +437,12 @@ return !testAnyFlags(ALL_ACCESS); } + /** Utility method to query whether this member is accessible from a given lookup class. */ + public boolean isAccessibleFrom(Class lookupClass) { + return VerifyAccess.isMemberAccessible(this.getDeclaringClass(), this.getDeclaringClass(), flags, + lookupClass, ALL_ACCESS|MethodHandles.Lookup.PACKAGE); + } + /** Initialize a query. It is not resolved. */ private void init(Class defClass, String name, Object type, int flags) { // defining class is allowed to be null (for a naked name/type pair) @@ -328,7 +453,7 @@ this.name = name; this.type = type; setFlags(flags); - assert(!isResolved()); + assert(this.resolution == null); // nobody should have touched this yet } private void expandFromVM() { @@ -339,39 +464,94 @@ } // Capturing information from the Core Reflection API: - private static int flagsMods(int flags, int mods) { + private static int flagsMods(int flags, int mods, byte refKind) { assert((flags & RECOGNIZED_MODIFIERS) == 0); assert((mods & ~RECOGNIZED_MODIFIERS) == 0); - return flags | mods; + assert((refKind & ~MN_REFERENCE_KIND_MASK) == 0); + return flags | mods | (refKind << MN_REFERENCE_KIND_SHIFT); } /** Create a name for the given reflected method. The resulting name will be in a resolved state. */ public MemberName(Method m) { - Object[] typeInfo = { m.getReturnType(), m.getParameterTypes() }; - init(m.getDeclaringClass(), m.getName(), typeInfo, flagsMods(IS_METHOD, m.getModifiers())); + this(m, false); + } + @SuppressWarnings("LeakingThisInConstructor") + public MemberName(Method m, boolean wantSpecial) { + m.getClass(); // NPE check // fill in vmtarget, vmindex while we have m in hand: MethodHandleNatives.init(this, m); - assert(isResolved()); + assert(isResolved() && this.clazz != null); + this.name = m.getName(); + if (this.type == null) + this.type = new Object[] { m.getReturnType(), m.getParameterTypes() }; + if (wantSpecial) { + if (getReferenceKind() == REF_invokeVirtual) + changeReferenceKind(REF_invokeSpecial, REF_invokeVirtual); + } + } + public MemberName asSpecial() { + switch (getReferenceKind()) { + case REF_invokeSpecial: return this; + case REF_invokeVirtual: return clone().changeReferenceKind(REF_invokeSpecial, REF_invokeVirtual); + case REF_newInvokeSpecial: return clone().changeReferenceKind(REF_invokeSpecial, REF_newInvokeSpecial); + } + throw new IllegalArgumentException(this.toString()); + } + public MemberName asConstructor() { + switch (getReferenceKind()) { + case REF_invokeSpecial: return clone().changeReferenceKind(REF_newInvokeSpecial, REF_invokeSpecial); + case REF_newInvokeSpecial: return this; + } + throw new IllegalArgumentException(this.toString()); } /** Create a name for the given reflected constructor. The resulting name will be in a resolved state. */ + @SuppressWarnings("LeakingThisInConstructor") public MemberName(Constructor ctor) { - Object[] typeInfo = { void.class, ctor.getParameterTypes() }; - init(ctor.getDeclaringClass(), CONSTRUCTOR_NAME, typeInfo, flagsMods(IS_CONSTRUCTOR, ctor.getModifiers())); + ctor.getClass(); // NPE check // fill in vmtarget, vmindex while we have ctor in hand: MethodHandleNatives.init(this, ctor); - assert(isResolved()); + assert(isResolved() && this.clazz != null); + this.name = CONSTRUCTOR_NAME; + if (this.type == null) + this.type = new Object[] { void.class, ctor.getParameterTypes() }; } - /** Create a name for the given reflected field. The resulting name will be in a resolved state. */ + /** Create a name for the given reflected field. The resulting name will be in a resolved state. + */ public MemberName(Field fld) { - init(fld.getDeclaringClass(), fld.getName(), fld.getType(), flagsMods(IS_FIELD, fld.getModifiers())); + this(fld, false); + } + @SuppressWarnings("LeakingThisInConstructor") + public MemberName(Field fld, boolean makeSetter) { + fld.getClass(); // NPE check // fill in vmtarget, vmindex while we have fld in hand: MethodHandleNatives.init(this, fld); - assert(isResolved()); + assert(isResolved() && this.clazz != null); + this.name = fld.getName(); + this.type = fld.getType(); + assert((REF_putStatic - REF_getStatic) == (REF_putField - REF_getField)); + byte refKind = this.getReferenceKind(); + assert(refKind == (isStatic() ? REF_getStatic : REF_getField)); + if (makeSetter) { + changeReferenceKind((byte)(refKind + (REF_putStatic - REF_getStatic)), refKind); + } + } + public boolean isGetter() { + return MethodHandleNatives.refKindIsGetter(getReferenceKind()); + } + public boolean isSetter() { + return MethodHandleNatives.refKindIsSetter(getReferenceKind()); + } + public MemberName asSetter() { + byte refKind = getReferenceKind(); + assert(MethodHandleNatives.refKindIsGetter(refKind)); + assert((REF_putStatic - REF_getStatic) == (REF_putField - REF_getField)); + byte setterRefKind = (byte)(refKind + (REF_putField - REF_getField)); + return clone().changeReferenceKind(setterRefKind, refKind); } /** Create a name for the given class. The resulting name will be in a resolved state. */ public MemberName(Class type) { - init(type.getDeclaringClass(), type.getSimpleName(), type, flagsMods(IS_TYPE, type.getModifiers())); - vmindex = 0; // isResolved - assert(isResolved()); + init(type.getDeclaringClass(), type.getSimpleName(), type, + flagsMods(IS_TYPE, type.getModifiers(), REF_NONE)); + initResolved(true); } // bare-bones constructor; the JVM will fill it in @@ -386,41 +566,89 @@ } } - // %%% define equals/hashcode? + /** Get the definition of this member name. + * This may be in a super-class of the declaring class of this member. + */ + public MemberName getDefinition() { + if (!isResolved()) throw new IllegalStateException("must be resolved: "+this); + if (isType()) return this; + MemberName res = this.clone(); + res.clazz = null; + res.type = null; + res.name = null; + res.resolution = res; + res.expandFromVM(); + assert(res.getName().equals(this.getName())); + return res; + } + + @Override + public int hashCode() { + return Objects.hash(clazz, flags, name, getType()); + } + @Override + public boolean equals(Object that) { + return (that instanceof MemberName && this.equals((MemberName)that)); + } + + /** Decide if two member names have exactly the same symbolic content. + * Does not take into account any actual class members, so even if + * two member names resolve to the same actual member, they may + * be distinct references. + */ + public boolean equals(MemberName that) { + if (this == that) return true; + if (that == null) return false; + return this.clazz == that.clazz + && this.flags == that.flags + && Objects.equals(this.name, that.name) + && Objects.equals(this.getType(), that.getType()); + } // Construction from symbolic parts, for queries: - /** Create a field or type name from the given components: Declaring class, name, type, modifiers. + /** Create a field or type name from the given components: Declaring class, name, type, reference kind. * The declaring class may be supplied as null if this is to be a bare name and type. * The resulting name will in an unresolved state. */ - public MemberName(Class defClass, String name, Class type, int modifiers) { - init(defClass, name, type, IS_FIELD | (modifiers & RECOGNIZED_MODIFIERS)); + public MemberName(Class defClass, String name, Class type, byte refKind) { + init(defClass, name, type, flagsMods(IS_FIELD, 0, refKind)); + initResolved(false); } /** Create a field or type name from the given components: Declaring class, name, type. * The declaring class may be supplied as null if this is to be a bare name and type. * The modifier flags default to zero. * The resulting name will in an unresolved state. */ - public MemberName(Class defClass, String name, Class type) { - this(defClass, name, type, 0); + public MemberName(Class defClass, String name, Class type, Void unused) { + this(defClass, name, type, REF_NONE); + initResolved(false); } /** Create a method or constructor name from the given components: Declaring class, name, type, modifiers. * It will be a constructor if and only if the name is {@code "<init>"}. * The declaring class may be supplied as null if this is to be a bare name and type. + * The last argument is optional, a boolean which requests REF_invokeSpecial. * The resulting name will in an unresolved state. */ - public MemberName(Class defClass, String name, MethodType type, int modifiers) { - int flagBit = (name.equals(CONSTRUCTOR_NAME) ? IS_CONSTRUCTOR : IS_METHOD); - init(defClass, name, type, flagBit | (modifiers & RECOGNIZED_MODIFIERS)); + public MemberName(Class defClass, String name, MethodType type, byte refKind) { + @SuppressWarnings("LocalVariableHidesMemberVariable") + int flags = (name != null && name.equals(CONSTRUCTOR_NAME) ? IS_CONSTRUCTOR : IS_METHOD); + init(defClass, name, type, flagsMods(flags, 0, refKind)); + initResolved(false); } - /** Create a method or constructor name from the given components: Declaring class, name, type, modifiers. - * It will be a constructor if and only if the name is {@code "<init>"}. - * The declaring class may be supplied as null if this is to be a bare name and type. - * The modifier flags default to zero. - * The resulting name will in an unresolved state. +// /** Create a method or constructor name from the given components: Declaring class, name, type, modifiers. +// * It will be a constructor if and only if the name is {@code "<init>"}. +// * The declaring class may be supplied as null if this is to be a bare name and type. +// * The modifier flags default to zero. +// * The resulting name will in an unresolved state. +// */ +// public MemberName(Class defClass, String name, MethodType type, Void unused) { +// this(defClass, name, type, REF_NONE); +// } + + /** Query whether this member name is resolved to a non-static, non-final method. */ - public MemberName(Class defClass, String name, MethodType type) { - this(defClass, name, type, 0); + public boolean hasReceiverTypeDispatch() { + return MethodHandleNatives.refKindDoesDispatch(getReferenceKind()); } /** Query whether this member name is resolved. @@ -429,15 +657,38 @@ * (Document?) */ public boolean isResolved() { - return (vmindex != VM_INDEX_UNINITIALIZED); + return resolution == null; + } + + private void initResolved(boolean isResolved) { + assert(this.resolution == null); // not initialized yet! + if (!isResolved) + this.resolution = this; + assert(isResolved() == isResolved); } - /** Query whether this member name is resolved to a non-static, non-final method. - */ - public boolean hasReceiverTypeDispatch() { - return (isMethod() && getVMIndex() >= 0); + void checkForTypeAlias() { + if (isInvocable()) { + MethodType type; + if (this.type instanceof MethodType) + type = (MethodType) this.type; + else + this.type = type = getMethodType(); + if (type.erase() == type) return; + if (VerifyAccess.isTypeVisible(type, clazz)) return; + throw new LinkageError("bad method type alias: "+type+" not visible from "+clazz); + } else { + Class type; + if (this.type instanceof Class) + type = (Class) this.type; + else + this.type = type = getFieldType(); + if (VerifyAccess.isTypeVisible(type, clazz)) return; + throw new LinkageError("bad field type alias: "+type+" not visible from "+clazz); + } } + /** Produce a string form of this member name. * For types, it is simply the type's own string (as reported by {@code toString}). * For fields, it is {@code "DeclaringClass.name/type"}. @@ -445,6 +696,7 @@ * If the declaring class is null, the prefix {@code "DeclaringClass."} is omitted. * If the member is unresolved, a prefix {@code "*."} is prepended. */ + @SuppressWarnings("LocalVariableHidesMemberVariable") @Override public String toString() { if (isType()) @@ -464,22 +716,12 @@ } else { buf.append(type == null ? "(*)*" : getName(type)); } - /* - buf.append('/'); - // key: Public, private, pRotected, sTatic, Final, sYnchronized, - // transient/Varargs, native, (interface), abstract, sTrict, sYnthetic, - // (annotation), Enum, (unused) - final String FIELD_MOD_CHARS = "PprTF?vt????Y?E?"; - final String METHOD_MOD_CHARS = "PprTFybVn?atY???"; - String modChars = (isInvocable() ? METHOD_MOD_CHARS : FIELD_MOD_CHARS); - for (int i = 0; i < modChars.length(); i++) { - if ((flags & (1 << i)) != 0) { - char mc = modChars.charAt(i); - if (mc != '?') - buf.append(mc); - } + byte refKind = getReferenceKind(); + if (refKind != REF_NONE) { + buf.append('/'); + buf.append(MethodHandleNatives.refKindName(refKind)); } - */ + //buf.append("#").append(System.identityHashCode(this)); return buf.toString(); } private static String getName(Object obj) { @@ -488,19 +730,6 @@ return String.valueOf(obj); } - // Queries to the JVM: - /** Document? */ - /*non-public*/ int getVMIndex() { - if (!isResolved()) - throw newIllegalStateException("not resolved", this); - return vmindex; - } -// /*non-public*/ Object getVMTarget() { -// if (!isResolved()) -// throw newIllegalStateException("not resolved", this); -// return vmtarget; -// } - public IllegalAccessException makeAccessException(String message, Object from) { message = message + ": "+ toString(); if (from != null) message += ", from " + from; @@ -518,14 +747,19 @@ } public ReflectiveOperationException makeAccessException() { String message = message() + ": "+ toString(); - if (isResolved()) - return new IllegalAccessException(message); + ReflectiveOperationException ex; + if (isResolved() || !(resolution instanceof NoSuchMethodError || + resolution instanceof NoSuchFieldError)) + ex = new IllegalAccessException(message); else if (isConstructor()) - return new NoSuchMethodException(message); + ex = new NoSuchMethodException(message); else if (isMethod()) - return new NoSuchMethodException(message); + ex = new NoSuchMethodException(message); else - return new NoSuchFieldException(message); + ex = new NoSuchFieldException(message); + if (resolution instanceof Throwable) + ex.initCause((Throwable) resolution); + return ex; } /** Actually making a query requires an access check. */ @@ -539,7 +773,7 @@ private Factory() { } // singleton pattern static Factory INSTANCE = new Factory(); - private static int ALLOWED_FLAGS = SEARCH_ALL_SUPERS | ALL_KINDS; + private static int ALLOWED_FLAGS = ALL_KINDS; /// Queries List getMembers(Class defc, @@ -573,14 +807,14 @@ // JVM returned to us with an intentional overflow! totalCount += buf.length; int excess = bufCount - buf.length; - if (bufs == null) bufs = new ArrayList(1); + if (bufs == null) bufs = new ArrayList<>(1); bufs.add(buf); int len2 = buf.length; len2 = Math.max(len2, excess); len2 = Math.max(len2, totalCount / 4); buf = newMemberBuffer(Math.min(BUF_MAX, len2)); } - ArrayList result = new ArrayList(totalCount); + ArrayList result = new ArrayList<>(totalCount); if (bufs != null) { for (MemberName[] buf0 : bufs) { Collections.addAll(result, buf0); @@ -599,43 +833,29 @@ } return result; } - boolean resolveInPlace(MemberName m, boolean searchSupers, Class lookupClass) { - if (m.name == null || m.type == null) { // find unique non-overloaded name - Class defc = m.getDeclaringClass(); - List choices = null; - if (m.isMethod()) - choices = getMethods(defc, searchSupers, m.name, (MethodType) m.type, lookupClass); - else if (m.isConstructor()) - choices = getConstructors(defc, lookupClass); - else if (m.isField()) - choices = getFields(defc, searchSupers, m.name, (Class) m.type, lookupClass); - //System.out.println("resolving "+m+" to "+choices); - if (choices == null || choices.size() != 1) - return false; - if (m.name == null) m.name = choices.get(0).name; - if (m.type == null) m.type = choices.get(0).type; - } - MethodHandleNatives.resolve(m, lookupClass); - if (m.isResolved()) return true; - int matchFlags = m.flags | (searchSupers ? SEARCH_ALL_SUPERS : 0); - String matchSig = m.getSignature(); - MemberName[] buf = { m }; - int n = MethodHandleNatives.getMembers(m.getDeclaringClass(), - m.getName(), matchSig, matchFlags, lookupClass, 0, buf); - if (n != 1) return false; - return m.isResolved(); - } /** Produce a resolved version of the given member. * Super types are searched (for inherited members) if {@code searchSupers} is true. * Access checking is performed on behalf of the given {@code lookupClass}. * If lookup fails or access is not permitted, null is returned. * Otherwise a fresh copy of the given member is returned, with modifier bits filled in. */ - public MemberName resolveOrNull(MemberName m, boolean searchSupers, Class lookupClass) { - MemberName result = m.clone(); - if (resolveInPlace(result, searchSupers, lookupClass)) - return result; - return null; + private MemberName resolve(byte refKind, MemberName ref, Class lookupClass) { + MemberName m = ref.clone(); // JVM will side-effect the ref + assert(refKind == m.getReferenceKind()); + try { + m = MethodHandleNatives.resolve(m, lookupClass); + m.checkForTypeAlias(); + m.resolution = null; + } catch (LinkageError ex) { + // JVM reports that the "bytecode behavior" would get an error + assert(!m.isResolved()); + m.resolution = ex; + return m; + } + assert(m.referenceKindIsConsistent()); + m.initResolved(true); + assert(m.vminfoIsConsistent()); + return m; } /** Produce a resolved version of the given member. * Super types are searched (for inherited members) if {@code searchSupers} is true. @@ -645,16 +865,29 @@ */ public - MemberName resolveOrFail(MemberName m, boolean searchSupers, Class lookupClass, + MemberName resolveOrFail(byte refKind, MemberName m, Class lookupClass, Class nsmClass) throws IllegalAccessException, NoSuchMemberException { - MemberName result = resolveOrNull(m, searchSupers, lookupClass); - if (result != null) + MemberName result = resolve(refKind, m, lookupClass); + if (result.isResolved()) return result; - ReflectiveOperationException ex = m.makeAccessException(); + ReflectiveOperationException ex = result.makeAccessException(); if (ex instanceof IllegalAccessException) throw (IllegalAccessException) ex; throw nsmClass.cast(ex); } + /** Produce a resolved version of the given member. + * Super types are searched (for inherited members) if {@code searchSupers} is true. + * Access checking is performed on behalf of the given {@code lookupClass}. + * If lookup fails or access is not permitted, return null. + * Otherwise a fresh copy of the given member is returned, with modifier bits filled in. + */ + public + MemberName resolveOrNull(byte refKind, MemberName m, Class lookupClass) { + MemberName result = resolve(refKind, m, lookupClass); + if (result.isResolved()) + return result; + return null; + } /** Return a list of all methods defined by the given class. * Super types are searched (for inherited members) if {@code searchSupers} is true. * Access checking is performed on behalf of the given {@code lookupClass}. diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/MethodHandle.java --- a/src/share/classes/java/lang/invoke/MethodHandle.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/invoke/MethodHandle.java Fri Aug 24 09:29:17 2012 +0100 @@ -26,9 +26,13 @@ package java.lang.invoke; -import java.util.ArrayList; -import sun.invoke.util.ValueConversions; +import java.util.*; +import sun.invoke.util.*; +import sun.misc.Unsafe; + import static java.lang.invoke.MethodHandleStatics.*; +import java.util.logging.Level; +import java.util.logging.Logger; /** * A method handle is a typed, directly executable reference to an underlying method, @@ -208,8 +212,8 @@ * refers directly to an associated {@code CONSTANT_Methodref}, * {@code CONSTANT_InterfaceMethodref}, or {@code CONSTANT_Fieldref} * constant pool entry. - * (For more details on method handle constants, - * see the package summary.) + * (For full details on method handle constants, + * see sections 4.4.8 and 5.4.3.5 of the Java Virtual Machine Specification.) *

* Method handles produced by lookups or constant loads from methods or * constructors with the variable arity modifier bit ({@code 0x0080}) @@ -224,6 +228,19 @@ * (E.g., if a non-static method handle is obtained via {@code ldc}, * the type of the receiver is the class named in the constant pool entry.) *

+ * Method handle constants are subject to the same link-time access checks + * their corresponding bytecode instructions, and the {@code ldc} instruction + * will throw corresponding linkage errors if the bytecode behaviors would + * throw such errors. + *

+ * As a corollary of this, access to protected members is restricted + * to receivers only of the accessing class, or one of its subclasses, + * and the accessing class must in turn be a subclass (or package sibling) + * of the protected member's defining class. + * If a method reference refers to a protected non-static method or field + * of a class outside the current package, the receiver argument will + * be narrowed to the type of the accessing class. + *

* When a method handle to a virtual method is invoked, the method is * always looked up in the receiver (that is, the first argument). *

@@ -390,39 +407,8 @@ * @author John Rose, JSR 292 EG */ public abstract class MethodHandle { - // { JVM internals: - - private byte vmentry; // adapter stub or method entry point - //private int vmslots; // optionally, hoist type.form.vmslots - /*non-public*/ Object vmtarget; // VM-specific, class-specific target value - - // TO DO: vmtarget should be invisible to Java, since the JVM puts internal - // managed pointers into it. Making it visible exposes it to debuggers, - // which can cause errors when they treat the pointer as an Object. - - // These two dummy fields are present to force 'I' and 'J' signatures - // into this class's constant pool, so they can be transferred - // to vmentry when this class is loaded. - static final int INT_FIELD = 0; - static final long LONG_FIELD = 0; - - // vmentry (a void* field) is used *only* by the JVM. - // The JVM adjusts its type to int or long depending on system wordsize. - // Since it is statically typed as neither int nor long, it is impossible - // to use this field from Java bytecode. (Please don't try to, either.) - - // The vmentry is an assembly-language stub which is jumped to - // immediately after the method type is verified. - // For a direct MH, this stub loads the vmtarget's entry point - // and jumps to it. - - // } End of JVM internals. - static { MethodHandleImpl.initStatics(); } - // interface MethodHandle - // { MethodType type(); public R invokeExact(A...) throws X; } - /** * Internal marker interface which distinguishes (to the Java compiler) * those methods which are signature polymorphic. @@ -431,7 +417,9 @@ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @interface PolymorphicSignature { } - private MethodType type; + private final MethodType type; + /*private*/ final LambdaForm form; + // form is not private so that invokers can easily fetch it /** * Reports the type of this method handle. @@ -448,9 +436,13 @@ * the {@code java.lang.invoke} package. */ // @param type type (permanently assigned) of the new method handle - /*non-public*/ MethodHandle(MethodType type) { - type.getClass(); // elicit NPE + /*non-public*/ MethodHandle(MethodType type, LambdaForm form) { + type.getClass(); // explicit NPE + form.getClass(); // explicit NPE this.type = type; + this.form = form; + + form.prepare(); // TO DO: Try to delay this step until just before invocation. } /** @@ -506,6 +498,46 @@ public final native @PolymorphicSignature Object invoke(Object... args) throws Throwable; /** + * Private method for trusted invocation of a method handle respecting simplified signatures. + * Type mismatches will not throw {@code WrongMethodTypeException}, but could crash the JVM. + *

+ * The caller signature is restricted to the following basic types: + * Object, int, long, float, double, and void return. + *

+ * The caller is responsible for maintaining type correctness by ensuring + * that the each outgoing argument value is a member of the range of the corresponding + * callee argument type. + * (The caller should therefore issue appropriate casts and integer narrowing + * operations on outgoing argument values.) + * The caller can assume that the incoming result value is part of the range + * of the callee's return type. + */ + /*non-public*/ final native @PolymorphicSignature Object invokeBasic(Object... args) throws Throwable; + + /*non-public*/ static native @PolymorphicSignature Object linkToVirtual(Object... args) throws Throwable; + + /** + * Private method for trusted invocation of a MemberName of kind {@code REF_invokeStatic}. + * The caller signature is restricted to basic types as with {@code invokeBasic}. + * The trailing (not leading) argument must be a MemberName. + */ + /*non-public*/ static native @PolymorphicSignature Object linkToStatic(Object... args) throws Throwable; + + /** + * Private method for trusted invocation of a MemberName of kind {@code REF_invokeSpecial}. + * The caller signature is restricted to basic types as with {@code invokeBasic}. + * The trailing (not leading) argument must be a MemberName. + */ + /*non-public*/ static native @PolymorphicSignature Object linkToSpecial(Object... args) throws Throwable; + + /** + * Private method for trusted invocation of a MemberName of kind {@code REF_invokeInterface}. + * The caller signature is restricted to basic types as with {@code invokeBasic}. + * The trailing (not leading) argument must be a MemberName. + */ + /*non-public*/ static native @PolymorphicSignature Object linkToInterface(Object... args) throws Throwable; + + /** * Performs a variable arity invocation, passing the arguments in the given array * to the method handle, as if via an inexact {@link #invoke invoke} from a call site * which mentions only the type {@code Object}, and whose arity is the length @@ -557,6 +589,7 @@ */ public Object invokeWithArguments(Object... arguments) throws Throwable { int argc = arguments == null ? 0 : arguments.length; + @SuppressWarnings("LocalVariableHidesMemberVariable") MethodType type = type(); if (type.parameterCount() != argc || isVarargsCollector()) { // simulate invoke @@ -690,7 +723,7 @@ if (!type.isConvertibleTo(newType)) { throw new WrongMethodTypeException("cannot convert "+this+" to "+newType); } - return MethodHandleImpl.convertArguments(this, newType, 1); + return convertArguments(newType); } /** @@ -772,7 +805,8 @@ */ public MethodHandle asSpreader(Class arrayType, int arrayLength) { asSpreaderChecks(arrayType, arrayLength); - return MethodHandleImpl.spreadArguments(this, arrayType, arrayLength); + int spreadArgPos = type.parameterCount() - arrayLength; + return MethodHandleImpl.makeSpreadArguments(this, arrayType, spreadArgPos, arrayLength); } private void asSpreaderChecks(Class arrayType, int arrayLength) { @@ -790,7 +824,7 @@ } } if (sawProblem) { - ArrayList> ptypes = new ArrayList>(type().parameterList()); + ArrayList> ptypes = new ArrayList<>(type().parameterList()); for (int i = nargs - arrayLength; i < nargs; i++) { ptypes.set(i, arrayElement); } @@ -885,8 +919,12 @@ */ public MethodHandle asCollector(Class arrayType, int arrayLength) { asCollectorChecks(arrayType, arrayLength); + int collectArgPos = type().parameterCount()-1; + MethodHandle target = this; + if (arrayType != type().parameterType(collectArgPos)) + target = convertArguments(type().changeParameterType(collectArgPos, arrayType)); MethodHandle collector = ValueConversions.varargsArray(arrayType, arrayLength); - return MethodHandleImpl.collectArguments(this, type.parameterCount()-1, collector); + return MethodHandleImpl.makeCollectArguments(target, collector, collectArgPos, false); } // private API: return true if last param exactly matches arrayType @@ -1056,7 +1094,7 @@ boolean lastMatch = asCollectorChecks(arrayType, 0); if (isVarargsCollector() && lastMatch) return this; - return AdapterMethodHandle.makeVarargsCollector(this, arrayType); + return MethodHandleImpl.makeVarargsCollector(this, arrayType); } /** @@ -1155,14 +1193,13 @@ */ public MethodHandle bindTo(Object x) { Class ptype; - if (type().parameterCount() == 0 || - (ptype = type().parameterType(0)).isPrimitive()) + @SuppressWarnings("LocalVariableHidesMemberVariable") + MethodType type = type(); + if (type.parameterCount() == 0 || + (ptype = type.parameterType(0)).isPrimitive()) throw newIllegalArgumentException("no leading reference parameter", x); - x = MethodHandles.checkValue(ptype, x); - // Cf. MethodHandles.insertArguments for the following logic: - MethodHandle bmh = MethodHandleImpl.bindReceiver(this, x); - if (bmh != null) return bmh; - return MethodHandleImpl.bindArgument(this, 0, x); + x = ptype.cast(x); // throw CCE if needed + return bindReceiver(x); } /** @@ -1183,11 +1220,178 @@ @Override public String toString() { if (DEBUG_METHOD_HANDLE_NAMES) return debugString(); + return standardString(); + } + String standardString() { return "MethodHandle"+type; } + String debugString() { + return standardString()+"="+internalForm()+internalValues(); + } + + //// Implementation methods. + //// Sub-classes can override these default implementations. + //// All these methods assume arguments are already validated. + + // Other transforms to do: convert, explicitCast, permute, drop, filter, fold, GWT, catch + + /*non-public*/ + MethodHandle setVarargs(MemberName member) throws IllegalAccessException { + if (!member.isVarargs()) return this; + int argc = type().parameterCount(); + if (argc != 0) { + Class arrayType = type().parameterType(argc-1); + if (arrayType.isArray()) { + return MethodHandleImpl.makeVarargsCollector(this, arrayType); + } + } + throw member.makeAccessException("cannot make variable arity", null); + } + /*non-public*/ + MethodHandle viewAsType(MethodType newType) { + // No actual conversions, just a new view of the same method. + if (!type.isViewableAs(newType)) + throw new InternalError(); + return MethodHandleImpl.makePairwiseConvert(this, newType, 0); + } + + // Decoding + + /*non-public*/ + LambdaForm internalForm() { + return form; + } + + /*non-public*/ + MemberName internalMemberName() { + return null; // DMH returns DMH.member + } + + /*non-public*/ + Object internalValues() { + return ""; + } + + //// Method handle implementation methods. + //// Sub-classes can override these default implementations. + //// All these methods assume arguments are already validated. + + /*non-public*/ MethodHandle convertArguments(MethodType newType) { + // Override this if it can be improved. + return MethodHandleImpl.makePairwiseConvert(this, newType, 1); + } + + /*non-public*/ + MethodHandle bindArgument(int pos, char basicType, Object value) { + // Override this if it can be improved. + return rebind().bindArgument(pos, basicType, value); + } + + /*non-public*/ + MethodHandle bindReceiver(Object receiver) { + // Override this if it can be improved. + return bindArgument(0, 'L', receiver); + } + + /*non-public*/ + MethodHandle bindImmediate(int pos, char basicType, Object value) { + // Bind an immediate value to a position in the arguments. + // This means, elide the respective argument, + // and replace all references to it in NamedFunction args with the specified value. + + // CURRENT RESTRICTIONS + // * only for pos 0 and UNSAFE (position is adjusted in MHImpl to make API usable for others) + assert pos == 0 && basicType == 'L' && value instanceof Unsafe; + MethodType type2 = type.dropParameterTypes(pos, pos + 1); // adjustment: ignore receiver! + LambdaForm form2 = form.bindImmediate(pos + 1, basicType, value); // adjust pos to form-relative pos + return copyWith(type2, form2); + } /*non-public*/ - String debugString() { - return getNameString(this); + MethodHandle copyWith(MethodType mt, LambdaForm lf) { + throw new InternalError("copyWith: " + this.getClass()); + } + + /*non-public*/ + MethodHandle dropArguments(MethodType srcType, int pos, int drops) { + // Override this if it can be improved. + return rebind().dropArguments(srcType, pos, drops); + } + + /*non-public*/ + MethodHandle permuteArguments(MethodType newType, int[] reorder) { + // Override this if it can be improved. + return rebind().permuteArguments(newType, reorder); + } + + /*non-public*/ + MethodHandle rebind() { + // Bind 'this' into a new invoker, of the known class BMH. + MethodType type2 = type(); + LambdaForm form2 = reinvokerForm(type2.basicType()); + // form2 = lambda (bmh, arg*) { thismh = bmh[0]; invokeBasic(thismh, arg*) } + return BoundMethodHandle.bindSingle(type2, form2, this); + } + + /*non-public*/ + MethodHandle reinvokerTarget() { + throw new InternalError("not a reinvoker MH: "+this.getClass().getName()+": "+this); + } + + /** Create a LF which simply reinvokes a target of the given basic type. + * The target MH must override {@link #reinvokerTarget} to provide the target. + */ + static LambdaForm reinvokerForm(MethodType mtype) { + mtype = mtype.basicType(); + LambdaForm reinvoker = mtype.form().cachedLambdaForm(MethodTypeForm.LF_REINVOKE); + if (reinvoker != null) return reinvoker; + MethodHandle MH_invokeBasic = MethodHandles.basicInvoker(mtype); + final int THIS_BMH = 0; + final int ARG_BASE = 1; + final int ARG_LIMIT = ARG_BASE + mtype.parameterCount(); + int nameCursor = ARG_LIMIT; + final int NEXT_MH = nameCursor++; + final int REINVOKE = nameCursor++; + LambdaForm.Name[] names = LambdaForm.arguments(nameCursor - ARG_LIMIT, mtype.invokerType()); + names[NEXT_MH] = new LambdaForm.Name(NF_reinvokerTarget, names[THIS_BMH]); + Object[] targetArgs = Arrays.copyOfRange(names, THIS_BMH, ARG_LIMIT, Object[].class); + targetArgs[0] = names[NEXT_MH]; // overwrite this MH with next MH + names[REINVOKE] = new LambdaForm.Name(MH_invokeBasic, targetArgs); + return mtype.form().setCachedLambdaForm(MethodTypeForm.LF_REINVOKE, new LambdaForm("BMH.reinvoke", ARG_LIMIT, names)); + } + + private static final LambdaForm.NamedFunction NF_reinvokerTarget; + static { + try { + NF_reinvokerTarget = new LambdaForm.NamedFunction(MethodHandle.class + .getDeclaredMethod("reinvokerTarget")); + } catch (ReflectiveOperationException ex) { + throw new InternalError(ex); + } + } + + /** + * Replace the old lambda form of this method handle with a new one. + * The new one must be functionally equivalent to the old one. + * Threads may continue running the old form indefinitely, + * but it is likely that the new one will be preferred for new executions. + * Use with discretion. + * @param newForm + */ + /*non-public*/ + void updateForm(LambdaForm newForm) { + if (form == newForm) return; + // ISSUE: Should we have a memory fence here? + UNSAFE.putObject(this, FORM_OFFSET, newForm); + this.form.prepare(); // as in MethodHandle. + } + + private static final long FORM_OFFSET; + static { + try { + FORM_OFFSET = UNSAFE.objectFieldOffset(MethodHandle.class.getDeclaredField("form")); + } catch (ReflectiveOperationException ex) { + throw new InternalError(ex); + } } } diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/MethodHandleImpl.java --- a/src/share/classes/java/lang/invoke/MethodHandleImpl.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/invoke/MethodHandleImpl.java Fri Aug 24 09:29:17 2012 +0100 @@ -26,17 +26,14 @@ package java.lang.invoke; import sun.invoke.util.VerifyType; -import java.security.AccessController; -import java.security.PrivilegedAction; + import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; -import java.util.List; import sun.invoke.empty.Empty; import sun.invoke.util.ValueConversions; import sun.invoke.util.Wrapper; -import sun.misc.Unsafe; +import static java.lang.invoke.LambdaForm.*; import static java.lang.invoke.MethodHandleStatics.*; import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; @@ -47,670 +44,471 @@ /*non-public*/ abstract class MethodHandleImpl { /// Factory methods to create method handles: - private static final MemberName.Factory LOOKUP = MemberName.Factory.INSTANCE; + static void initStatics() { + // Trigger selected static initializations. + MemberName.Factory.INSTANCE.getClass(); + } - static void initStatics() { - // Trigger preceding sequence. + static MethodHandle makeArrayElementAccessor(Class arrayClass, boolean isSetter) { + if (!arrayClass.isArray()) + throw newIllegalArgumentException("not an array: "+arrayClass); + MethodHandle accessor = ArrayAccessor.getAccessor(arrayClass, isSetter); + MethodType srcType = accessor.type().erase(); + MethodType lambdaType = srcType.invokerType(); + Name[] names = arguments(1, lambdaType); + Name[] args = Arrays.copyOfRange(names, 1, 1 + srcType.parameterCount()); + names[names.length - 1] = new Name(accessor.asType(srcType), (Object[]) args); + LambdaForm form = new LambdaForm("getElement", lambdaType.parameterCount(), names); + MethodHandle mh = new SimpleMethodHandle(srcType, form); + if (ArrayAccessor.needCast(arrayClass)) { + mh = mh.bindTo(arrayClass); + } + mh = mh.asType(ArrayAccessor.correctType(arrayClass, isSetter)); + return mh; } - /** Look up a given method. - * Callable only from sun.invoke and related packages. - *

- * The resulting method handle type will be of the given type, - * with a receiver type {@code rcvc} prepended if the member is not static. - *

- * Access checks are made as of the given lookup class. - * In particular, if the method is protected and {@code defc} is in a - * different package from the lookup class, then {@code rcvc} must be - * the lookup class or a subclass. - * @param token Proof that the lookup class has access to this package. - * @param member Resolved method or constructor to call. - * @param name Name of the desired method. - * @param rcvc Receiver type of desired non-static method (else null) - * @param doDispatch whether the method handle will test the receiver type - * @param lookupClass access-check relative to this class - * @return a direct handle to the matching method - * @throws IllegalAccessException if the given method cannot be accessed by the lookup class - */ - static - MethodHandle findMethod(MemberName method, - boolean doDispatch, Class lookupClass) throws IllegalAccessException { - MethodType mtype = method.getMethodType(); - if (!method.isStatic()) { - // adjust the advertised receiver type to be exactly the one requested - // (in the case of invokespecial, this will be the calling class) - Class recvType = method.getDeclaringClass(); - mtype = mtype.insertParameterTypes(0, recvType); - } - DirectMethodHandle mh = new DirectMethodHandle(mtype, method, doDispatch, lookupClass); - if (!mh.isValid()) - throw method.makeAccessException("no direct method handle", lookupClass); - assert(mh.type() == mtype); - if (!method.isVarargs()) - return mh; - int argc = mtype.parameterCount(); - if (argc != 0) { - Class arrayType = mtype.parameterType(argc-1); - if (arrayType.isArray()) - return AdapterMethodHandle.makeVarargsCollector(mh, arrayType); + static final class ArrayAccessor { + /// Support for array element access + static final HashMap, MethodHandle> GETTER_CACHE = new HashMap<>(); // TODO use it + static final HashMap, MethodHandle> SETTER_CACHE = new HashMap<>(); // TODO use it + + static int getElementI(int[] a, int i) { return a[i]; } + static long getElementJ(long[] a, int i) { return a[i]; } + static float getElementF(float[] a, int i) { return a[i]; } + static double getElementD(double[] a, int i) { return a[i]; } + static boolean getElementZ(boolean[] a, int i) { return a[i]; } + static byte getElementB(byte[] a, int i) { return a[i]; } + static short getElementS(short[] a, int i) { return a[i]; } + static char getElementC(char[] a, int i) { return a[i]; } + static Object getElementL(Object[] a, int i) { return a[i]; } + + static void setElementI(int[] a, int i, int x) { a[i] = x; } + static void setElementJ(long[] a, int i, long x) { a[i] = x; } + static void setElementF(float[] a, int i, float x) { a[i] = x; } + static void setElementD(double[] a, int i, double x) { a[i] = x; } + static void setElementZ(boolean[] a, int i, boolean x) { a[i] = x; } + static void setElementB(byte[] a, int i, byte x) { a[i] = x; } + static void setElementS(short[] a, int i, short x) { a[i] = x; } + static void setElementC(char[] a, int i, char x) { a[i] = x; } + static void setElementL(Object[] a, int i, Object x) { a[i] = x; } + + static Object getElementL(Class arrayClass, Object[] a, int i) { arrayClass.cast(a); return a[i]; } + static void setElementL(Class arrayClass, Object[] a, int i, Object x) { arrayClass.cast(a); a[i] = x; } + + // Weakly typed wrappers of Object[] accessors: + static Object getElementL(Object a, int i) { return getElementL((Object[])a, i); } + static void setElementL(Object a, int i, Object x) { setElementL((Object[]) a, i, x); } + static Object getElementL(Object arrayClass, Object a, int i) { return getElementL((Class) arrayClass, (Object[])a, i); } + static void setElementL(Object arrayClass, Object a, int i, Object x) { setElementL((Class) arrayClass, (Object[])a, i, x); } + + static boolean needCast(Class arrayClass) { + Class elemClass = arrayClass.getComponentType(); + return !elemClass.isPrimitive() && elemClass != Object.class; } - throw method.makeAccessException("cannot make variable arity", null); - } - - static - MethodHandle makeAllocator(MethodHandle rawConstructor) { - MethodType rawConType = rawConstructor.type(); - Class allocateClass = rawConType.parameterType(0); - // Wrap the raw (unsafe) constructor with the allocation of a suitable object. - assert(AdapterMethodHandle.canCollectArguments(rawConType, MethodType.methodType(allocateClass), 0, true)); - // allocator(arg...) - // [fold]=> cookedConstructor(obj=allocate(C), arg...) - // [dup,collect]=> identity(obj, void=rawConstructor(obj, arg...)) - MethodHandle returner = MethodHandles.identity(allocateClass); - MethodType ctype = rawConType.insertParameterTypes(0, allocateClass).changeReturnType(allocateClass); - MethodHandle cookedConstructor = AdapterMethodHandle.makeCollectArguments(returner, rawConstructor, 1, false); - assert(cookedConstructor.type().equals(ctype)); - ctype = ctype.dropParameterTypes(0, 1); - cookedConstructor = AdapterMethodHandle.makeCollectArguments(cookedConstructor, returner, 0, true); - AllocateObject allocator = new AllocateObject(allocateClass); - // allocate() => new C(void) - assert(allocator.type().equals(MethodType.methodType(allocateClass))); - ctype = ctype.dropParameterTypes(0, 1); - MethodHandle fold = foldArguments(cookedConstructor, ctype, 0, allocator); - return fold; - } - - static final class AllocateObject /**/ extends BoundMethodHandle { - private static final Unsafe unsafe = Unsafe.getUnsafe(); - - private final Class /**/ allocateClass; - - // for allocation only: - private AllocateObject(Class /**/ allocateClass) { - super(ALLOCATE.asType(MethodType.methodType(allocateClass, AllocateObject.class))); - this.allocateClass = allocateClass; + static String name(Class arrayClass, boolean isSetter) { + Class elemClass = arrayClass.getComponentType(); + if (elemClass == null) throw new IllegalArgumentException(); + return (!isSetter ? "getElement" : "setElement") + Wrapper.basicTypeChar(elemClass); } - @SuppressWarnings("unchecked") - private Object /*C*/ allocate() throws InstantiationException { - return unsafe.allocateInstance(allocateClass); + static final boolean USE_WEAKLY_TYPED_ARRAY_ACCESSORS = false; // FIXME: decide + static MethodType type(Class arrayClass, boolean isSetter) { + Class elemClass = arrayClass.getComponentType(); + Class arrayArgClass = arrayClass; + if (!elemClass.isPrimitive()) { + arrayArgClass = Object[].class; + if (USE_WEAKLY_TYPED_ARRAY_ACCESSORS) + arrayArgClass = Object.class; + } + if (!needCast(arrayClass)) { + return !isSetter ? + MethodType.methodType(elemClass, arrayArgClass, int.class) : + MethodType.methodType(void.class, arrayArgClass, int.class, elemClass); + } else { + Class classArgClass = Class.class; + if (USE_WEAKLY_TYPED_ARRAY_ACCESSORS) + classArgClass = Object.class; + return !isSetter ? + MethodType.methodType(Object.class, classArgClass, arrayArgClass, int.class) : + MethodType.methodType(void.class, classArgClass, arrayArgClass, int.class, Object.class); + } } - static final MethodHandle ALLOCATE; - static { + static MethodType correctType(Class arrayClass, boolean isSetter) { + Class elemClass = arrayClass.getComponentType(); + return !isSetter ? + MethodType.methodType(elemClass, arrayClass, int.class) : + MethodType.methodType(void.class, arrayClass, int.class, elemClass); + } + static MethodHandle getAccessor(Class arrayClass, boolean isSetter) { + String name = name(arrayClass, isSetter); + MethodType type = type(arrayClass, isSetter); try { - ALLOCATE = IMPL_LOOKUP.findVirtual(AllocateObject.class, "allocate", MethodType.genericMethodType(0)); + return IMPL_LOOKUP.findStatic(ArrayAccessor.class, name, type); } catch (ReflectiveOperationException ex) { throw uncaughtException(ex); } } } - static - MethodHandle accessField(MemberName member, boolean isSetter, - Class lookupClass) { - // Use sun. misc.Unsafe to dig up the dirt on the field. - FieldAccessor accessor = new FieldAccessor(member, isSetter); - return accessor; - } + /** + * Create a JVM-level adapter method handle to conform the given method + * handle to the similar newType, using only pairwise argument conversions. + * For each argument, convert incoming argument to the exact type needed. + * The argument conversions allowed are casting, boxing and unboxing, + * integral widening or narrowing, and floating point widening or narrowing. + * @param srcType required call type + * @param target original method handle + * @param level which strength of conversion is allowed + * @return an adapter to the original handle with the desired new type, + * or the original target if the types are already identical + * or null if the adaptation cannot be made + */ + static MethodHandle makePairwiseConvert(MethodHandle target, MethodType srcType, int level) { + assert(level >= 0 && level <= 2); + MethodType dstType = target.type(); + assert(dstType.parameterCount() == target.type().parameterCount()); + if (srcType == dstType) + return target; - static - MethodHandle accessArrayElement(Class arrayClass, boolean isSetter) { - if (!arrayClass.isArray()) - throw newIllegalArgumentException("not an array: "+arrayClass); - Class elemClass = arrayClass.getComponentType(); - MethodHandle[] mhs = FieldAccessor.ARRAY_CACHE.get(elemClass); - if (mhs == null) { - if (!FieldAccessor.doCache(elemClass)) - return FieldAccessor.ahandle(arrayClass, isSetter); - mhs = new MethodHandle[] { - FieldAccessor.ahandle(arrayClass, false), - FieldAccessor.ahandle(arrayClass, true) - }; - if (mhs[0].type().parameterType(0) == Class.class) { - mhs[0] = mhs[0].bindTo(elemClass); - mhs[1] = mhs[1].bindTo(elemClass); + // Calculate extra arguments (temporaries) required in the names array. + // FIXME: Use an ArrayList. Some arguments require more than one conversion step. + int extra = 0; + for (int i = 0; i < srcType.parameterCount(); i++) { + Class src = srcType.parameterType(i); + Class dst = dstType.parameterType(i); + if (!VerifyType.isNullConversion(src, dst)) { + extra++; } - synchronized (FieldAccessor.ARRAY_CACHE) {} // memory barrier - FieldAccessor.ARRAY_CACHE.put(elemClass, mhs); } - return mhs[isSetter ? 1 : 0]; - } + + Class needReturn = srcType.returnType(); + Class haveReturn = dstType.returnType(); + boolean retConv = !VerifyType.isNullConversion(haveReturn, needReturn); + + // Now build a LambdaForm. + MethodType lambdaType = srcType.invokerType(); + Name[] names = arguments(extra + 1, lambdaType); + int[] indexes = new int[lambdaType.parameterCount()]; - static final class FieldAccessor /**/ extends BoundMethodHandle { - private static final Unsafe unsafe = Unsafe.getUnsafe(); - final Object base; // for static refs only - final long offset; - final String name; + MethodType midType = dstType; + for (int i = 0, argIndex = 1, tmpIndex = lambdaType.parameterCount(); i < srcType.parameterCount(); i++, argIndex++) { + Class src = srcType.parameterType(i); + Class dst = midType.parameterType(i); + + if (VerifyType.isNullConversion(src, dst)) { + // do nothing: difference is trivial + indexes[i] = argIndex; + continue; + } + + // Work the current type backward toward the desired caller type: + midType = midType.changeParameterType(i, src); - FieldAccessor(MemberName field, boolean isSetter) { - super(fhandle(field.getDeclaringClass(), field.getFieldType(), isSetter, field.isStatic())); - this.offset = (long) field.getVMIndex(); - this.name = field.getName(); - this.base = staticBase(field); + // Tricky case analysis follows. + MethodHandle fn = null; + if (src.isPrimitive()) { + if (dst.isPrimitive()) { + fn = ValueConversions.convertPrimitive(src, dst); + } else { + Wrapper w = Wrapper.forPrimitiveType(src); + MethodHandle boxMethod = ValueConversions.box(w); + if (dst == w.wrapperType()) + fn = boxMethod; + else + fn = boxMethod.asType(MethodType.methodType(dst, src)); + } + } else { + if (dst.isPrimitive()) { + // Caller has boxed a primitive. Unbox it for the target. + Wrapper w = Wrapper.forPrimitiveType(dst); + if (level == 0 || VerifyType.isNullConversion(src, w.wrapperType())) { + fn = ValueConversions.unbox(dst); + } else if (src == Object.class || !Wrapper.isWrapperType(src)) { + // Examples: Object->int, Number->int, Comparable->int; Byte->int, Character->int + // must include additional conversions + // src must be examined at runtime, to detect Byte, Character, etc. + MethodHandle unboxMethod = (level == 1 + ? ValueConversions.unbox(dst) + : ValueConversions.unboxCast(dst)); + fn = unboxMethod; + } else { + // Example: Byte->int + // Do this by reformulating the problem to Byte->byte. + Class srcPrim = Wrapper.forWrapperType(src).primitiveType(); + MethodHandle unbox = ValueConversions.unbox(srcPrim); + // Compose the two conversions. FIXME: should make two Names for this job + fn = unbox.asType(MethodType.methodType(dst, src)); + } + } else { + // Simple reference conversion. + // Note: Do not check for a class hierarchy relation + // between src and dst. In all cases a 'null' argument + // will pass the cast conversion. + fn = ValueConversions.cast(dst); + } + } + names[tmpIndex] = new Name(fn, names[argIndex]); + indexes[i] = tmpIndex; + tmpIndex++; } - @Override - String debugString() { return addTypeString(name, this); } - - int getFieldI(Object /*C*/ obj) { return unsafe.getInt(obj, offset); } - void setFieldI(Object /*C*/ obj, int x) { unsafe.putInt(obj, offset, x); } - long getFieldJ(Object /*C*/ obj) { return unsafe.getLong(obj, offset); } - void setFieldJ(Object /*C*/ obj, long x) { unsafe.putLong(obj, offset, x); } - float getFieldF(Object /*C*/ obj) { return unsafe.getFloat(obj, offset); } - void setFieldF(Object /*C*/ obj, float x) { unsafe.putFloat(obj, offset, x); } - double getFieldD(Object /*C*/ obj) { return unsafe.getDouble(obj, offset); } - void setFieldD(Object /*C*/ obj, double x) { unsafe.putDouble(obj, offset, x); } - boolean getFieldZ(Object /*C*/ obj) { return unsafe.getBoolean(obj, offset); } - void setFieldZ(Object /*C*/ obj, boolean x) { unsafe.putBoolean(obj, offset, x); } - byte getFieldB(Object /*C*/ obj) { return unsafe.getByte(obj, offset); } - void setFieldB(Object /*C*/ obj, byte x) { unsafe.putByte(obj, offset, x); } - short getFieldS(Object /*C*/ obj) { return unsafe.getShort(obj, offset); } - void setFieldS(Object /*C*/ obj, short x) { unsafe.putShort(obj, offset, x); } - char getFieldC(Object /*C*/ obj) { return unsafe.getChar(obj, offset); } - void setFieldC(Object /*C*/ obj, char x) { unsafe.putChar(obj, offset, x); } - Object /*V*/ getFieldL(Object /*C*/ obj) { return unsafe.getObject(obj, offset); } - void setFieldL(Object /*C*/ obj, Object /*V*/ x) { unsafe.putObject(obj, offset, x); } - // cast (V) is OK here, since we wrap convertArguments around the MH. - - static Object staticBase(final MemberName field) { - if (!field.isStatic()) return null; - return AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { - try { - Class c = field.getDeclaringClass(); - // FIXME: Should not have to create 'f' to get this value. - java.lang.reflect.Field f = c.getDeclaredField(field.getName()); - return unsafe.staticFieldBase(f); - } catch (NoSuchFieldException ee) { - throw uncaughtException(ee); - } - } - }); + if (retConv) { + MethodHandle adjustReturn; + if (haveReturn == void.class) { + // synthesize a zero value for the given void + Object zero = Wrapper.forBasicType(needReturn).zero(); + adjustReturn = MethodHandles.constant(needReturn, zero); + } else { + MethodHandle identity = MethodHandles.identity(needReturn); + MethodType needConversion = identity.type().changeParameterType(0, haveReturn); + adjustReturn = makePairwiseConvert(identity, needConversion, level); + } + target = makeCollectArguments(adjustReturn, target, 0, false); } - int getStaticI() { return unsafe.getInt(base, offset); } - void setStaticI(int x) { unsafe.putInt(base, offset, x); } - long getStaticJ() { return unsafe.getLong(base, offset); } - void setStaticJ(long x) { unsafe.putLong(base, offset, x); } - float getStaticF() { return unsafe.getFloat(base, offset); } - void setStaticF(float x) { unsafe.putFloat(base, offset, x); } - double getStaticD() { return unsafe.getDouble(base, offset); } - void setStaticD(double x) { unsafe.putDouble(base, offset, x); } - boolean getStaticZ() { return unsafe.getBoolean(base, offset); } - void setStaticZ(boolean x) { unsafe.putBoolean(base, offset, x); } - byte getStaticB() { return unsafe.getByte(base, offset); } - void setStaticB(byte x) { unsafe.putByte(base, offset, x); } - short getStaticS() { return unsafe.getShort(base, offset); } - void setStaticS(short x) { unsafe.putShort(base, offset, x); } - char getStaticC() { return unsafe.getChar(base, offset); } - void setStaticC(char x) { unsafe.putChar(base, offset, x); } - @SuppressWarnings("unchecked") // (V) is for internal clarity but triggers warning - Object /*V*/ getStaticL() { return unsafe.getObject(base, offset); } - void setStaticL(Object /*V*/ x) { unsafe.putObject(base, offset, x); } - - static String fname(Class vclass, boolean isSetter, boolean isStatic) { - String stem; - if (!isStatic) - stem = (!isSetter ? "getField" : "setField"); - else - stem = (!isSetter ? "getStatic" : "setStatic"); - return stem + Wrapper.basicTypeChar(vclass); + // Build argument array for the call. + Name[] targetArgs = new Name[dstType.parameterCount()]; + for (int i = 0; i < dstType.parameterCount(); i++) { + int idx = indexes[i]; + targetArgs[i] = names[idx]; } - static MethodType ftype(Class cclass, Class vclass, boolean isSetter, boolean isStatic) { - MethodType type; - if (!isStatic) { - if (!isSetter) - return MethodType.methodType(vclass, cclass); - else - return MethodType.methodType(void.class, cclass, vclass); - } else { - if (!isSetter) - return MethodType.methodType(vclass); - else - return MethodType.methodType(void.class, vclass); - } + names[names.length - 1] = new Name(target, (Object[]) targetArgs); + LambdaForm form = new LambdaForm("convert", lambdaType.parameterCount(), names); + return new SimpleMethodHandle(srcType, form); + } + + static MethodHandle makeReferenceIdentity(Class refType) { + MethodType lambdaType = MethodType.genericMethodType(1).invokerType(); + Name[] names = arguments(1, lambdaType); + names[names.length - 1] = new Name(ValueConversions.identity(), names[1]); + LambdaForm form = new LambdaForm("identity", lambdaType.parameterCount(), names); + return new SimpleMethodHandle(MethodType.methodType(refType, refType), form); + } + + static MethodHandle makeVarargsCollector(MethodHandle target, Class arrayType) { + MethodType type = target.type(); + int last = type.parameterCount() - 1; + if (type.parameterType(last) != arrayType) + target = target.asType(type.changeParameterType(last, arrayType)); + target = target.asFixedArity(); // make sure this attribute is turned off + return new AsVarargsCollector(target, target.type(), arrayType); + } + + static class AsVarargsCollector extends MethodHandle { + MethodHandle target; + final Class arrayType; + MethodHandle cache; + + AsVarargsCollector(MethodHandle target, MethodType type, Class arrayType) { + super(type, reinvokerForm(type)); + this.target = target; + this.arrayType = arrayType; + this.cache = target.asCollector(arrayType, 0); } - static MethodHandle fhandle(Class cclass, Class vclass, boolean isSetter, boolean isStatic) { - String name = FieldAccessor.fname(vclass, isSetter, isStatic); - if (cclass.isPrimitive()) throw newIllegalArgumentException("primitive "+cclass); - Class ecclass = Object.class; //erase this type - Class evclass = vclass; - if (!evclass.isPrimitive()) evclass = Object.class; - MethodType type = FieldAccessor.ftype(ecclass, evclass, isSetter, isStatic); - MethodHandle mh; - try { - mh = IMPL_LOOKUP.findVirtual(FieldAccessor.class, name, type); - } catch (ReflectiveOperationException ex) { - throw uncaughtException(ex); - } - if (evclass != vclass || (!isStatic && ecclass != cclass)) { - MethodType strongType = FieldAccessor.ftype(cclass, vclass, isSetter, isStatic); - strongType = strongType.insertParameterTypes(0, FieldAccessor.class); - mh = convertArguments(mh, strongType, 0); - } - return mh; + + @Override MethodHandle reinvokerTarget() { return target; } + + @Override + public boolean isVarargsCollector() { + return true; + } + + @Override + public MethodHandle asFixedArity() { + return target; } - /// Support for array element access - static final HashMap, MethodHandle[]> ARRAY_CACHE = - new HashMap, MethodHandle[]>(); - // FIXME: Cache on the classes themselves, not here. - static boolean doCache(Class elemClass) { - if (elemClass.isPrimitive()) return true; - ClassLoader cl = elemClass.getClassLoader(); - return cl == null || cl == ClassLoader.getSystemClassLoader(); + @Override + public MethodHandle asType(MethodType newType) { + MethodType type = this.type(); + int collectArg = type.parameterCount() - 1; + int newArity = newType.parameterCount(); + if (newArity == collectArg+1 && + type.parameterType(collectArg).isAssignableFrom(newType.parameterType(collectArg))) { + // if arity and trailing parameter are compatible, do normal thing + return asFixedArity().asType(newType); + } + // check cache + if (cache.type().parameterCount() == newArity) + return cache.asType(newType); + // build and cache a collector + int arrayLength = newArity - collectArg; + MethodHandle collector; + try { + collector = asFixedArity().asCollector(arrayType, arrayLength); + } catch (IllegalArgumentException ex) { + throw new WrongMethodTypeException("cannot build collector"); + } + cache = collector; + return collector.asType(newType); } - static int getElementI(int[] a, int i) { return a[i]; } - static void setElementI(int[] a, int i, int x) { a[i] = x; } - static long getElementJ(long[] a, int i) { return a[i]; } - static void setElementJ(long[] a, int i, long x) { a[i] = x; } - static float getElementF(float[] a, int i) { return a[i]; } - static void setElementF(float[] a, int i, float x) { a[i] = x; } - static double getElementD(double[] a, int i) { return a[i]; } - static void setElementD(double[] a, int i, double x) { a[i] = x; } - static boolean getElementZ(boolean[] a, int i) { return a[i]; } - static void setElementZ(boolean[] a, int i, boolean x) { a[i] = x; } - static byte getElementB(byte[] a, int i) { return a[i]; } - static void setElementB(byte[] a, int i, byte x) { a[i] = x; } - static short getElementS(short[] a, int i) { return a[i]; } - static void setElementS(short[] a, int i, short x) { a[i] = x; } - static char getElementC(char[] a, int i) { return a[i]; } - static void setElementC(char[] a, int i, char x) { a[i] = x; } - static Object getElementL(Object[] a, int i) { return a[i]; } - static void setElementL(Object[] a, int i, Object x) { a[i] = x; } - static V getElementL(Class aclass, V[] a, int i) { return aclass.cast(a)[i]; } - static void setElementL(Class aclass, V[] a, int i, V x) { aclass.cast(a)[i] = x; } + + @Override + MethodHandle setVarargs(MemberName member) { + if (member.isVarargs()) return this; + return asFixedArity(); + } - static String aname(Class aclass, boolean isSetter) { - Class vclass = aclass.getComponentType(); - if (vclass == null) throw new IllegalArgumentException(); - return (!isSetter ? "getElement" : "setElement") + Wrapper.basicTypeChar(vclass); + @Override + MethodHandle viewAsType(MethodType newType) { + MethodHandle mh = super.viewAsType(newType); + // put back the varargs bit: + MethodType type = mh.type(); + int arity = type.parameterCount(); + return mh.asVarargsCollector(type.parameterType(arity-1)); } - static MethodType atype(Class aclass, boolean isSetter) { - Class vclass = aclass.getComponentType(); - if (!isSetter) - return MethodType.methodType(vclass, aclass, int.class); - else - return MethodType.methodType(void.class, aclass, int.class, vclass); + + @Override + MemberName internalMemberName() { + return asFixedArity().internalMemberName(); } - static MethodHandle ahandle(Class aclass, boolean isSetter) { - Class vclass = aclass.getComponentType(); - String name = FieldAccessor.aname(aclass, isSetter); - Class caclass = null; - if (!vclass.isPrimitive() && vclass != Object.class) { - caclass = aclass; - aclass = Object[].class; - vclass = Object.class; - } - MethodType type = FieldAccessor.atype(aclass, isSetter); - if (caclass != null) - type = type.insertParameterTypes(0, Class.class); - MethodHandle mh; - try { - mh = IMPL_LOOKUP.findStatic(FieldAccessor.class, name, type); - } catch (ReflectiveOperationException ex) { - throw uncaughtException(ex); - } - if (caclass != null) { - MethodType strongType = FieldAccessor.atype(caclass, isSetter); - mh = mh.bindTo(caclass); - mh = convertArguments(mh, strongType, 0); - } - return mh; + + + @Override + MethodHandle bindArgument(int pos, char basicType, Object value) { + return asFixedArity().bindArgument(pos, basicType, value); + } + + @Override + MethodHandle bindReceiver(Object receiver) { + return asFixedArity().bindReceiver(receiver); + } + + @Override + MethodHandle dropArguments(MethodType srcType, int pos, int drops) { + return asFixedArity().dropArguments(srcType, pos, drops); + } + + @Override + MethodHandle permuteArguments(MethodType newType, int[] reorder) { + return asFixedArity().permuteArguments(newType, reorder); } } - /** Bind a predetermined first argument to the given direct method handle. - * Callable only from MethodHandles. - * @param token Proof that the caller has access to this package. - * @param target Any direct method handle. - * @param receiver Receiver (or first static method argument) to pre-bind. - * @return a BoundMethodHandle for the given DirectMethodHandle, or null if it does not exist - */ - static - MethodHandle bindReceiver(MethodHandle target, Object receiver) { - if (receiver == null) return null; - if (target instanceof AdapterMethodHandle && - ((AdapterMethodHandle)target).conversionOp() == MethodHandleNatives.Constants.OP_RETYPE_ONLY - ) { - Object info = MethodHandleNatives.getTargetInfo(target); - if (info instanceof DirectMethodHandle) { - DirectMethodHandle dmh = (DirectMethodHandle) info; - if (dmh.type().parameterType(0).isAssignableFrom(receiver.getClass())) { - MethodHandle bmh = new BoundMethodHandle(dmh, receiver, 0); - MethodType newType = target.type().dropParameterTypes(0, 1); - return convertArguments(bmh, newType, bmh.type(), 0); - } - } + /** Factory method: Spread selected argument. */ + static MethodHandle makeSpreadArguments(MethodHandle target, + Class spreadArgType, int spreadArgPos, int spreadArgCount) { + MethodType targetType = target.type(); + + for (int i = 0; i < spreadArgCount; i++) { + Class arg = VerifyType.spreadArgElementType(spreadArgType, i); + if (arg == null) arg = Object.class; + targetType = targetType.changeParameterType(spreadArgPos + i, arg); } - if (target instanceof DirectMethodHandle) - return new BoundMethodHandle((DirectMethodHandle)target, receiver, 0); - return null; // let caller try something else - } - - /** Bind a predetermined argument to the given arbitrary method handle. - * Callable only from MethodHandles. - * @param token Proof that the caller has access to this package. - * @param target Any method handle. - * @param receiver Argument (which can be a boxed primitive) to pre-bind. - * @return a suitable BoundMethodHandle - */ - static - MethodHandle bindArgument(MethodHandle target, int argnum, Object receiver) { - return new BoundMethodHandle(target, receiver, argnum); - } + target = target.asType(targetType); - static MethodHandle permuteArguments(MethodHandle target, - MethodType newType, - MethodType oldType, - int[] permutationOrNull) { - assert(oldType.parameterCount() == target.type().parameterCount()); - int outargs = oldType.parameterCount(), inargs = newType.parameterCount(); - if (permutationOrNull.length != outargs) - throw newIllegalArgumentException("wrong number of arguments in permutation"); - // Make the individual outgoing argument types match up first. - Class[] callTypeArgs = new Class[outargs]; - for (int i = 0; i < outargs; i++) - callTypeArgs[i] = newType.parameterType(permutationOrNull[i]); - MethodType callType = MethodType.methodType(oldType.returnType(), callTypeArgs); - target = convertArguments(target, callType, oldType, 0); - assert(target != null); - oldType = target.type(); - List goal = new ArrayList(); // i*TOKEN - List state = new ArrayList(); // i*TOKEN - List drops = new ArrayList(); // not tokens - List dups = new ArrayList(); // not tokens - final int TOKEN = 10; // to mark items which are symbolic only - // state represents the argument values coming into target - for (int i = 0; i < outargs; i++) { - state.add(permutationOrNull[i] * TOKEN); - } - // goal represents the desired state - for (int i = 0; i < inargs; i++) { - if (state.contains(i * TOKEN)) { - goal.add(i * TOKEN); - } else { - // adapter must initially drop all unused arguments - drops.add(i); - } - } - // detect duplications - while (state.size() > goal.size()) { - for (int i2 = 0; i2 < state.size(); i2++) { - int arg1 = state.get(i2); - int i1 = state.indexOf(arg1); - if (i1 != i2) { - // found duplicate occurrence at i2 - int arg2 = (inargs++) * TOKEN; - state.set(i2, arg2); - dups.add(goal.indexOf(arg1)); - goal.add(arg2); + MethodType srcType = targetType + .replaceParameterTypes(spreadArgPos, spreadArgPos + spreadArgCount, spreadArgType); + // Now build a LambdaForm. + MethodType lambdaType = srcType.invokerType(); + Name[] names = arguments(spreadArgCount + 2, lambdaType); + int nameCursor = lambdaType.parameterCount(); + int[] indexes = new int[targetType.parameterCount()]; + + for (int i = 0, argIndex = 1; i < targetType.parameterCount() + 1; i++, argIndex++) { + Class src = lambdaType.parameterType(i); + if (i == spreadArgPos) { + // Spread the array. + MethodHandle aload = MethodHandles.arrayElementGetter(spreadArgType); + Name array = names[argIndex]; + names[nameCursor++] = new Name(NF_checkSpreadArgument, array, spreadArgCount); + for (int j = 0; j < spreadArgCount; i++, j++) { + indexes[i] = nameCursor; + names[nameCursor++] = new Name(aload, array, j); } + } else if (i < indexes.length) { + indexes[i] = argIndex; } } - assert(state.size() == goal.size()); - int size = goal.size(); - while (!state.equals(goal)) { - // Look for a maximal sequence of adjacent misplaced arguments, - // and try to rotate them into place. - int bestRotArg = -10 * TOKEN, bestRotLen = 0; - int thisRotArg = -10 * TOKEN, thisRotLen = 0; - for (int i = 0; i < size; i++) { - int arg = state.get(i); - // Does this argument match the current run? - if (arg == thisRotArg + TOKEN) { - thisRotArg = arg; - thisRotLen += 1; - if (bestRotLen < thisRotLen) { - bestRotLen = thisRotLen; - bestRotArg = thisRotArg; - } - } else { - // The old sequence (if any) stops here. - thisRotLen = 0; - thisRotArg = -10 * TOKEN; - // But maybe a new one starts here also. - int wantArg = goal.get(i); - final int MAX_ARG_ROTATION = AdapterMethodHandle.MAX_ARG_ROTATION; - if (arg != wantArg && - arg >= wantArg - TOKEN * MAX_ARG_ROTATION && - arg <= wantArg + TOKEN * MAX_ARG_ROTATION) { - thisRotArg = arg; - thisRotLen = 1; - } - } - } - if (bestRotLen >= 2) { - // Do a rotation if it can improve argument positioning - // by at least 2 arguments. This is not always optimal, - // but it seems to catch common cases. - int dstEnd = state.indexOf(bestRotArg); - int srcEnd = goal.indexOf(bestRotArg); - int rotBy = dstEnd - srcEnd; - int dstBeg = dstEnd - (bestRotLen - 1); - int srcBeg = srcEnd - (bestRotLen - 1); - assert((dstEnd | dstBeg | srcEnd | srcBeg) >= 0); // no negs - // Make a span which covers both source and destination. - int rotBeg = Math.min(dstBeg, srcBeg); - int rotEnd = Math.max(dstEnd, srcEnd); - int score = 0; - for (int i = rotBeg; i <= rotEnd; i++) { - if ((int)state.get(i) != (int)goal.get(i)) - score += 1; - } - List rotSpan = state.subList(rotBeg, rotEnd+1); - Collections.rotate(rotSpan, -rotBy); // reverse direction - for (int i = rotBeg; i <= rotEnd; i++) { - if ((int)state.get(i) != (int)goal.get(i)) - score -= 1; - } - if (score >= 2) { - // Improved at least two argument positions. Do it. - List> ptypes = Arrays.asList(oldType.parameterArray()); - Collections.rotate(ptypes.subList(rotBeg, rotEnd+1), -rotBy); - MethodType rotType = MethodType.methodType(oldType.returnType(), ptypes); - MethodHandle nextTarget - = AdapterMethodHandle.makeRotateArguments(rotType, target, - rotBeg, rotSpan.size(), rotBy); - if (nextTarget != null) { - //System.out.println("Rot: "+rotSpan+" by "+rotBy); - target = nextTarget; - oldType = rotType; - continue; - } - } - // Else de-rotate, and drop through to the swap-fest. - Collections.rotate(rotSpan, rotBy); - } + assert(nameCursor == names.length-1); // leave room for the final call + + // Build argument array for the call. + Name[] targetArgs = new Name[targetType.parameterCount()]; + for (int i = 0; i < targetType.parameterCount(); i++) { + int idx = indexes[i]; + targetArgs[i] = names[idx]; + } + names[names.length - 1] = new Name(target, (Object[]) targetArgs); + + LambdaForm form = new LambdaForm("spread", lambdaType.parameterCount(), names); + return new SimpleMethodHandle(srcType, form); + } - // Now swap like the wind! - List> ptypes = Arrays.asList(oldType.parameterArray()); - for (int i = 0; i < size; i++) { - // What argument do I want here? - int arg = goal.get(i); - if (arg != state.get(i)) { - // Where is it now? - int j = state.indexOf(arg); - Collections.swap(ptypes, i, j); - MethodType swapType = MethodType.methodType(oldType.returnType(), ptypes); - target = AdapterMethodHandle.makeSwapArguments(swapType, target, i, j); - if (target == null) throw newIllegalArgumentException("cannot swap"); - assert(target.type() == swapType); - oldType = swapType; - Collections.swap(state, i, j); - } - } - // One pass of swapping must finish the job. - assert(state.equals(goal)); + static void checkSpreadArgument(Object av, int n) { + if (av == null) { + if (n == 0) return; + } else if (av instanceof Object[]) { + int len = ((Object[])av).length; + if (len == n) return; + } else { + int len = java.lang.reflect.Array.getLength(av); + if (len == n) return; } - while (!dups.isEmpty()) { - // Grab a contiguous trailing sequence of dups. - int grab = dups.size() - 1; - int dupArgPos = dups.get(grab), dupArgCount = 1; - while (grab - 1 >= 0) { - int dup0 = dups.get(grab - 1); - if (dup0 != dupArgPos - 1) break; - dupArgPos -= 1; - dupArgCount += 1; - grab -= 1; - } - //if (dupArgCount > 1) System.out.println("Dup: "+dups.subList(grab, dups.size())); - dups.subList(grab, dups.size()).clear(); - // In the new target type drop that many args from the tail: - List> ptypes = oldType.parameterList(); - ptypes = ptypes.subList(0, ptypes.size() - dupArgCount); - MethodType dupType = MethodType.methodType(oldType.returnType(), ptypes); - target = AdapterMethodHandle.makeDupArguments(dupType, target, dupArgPos, dupArgCount); - if (target == null) - throw newIllegalArgumentException("cannot dup"); - oldType = target.type(); + // fall through to error: + throw newIllegalArgumentException("Array is not of length "+n); + } + + private static final NamedFunction NF_checkSpreadArgument; + static { + try { + NF_checkSpreadArgument = new NamedFunction(MethodHandleImpl.class + .getDeclaredMethod("checkSpreadArgument", Object.class, int.class)); + NF_checkSpreadArgument.resolve(); + } catch (ReflectiveOperationException ex) { + throw new InternalError(ex); } - while (!drops.isEmpty()) { - // Grab a contiguous initial sequence of drops. - int dropArgPos = drops.get(0), dropArgCount = 1; - while (dropArgCount < drops.size()) { - int drop1 = drops.get(dropArgCount); - if (drop1 != dropArgPos + dropArgCount) break; - dropArgCount += 1; - } - //if (dropArgCount > 1) System.out.println("Drop: "+drops.subList(0, dropArgCount)); - drops.subList(0, dropArgCount).clear(); - List> dropTypes = newType.parameterList() - .subList(dropArgPos, dropArgPos + dropArgCount); - MethodType dropType = oldType.insertParameterTypes(dropArgPos, dropTypes); - target = AdapterMethodHandle.makeDropArguments(dropType, target, dropArgPos, dropArgCount); - if (target == null) throw newIllegalArgumentException("cannot drop"); - oldType = target.type(); - } - target = convertArguments(target, newType, oldType, 0); - assert(target != null); - return target; } - /*non-public*/ static - MethodHandle convertArguments(MethodHandle target, MethodType newType, int level) { - MethodType oldType = target.type(); - if (oldType.equals(newType)) - return target; - assert(level > 1 || oldType.isConvertibleTo(newType)); - MethodHandle retFilter = null; - Class oldRT = oldType.returnType(); - Class newRT = newType.returnType(); - if (!VerifyType.isNullConversion(oldRT, newRT)) { - if (oldRT == void.class) { - Wrapper wrap = newRT.isPrimitive() ? Wrapper.forPrimitiveType(newRT) : Wrapper.OBJECT; - retFilter = ValueConversions.zeroConstantFunction(wrap); - } else { - retFilter = MethodHandles.identity(newRT); - retFilter = convertArguments(retFilter, retFilter.type().changeParameterType(0, oldRT), level); - } - newType = newType.changeReturnType(oldRT); + /** Factory method: Collect or filter selected argument(s). */ + static MethodHandle makeCollectArguments(MethodHandle target, + MethodHandle collector, int collectArgPos, boolean retainOriginalArgs) { + MethodType targetType = target.type(); // (a..., c, [b...])=>r + MethodType collectorType = collector.type(); // (b...)=>c + int collectArgCount = collectorType.parameterCount(); + Class collectValType = collectorType.returnType(); + int collectValCount = (collectValType == void.class ? 0 : 1); + MethodType srcType = targetType // (a..., [b...])=>r + .dropParameterTypes(collectArgPos, collectArgPos+collectValCount); + if (!retainOriginalArgs) { // (a..., b...)=>r + srcType = srcType.insertParameterTypes(collectArgPos, collectorType.parameterList()); } - MethodHandle res = null; - Exception ex = null; - try { - res = convertArguments(target, newType, oldType, level); - } catch (IllegalArgumentException ex1) { - ex = ex1; - } - if (res == null) { - WrongMethodTypeException wmt = new WrongMethodTypeException("cannot convert to "+newType+": "+target); - wmt.initCause(ex); - throw wmt; - } - if (retFilter != null) - res = MethodHandles.filterReturnValue(res, retFilter); - return res; - } + // in arglist: [0: ...keep1 | cpos: collect... | cpos+cacount: keep2... ] + // out arglist: [0: ...keep1 | cpos: collectVal? | cpos+cvcount: keep2... ] + // out(retain): [0: ...keep1 | cpos: cV? coll... | cpos+cvc+cac: keep2... ] - static MethodHandle convertArguments(MethodHandle target, - MethodType newType, - MethodType oldType, - int level) { - assert(oldType.parameterCount() == target.type().parameterCount()); - if (newType == oldType) - return target; - if (oldType.parameterCount() != newType.parameterCount()) - throw newIllegalArgumentException("mismatched parameter count", oldType, newType); - return AdapterMethodHandle.makePairwiseConvert(newType, target, level); - } + // Now build a LambdaForm. + MethodType lambdaType = srcType.invokerType(); + Name[] names = arguments(2, lambdaType); + final int collectNamePos = names.length - 2; + final int targetNamePos = names.length - 1; + + Name[] collectorArgs = Arrays.copyOfRange(names, 1 + collectArgPos, 1 + collectArgPos + collectArgCount); + names[collectNamePos] = new Name(collector, (Object[]) collectorArgs); - static MethodHandle spreadArguments(MethodHandle target, Class arrayType, int arrayLength) { - MethodType oldType = target.type(); - int nargs = oldType.parameterCount(); - int keepPosArgs = nargs - arrayLength; - MethodType newType = oldType - .dropParameterTypes(keepPosArgs, nargs) - .insertParameterTypes(keepPosArgs, arrayType); - return spreadArguments(target, newType, keepPosArgs, arrayType, arrayLength); - } - // called internally only - static MethodHandle spreadArgumentsFromPos(MethodHandle target, MethodType newType, int spreadArgPos) { - int arrayLength = target.type().parameterCount() - spreadArgPos; - return spreadArguments(target, newType, spreadArgPos, Object[].class, arrayLength); - } - static MethodHandle spreadArguments(MethodHandle target, - MethodType newType, - int spreadArgPos, - Class arrayType, - int arrayLength) { - // TO DO: maybe allow the restarg to be Object and implicitly cast to Object[] - MethodType oldType = target.type(); - // spread the last argument of newType to oldType - assert(arrayLength == oldType.parameterCount() - spreadArgPos); - assert(newType.parameterType(spreadArgPos) == arrayType); - return AdapterMethodHandle.makeSpreadArguments(newType, target, arrayType, spreadArgPos, arrayLength); - } + // Build argument array for the target. + // Incoming LF args to copy are: [ (mh) headArgs collectArgs tailArgs ]. + // Output argument array is [ headArgs (collectVal)? (collectArgs)? tailArgs ]. + Name[] targetArgs = new Name[targetType.parameterCount()]; + int inputArgPos = 1; // incoming LF args to copy to target + int targetArgPos = 0; // fill pointer for targetArgs + int chunk = collectArgPos; // |headArgs| + System.arraycopy(names, inputArgPos, targetArgs, targetArgPos, chunk); + inputArgPos += chunk; + targetArgPos += chunk; + if (collectValType != void.class) { + targetArgs[targetArgPos++] = names[collectNamePos]; + } + chunk = collectArgCount; + if (retainOriginalArgs) { + System.arraycopy(names, inputArgPos, targetArgs, targetArgPos, chunk); + targetArgPos += chunk; // optionally pass on the collected chunk + } + inputArgPos += chunk; + chunk = targetArgs.length - targetArgPos; // all the rest + System.arraycopy(names, inputArgPos, targetArgs, targetArgPos, chunk); + assert(inputArgPos + chunk == collectNamePos); // use of rest of input args also + names[targetNamePos] = new Name(target, (Object[]) targetArgs); - static MethodHandle collectArguments(MethodHandle target, - int collectArg, - MethodHandle collector) { - MethodType type = target.type(); - Class collectType = collector.type().returnType(); - assert(collectType != void.class); // else use foldArguments - if (collectType != type.parameterType(collectArg)) - target = target.asType(type.changeParameterType(collectArg, collectType)); - MethodType newType = type - .dropParameterTypes(collectArg, collectArg+1) - .insertParameterTypes(collectArg, collector.type().parameterArray()); - return collectArguments(target, newType, collectArg, collector); - } - static MethodHandle collectArguments(MethodHandle target, - MethodType newType, - int collectArg, - MethodHandle collector) { - MethodType oldType = target.type(); // (a...,c)=>r - // newType // (a..., b...)=>r - MethodType colType = collector.type(); // (b...)=>c - // oldType // (a..., b...)=>r - assert(newType.parameterCount() == collectArg + colType.parameterCount()); - assert(oldType.parameterCount() == collectArg + 1); - assert(AdapterMethodHandle.canCollectArguments(oldType, colType, collectArg, false)); - return AdapterMethodHandle.makeCollectArguments(target, collector, collectArg, false); - } - - static MethodHandle filterArgument(MethodHandle target, - int pos, - MethodHandle filter) { - MethodType ttype = target.type(); - MethodType ftype = filter.type(); - assert(ftype.parameterCount() == 1); - return AdapterMethodHandle.makeCollectArguments(target, filter, pos, false); - } - - static MethodHandle foldArguments(MethodHandle target, - MethodType newType, - int foldPos, - MethodHandle combiner) { - MethodType oldType = target.type(); - MethodType ctype = combiner.type(); - assert(AdapterMethodHandle.canCollectArguments(oldType, ctype, foldPos, true)); - return AdapterMethodHandle.makeCollectArguments(target, combiner, foldPos, true); - } - - static - MethodHandle dropArguments(MethodHandle target, - MethodType newType, int argnum) { - int drops = newType.parameterCount() - target.type().parameterCount(); - return AdapterMethodHandle.makeDropArguments(newType, target, argnum, drops); + LambdaForm form = new LambdaForm("collect", lambdaType.parameterCount(), names); + return new SimpleMethodHandle(srcType, form); } static @@ -735,47 +533,42 @@ MethodHandle makeGuardWithTest(MethodHandle test, MethodHandle target, MethodHandle fallback) { - // gwt(arg...) - // [fold]=> continueAfterTest(z=test(arg...), arg...) - // [filter]=> (tf=select(z))(arg...) - // where select(z) = select(z, t, f).bindTo(t, f) => z ? t f - // [tailcall]=> tf(arg...) - assert(test.type().returnType() == boolean.class); - MethodType targetType = target.type(); - MethodType foldTargetType = targetType.insertParameterTypes(0, boolean.class); - assert(AdapterMethodHandle.canCollectArguments(foldTargetType, test.type(), 0, true)); - // working backwards, as usual: - assert(target.type().equals(fallback.type())); - MethodHandle tailcall = MethodHandles.exactInvoker(target.type()); - MethodHandle select = selectAlternative(); - select = bindArgument(select, 2, CountingMethodHandle.wrap(fallback)); - select = bindArgument(select, 1, CountingMethodHandle.wrap(target)); - // select(z: boolean) => (z ? target : fallback) - MethodHandle filter = filterArgument(tailcall, 0, select); - assert(filter.type().parameterType(0) == boolean.class); - MethodHandle fold = foldArguments(filter, filter.type().dropParameterTypes(0, 1), 0, test); - return fold; + MethodType basicType = target.type().basicType(); + MethodHandle invokeBasic = MethodHandles.basicInvoker(basicType); + int arity = basicType.parameterCount(); + int extraNames = 3; + MethodType lambdaType = basicType.invokerType(); + Name[] names = arguments(extraNames, lambdaType); + + Object[] testArgs = Arrays.copyOfRange(names, 1, 1 + arity, Object[].class); + Object[] targetArgs = Arrays.copyOfRange(names, 0, 1 + arity, Object[].class); + + // call test + names[arity + 1] = new Name(test, testArgs); + + // call selectAlternative + Object[] selectArgs = { names[arity + 1], target, fallback }; + names[arity + 2] = new Name(MethodHandleImpl.selectAlternative(), selectArgs); + targetArgs[0] = names[arity + 2]; + + // call target or fallback + names[arity + 3] = new Name(new NamedFunction(invokeBasic), targetArgs); + + LambdaForm form = new LambdaForm("guard", lambdaType.parameterCount(), names); + return new SimpleMethodHandle(target.type(), form); } - private static class GuardWithCatch extends BoundMethodHandle { + private static class GuardWithCatch { private final MethodHandle target; private final Class exType; private final MethodHandle catcher; + // FIXME: Build the control flow out of foldArguments. GuardWithCatch(MethodHandle target, Class exType, MethodHandle catcher) { - this(INVOKES[target.type().parameterCount()], target, exType, catcher); - } - // FIXME: Build the control flow out of foldArguments. - GuardWithCatch(MethodHandle invoker, - MethodHandle target, Class exType, MethodHandle catcher) { - super(invoker); this.target = target; this.exType = exType; this.catcher = catcher; } - @Override - String debugString() { - return addTypeString(target, this); - } + @LambdaForm.Hidden private Object invoke_V(Object... av) throws Throwable { try { return target.invokeExact(av); @@ -784,6 +577,7 @@ return catcher.invokeExact(t, av); } } + @LambdaForm.Hidden private Object invoke_L0() throws Throwable { try { return target.invokeExact(); @@ -792,6 +586,7 @@ return catcher.invokeExact(t); } } + @LambdaForm.Hidden private Object invoke_L1(Object a0) throws Throwable { try { return target.invokeExact(a0); @@ -800,6 +595,7 @@ return catcher.invokeExact(t, a0); } } + @LambdaForm.Hidden private Object invoke_L2(Object a0, Object a1) throws Throwable { try { return target.invokeExact(a0, a1); @@ -808,6 +604,7 @@ return catcher.invokeExact(t, a0, a1); } } + @LambdaForm.Hidden private Object invoke_L3(Object a0, Object a1, Object a2) throws Throwable { try { return target.invokeExact(a0, a1, a2); @@ -816,6 +613,7 @@ return catcher.invokeExact(t, a0, a1, a2); } } + @LambdaForm.Hidden private Object invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable { try { return target.invokeExact(a0, a1, a2, a3); @@ -824,6 +622,7 @@ return catcher.invokeExact(t, a0, a1, a2, a3); } } + @LambdaForm.Hidden private Object invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { try { return target.invokeExact(a0, a1, a2, a3, a4); @@ -832,6 +631,7 @@ return catcher.invokeExact(t, a0, a1, a2, a3, a4); } } + @LambdaForm.Hidden private Object invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { try { return target.invokeExact(a0, a1, a2, a3, a4, a5); @@ -840,6 +640,7 @@ return catcher.invokeExact(t, a0, a1, a2, a3, a4, a5); } } + @LambdaForm.Hidden private Object invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { try { return target.invokeExact(a0, a1, a2, a3, a4, a5, a6); @@ -848,6 +649,7 @@ return catcher.invokeExact(t, a0, a1, a2, a3, a4, a5, a6); } } + @LambdaForm.Hidden private Object invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { try { return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7); @@ -857,7 +659,7 @@ } } static MethodHandle[] makeInvokes() { - ArrayList invokes = new ArrayList(); + ArrayList invokes = new ArrayList<>(); MethodHandles.Lookup lookup = IMPL_LOOKUP; for (;;) { int nargs = invokes.size(); @@ -898,39 +700,60 @@ MethodType gtype = type.generic(); MethodType gcatchType = gtype.insertParameterTypes(0, Throwable.class); // Note: convertArguments(...2) avoids interface casts present in convertArguments(...0) - MethodHandle gtarget = convertArguments(target, gtype, type, 2); - MethodHandle gcatcher = convertArguments(catcher, gcatchType, ctype, 2); - MethodHandle gguard = new GuardWithCatch(gtarget, exType, gcatcher); - if (gtarget == null || gcatcher == null || gguard == null) return null; - return convertArguments(gguard, type, gtype, 2); + MethodHandle gtarget = makePairwiseConvert(target, gtype, 2); + MethodHandle gcatcher = makePairwiseConvert(catcher, gcatchType, 2); + GuardWithCatch gguard = new GuardWithCatch(gtarget, exType, gcatcher); + if (gtarget == null || gcatcher == null) throw new InternalError(); + MethodHandle ginvoker = GuardWithCatch.INVOKES[nargs].bindReceiver(gguard); + return makePairwiseConvert(ginvoker, type, 2); } else { - MethodType gtype = MethodType.genericMethodType(0, true); - MethodType gcatchType = gtype.insertParameterTypes(0, Throwable.class); - MethodHandle gtarget = spreadArgumentsFromPos(target, gtype, 0); + MethodHandle gtarget = makeSpreadArguments(target, Object[].class, 0, nargs); catcher = catcher.asType(ctype.changeParameterType(0, Throwable.class)); - MethodHandle gcatcher = spreadArgumentsFromPos(catcher, gcatchType, 1); - MethodHandle gguard = new GuardWithCatch(GuardWithCatch.VARARGS_INVOKE, gtarget, exType, gcatcher); - if (gtarget == null || gcatcher == null || gguard == null) return null; - return collectArguments(gguard, type, 0, ValueConversions.varargsArray(nargs)).asType(type); + MethodHandle gcatcher = makeSpreadArguments(catcher, Object[].class, 1, nargs); + GuardWithCatch gguard = new GuardWithCatch(gtarget, exType, gcatcher); + if (gtarget == null || gcatcher == null) throw new InternalError(); + MethodHandle ginvoker = GuardWithCatch.VARARGS_INVOKE.bindReceiver(gguard); + return makeCollectArguments(ginvoker, ValueConversions.varargsArray(nargs), 0, false); } } static MethodHandle throwException(MethodType type) { - return AdapterMethodHandle.makeRetypeRaw(type, throwException()); + assert(Throwable.class.isAssignableFrom(type.parameterType(0))); + int arity = type.parameterCount(); + if (arity > 1) { + return throwException(type.dropParameterTypes(1, arity)).dropArguments(type, 1, arity-1); + } + return makePairwiseConvert(throwException(), type, 2); } static MethodHandle THROW_EXCEPTION; static MethodHandle throwException() { - if (THROW_EXCEPTION != null) return THROW_EXCEPTION; + MethodHandle mh = THROW_EXCEPTION; + if (mh != null) return mh; try { - THROW_EXCEPTION + mh = IMPL_LOOKUP.findStatic(MethodHandleImpl.class, "throwException", MethodType.methodType(Empty.class, Throwable.class)); } catch (ReflectiveOperationException ex) { throw new RuntimeException(ex); } - return THROW_EXCEPTION; + THROW_EXCEPTION = mh; + return mh; } static Empty throwException(T t) throws T { throw t; } + + static MethodHandle FAKE_METHOD_HANDLE_INVOKE; + static + MethodHandle fakeMethodHandleInvoke(MemberName method) { + MethodType type = method.getInvocationType(); + assert(type.equals(MethodType.methodType(Object.class, Object[].class))); + MethodHandle mh = FAKE_METHOD_HANDLE_INVOKE; + if (mh != null) return mh; + mh = throwException(type.insertParameterTypes(0, UnsupportedOperationException.class)); + mh = mh.bindTo(new UnsupportedOperationException("cannot reflectively invoke MethodHandle")); + FAKE_METHOD_HANDLE_INVOKE = mh; + return mh; + } + } diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/MethodHandleInfo.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/classes/java/lang/invoke/MethodHandleInfo.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package java.lang.invoke; +import java.lang.invoke.MethodHandleNatives.Constants; + +//Not yet public: public +class MethodHandleInfo { + public static final int + REF_NONE = Constants.REF_NONE, + REF_getField = Constants.REF_getField, + REF_getStatic = Constants.REF_getStatic, + REF_putField = Constants.REF_putField, + REF_putStatic = Constants.REF_putStatic, + REF_invokeVirtual = Constants.REF_invokeVirtual, + REF_invokeStatic = Constants.REF_invokeStatic, + REF_invokeSpecial = Constants.REF_invokeSpecial, + REF_newInvokeSpecial = Constants.REF_newInvokeSpecial, + REF_invokeInterface = Constants.REF_invokeInterface; + + private final Class declaringClass; + private final String name; + private final MethodType methodType; + private final int referenceKind; + + public MethodHandleInfo(MethodHandle mh) throws ReflectiveOperationException { + MemberName mn = mh.internalMemberName(); + this.declaringClass = mn.getDeclaringClass(); + this.name = mn.getName(); + this.methodType = mn.getMethodType(); + this.referenceKind = mn.getReferenceKind(); + } + + public Class getDeclaringClass() { + return declaringClass; + } + + public String getName() { + return name; + } + + public MethodType getMethodType() { + return methodType; + } + + public int getReferenceKind() { + return referenceKind; + } +} diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/MethodHandleNatives.java --- a/src/share/classes/java/lang/invoke/MethodHandleNatives.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/invoke/MethodHandleNatives.java Fri Aug 24 09:29:17 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,7 @@ import java.lang.reflect.AccessibleObject; import java.lang.reflect.Field; import static java.lang.invoke.MethodHandleNatives.Constants.*; +import static java.lang.invoke.MethodHandleStatics.*; import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; /** @@ -41,56 +42,21 @@ private MethodHandleNatives() { } // static only - /// MethodName support + /// MemberName support static native void init(MemberName self, Object ref); static native void expand(MemberName self); - static native void resolve(MemberName self, Class caller); + static native MemberName resolve(MemberName self, Class caller) throws LinkageError; static native int getMembers(Class defc, String matchName, String matchSig, int matchFlags, Class caller, int skip, MemberName[] results); - /// MethodHandle support - - /** Initialize the method handle to adapt the call. */ - static native void init(AdapterMethodHandle self, MethodHandle target, int argnum); - /** Initialize the method handle to call the correct method, directly. */ - static native void init(BoundMethodHandle self, Object target, int argnum); - /** Initialize the method handle to call as if by an invoke* instruction. */ - static native void init(DirectMethodHandle self, Object ref, boolean doDispatch, Class caller); - - /** Initialize a method type, once per form. */ - static native void init(MethodType self); - - /** Fetch the vmtarget field. - * It will be sanitized as necessary to avoid exposing non-Java references. - * This routine is for debugging and reflection. - */ - static native Object getTarget(MethodHandle self, int format); + /// Field layout queries parallel to sun.misc.Unsafe: + static native long objectFieldOffset(MemberName self); // e.g., returns vmindex + static native long staticFieldOffset(MemberName self); // e.g., returns vmindex + static native Object staticFieldBase(MemberName self); // e.g., returns clazz + static native Object getMemberVMInfo(MemberName self); // returns {vmindex,vmtarget} - /** Fetch the name of the handled method, if available. - * This routine is for debugging and reflection. - */ - static MemberName getMethodName(MethodHandle self) { - return (MemberName) getTarget(self, ETF_METHOD_NAME); - } - - /** Fetch the reflective version of the handled method, if available. - */ - static AccessibleObject getTargetMethod(MethodHandle self) { - return (AccessibleObject) getTarget(self, ETF_REFLECT_METHOD); - } - - /** Fetch the target of this method handle. - * If it directly targets a method, return a MemberName for the method. - * If it is chained to another method handle, return that handle. - */ - static Object getTargetInfo(MethodHandle self) { - return getTarget(self, ETF_HANDLE_OR_METHOD_NAME); - } - - static Object[] makeTarget(Class defc, String name, String sig, int mods, Class refc) { - return new Object[] { defc, name, sig, mods, refc }; - } + /// MethodHandle support /** Fetch MH-related JVM parameter. * which=0 retrieves MethodHandlePushLimit @@ -98,19 +64,6 @@ */ static native int getConstant(int which); - /** Java copy of MethodHandlePushLimit in range 2..255. */ - static final int JVM_PUSH_LIMIT; - /** JVM stack motion (in words) after one slot is pushed, usually -1. - */ - static final int JVM_STACK_MOVE_UNIT; - - /** Which conv-ops are implemented by the JVM? */ - static final int CONV_OP_IMPLEMENTED_MASK; - /** Derived mode flag. Only false on some old JVM implementations. */ - static final boolean HAVE_RICOCHET_FRAMES; - - static final int OP_ROT_ARGS_DOWN_LIMIT_BIAS; - static final boolean COUNT_GWT; /// CallSite support @@ -122,17 +75,11 @@ private static native void registerNatives(); static { registerNatives(); - int k; - JVM_PUSH_LIMIT = getConstant(Constants.GC_JVM_PUSH_LIMIT); - JVM_STACK_MOVE_UNIT = getConstant(Constants.GC_JVM_STACK_MOVE_UNIT); - k = getConstant(Constants.GC_CONV_OP_IMPLEMENTED_MASK); - CONV_OP_IMPLEMENTED_MASK = (k != 0) ? k : DEFAULT_CONV_OP_IMPLEMENTED_MASK; - k = getConstant(Constants.GC_OP_ROT_ARGS_DOWN_LIMIT_BIAS); - OP_ROT_ARGS_DOWN_LIMIT_BIAS = (k != 0) ? (byte)k : -1; - HAVE_RICOCHET_FRAMES = (CONV_OP_IMPLEMENTED_MASK & (1<. Cascade the calls as needed: + MethodHandleImpl.initStatics(); +} // All compile-time constants go here. // There is an opportunity to check them against the JVM's idea of them. @@ -140,16 +87,8 @@ Constants() { } // static only // MethodHandleImpl static final int // for getConstant - GC_JVM_PUSH_LIMIT = 0, - GC_JVM_STACK_MOVE_UNIT = 1, - GC_CONV_OP_IMPLEMENTED_MASK = 2, - GC_OP_ROT_ARGS_DOWN_LIMIT_BIAS = 3, - GC_COUNT_GWT = 4; - static final int - ETF_HANDLE_OR_METHOD_NAME = 0, // all available data (immediate MH or method) - ETF_DIRECT_HANDLE = 1, // ultimate method handle (will be a DMH, may be self) - ETF_METHOD_NAME = 2, // ultimate method as MemberName - ETF_REFLECT_METHOD = 3; // ultimate method as java.lang.reflect object (sans refClass) + GC_COUNT_GWT = 4, + GC_LAMBDA_SUPPORT = 5; // MemberName // The JVM uses values of -2 and above for vtable indexes. @@ -162,65 +101,11 @@ MN_IS_CONSTRUCTOR = 0x00020000, // constructor MN_IS_FIELD = 0x00040000, // field MN_IS_TYPE = 0x00080000, // nested type - MN_SEARCH_SUPERCLASSES = 0x00100000, // for MHN.getMembers - MN_SEARCH_INTERFACES = 0x00200000, // for MHN.getMembers - VM_INDEX_UNINITIALIZED = -99; - - // BoundMethodHandle - /** Constants for decoding the vmargslot field, which contains 2 values. */ - static final int - ARG_SLOT_PUSH_SHIFT = 16, - ARG_SLOT_MASK = (1<int, Object->T) - OP_CHECK_CAST = 0x2, // ref-to-ref conversion; requires a Class argument - OP_PRIM_TO_PRIM = 0x3, // converts from one primitive to another - OP_REF_TO_PRIM = 0x4, // unboxes a wrapper to produce a primitive - OP_PRIM_TO_REF = 0x5, // boxes a primitive into a wrapper - OP_SWAP_ARGS = 0x6, // swap arguments (vminfo is 2nd arg) - OP_ROT_ARGS = 0x7, // rotate arguments (vminfo is displaced arg) - OP_DUP_ARGS = 0x8, // duplicates one or more arguments (at TOS) - OP_DROP_ARGS = 0x9, // remove one or more argument slots - OP_COLLECT_ARGS = 0xA, // combine arguments using an auxiliary function - OP_SPREAD_ARGS = 0xB, // expand in place a varargs array (of known size) - OP_FOLD_ARGS = 0xC, // combine but do not remove arguments; prepend result - //OP_UNUSED_13 = 0xD, // unused code, perhaps for reified argument lists - CONV_OP_LIMIT = 0xE; // limit of CONV_OP enumeration - /** Shift and mask values for decoding the AMH.conversion field. - * These numbers are shared with the JVM for creating AMHs. - */ - static final int - CONV_OP_MASK = 0xF00, // this nybble contains the conversion op field - CONV_TYPE_MASK = 0x0F, // fits T_ADDRESS and below - CONV_VMINFO_MASK = 0x0FF, // LSB is reserved for JVM use - CONV_VMINFO_SHIFT = 0, // position of bits in CONV_VMINFO_MASK - CONV_OP_SHIFT = 8, // position of bits in CONV_OP_MASK - CONV_DEST_TYPE_SHIFT = 12, // byte 2 has the adapter BasicType (if needed) - CONV_SRC_TYPE_SHIFT = 16, // byte 2 has the source BasicType (if needed) - CONV_STACK_MOVE_SHIFT = 20, // high 12 bits give signed SP change - CONV_STACK_MOVE_MASK = (1 << (32 - CONV_STACK_MOVE_SHIFT)) - 1; - - /** Which conv-ops are implemented by the JVM? */ - static final int DEFAULT_CONV_OP_IMPLEMENTED_MASK = - // Value to use if the corresponding JVM query fails. - ((1<> MN_REFERENCE_KIND_SHIFT, + // The SEARCH_* bits are not for MN.flags but for the matchFlags argument of MHN.getMembers: + MN_SEARCH_SUPERCLASSES = 0x00100000, + MN_SEARCH_INTERFACES = 0x00200000; /** * Basic types as encoded in the JVM. These code values are not @@ -243,9 +128,54 @@ T_ILLEGAL = 99; /** + * Constant pool entry types. + */ + static final byte + CONSTANT_Utf8 = 1, + CONSTANT_Integer = 3, + CONSTANT_Float = 4, + CONSTANT_Long = 5, + CONSTANT_Double = 6, + CONSTANT_Class = 7, + CONSTANT_String = 8, + CONSTANT_Fieldref = 9, + CONSTANT_Methodref = 10, + CONSTANT_InterfaceMethodref = 11, + CONSTANT_NameAndType = 12, + CONSTANT_MethodHandle = 15, // JSR 292 + CONSTANT_MethodType = 16, // JSR 292 + CONSTANT_InvokeDynamic = 18, + CONSTANT_LIMIT = 19; // Limit to tags found in classfiles + + /** + * Access modifier flags. + */ + static final char + ACC_PUBLIC = 0x0001, + ACC_PRIVATE = 0x0002, + ACC_PROTECTED = 0x0004, + ACC_STATIC = 0x0008, + ACC_FINAL = 0x0010, + ACC_SYNCHRONIZED = 0x0020, + ACC_VOLATILE = 0x0040, + ACC_TRANSIENT = 0x0080, + ACC_NATIVE = 0x0100, + ACC_INTERFACE = 0x0200, + ACC_ABSTRACT = 0x0400, + ACC_STRICT = 0x0800, + ACC_SYNTHETIC = 0x1000, + ACC_ANNOTATION = 0x2000, + ACC_ENUM = 0x4000, + // aliases: + ACC_SUPER = ACC_SYNCHRONIZED, + ACC_BRIDGE = ACC_VOLATILE, + ACC_VARARGS = ACC_TRANSIENT; + + /** * Constant pool reference-kind codes, as used by CONSTANT_MethodHandle CP entries. */ - static final int + static final byte + REF_NONE = 0, // null value REF_getField = 1, REF_getStatic = 2, REF_putField = 3, @@ -254,8 +184,66 @@ REF_invokeStatic = 6, REF_invokeSpecial = 7, REF_newInvokeSpecial = 8, - REF_invokeInterface = 9; + REF_invokeInterface = 9, + REF_LIMIT = 10; + } + + static boolean refKindIsValid(int refKind) { + return (refKind > REF_NONE && refKind < REF_LIMIT); + } + static boolean refKindIsField(byte refKind) { + assert(refKindIsValid(refKind)); + return (refKind <= REF_putStatic); + } + static boolean refKindIsGetter(byte refKind) { + assert(refKindIsValid(refKind)); + return (refKind <= REF_getStatic); + } + static boolean refKindIsSetter(byte refKind) { + return refKindIsField(refKind) && !refKindIsGetter(refKind); + } + static boolean refKindIsMethod(byte refKind) { + return !refKindIsField(refKind) && (refKind != REF_newInvokeSpecial); + } + static boolean refKindHasReceiver(byte refKind) { + assert(refKindIsValid(refKind)); + return (refKind & 1) != 0; + } + static boolean refKindIsStatic(byte refKind) { + return !refKindHasReceiver(refKind) && (refKind != REF_newInvokeSpecial); } + static boolean refKindDoesDispatch(byte refKind) { + assert(refKindIsValid(refKind)); + return (refKind == REF_invokeVirtual || + refKind == REF_invokeInterface); + } + static { + final int HR_MASK = ((1 << REF_getField) | + (1 << REF_putField) | + (1 << REF_invokeVirtual) | + (1 << REF_invokeSpecial) | + (1 << REF_invokeInterface) + ); + for (byte refKind = REF_NONE+1; refKind < REF_LIMIT; refKind++) { + assert(refKindHasReceiver(refKind) == (((1< caller = (Class)callerObj; + String name = nameObj.toString().intern(); + MethodType type = (MethodType)typeObj; + appendixResult[0] = CallSite.makeSite(bootstrapMethod, + name, + type, + staticArguments, + caller); + return Invokers.linkToCallSiteMethod(type); } /** @@ -321,71 +307,64 @@ } /** - * The JVM wants to use a MethodType with inexact invoke. Give the runtime fair warning. - */ - static void notifyGenericMethodType(MethodType type) { - type.form().notifyGenericMethodType(); - } - - /** - * The JVM wants to raise an exception. Here's the path. + * The JVM wants to link a call site that requires a dynamic type check. + * Name is a type-checking invoker, invokeExact or invoke. + * Return a JVM method (MemberName) to handle the invoking. + * The method assumes the following arguments on the stack: + * 0: the method handle being invoked + * 1-N: the arguments to the method handle invocation + * N+1: an implicitly added type argument (the given MethodType) */ - static void raiseException(int code, Object actual, Object required) { - String message = null; - switch (code) { - case 190: // arraylength - try { - String reqLength = ""; - if (required instanceof AdapterMethodHandle) { - int conv = ((AdapterMethodHandle)required).getConversion(); - int spChange = AdapterMethodHandle.extractStackMove(conv); - reqLength = " of length "+(spChange+1); - } - int actualLength = actual == null ? 0 : java.lang.reflect.Array.getLength(actual); - message = "required array"+reqLength+", but encountered wrong length "+actualLength; - break; - } catch (IllegalArgumentException ex) { - } - required = Object[].class; // should have been an array - code = 192; // checkcast - break; - case 191: // athrow - // JVM is asking us to wrap an exception which happened during resolving - if (required == BootstrapMethodError.class) { - throw new BootstrapMethodError((Throwable) actual); - } - break; + static MemberName linkMethod(Class callerClass, int refKind, + Class defc, String name, Object type, + Object[] appendixResult) { + if (!TRACE_METHOD_LINKAGE) + return linkMethodImpl(callerClass, refKind, defc, name, type, appendixResult); + return linkMethodTracing(callerClass, refKind, defc, name, type, appendixResult); + } + static MemberName linkMethodImpl(Class callerClass, int refKind, + Class defc, String name, Object type, + Object[] appendixResult) { + if (defc != MethodHandle.class || refKind != REF_invokeVirtual) + throw new LinkageError("no such method "+defc.getName()+"."+name+type); + switch (name) { + case "invoke": + return Invokers.genericInvokerMethod(callerClass, type, appendixResult); + case "invokeExact": + return Invokers.exactInvokerMethod(callerClass, type, appendixResult); } - // disregard the identity of the actual object, if it is not a class: - if (message == null) { - if (!(actual instanceof Class) && !(actual instanceof MethodType)) - actual = actual.getClass(); - if (actual != null) - message = "required "+required+" but encountered "+actual; - else - message = "required "+required; - } - switch (code) { - case 190: // arraylength - throw new ArrayIndexOutOfBoundsException(message); - case 50: //_aaload - throw new ClassCastException(message); - case 192: // checkcast - throw new ClassCastException(message); - default: - throw new InternalError("unexpected code "+code+": "+message); + throw new UnsupportedOperationException("linkMethod "+name); + } + // Tracing logic: + static MemberName linkMethodTracing(Class callerClass, int refKind, + Class defc, String name, Object type, + Object[] appendixResult) { + System.out.println("linkMethod "+defc.getName()+"."+ + name+type+"/"+Integer.toHexString(refKind)); + try { + MemberName res = linkMethodImpl(callerClass, refKind, defc, name, type, appendixResult); + System.out.println("linkMethod => "+res+" + "+appendixResult[0]); + return res; + } catch (Throwable ex) { + System.out.println("linkMethod => throw "+ex); + throw ex; } } /** * The JVM is resolving a CONSTANT_MethodHandle CP entry. And it wants our help. * It will make an up-call to this method. (Do not change the name or signature.) + * The type argument is a Class for field requests and a MethodType for non-fields. + *

+ * Recent versions of the JVM may also pass a resolved MemberName for the type. + * In that case, the name is ignored and may be null. */ static MethodHandle linkMethodHandleConstant(Class callerClass, int refKind, Class defc, String name, Object type) { try { Lookup lookup = IMPL_LOOKUP.in(callerClass); - return lookup.linkMethodHandleConstant(refKind, defc, name, type); + assert(refKindIsValid(refKind)); + return lookup.linkMethodHandleConstant((byte) refKind, defc, name, type); } catch (ReflectiveOperationException ex) { Error err = new IncompatibleClassChangeError(); err.initCause(ex); diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/MethodHandleStatics.java --- a/src/share/classes/java/lang/invoke/MethodHandleStatics.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/invoke/MethodHandleStatics.java Fri Aug 24 09:29:17 2012 +0100 @@ -27,6 +27,7 @@ import java.security.AccessController; import java.security.PrivilegedAction; +import sun.misc.Unsafe; /** * This class consists exclusively of static names internal to the @@ -38,16 +39,30 @@ private MethodHandleStatics() { } // do not instantiate + static final Unsafe UNSAFE = Unsafe.getUnsafe(); + static final boolean DEBUG_METHOD_HANDLE_NAMES; + static final boolean DUMP_CLASS_FILES; + static final boolean TRACE_INTERPRETER; + static final boolean TRACE_METHOD_LINKAGE; + static final Integer COMPILE_THRESHOLD; static { - final Object[] values = { false }; + final Object[] values = { false, false, false, false, null }; AccessController.doPrivileged(new PrivilegedAction() { public Void run() { values[0] = Boolean.getBoolean("java.lang.invoke.MethodHandle.DEBUG_NAMES"); + values[1] = Boolean.getBoolean("java.lang.invoke.MethodHandle.DUMP_CLASS_FILES"); + values[2] = Boolean.getBoolean("java.lang.invoke.MethodHandle.TRACE_INTERPRETER"); + values[3] = Boolean.getBoolean("java.lang.invoke.MethodHandle.TRACE_METHOD_LINKAGE"); + values[4] = Integer.getInteger("java.lang.invoke.MethodHandle.COMPILE_THRESHOLD"); return null; } }); DEBUG_METHOD_HANDLE_NAMES = (Boolean) values[0]; + DUMP_CLASS_FILES = (Boolean) values[1]; + TRACE_INTERPRETER = (Boolean) values[2]; + TRACE_METHOD_LINKAGE = (Boolean) values[3]; + COMPILE_THRESHOLD = (Integer) values[4]; } /*non-public*/ static String getNameString(MethodHandle target, MethodType type) { @@ -55,7 +70,7 @@ type = target.type(); MemberName name = null; if (target != null) - name = MethodHandleNatives.getMethodName(target); + name = target.internalMemberName(); if (name == null) return "invoke" + type; return name.getName() + type; @@ -77,20 +92,6 @@ return str + target.type(); } - static void checkSpreadArgument(Object av, int n) { - if (av == null) { - if (n == 0) return; - } else if (av instanceof Object[]) { - int len = ((Object[])av).length; - if (len == n) return; - } else { - int len = java.lang.reflect.Array.getLength(av); - if (len == n) return; - } - // fall through to error: - throw newIllegalArgumentException("Array is not of length "+n); - } - // handy shared exception makers (they simplify the common case code) /*non-public*/ static RuntimeException newIllegalStateException(String message) { return new IllegalStateException(message); @@ -110,6 +111,9 @@ /*non-public*/ static Error uncaughtException(Exception ex) { throw new InternalError("uncaught exception", ex); } + static Error NYI() { + throw new AssertionError("NYI"); + } private static String message(String message, Object obj) { if (obj != null) message = message + ": " + obj; return message; diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/MethodHandles.java --- a/src/share/classes/java/lang/invoke/MethodHandles.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/invoke/MethodHandles.java Fri Aug 24 09:29:17 2012 +0100 @@ -26,7 +26,6 @@ package java.lang.invoke; import java.lang.reflect.*; -import sun.invoke.WrapperInstance; import sun.invoke.util.ValueConversions; import sun.invoke.util.VerifyAccess; import sun.invoke.util.Wrapper; @@ -174,6 +173,8 @@ * Both {@code MT} and the field type {@code FT} are documented as a parameter named {@code type}. * The formal parameter {@code this} stands for the self-reference of type {@code C}; * if it is present, it is always the leading argument to the method handle invocation. + * (In the case of some {@code protected} members, {@code this} may be + * restricted in type to the lookup class; see below.) * The name {@code arg} stands for all the other method handle arguments. * In the code examples for the Core Reflection API, the name {@code thisOrNull} * stands for a null reference if the accessed method or field is static, @@ -244,6 +245,18 @@ * is exactly equivalent to executing the compiled and resolved call to {@code M}. * The same point is true of fields and constructors. *

+ * If the desired member is {@code protected}, the usual JVM rules apply, + * including the requirement that the lookup class must be either be in the + * same package as the desired member, or must inherit that member. + * (See the Java Virtual Machine Specification, sections 4.9.2, 5.4.3.5, and 6.4.) + * In addition, if the desired member is a non-static field or method + * in a different package, the resulting method handle may only be applied + * to objects of the lookup class or one of its subclasses. + * This requirement is enforced by narrowing the type of the leading + * {@code this} parameter from {@code C} + * (which will necessarily be a superclass of the lookup class) + * to the lookup class itself. + *

* In some cases, access between nested classes is obtained by the Java compiler by creating * an wrapper method to access a private method of another class * in the same top-level declaration. @@ -582,19 +595,9 @@ */ public MethodHandle findStatic(Class refc, String name, MethodType type) throws NoSuchMethodException, IllegalAccessException { - MemberName method = resolveOrFail(refc, name, type, true); + MemberName method = resolveOrFail(REF_invokeStatic, refc, name, type); checkSecurityManager(refc, method); // stack walk magic: do not refactor - return accessStatic(refc, method); - } - private - MethodHandle accessStatic(Class refc, MemberName method) throws IllegalAccessException { - checkMethod(refc, method, true); - return MethodHandleImpl.findMethod(method, false, lookupClassOrNull()); - } - private - MethodHandle resolveStatic(Class refc, String name, MethodType type) throws NoSuchMethodException, IllegalAccessException { - MemberName method = resolveOrFail(refc, name, type, true); - return accessStatic(refc, method); + return getDirectMethod(REF_invokeStatic, refc, method); } /** @@ -609,6 +612,11 @@ * (The dispatching action is identical with that performed by an * {@code invokevirtual} or {@code invokeinterface} instruction.) *

+ * The first argument will be of type {@code refc} if the lookup + * class has full privileges to access the member. Otherwise + * the member must be {@code protected} and the first argument + * will be restricted in type to the lookup class. + *

* The returned method handle will have * {@linkplain MethodHandle#asVarargsCollector variable arity} if and only if * the method's variable arity modifier bit ({@code 0x0080}) is set. @@ -636,18 +644,22 @@ * @throws NullPointerException if any argument is null */ public MethodHandle findVirtual(Class refc, String name, MethodType type) throws NoSuchMethodException, IllegalAccessException { - MemberName method = resolveOrFail(refc, name, type, false); + if (refc == MethodHandle.class) { + MethodHandle mh = findVirtualForMH(name, type); + if (mh != null) return mh; + } + byte refKind = (refc.isInterface() ? REF_invokeInterface : REF_invokeVirtual); + MemberName method = resolveOrFail(refKind, refc, name, type); checkSecurityManager(refc, method); // stack walk magic: do not refactor - return accessVirtual(refc, method); + return getDirectMethod(refKind, refc, method); } - private MethodHandle resolveVirtual(Class refc, String name, MethodType type) throws NoSuchMethodException, IllegalAccessException { - MemberName method = resolveOrFail(refc, name, type, false); - return accessVirtual(refc, method); - } - private MethodHandle accessVirtual(Class refc, MemberName method) throws IllegalAccessException { - checkMethod(refc, method, false); - MethodHandle mh = MethodHandleImpl.findMethod(method, true, lookupClassOrNull()); - return restrictProtectedReceiver(method, mh); + private MethodHandle findVirtualForMH(String name, MethodType type) { + // these names require special lookups because of the implicit MethodType argument + if ("invoke".equals(name)) + return invoker(type); + if ("invokeExact".equals(name)) + return exactInvoker(type); + return null; } /** @@ -678,36 +690,9 @@ */ public MethodHandle findConstructor(Class refc, MethodType type) throws NoSuchMethodException, IllegalAccessException { String name = ""; - MemberName ctor = resolveOrFail(refc, name, type, false, false, lookupClassOrNull()); + MemberName ctor = resolveOrFail(REF_newInvokeSpecial, refc, name, type); checkSecurityManager(refc, ctor); // stack walk magic: do not refactor - return accessConstructor(refc, ctor); - } - private MethodHandle accessConstructor(Class refc, MemberName ctor) throws IllegalAccessException { - assert(ctor.isConstructor()); - checkAccess(refc, ctor); - MethodHandle rawMH = MethodHandleImpl.findMethod(ctor, false, lookupClassOrNull()); - MethodHandle allocMH = MethodHandleImpl.makeAllocator(rawMH); - return fixVarargs(allocMH, rawMH); - } - private MethodHandle resolveConstructor(Class refc, MethodType type) throws NoSuchMethodException, IllegalAccessException { - String name = ""; - MemberName ctor = resolveOrFail(refc, name, type, false, false, lookupClassOrNull()); - return accessConstructor(refc, ctor); - } - - /** Return a version of MH which matches matchMH w.r.t. isVarargsCollector. */ - private static MethodHandle fixVarargs(MethodHandle mh, MethodHandle matchMH) { - boolean va1 = mh.isVarargsCollector(); - boolean va2 = matchMH.isVarargsCollector(); - if (va1 == va2) { - return mh; - } else if (va2) { - MethodType type = mh.type(); - int arity = type.parameterCount(); - return mh.asVarargsCollector(type.parameterType(arity-1)); - } else { - return mh.asFixedArity(); - } + return getDirectConstructor(refc, ctor); } /** @@ -747,21 +732,10 @@ public MethodHandle findSpecial(Class refc, String name, MethodType type, Class specialCaller) throws NoSuchMethodException, IllegalAccessException { checkSpecialCaller(specialCaller); - MemberName method = resolveOrFail(refc, name, type, false, false, specialCaller); + Lookup specialLookup = this.in(specialCaller); + MemberName method = specialLookup.resolveOrFail(REF_invokeSpecial, refc, name, type); checkSecurityManager(refc, method); // stack walk magic: do not refactor - return accessSpecial(refc, method, specialCaller); - } - private MethodHandle accessSpecial(Class refc, MemberName method, - Class specialCaller) throws NoSuchMethodException, IllegalAccessException { - checkMethod(refc, method, false); - MethodHandle mh = MethodHandleImpl.findMethod(method, false, specialCaller); - return restrictReceiver(method, mh, specialCaller); - } - private MethodHandle resolveSpecial(Class refc, String name, MethodType type) throws NoSuchMethodException, IllegalAccessException { - Class specialCaller = lookupClass(); - checkSpecialCaller(specialCaller); - MemberName method = resolveOrFail(refc, name, type, false, false, specialCaller); - return accessSpecial(refc, method, specialCaller); + return specialLookup.getDirectMethod(REF_invokeSpecial, refc, method); } /** @@ -782,13 +756,9 @@ * @throws NullPointerException if any argument is null */ public MethodHandle findGetter(Class refc, String name, Class type) throws NoSuchFieldException, IllegalAccessException { - MemberName field = resolveOrFail(refc, name, type, false); + MemberName field = resolveOrFail(REF_getField, refc, name, type); checkSecurityManager(refc, field); // stack walk magic: do not refactor - return makeAccessor(refc, field, false, false, 0); - } - private MethodHandle resolveGetter(Class refc, String name, Class type) throws NoSuchFieldException, IllegalAccessException { - MemberName field = resolveOrFail(refc, name, type, false); - return makeAccessor(refc, field, false, false, 0); + return getDirectField(REF_getField, refc, field); } /** @@ -809,13 +779,9 @@ * @throws NullPointerException if any argument is null */ public MethodHandle findSetter(Class refc, String name, Class type) throws NoSuchFieldException, IllegalAccessException { - MemberName field = resolveOrFail(refc, name, type, false); + MemberName field = resolveOrFail(REF_putField, refc, name, type); checkSecurityManager(refc, field); // stack walk magic: do not refactor - return makeAccessor(refc, field, false, true, 0); - } - private MethodHandle resolveSetter(Class refc, String name, Class type) throws NoSuchFieldException, IllegalAccessException { - MemberName field = resolveOrFail(refc, name, type, false); - return makeAccessor(refc, field, false, true, 0); + return getDirectField(REF_putField, refc, field); } /** @@ -835,13 +801,9 @@ * @throws NullPointerException if any argument is null */ public MethodHandle findStaticGetter(Class refc, String name, Class type) throws NoSuchFieldException, IllegalAccessException { - MemberName field = resolveOrFail(refc, name, type, true); + MemberName field = resolveOrFail(REF_getStatic, refc, name, type); checkSecurityManager(refc, field); // stack walk magic: do not refactor - return makeAccessor(refc, field, false, false, 1); - } - private MethodHandle resolveStaticGetter(Class refc, String name, Class type) throws NoSuchFieldException, IllegalAccessException { - MemberName field = resolveOrFail(refc, name, type, true); - return makeAccessor(refc, field, false, false, 1); + return getDirectField(REF_getStatic, refc, field); } /** @@ -861,13 +823,9 @@ * @throws NullPointerException if any argument is null */ public MethodHandle findStaticSetter(Class refc, String name, Class type) throws NoSuchFieldException, IllegalAccessException { - MemberName field = resolveOrFail(refc, name, type, true); + MemberName field = resolveOrFail(REF_putStatic, refc, name, type); checkSecurityManager(refc, field); // stack walk magic: do not refactor - return makeAccessor(refc, field, false, true, 1); - } - private MethodHandle resolveStaticSetter(Class refc, String name, Class type) throws NoSuchFieldException, IllegalAccessException { - MemberName field = resolveOrFail(refc, name, type, true); - return makeAccessor(refc, field, false, true, 1); + return getDirectField(REF_putStatic, refc, field); } /** @@ -918,14 +876,10 @@ */ public MethodHandle bind(Object receiver, String name, MethodType type) throws NoSuchMethodException, IllegalAccessException { Class refc = receiver.getClass(); // may get NPE - MemberName method = resolveOrFail(refc, name, type, false); + MemberName method = resolveOrFail(REF_invokeSpecial, refc, name, type); checkSecurityManager(refc, method); // stack walk magic: do not refactor - checkMethod(refc, method, false); - MethodHandle dmh = MethodHandleImpl.findMethod(method, true, lookupClassOrNull()); - MethodHandle bmh = MethodHandleImpl.bindReceiver(dmh, receiver); - if (bmh == null) - throw method.makeAccessException("no access", this); - return fixVarargs(bmh, dmh); + MethodHandle mh = getDirectMethodNoRestrict(REF_invokeSpecial, refc, method); + return mh.bindReceiver(receiver).setVarargs(method); } /** @@ -951,12 +905,12 @@ */ public MethodHandle unreflect(Method m) throws IllegalAccessException { MemberName method = new MemberName(m); + byte refKind = method.getReferenceKind(); + if (refKind == REF_invokeSpecial) + refKind = REF_invokeVirtual; assert(method.isMethod()); - if (m.isAccessible()) - return MethodHandleImpl.findMethod(method, true, /*no lookupClass*/ null); - checkMethod(method.getDeclaringClass(), method, method.isStatic()); - MethodHandle mh = MethodHandleImpl.findMethod(method, true, lookupClassOrNull()); - return restrictProtectedReceiver(method, mh); + Lookup lookup = m.isAccessible() ? IMPL_LOOKUP : this; + return lookup.getDirectMethod(refKind, method.getDeclaringClass(), method); } /** @@ -982,12 +936,11 @@ */ public MethodHandle unreflectSpecial(Method m, Class specialCaller) throws IllegalAccessException { checkSpecialCaller(specialCaller); - MemberName method = new MemberName(m); + Lookup specialLookup = this.in(specialCaller); + MemberName method = new MemberName(m, true); assert(method.isMethod()); // ignore m.isAccessible: this is a new kind of access - checkMethod(m.getDeclaringClass(), method, false); - MethodHandle mh = MethodHandleImpl.findMethod(method, false, lookupClassOrNull()); - return restrictReceiver(method, mh, specialCaller); + return specialLookup.getDirectMethod(REF_invokeSpecial, method.getDeclaringClass(), method); } /** @@ -1015,15 +968,8 @@ public MethodHandle unreflectConstructor(Constructor c) throws IllegalAccessException { MemberName ctor = new MemberName(c); assert(ctor.isConstructor()); - MethodHandle rawCtor; - if (c.isAccessible()) { - rawCtor = MethodHandleImpl.findMethod(ctor, false, /*no lookupClass*/ null); - } else { - checkAccess(c.getDeclaringClass(), ctor); - rawCtor = MethodHandleImpl.findMethod(ctor, false, lookupClassOrNull()); - } - MethodHandle allocator = MethodHandleImpl.makeAllocator(rawCtor); - return fixVarargs(allocator, rawCtor); + Lookup lookup = c.isAccessible() ? IMPL_LOOKUP : this; + return lookup.getDirectConstructor(ctor.getDeclaringClass(), ctor); } /** @@ -1041,7 +987,15 @@ * @throws NullPointerException if the argument is null */ public MethodHandle unreflectGetter(Field f) throws IllegalAccessException { - return makeAccessor(f.getDeclaringClass(), new MemberName(f), f.isAccessible(), false, -1); + return unreflectField(f, false); + } + private MethodHandle unreflectField(Field f, boolean isSetter) throws IllegalAccessException { + MemberName field = new MemberName(f, isSetter); + assert(isSetter + ? MethodHandleNatives.refKindIsSetter(field.getReferenceKind()) + : MethodHandleNatives.refKindIsGetter(field.getReferenceKind())); + Lookup lookup = f.isAccessible() ? IMPL_LOOKUP : this; + return lookup.getDirectField(field.getReferenceKind(), f.getDeclaringClass(), field); } /** @@ -1059,33 +1013,22 @@ * @throws NullPointerException if the argument is null */ public MethodHandle unreflectSetter(Field f) throws IllegalAccessException { - return makeAccessor(f.getDeclaringClass(), new MemberName(f), f.isAccessible(), true, -1); + return unreflectField(f, true); } /// Helper methods, all package-private. - MemberName resolveOrFail(Class refc, String name, Class type, boolean isStatic) throws NoSuchFieldException, IllegalAccessException { + MemberName resolveOrFail(byte refKind, Class refc, String name, Class type) throws NoSuchFieldException, IllegalAccessException { checkSymbolicClass(refc); // do this before attempting to resolve name.getClass(); type.getClass(); // NPE - int mods = (isStatic ? Modifier.STATIC : 0); - return IMPL_NAMES.resolveOrFail(new MemberName(refc, name, type, mods), true, lookupClassOrNull(), + return IMPL_NAMES.resolveOrFail(refKind, new MemberName(refc, name, type, refKind), lookupClassOrNull(), NoSuchFieldException.class); } - MemberName resolveOrFail(Class refc, String name, MethodType type, boolean isStatic) throws NoSuchMethodException, IllegalAccessException { + MemberName resolveOrFail(byte refKind, Class refc, String name, MethodType type) throws NoSuchMethodException, IllegalAccessException { checkSymbolicClass(refc); // do this before attempting to resolve name.getClass(); type.getClass(); // NPE - int mods = (isStatic ? Modifier.STATIC : 0); - return IMPL_NAMES.resolveOrFail(new MemberName(refc, name, type, mods), true, lookupClassOrNull(), - NoSuchMethodException.class); - } - - MemberName resolveOrFail(Class refc, String name, MethodType type, boolean isStatic, - boolean searchSupers, Class specialCaller) throws NoSuchMethodException, IllegalAccessException { - checkSymbolicClass(refc); // do this before attempting to resolve - name.getClass(); type.getClass(); // NPE - int mods = (isStatic ? Modifier.STATIC : 0); - return IMPL_NAMES.resolveOrFail(new MemberName(refc, name, type, mods), searchSupers, specialCaller, + return IMPL_NAMES.resolveOrFail(refKind, new MemberName(refc, name, type, refKind), lookupClassOrNull(), NoSuchMethodException.class); } @@ -1141,7 +1084,8 @@ // SecurityManager.checkMemberAccess [0] } - void checkMethod(Class refc, MemberName m, boolean wantStatic) throws IllegalAccessException { + void checkMethod(byte refKind, Class refc, MemberName m) throws IllegalAccessException { + boolean wantStatic = (refKind == REF_invokeStatic); String message; if (m.isConstructor()) message = "expected a method, not a constructor"; @@ -1150,26 +1094,43 @@ else if (wantStatic != m.isStatic()) message = wantStatic ? "expected a static method" : "expected a non-static method"; else - { checkAccess(refc, m); return; } + { checkAccess(refKind, refc, m); return; } throw m.makeAccessException(message, this); } - void checkAccess(Class refc, MemberName m) throws IllegalAccessException { + void checkField(byte refKind, Class refc, MemberName m) throws IllegalAccessException { + boolean wantStatic = !MethodHandleNatives.refKindHasReceiver(refKind); + String message; + if (wantStatic != m.isStatic()) + message = wantStatic ? "expected a static field" : "expected a non-static field"; + else + { checkAccess(refKind, refc, m); return; } + throw m.makeAccessException(message, this); + } + + void checkAccess(byte refKind, Class refc, MemberName m) throws IllegalAccessException { + assert(m.referenceKindIsConsistentWith(refKind) && + MethodHandleNatives.refKindIsValid(refKind) && + (MethodHandleNatives.refKindIsField(refKind) == m.isField())); int allowedModes = this.allowedModes; if (allowedModes == TRUSTED) return; int mods = m.getModifiers(); + if (Modifier.isFinal(mods) && + MethodHandleNatives.refKindIsSetter(refKind)) + throw m.makeAccessException("unexpected set of a final field", this); if (Modifier.isPublic(mods) && Modifier.isPublic(refc.getModifiers()) && allowedModes != 0) return; // common case int requestedModes = fixmods(mods); // adjust 0 => PACKAGE - if ((requestedModes & allowedModes) != 0 - && VerifyAccess.isMemberAccessible(refc, m.getDeclaringClass(), - mods, lookupClass(), allowedModes)) - return; - if (((requestedModes & ~allowedModes) & PROTECTED) != 0 - && (allowedModes & PACKAGE) != 0 - && VerifyAccess.isSamePackage(m.getDeclaringClass(), lookupClass())) + if ((requestedModes & allowedModes) != 0) { + if (VerifyAccess.isMemberAccessible(refc, m.getDeclaringClass(), + mods, lookupClass(), allowedModes)) + return; + } else { // Protected members can also be checked as if they were package-private. - return; + if ((requestedModes & PROTECTED) != 0 && (allowedModes & PACKAGE) != 0 + && VerifyAccess.isSamePackage(m.getDeclaringClass(), lookupClass())) + return; + } throw m.makeAccessException(accessFailedMessage(refc, m), this); } @@ -1198,7 +1159,8 @@ private static final boolean ALLOW_NESTMATE_ACCESS = false; - void checkSpecialCaller(Class specialCaller) throws IllegalAccessException { + private void checkSpecialCaller(Class specialCaller) throws IllegalAccessException { + int allowedModes = this.allowedModes; if (allowedModes == TRUSTED) return; if ((allowedModes & PRIVATE) == 0 || (specialCaller != lookupClass() @@ -1208,7 +1170,7 @@ makeAccessException("no private access for invokespecial", this); } - MethodHandle restrictProtectedReceiver(MemberName method, MethodHandle mh) throws IllegalAccessException { + private boolean restrictProtectedReceiver(MemberName method) { // The accessing class only has the right to use a protected member // on itself or a subclass. Enforce that restriction, from JVMS 5.4.4, etc. if (!method.isProtected() || method.isStatic() @@ -1217,52 +1179,82 @@ || VerifyAccess.isSamePackage(method.getDeclaringClass(), lookupClass()) || (ALLOW_NESTMATE_ACCESS && VerifyAccess.isSamePackageMember(method.getDeclaringClass(), lookupClass()))) - return mh; - else - return restrictReceiver(method, mh, lookupClass()); + return false; + return true; } - MethodHandle restrictReceiver(MemberName method, MethodHandle mh, Class caller) throws IllegalAccessException { + private MethodHandle restrictReceiver(MemberName method, MethodHandle mh, Class caller) throws IllegalAccessException { assert(!method.isStatic()); - Class defc = method.getDeclaringClass(); // receiver type of mh is too wide - if (defc.isInterface() || !defc.isAssignableFrom(caller)) { + // receiver type of mh is too wide; narrow to caller + if (!method.getDeclaringClass().isAssignableFrom(caller)) { throw method.makeAccessException("caller class must be a subclass below the method", caller); } MethodType rawType = mh.type(); if (rawType.parameterType(0) == caller) return mh; MethodType narrowType = rawType.changeParameterType(0, caller); - MethodHandle narrowMH = MethodHandleImpl.convertArguments(mh, narrowType, rawType, 0); - return fixVarargs(narrowMH, mh); + return mh.viewAsType(narrowType); } - MethodHandle makeAccessor(Class refc, MemberName field, - boolean trusted, boolean isSetter, - int checkStatic) throws IllegalAccessException { - assert(field.isField()); - if (checkStatic >= 0 && (checkStatic != 0) != field.isStatic()) - throw field.makeAccessException((checkStatic != 0) - ? "expected a static field" - : "expected a non-static field", this); - if (trusted) - return MethodHandleImpl.accessField(field, isSetter, /*no lookupClass*/ null); - checkAccess(refc, field); - MethodHandle mh = MethodHandleImpl.accessField(field, isSetter, lookupClassOrNull()); - return restrictProtectedReceiver(field, mh); + private MethodHandle getDirectMethod(byte refKind, Class refc, MemberName method) throws IllegalAccessException { + return getDirectMethodCommon(refKind, refc, method, + (refKind == REF_invokeSpecial || + (MethodHandleNatives.refKindHasReceiver(refKind) && + restrictProtectedReceiver(method)))); + } + private MethodHandle getDirectMethodNoRestrict(byte refKind, Class refc, MemberName method) throws IllegalAccessException { + return getDirectMethodCommon(refKind, refc, method, false); + } + private MethodHandle getDirectMethodCommon(byte refKind, Class refc, MemberName method, + boolean doRestrict) throws IllegalAccessException { + checkMethod(refKind, refc, method); + if (method.isMethodHandleInvoke()) + return fakeMethodHandleInvoke(method); + MethodHandle mh = DirectMethodHandle.make(refc, method); + mh = mh.setVarargs(method); + if (doRestrict) + mh = restrictReceiver(method, mh, lookupClass()); + return mh; + } + private MethodHandle fakeMethodHandleInvoke(MemberName method) { + return throwException(method.getReturnType(), UnsupportedOperationException.class); + } + private MethodHandle getDirectField(byte refKind, Class refc, MemberName field) throws IllegalAccessException { + checkField(refKind, refc, field); + MethodHandle mh = DirectMethodHandle.make(refc, field); + boolean doRestrict = (MethodHandleNatives.refKindHasReceiver(refKind) && + restrictProtectedReceiver(field)); + if (doRestrict) + mh = restrictReceiver(field, mh, lookupClass()); + return mh; + } + private MethodHandle getDirectConstructor(Class refc, MemberName ctor) throws IllegalAccessException { + assert(ctor.isConstructor()); + checkAccess(REF_newInvokeSpecial, refc, ctor); + return DirectMethodHandle.make(ctor).setVarargs(ctor); } /** Hook called from the JVM (via MethodHandleNatives) to link MH constants: */ /*non-public*/ - MethodHandle linkMethodHandleConstant(int refKind, Class defc, String name, Object type) throws ReflectiveOperationException { - switch (refKind) { - case REF_getField: return resolveGetter( defc, name, (Class) type ); - case REF_getStatic: return resolveStaticGetter( defc, name, (Class) type ); - case REF_putField: return resolveSetter( defc, name, (Class) type ); - case REF_putStatic: return resolveStaticSetter( defc, name, (Class) type ); - case REF_invokeVirtual: return resolveVirtual( defc, name, (MethodType) type ); - case REF_invokeStatic: return resolveStatic( defc, name, (MethodType) type ); - case REF_invokeSpecial: return resolveSpecial( defc, name, (MethodType) type ); - case REF_newInvokeSpecial: return resolveConstructor( defc, (MethodType) type ); - case REF_invokeInterface: return resolveVirtual( defc, name, (MethodType) type ); + MethodHandle linkMethodHandleConstant(byte refKind, Class defc, String name, Object type) throws ReflectiveOperationException { + MemberName resolved = null; + if (type instanceof MemberName) { + resolved = (MemberName) type; + if (!resolved.isResolved()) throw new InternalError("unresolved MemberName"); + assert(name == null || name.equals(resolved.getName())); + } + if (MethodHandleNatives.refKindIsField(refKind)) { + MemberName field = (resolved != null) ? resolved + : resolveOrFail(refKind, defc, name, (Class) type); + return getDirectField(refKind, defc, field); + } else if (MethodHandleNatives.refKindIsMethod(refKind)) { + MemberName method = (resolved != null) ? resolved + : resolveOrFail(refKind, defc, name, (MethodType) type); + return getDirectMethod(refKind, defc, method); + } else if (refKind == REF_newInvokeSpecial) { + assert(name == null || name.equals("")); + MemberName ctor = (resolved != null) ? resolved + : resolveOrFail(REF_newInvokeSpecial, defc, name, (MethodType) type); + return getDirectConstructor(defc, ctor); } // oops throw new ReflectiveOperationException("bad MethodHandle constant #"+refKind+" "+name+" : "+type); @@ -1281,7 +1273,7 @@ */ public static MethodHandle arrayElementGetter(Class arrayClass) throws IllegalArgumentException { - return MethodHandleImpl.accessArrayElement(arrayClass, false); + return MethodHandleImpl.makeArrayElementAccessor(arrayClass, false); } /** @@ -1295,7 +1287,7 @@ */ public static MethodHandle arrayElementSetter(Class arrayClass) throws IllegalArgumentException { - return MethodHandleImpl.accessArrayElement(arrayClass, true); + return MethodHandleImpl.makeArrayElementAccessor(arrayClass, true); } /// method handle invocation (reflective style) @@ -1422,78 +1414,12 @@ return type.invokers().generalInvoker(); } - /** - * Perform value checking, exactly as if for an adapted method handle. - * It is assumed that the given value is either null, of type T0, - * or (if T0 is primitive) of the wrapper class corresponding to T0. - * The following checks and conversions are made: - *

    - *
  • If T0 and T1 are references, then a cast to T1 is applied. - * (The types do not need to be related in any particular way.) - *
  • If T0 and T1 are primitives, then a widening or narrowing - * conversion is applied, if one exists. - *
  • If T0 is a primitive and T1 a reference, and - * T0 has a wrapper class TW, a boxing conversion to TW is applied, - * possibly followed by a reference conversion. - * T1 must be TW or a supertype. - *
  • If T0 is a reference and T1 a primitive, and - * T1 has a wrapper class TW, an unboxing conversion is applied, - * possibly preceded by a reference conversion. - * T0 must be TW or a supertype. - *
  • If T1 is void, the return value is discarded - *
  • If T0 is void and T1 a reference, a null value is introduced. - *
  • If T0 is void and T1 a primitive, a zero value is introduced. - *
- * If the value is discarded, null will be returned. - * @param valueType - * @param value - * @return the value, converted if necessary - * @throws java.lang.ClassCastException if a cast fails - */ - // FIXME: This is used in just one place. Refactor away. - static - T1 checkValue(Class t0, Class t1, Object value) - throws ClassCastException - { - if (t0 == t1) { - // no conversion needed; just reassert the same type - if (t0.isPrimitive()) - return Wrapper.asPrimitiveType(t1).cast(value); - else - return Wrapper.OBJECT.convert(value, t1); - } - boolean prim0 = t0.isPrimitive(), prim1 = t1.isPrimitive(); - if (!prim0) { - // check contract with caller - Wrapper.OBJECT.convert(value, t0); - if (!prim1) { - return Wrapper.OBJECT.convert(value, t1); - } - // convert reference to primitive by unboxing - Wrapper w1 = Wrapper.forPrimitiveType(t1); - return w1.convert(value, t1); - } - // check contract with caller: - Wrapper.asWrapperType(t0).cast(value); - Wrapper w1 = Wrapper.forPrimitiveType(t1); - return w1.convert(value, t1); + static /*non-public*/ + MethodHandle basicInvoker(MethodType type) { + return type.form().basicInvoker(); } - // FIXME: Delete this. It is used only for insertArguments & bindTo. - // Replace by a more standard check. - static - Object checkValue(Class T1, Object value) - throws ClassCastException - { - Class T0; - if (value == null) - T0 = Object.class; - else - T0 = value.getClass(); - return checkValue(T0, T1, value); - } - - /// method handle modification (creation from other method handles) + /// method handle modification (creation from other method handles) /** * Produces a method handle which adapts the type of the @@ -1541,7 +1467,10 @@ */ public static MethodHandle explicitCastArguments(MethodHandle target, MethodType newType) { - return MethodHandleImpl.convertArguments(target, newType, 2); + if (!target.type().isCastableTo(newType)) { + throw new WrongMethodTypeException("cannot explicitly cast "+target+" to "+newType); + } + return MethodHandleImpl.makePairwiseConvert(target, newType, 2); } /** @@ -1605,11 +1534,8 @@ */ public static MethodHandle permuteArguments(MethodHandle target, MethodType newType, int... reorder) { - MethodType oldType = target.type(); - checkReorder(reorder, newType, oldType); - return MethodHandleImpl.permuteArguments(target, - newType, oldType, - reorder); + checkReorder(reorder, newType, target.type()); + return target.permuteArguments(newType, reorder); } private static void checkReorder(int[] reorder, MethodType newType, MethodType oldType) { @@ -1678,8 +1604,7 @@ else if (type.isPrimitive()) return ValueConversions.identity(Wrapper.forPrimitiveType(type)); else - return AdapterMethodHandle.makeRetypeRaw( - MethodType.methodType(type, type), ValueConversions.identity()); + return MethodHandleImpl.makeReferenceIdentity(type); } /** @@ -1725,18 +1650,26 @@ MethodHandle result = target; for (int i = 0; i < insCount; i++) { Object value = values[i]; - Class valueType = oldType.parameterType(pos+i); - value = checkValue(valueType, value); - if (pos == 0 && !valueType.isPrimitive()) { - // At least for now, make bound method handles a special case. - MethodHandle bmh = MethodHandleImpl.bindReceiver(result, value); - if (bmh != null) { - result = bmh; - continue; + Class ptype = oldType.parameterType(pos+i); + if (ptype.isPrimitive()) { + char btype = 'I'; + Wrapper w = Wrapper.forPrimitiveType(ptype); + switch (w) { + case LONG: btype = 'J'; break; + case FLOAT: btype = 'F'; break; + case DOUBLE: btype = 'D'; break; } - // else fall through to general adapter machinery + // perform unboxing and/or primitive conversion + value = w.convert(value, ptype); + result = result.bindArgument(pos, btype, value); + continue; } - result = MethodHandleImpl.bindArgument(result, pos, value); + value = ptype.cast(value); // throw CCE if needed + if (pos == 0) { + result = result.bindReceiver(value); + } else { + result = result.bindArgument(pos, 'L', value); + } } return result; } @@ -1786,16 +1719,17 @@ public static MethodHandle dropArguments(MethodHandle target, int pos, List> valueTypes) { MethodType oldType = target.type(); // get NPE - if (valueTypes.size() == 0) return target; + int dropped = valueTypes.size(); + MethodType.checkSlotCount(dropped); + if (dropped == 0) return target; int outargs = oldType.parameterCount(); - int inargs = outargs + valueTypes.size(); + int inargs = outargs + dropped; if (pos < 0 || pos >= inargs) throw newIllegalArgumentException("no argument type to remove"); - ArrayList> ptypes = - new ArrayList>(oldType.parameterList()); + ArrayList> ptypes = new ArrayList<>(oldType.parameterList()); ptypes.addAll(pos, valueTypes); MethodType newType = MethodType.methodType(oldType.returnType(), ptypes); - return MethodHandleImpl.dropArguments(target, newType, pos); + return target.dropArguments(newType, pos, dropped); } /** @@ -1939,7 +1873,7 @@ if (filterType.parameterCount() != 1 || filterType.returnType() != targetType.parameterType(pos)) throw newIllegalArgumentException("target and filter types do not match", targetType, filterType); - return MethodHandleImpl.filterArgument(target, pos, filter); + return MethodHandleImpl.makeCollectArguments(target, filter, pos, false); } /** @@ -2011,10 +1945,7 @@ throw newIllegalArgumentException("target and filter types do not match", target, filter); // result = fold( lambda(retval, arg...) { filter(retval) }, // lambda( arg...) { target(arg...) } ) - MethodType newType = targetType.changeReturnType(filterType.returnType()); - MethodHandle result = null; - assert(AdapterMethodHandle.canCollectArguments(filterType, targetType, 0, false)); - return AdapterMethodHandle.makeCollectArguments(filter, target, 0, false); + return MethodHandleImpl.makeCollectArguments(filter, target, 0, false); } /** @@ -2112,9 +2043,7 @@ if (!ok) throw misMatchedTypes("target and combiner types", targetType, combinerType); MethodType newType = targetType.dropParameterTypes(foldPos, afterInsertPos); - MethodHandle res = MethodHandleImpl.foldArguments(target, newType, foldPos, combiner); - if (res == null) throw newIllegalArgumentException("cannot fold from "+newType+" to " +targetType); - return res; + return MethodHandleImpl.makeCollectArguments(target, combiner, foldPos, true); } /** @@ -2255,6 +2184,8 @@ */ public static MethodHandle throwException(Class returnType, Class exType) { + if (!Throwable.class.isAssignableFrom(exType)) + throw new ClassCastException(exType.getName()); return MethodHandleImpl.throwException(MethodType.methodType(returnType, exType)); } } diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/MethodType.java --- a/src/share/classes/java/lang/invoke/MethodType.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/invoke/MethodType.java Fri Aug 24 09:29:17 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,12 +26,14 @@ package java.lang.invoke; import sun.invoke.util.Wrapper; +import java.lang.ref.WeakReference; +import java.lang.ref.ReferenceQueue; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.List; import sun.invoke.util.BytecodeDescriptor; import static java.lang.invoke.MethodHandleStatics.*; +import sun.invoke.util.VerifyType; /** * A method type represents the arguments and return type accepted and @@ -107,6 +109,8 @@ /*trusted*/ Class rtype() { return rtype; } /*trusted*/ Class[] ptypes() { return ptypes; } + void setForm(MethodTypeForm f) { form = f; } + private static void checkRtype(Class rtype) { rtype.equals(rtype); // null check } @@ -126,7 +130,7 @@ checkSlotCount(ptypes.length + slots); return slots; } - private static void checkSlotCount(int count) { + static void checkSlotCount(int count) { if ((count & 0xFF) != count) throw newIllegalArgumentException("bad parameter count "+count); } @@ -135,8 +139,7 @@ return new IndexOutOfBoundsException(num.toString()); } - static final HashMap internTable - = new HashMap(); + static final WeakInternSet internTable = new WeakInternSet(); static final Class[] NO_PTYPES = {}; @@ -238,31 +241,17 @@ ptypes = NO_PTYPES; trusted = true; } MethodType mt1 = new MethodType(rtype, ptypes); - MethodType mt0; - synchronized (internTable) { - mt0 = internTable.get(mt1); - if (mt0 != null) - return mt0; - } + MethodType mt0 = internTable.get(mt1); + if (mt0 != null) + return mt0; if (!trusted) // defensively copy the array passed in by the user mt1 = new MethodType(rtype, ptypes.clone()); // promote the object to the Real Thing, and reprobe MethodTypeForm form = MethodTypeForm.findForm(mt1); mt1.form = form; - if (form.erasedType == mt1) { - // This is a principal (erased) type; show it to the JVM. - MethodHandleNatives.init(mt1); - } - synchronized (internTable) { - mt0 = internTable.get(mt1); - if (mt0 != null) - return mt0; - internTable.put(mt1, mt1); - } - return mt1; + return internTable.add(mt1); } - private static final MethodType[] objectOnlyTypes = new MethodType[20]; /** @@ -394,6 +383,32 @@ return insertParameterTypes(parameterCount(), ptypesToInsert); } + /** + * Finds or creates a method type with modified parameter types. + * Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[]) methodType}. + * @param start the position (zero-based) of the first replaced parameter type(s) + * @param end the position (zero-based) after the last replaced parameter type(s) + * @param ptypesToInsert zero or more new parameter types to insert into the parameter list + * @return the same type, except with the selected parameter(s) replaced + * @throws IndexOutOfBoundsException if {@code start} is negative or greater than {@code parameterCount()} + * or if {@code end} is negative or greater than {@code parameterCount()} + * or if {@code start} is greater than {@code end} + * @throws IllegalArgumentException if any element of {@code ptypesToInsert} is {@code void.class} + * or if the resulting method type would have more than 255 parameter slots + * @throws NullPointerException if {@code ptypesToInsert} or any of its elements is null + */ + /*non-public*/ MethodType replaceParameterTypes(int start, int end, Class... ptypesToInsert) { + if (start == end) + return insertParameterTypes(start, ptypesToInsert); + int len = ptypes.length; + if (!(0 <= start && start <= end && end <= len)) + throw newIndexOutOfBoundsException("start="+start+" end="+end); + int ilen = ptypesToInsert.length; + if (ilen == 0) + return dropParameterTypes(start, end); + return dropParameterTypes(start, end).insertParameterTypes(start, ptypesToInsert); + } + /** * Finds or creates a method type with some parameter types omitted. * Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[]) methodType}. @@ -474,6 +489,23 @@ } /** + * Erases all reference types to {@code Object}, and all subword types to {@code int}. + * This is the reduced type polymorphism used by private methods + * such as {@link MethodHandle#invokeBasic invokeBasic}. + * @return a version of the original type with all reference and subword types replaced + */ + /*non-public*/ MethodType basicType() { + return form.basicType(); + } + + /** + * @return a version of the original type with MethodHandle prepended as the first argument + */ + /*non-public*/ MethodType invokerType() { + return insertParameterTypes(0, MethodHandle.class); + } + + /** * Converts all types, both reference and primitive, to {@code Object}. * Convenience method for {@link #genericMethodType(int) genericMethodType}. * The expression {@code type.wrap().erase()} produces the same value @@ -567,6 +599,11 @@ return Collections.unmodifiableList(Arrays.asList(ptypes)); } + /*non-public*/ Class lastParameterType() { + int len = ptypes.length; + return len == 0 ? void.class : ptypes[len-1]; + } + /** * Presents the parameter types as an array (a convenience method). * Changes to the array will not result in changes to the type. @@ -636,6 +673,26 @@ /*non-public*/ + boolean isViewableAs(MethodType newType) { + if (!VerifyType.isNullConversion(returnType(), newType.returnType())) + return false; + int argc = parameterCount(); + if (argc != newType.parameterCount()) + return false; + for (int i = 0; i < argc; i++) { + if (!VerifyType.isNullConversion(newType.parameterType(i), parameterType(i))) + return false; + } + return true; + } + /*non-public*/ + boolean isCastableTo(MethodType newType) { + int argc = parameterCount(); + if (argc != newType.parameterCount()) + return false; + return true; + } + /*non-public*/ boolean isConvertibleTo(MethodType newType) { if (!canConvert(returnType(), newType.returnType())) return false; @@ -818,6 +875,10 @@ return BytecodeDescriptor.unparse(this); } + /*non-public*/ static String toFieldDescriptorString(Class cls) { + return BytecodeDescriptor.unparse(cls); + } + /// Serialization. /** @@ -890,18 +951,17 @@ // store them into the implementation-specific final fields. checkRtype(rtype); checkPtypes(ptypes); - unsafe.putObject(this, rtypeOffset, rtype); - unsafe.putObject(this, ptypesOffset, ptypes); + UNSAFE.putObject(this, rtypeOffset, rtype); + UNSAFE.putObject(this, ptypesOffset, ptypes); } // Support for resetting final fields while deserializing - private static final sun.misc.Unsafe unsafe = sun.misc.Unsafe.getUnsafe(); private static final long rtypeOffset, ptypesOffset; static { try { - rtypeOffset = unsafe.objectFieldOffset + rtypeOffset = UNSAFE.objectFieldOffset (MethodType.class.getDeclaredField("rtype")); - ptypesOffset = unsafe.objectFieldOffset + ptypesOffset = UNSAFE.objectFieldOffset (MethodType.class.getDeclaredField("ptypes")); } catch (Exception ex) { throw new Error(ex); @@ -919,4 +979,269 @@ // Verify all operands, and make sure ptypes is unshared: return methodType(rtype, ptypes); } + + /** + * Weak intern set based on implementation of the HashSet and + * WeakHashMap, with weak values. Note: null + * values will yield NullPointerException + * Refer to implementation of WeakInternSet for details. + * + * @see java.util.HashMap + * @see java.util.HashSet + * @see java.util.WeakHashMap + * @see java.lang.ref.WeakReference + */ + private static class WeakInternSet { + // The default initial capacity -- MUST be a power of two. + private static final int DEFAULT_INITIAL_CAPACITY = 16; + + // The maximum capacity, used if a higher value is implicitly specified + // by either of the constructors with arguments. + // MUST be a power of two <= 1<<30. + private static final int MAXIMUM_CAPACITY = 1 << 30; + + // The load factor used when none specified in constructor. + private static final float DEFAULT_LOAD_FACTOR = 0.75f; + + // The table, resized as necessary. Length MUST Always be a power of two. + private Entry[] table; + + // The number of entries contained in this set. + private int size; + + // The next size value at which to resize (capacity * load factor). + private int threshold; + + // The load factor for the hash table. + private final float loadFactor; + + // Reference queue for cleared WeakEntries + private final ReferenceQueue queue = new ReferenceQueue<>(); + + private Entry[] newTable(int n) { + return new Entry[n]; + } + + /** + * Constructs a new, empty WeakInternSet with the default initial + * capacity (16) and load factor (0.75). + */ + WeakInternSet() { + this.loadFactor = DEFAULT_LOAD_FACTOR; + threshold = DEFAULT_INITIAL_CAPACITY; + table = newTable(DEFAULT_INITIAL_CAPACITY); + } + + /** + * Applies a supplemental hash function to a given hashCode, which + * defends against poor quality hash functions. This is critical + * because hashing uses power-of-two length hash tables, that + * otherwise encounter collisions for hashCodes that do not differ + * in lower bits. + * @param h preliminary hash code value + * @return supplemental hash code value + */ + private static int hash(int h) { + // This function ensures that hashCodes that differ only by + // constant multiples at each bit position have a bounded + // number of collisions (approximately 8 at default load factor). + h ^= (h >>> 20) ^ (h >>> 12); + return h ^ (h >>> 7) ^ (h >>> 4); + } + + /** + * Checks for equality of non-null reference x and possibly-null y. By + * default uses Object.equals. + * @param x first object to compare + * @param y second object to compare + * @return true if objects are equal + */ + private static boolean eq(Object x, Object y) { + return x == y || x.equals(y); + } + + /** + * Returns index for hash code h. + * @param h raw hash code + * @param length length of table (power of 2) + * @return index in table + */ + private static int indexFor(int h, int length) { + return h & (length-1); + } + + /** + * Expunges stale entries from the table. + */ + private void expungeStaleEntries() { + for (Object x; (x = queue.poll()) != null; ) { + synchronized (queue) { + Entry entry = (Entry) x; + int i = indexFor(entry.hash, table.length); + Entry prev = table[i]; + Entry p = prev; + while (p != null) { + Entry next = p.next; + if (p == entry) { + if (prev == entry) + table[i] = next; + else + prev.next = next; + entry.next = null; + size--; + break; + } + prev = p; + p = next; + } + } + } + } + + /** + * Returns the table after first expunging stale entries. + * @return an expunged hash table + */ + private Entry[] getTable() { + expungeStaleEntries(); + return table; + } + + /** + * Returns the entry to which the specified value is mapped, + * or {@code null} if this set contains no entry for the value. + * + *

More formally, if this set contains an entry for value + * {@code entry} to a value {@code value} such that + * {@code entry.equals(value)}, then this method returns {@code entry}; + * otherwise it returns {@code null}. + * + * @param value value to search for in set + * @return interned value if in set, otherwise null + */ + synchronized MethodType get(MethodType value) { + int h = hash(value.hashCode()); + Entry[] tab = getTable(); + int index = indexFor(h, tab.length); + Entry e = tab[index]; + MethodType g; + while (e != null) { + if (e.hash == h && eq(value, g = e.get())) + return g; + e = e.next; + } + return null; + } + + /** + * Attempts to add the specified value to the set and returns same value. + * If the set previously contained an entry for this value, the old + * value is left untouched and returned as the result. + * + * @param value value to be added + * @return the previous entry associated with value, or + * value if there was no previous entry found + */ + synchronized MethodType add(MethodType value) { + int h = hash(value.hashCode()); + Entry[] tab = getTable(); + int i = indexFor(h, tab.length); + MethodType g; + for (Entry e = tab[i]; e != null; e = e.next) { + if (h == e.hash && eq(value, g = e.get())) { + return g; + } + } + Entry e = tab[i]; + tab[i] = new Entry(value, queue, h, e); + if (++size >= threshold) + resize(tab.length * 2); + return value; + } + + /** + * Rehashes the contents of this set into a new array with a + * larger capacity. This method is called automatically when the + * number of keys in this set reaches its threshold. + * + * If current capacity is MAXIMUM_CAPACITY, this method does not + * resize the set, but sets threshold to Integer.MAX_VALUE. + * This has the effect of preventing future calls. + * + * @param newCapacity the new capacity, MUST be a power of two; + * must be greater than current capacity unless current + * capacity is MAXIMUM_CAPACITY (in which case value + * is irrelevant) + */ + private void resize(int newCapacity) { + Entry[] oldTable = getTable(); + int oldCapacity = oldTable.length; + if (oldCapacity == MAXIMUM_CAPACITY) { + threshold = Integer.MAX_VALUE; + return; + } + + Entry[] newTable = newTable(newCapacity); + transfer(oldTable, newTable); + table = newTable; + + /* + * If ignoring null elements and processing ref queue caused massive + * shrinkage, then restore old table. This should be rare, but avoids + * unbounded expansion of garbage-filled tables. + */ + if (size >= threshold / 2) { + threshold = (int)(newCapacity * loadFactor); + } else { + expungeStaleEntries(); + transfer(newTable, oldTable); + table = oldTable; + } + } + + /** + * Transfers all entries from src to dest tables + * @param src original table + * @param dest new table + */ + private void transfer(Entry[] src, Entry[] dest) { + for (int j = 0; j < src.length; ++j) { + Entry e = src[j]; + src[j] = null; + while (e != null) { + Entry next = e.next; + MethodType key = e.get(); + if (key == null) { + e.next = null; // Help GC + size--; + } else { + int i = indexFor(e.hash, dest.length); + e.next = dest[i]; + dest[i] = e; + } + e = next; + } + } + } + + /** + * The entries in this hash table extend WeakReference, using its main ref + * field as the key. + */ + private static class Entry extends WeakReference { + final int hash; + Entry next; + + /** + * Creates new entry. + */ + Entry(MethodType key, + ReferenceQueue queue, + int hash, Entry next) { + super(key, queue); + this.hash = hash; + this.next = next; + } + } + } } diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/MethodTypeForm.java --- a/src/share/classes/java/lang/invoke/MethodTypeForm.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/invoke/MethodTypeForm.java Fri Aug 24 09:29:17 2012 +0100 @@ -27,6 +27,7 @@ import sun.invoke.util.Wrapper; import static java.lang.invoke.MethodHandleStatics.*; +import static java.lang.invoke.MethodHandleNatives.Constants.*; /** * Shared information for a group of method types, which differ @@ -41,27 +42,70 @@ * No more than half of these are likely to be loaded at once. * @author John Rose */ -class MethodTypeForm { +final class MethodTypeForm { final int[] argToSlotTable, slotToArgTable; final long argCounts; // packed slot & value counts final long primCounts; // packed prim & double counts final int vmslots; // total number of parameter slots - private Object vmlayout; // vm-specific information for calls final MethodType erasedType; // the canonical erasure - - /*lazy*/ MethodType primsAsBoxes; // replace prims by wrappers - /*lazy*/ MethodType primArgsAsBoxes; // wrap args only; make raw return - /*lazy*/ MethodType primsAsInts; // replace prims by int/long - /*lazy*/ MethodType primsAsLongs; // replace prims by long - /*lazy*/ MethodType primsAtEnd; // reorder primitives to the end + final MethodType basicType; // the canonical erasure, with primitives simplified // Cached adapter information: - /*lazy*/ MethodHandle genericInvoker; // hook for inexact invoke + /*lazy*/ MethodHandle genericInvoker; // JVM hook for inexact invoke + /*lazy*/ MethodHandle basicInvoker; // cached instance of MH.invokeBasic + /*lazy*/ MethodHandle namedFunctionInvoker; // cached helper for LF.NamedFunction + + // Cached lambda form information, for basic types only: + final LambdaForm[] lambdaForms; + // Indexes into lambdaForms: + static final int + LF_INVVIRTUAL = 0, // DMH invokeVirtual + LF_INVSTATIC = 1, + LF_INVSPECIAL = 2, + LF_NEWINVSPECIAL = 3, + LF_INVINTERFACE = 4, + LF_INVSTATIC_INIT = 5, // DMH invokeStatic with barrier + LF_INTERPRET = 6, // LF interpreter + LF_COUNTER = 7, // CMH wrapper + LF_REINVOKE = 8, // other wrapper + LF_EX_LINKER = 9, // invokeExact_MT + LF_EX_INVOKER = 10, // invokeExact MH + LF_GEN_LINKER = 11, + LF_GEN_INVOKER = 12, + LF_CS_LINKER = 13, // linkToCallSite_CS + LF_LIMIT = 14; public MethodType erasedType() { return erasedType; } + public MethodType basicType() { + return basicType; + } + + public LambdaForm cachedLambdaForm(int which) { + return lambdaForms[which]; + } + + public LambdaForm setCachedLambdaForm(int which, LambdaForm form) { + // Should we perform some sort of CAS, to avoid racy duplication? + return lambdaForms[which] = form; + } + + public MethodHandle basicInvoker() { + assert(erasedType == basicType) : "erasedType: " + erasedType + " != basicType: " + basicType; // primitives must be flattened also + MethodHandle invoker = basicInvoker; + if (invoker != null) return invoker; + invoker = basicType.invokers().makeBasicInvoker(); + basicInvoker = invoker; + return invoker; + } + + /** + * Build an MTF for a given type, which must have all references erased to Object. + * This MTF will stand for that type and all un-erased variations. + * Eagerly compute some basic properties of the type, common to all variations. + */ protected MethodTypeForm(MethodType erasedType) { this.erasedType = erasedType; @@ -75,26 +119,41 @@ // Walk the argument types, looking for primitives. int pac = 0, lac = 0, prc = 0, lrc = 0; - Class epts[] = ptypes; + Class[] epts = ptypes; + Class[] bpts = epts; for (int i = 0; i < epts.length; i++) { Class pt = epts[i]; if (pt != Object.class) { - assert(pt.isPrimitive()); ++pac; - if (hasTwoArgSlots(pt)) ++lac; + Wrapper w = Wrapper.forPrimitiveType(pt); + if (w.isDoubleWord()) ++lac; + if (w.isSubwordOrInt() && pt != int.class) { + if (bpts == epts) + bpts = bpts.clone(); + bpts[i] = int.class; + } } } pslotCount += lac; // #slots = #args + #longs Class rt = erasedType.returnType(); + Class bt = rt; if (rt != Object.class) { ++prc; // even void.class counts as a prim here - if (hasTwoArgSlots(rt)) ++lrc; + Wrapper w = Wrapper.forPrimitiveType(rt); + if (w.isDoubleWord()) ++lrc; + if (w.isSubwordOrInt() && rt != int.class) + bt = int.class; // adjust #slots, #args if (rt == void.class) rtypeCount = rslotCount = 0; else rslotCount += lrc; } + if (epts == bpts && bt == rt) { + this.basicType = erasedType; + } else { + this.basicType = MethodType.makeImpl(bt, bpts, true); + } if (lac != 0) { int slot = ptypeCount + lac; slotToArgTab = new int[slot+1]; @@ -102,7 +161,8 @@ argToSlotTab[0] = slot; // argument "-1" is past end of slots for (int i = 0; i < epts.length; i++) { Class pt = epts[i]; - if (hasTwoArgSlots(pt)) --slot; + Wrapper w = Wrapper.forBasicType(pt); + if (w.isDoubleWord()) --slot; --slot; slotToArgTab[slot] = i+1; // "+1" see argSlotToParameter note argToSlotTab[1+i] = slot; @@ -130,164 +190,13 @@ // send a few bits down to the JVM: this.vmslots = parameterSlotCount(); - // short circuit some no-op canonicalizations: - if (!hasPrimitives()) { - primsAsBoxes = erasedType; - primArgsAsBoxes = erasedType; - primsAsInts = erasedType; - primsAsLongs = erasedType; - primsAtEnd = erasedType; + if (basicType == erasedType) { + lambdaForms = new LambdaForm[LF_LIMIT]; + } else { + lambdaForms = null; // could be basicType.form().lambdaForms; } } - /** Turn all primitive types to corresponding wrapper types. - */ - public MethodType primsAsBoxes() { - MethodType ct = primsAsBoxes; - if (ct != null) return ct; - MethodType t = erasedType; - ct = canonicalize(erasedType, WRAP, WRAP); - if (ct == null) ct = t; // no prims to box - return primsAsBoxes = ct; - } - - /** Turn all primitive argument types to corresponding wrapper types. - * Subword and void return types are promoted to int. - */ - public MethodType primArgsAsBoxes() { - MethodType ct = primArgsAsBoxes; - if (ct != null) return ct; - MethodType t = erasedType; - ct = canonicalize(erasedType, RAW_RETURN, WRAP); - if (ct == null) ct = t; // no prims to box - return primArgsAsBoxes = ct; - } - - /** Turn all primitive types to either int or long. - * Floating point return types are not changed, because - * they may require special calling sequences. - * A void return value is turned to int. - */ - public MethodType primsAsInts() { - MethodType ct = primsAsInts; - if (ct != null) return ct; - MethodType t = erasedType; - ct = canonicalize(t, RAW_RETURN, INTS); - if (ct == null) ct = t; // no prims to int-ify - return primsAsInts = ct; - } - - /** Turn all primitive types to either int or long. - * Floating point return types are not changed, because - * they may require special calling sequences. - * A void return value is turned to int. - */ - public MethodType primsAsLongs() { - MethodType ct = primsAsLongs; - if (ct != null) return ct; - MethodType t = erasedType; - ct = canonicalize(t, RAW_RETURN, LONGS); - if (ct == null) ct = t; // no prims to int-ify - return primsAsLongs = ct; - } - - /** Stably sort parameters into 3 buckets: ref, int, long. */ - public MethodType primsAtEnd() { - MethodType ct = primsAtEnd; - if (ct != null) return ct; - MethodType t = erasedType; - - int pac = primitiveParameterCount(); - if (pac == 0) - return primsAtEnd = t; - - int argc = parameterCount(); - int lac = longPrimitiveParameterCount(); - if (pac == argc && (lac == 0 || lac == argc)) - return primsAtEnd = t; - - // known to have a mix of 2 or 3 of ref, int, long - int[] reorder = primsAtEndOrder(t); - ct = reorderParameters(t, reorder, null); - //System.out.println("t="+t+" / reorder="+java.util.Arrays.toString(reorder)+" => "+ct); - return primsAtEnd = ct; - } - - /** Compute a new ordering of parameters so that all references - * are before all ints or longs, and all ints are before all longs. - * For this ordering, doubles count as longs, and all other primitive - * values count as ints. - * As a special case, if the parameters are already in the specified - * order, this method returns a null reference, rather than an array - * specifying a null permutation. - *

- * For example, the type {@code (int,boolean,int,Object,String)void} - * produces the order {@code {3,4,0,1,2}}, the type - * {@code (long,int,String)void} produces {@code {2,1,2}}, and - * the type {@code (Object,int)Object} produces {@code null}. - */ - public static int[] primsAtEndOrder(MethodType mt) { - MethodTypeForm form = mt.form(); - if (form.primsAtEnd == form.erasedType) - // quick check shows no reordering is necessary - return null; - - int argc = form.parameterCount(); - int[] paramOrder = new int[argc]; - - // 3-way bucket sort: - int pac = form.primitiveParameterCount(); - int lac = form.longPrimitiveParameterCount(); - int rfill = 0, ifill = argc - pac, lfill = argc - lac; - - Class[] ptypes = mt.ptypes(); - boolean changed = false; - for (int i = 0; i < ptypes.length; i++) { - Class pt = ptypes[i]; - int ord; - if (!pt.isPrimitive()) ord = rfill++; - else if (!hasTwoArgSlots(pt)) ord = ifill++; - else ord = lfill++; - if (ord != i) changed = true; - assert(paramOrder[ord] == 0); - paramOrder[ord] = i; - } - assert(rfill == argc - pac && ifill == argc - lac && lfill == argc); - if (!changed) { - form.primsAtEnd = form.erasedType; - return null; - } - return paramOrder; - } - - /** Put the existing parameters of mt into a new order, given by newParamOrder. - * The third argument is logically appended to mt.parameterArray, - * so that elements of newParamOrder can index either pre-existing or - * new parameter types. - */ - public static MethodType reorderParameters(MethodType mt, int[] newParamOrder, Class[] moreParams) { - if (newParamOrder == null) return mt; // no-op reordering - Class[] ptypes = mt.ptypes(); - Class[] ntypes = new Class[newParamOrder.length]; - int maxParam = ptypes.length + (moreParams == null ? 0 : moreParams.length); - boolean changed = (ntypes.length != ptypes.length); - for (int i = 0; i < newParamOrder.length; i++) { - int param = newParamOrder[i]; - if (param != i) changed = true; - Class nt; - if (param < ptypes.length) nt = ptypes[param]; - else if (param == maxParam) nt = mt.returnType(); - else nt = moreParams[param - ptypes.length]; - ntypes[i] = nt; - } - if (!changed) return mt; - return MethodType.makeImpl(mt.returnType(), ntypes, true); - } - - private static boolean hasTwoArgSlots(Class type) { - return type == long.class || type == double.class; - } - private static long pack(int a, int b, int c, int d) { assert(((a|b|c|d) & ~0xFFFF) == 0); long hw = ((a << 16) | b), lw = ((c << 16) | d); @@ -325,11 +234,11 @@ public boolean hasPrimitives() { return primCounts != 0; } -// public boolean hasNonVoidPrimitives() { -// if (primCounts == 0) return false; -// if (primitiveParameterCount() != 0) return true; -// return (primitiveReturnCount() != 0 && returnCount() != 0); -// } + public boolean hasNonVoidPrimitives() { + if (primCounts == 0) return false; + if (primitiveParameterCount() != 0) return true; + return (primitiveReturnCount() != 0 && returnCount() != 0); + } public boolean hasLongPrimitives() { return (longPrimitiveParameterCount() | longPrimitiveReturnCount()) != 0; } @@ -455,18 +364,6 @@ return cs; } - /*non-public*/ void notifyGenericMethodType() { - if (genericInvoker != null) return; - try { - // Trigger adapter creation. - genericInvoker = InvokeGeneric.generalInvokerOf(erasedType); - } catch (Exception ex) { - Error err = new InternalError("Exception while resolving inexact invoke", ex); - err.initCause(ex); - throw err; - } - } - @Override public String toString() { return "Form"+erasedType; diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/SimpleMethodHandle.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/classes/java/lang/invoke/SimpleMethodHandle.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package java.lang.invoke; + +import static java.lang.invoke.LambdaForm.*; +import static java.lang.invoke.MethodHandleNatives.Constants.*; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * A method handle whose behavior is determined only by its LambdaForm. + * @author jrose + */ +final class SimpleMethodHandle extends MethodHandle { + SimpleMethodHandle(MethodType type, LambdaForm form) { + super(type, form); + } + + @Override + MethodHandle bindArgument(int pos, char basicType, Object value) { + MethodType type2 = type().dropParameterTypes(pos, pos+1); + LambdaForm form2 = internalForm().bind(1+pos, BoundMethodHandle.SpeciesData.EMPTY); + return BoundMethodHandle.bindSingle(type2, form2, basicType, value); + } + + @Override + MethodHandle dropArguments(MethodType srcType, int pos, int drops) { + LambdaForm newForm = internalForm().addArguments(pos, srcType.parameterList().subList(pos, pos+drops)); + return new SimpleMethodHandle(srcType, newForm); + } + + @Override + MethodHandle permuteArguments(MethodType newType, int[] reorder) { + LambdaForm form2 = internalForm().permuteArguments(1, reorder, basicTypes(newType.parameterList())); + return new SimpleMethodHandle(newType, form2); + } + + @Override + MethodHandle copyWith(MethodType mt, LambdaForm lf) { + return new SimpleMethodHandle(mt, lf); + } + +} diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/lang/invoke/package-info.java --- a/src/share/classes/java/lang/invoke/package-info.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/lang/invoke/package-info.java Fri Aug 24 09:29:17 2012 +0100 @@ -191,6 +191,13 @@ * (If a string constant were passed instead, by badly generated code, that cast would then fail, * resulting in a {@code BootstrapMethodError}.) *

+ * Note that, as a consequence of the above rules, the bootstrap method may accept a primitive + * argument, if it can be represented by a constant pool entry. + * However, arguments of type {@code boolean}, {@code byte}, {@code short}, or {@code char} + * cannot be created for bootstrap methods, since such constants cannot be directly + * represented in the constant pool, and the invocation of the bootstrap method will + * not perform the necessary narrowing primitive conversions. + *

* Extra bootstrap method arguments are intended to allow language implementors * to safely and compactly encode metadata. * In principle, the name and extra arguments are redundant, diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/net/NetworkInterface.java --- a/src/share/classes/java/net/NetworkInterface.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/net/NetworkInterface.java Fri Aug 24 09:29:17 2012 +0100 @@ -326,8 +326,10 @@ } /** - * Returns all the interfaces on this machine. Returns null if no - * network interfaces could be found on this machine. + * Returns all the interfaces on this machine. The {@code Enumeration} + * contains at least one element, possibly representing a loopback + * interface that only supports communication between entities on + * this machine. * * NOTE: can use getNetworkInterfaces()+getInetAddresses() * to obtain all IP addresses for this node diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/net/package.html --- a/src/share/classes/java/net/package.html Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/net/package.html Fri Aug 24 09:29:17 2012 +0100 @@ -65,6 +65,7 @@

Sending and receiving with TCP sockets is done through InputStreams and OutputStreams which can be obtained via the {@link java.net.Socket#getInputStream} and {@link java.net.Socket#getOutputStream} methods.

Interfaces

The {@link java.net.NetworkInterface} class provides APIs to browse and query all the networking interfaces (e.g. ethernet connection or PPP endpoint) of the local machine. It is through that class that you can check if any of the local interfaces is configured to support IPv6.

+

Note, all conforming implementations must support at least one {@code NetworkInterface} object, which must either be connected to a network, or be a "loopback" interface that can only communicate with entities on the same machine.

High level API

A number of classes in the java.net package do provide for a much higher level of abstraction and allow for easy access to resources on the network. The classes are: diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/security/cert/Certificate.java --- a/src/share/classes/java/security/cert/Certificate.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/security/cert/Certificate.java Fri Aug 24 09:29:17 2012 +0100 @@ -27,6 +27,7 @@ import java.util.Arrays; +import java.security.Provider; import java.security.PublicKey; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; @@ -187,6 +188,35 @@ SignatureException; /** + * Verifies that this certificate was signed using the + * private key that corresponds to the specified public key. + * This method uses the signature verification engine + * supplied by the specified provider. Note that the specified + * Provider object does not have to be registered in the provider list. + * + *

This method was added to version 1.8 of the Java Platform + * Standard Edition. In order to maintain backwards compatibility with + * existing service providers, this method cannot be abstract + * and by default throws an UnsupportedOperationException. + * + * @param key the PublicKey used to carry out the verification. + * @param sigProvider the signature provider. + * + * @exception NoSuchAlgorithmException on unsupported signature + * algorithms. + * @exception InvalidKeyException on incorrect key. + * @exception SignatureException on signature errors. + * @exception CertificateException on encoding errors. + * @exception UnsupportedOperationException if the method is not supported + * @since 1.8 + */ + public void verify(PublicKey key, Provider sigProvider) + throws CertificateException, NoSuchAlgorithmException, + InvalidKeyException, SignatureException { + throw new UnsupportedOperationException(); + } + + /** * Returns a string representation of this certificate. * * @return a string representation of this certificate. diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/security/cert/X509CRL.java --- a/src/share/classes/java/security/cert/X509CRL.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/classes/java/security/cert/X509CRL.java Fri Aug 24 09:29:17 2012 +0100 @@ -30,6 +30,7 @@ import java.security.InvalidKeyException; import java.security.SignatureException; import java.security.Principal; +import java.security.Provider; import java.security.PublicKey; import javax.security.auth.x500.X500Principal; @@ -216,6 +217,34 @@ SignatureException; /** + * Verifies that this CRL was signed using the + * private key that corresponds to the given public key. + * This method uses the signature verification engine + * supplied by the given provider. Note that the specified Provider object + * does not have to be registered in the provider list. + * + * This method was added to version 1.8 of the Java Platform Standard + * Edition. In order to maintain backwards compatibility with existing + * service providers, this method is not abstract + * and it provides a default implementation. + * + * @param key the PublicKey used to carry out the verification. + * @param sigProvider the signature provider. + * + * @exception NoSuchAlgorithmException on unsupported signature + * algorithms. + * @exception InvalidKeyException on incorrect key. + * @exception SignatureException on signature errors. + * @exception CRLException on encoding errors. + * @since 1.8 + */ + public void verify(PublicKey key, Provider sigProvider) + throws CRLException, NoSuchAlgorithmException, + InvalidKeyException, SignatureException { + X509CRLImpl.verify(this, key, sigProvider); + } + + /** * Gets the version (version number) value from the CRL. * The ASN.1 definition for this is: *

diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/security/cert/X509Certificate.java
--- a/src/share/classes/java/security/cert/X509Certificate.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/java/security/cert/X509Certificate.java	Fri Aug 24 09:29:17 2012 +0100
@@ -26,8 +26,7 @@
 package java.security.cert;
 
 import java.math.BigInteger;
-import java.security.Principal;
-import java.security.PublicKey;
+import java.security.*;
 import java.util.Collection;
 import java.util.Date;
 import java.util.List;
@@ -640,4 +639,33 @@
         throws CertificateParsingException {
         return X509CertImpl.getIssuerAlternativeNames(this);
     }
+
+     /**
+     * Verifies that this certificate was signed using the
+     * private key that corresponds to the specified public key.
+     * This method uses the signature verification engine
+     * supplied by the specified provider. Note that the specified
+     * Provider object does not have to be registered in the provider list.
+     *
+     * This method was added to version 1.8 of the Java Platform Standard
+     * Edition. In order to maintain backwards compatibility with existing
+     * service providers, this method is not abstract
+     * and it provides a default implementation.
+     *
+     * @param key the PublicKey used to carry out the verification.
+     * @param sigProvider the signature provider.
+     *
+     * @exception NoSuchAlgorithmException on unsupported signature
+     * algorithms.
+     * @exception InvalidKeyException on incorrect key.
+     * @exception SignatureException on signature errors.
+     * @exception CertificateException on encoding errors.
+     * @exception UnsupportedOperationException if the method is not supported
+     * @since 1.8
+     */
+    public void verify(PublicKey key, Provider sigProvider)
+        throws CertificateException, NoSuchAlgorithmException,
+        InvalidKeyException, SignatureException {
+        X509CertImpl.verify(this, key, sigProvider);
+    }
 }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/util/zip/Deflater.java
--- a/src/share/classes/java/util/zip/Deflater.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/java/util/zip/Deflater.java	Fri Aug 24 09:29:17 2012 +0100
@@ -79,6 +79,8 @@
     private int level, strategy;
     private boolean setParams;
     private boolean finish, finished;
+    private long bytesRead;
+    private long bytesWritten;
 
     /**
      * Compression method for the deflate algorithm (the only one currently
@@ -423,8 +425,13 @@
         synchronized (zsRef) {
             ensureOpen();
             if (flush == NO_FLUSH || flush == SYNC_FLUSH ||
-                flush == FULL_FLUSH)
-                return deflateBytes(zsRef.address(), b, off, len, flush);
+                flush == FULL_FLUSH) {
+                int thisLen = this.len;
+                int n = deflateBytes(zsRef.address(), b, off, len, flush);
+                bytesWritten += n;
+                bytesRead += (thisLen - this.len);
+                return n;
+            }
             throw new IllegalArgumentException();
         }
     }
@@ -462,7 +469,7 @@
     public long getBytesRead() {
         synchronized (zsRef) {
             ensureOpen();
-            return getBytesRead(zsRef.address());
+            return bytesRead;
         }
     }
 
@@ -488,7 +495,7 @@
     public long getBytesWritten() {
         synchronized (zsRef) {
             ensureOpen();
-            return getBytesWritten(zsRef.address());
+            return bytesWritten;
         }
     }
 
@@ -503,6 +510,7 @@
             finish = false;
             finished = false;
             off = len = 0;
+            bytesRead = bytesWritten = 0;
         }
     }
 
@@ -543,8 +551,6 @@
     private native int deflateBytes(long addr, byte[] b, int off, int len,
                                     int flush);
     private native static int getAdler(long addr);
-    private native static long getBytesRead(long addr);
-    private native static long getBytesWritten(long addr);
     private native static void reset(long addr);
     private native static void end(long addr);
 }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/java/util/zip/Inflater.java
--- a/src/share/classes/java/util/zip/Inflater.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/java/util/zip/Inflater.java	Fri Aug 24 09:29:17 2012 +0100
@@ -78,6 +78,8 @@
     private int off, len;
     private boolean finished;
     private boolean needDict;
+    private long bytesRead;
+    private long bytesWritten;
 
     private static final byte[] defaultBuf = new byte[0];
 
@@ -253,7 +255,11 @@
         }
         synchronized (zsRef) {
             ensureOpen();
-            return inflateBytes(zsRef.address(), b, off, len);
+            int thisLen = this.len;
+            int n = inflateBytes(zsRef.address(), b, off, len);
+            bytesWritten += n;
+            bytesRead += (thisLen - this.len);
+            return n;
         }
     }
 
@@ -307,7 +313,7 @@
     public long getBytesRead() {
         synchronized (zsRef) {
             ensureOpen();
-            return getBytesRead(zsRef.address());
+            return bytesRead;
         }
     }
 
@@ -333,7 +339,7 @@
     public long getBytesWritten() {
         synchronized (zsRef) {
             ensureOpen();
-            return getBytesWritten(zsRef.address());
+            return bytesWritten;
         }
     }
 
@@ -348,6 +354,7 @@
             finished = false;
             needDict = false;
             off = len = 0;
+            bytesRead = bytesWritten = 0;
         }
     }
 
@@ -395,8 +402,6 @@
     private native int inflateBytes(long addr, byte[] b, int off, int len)
             throws DataFormatException;
     private native static int getAdler(long addr);
-    private native static long getBytesRead(long addr);
-    private native static long getBytesWritten(long addr);
     private native static void reset(long addr);
     private native static void end(long addr);
 }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/javax/swing/TimerQueue.java
--- a/src/share/classes/javax/swing/TimerQueue.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/javax/swing/TimerQueue.java	Fri Aug 24 09:29:17 2012 +0100
@@ -187,6 +187,9 @@
                                 addTimer(delayedTimer);
                             }
                         }
+
+                        // Allow run other threads on systems without kernel threads
+                        timer.getLock().newCondition().awaitNanos(1);
                     } catch (SecurityException ignore) {
                     } finally {
                         timer.getLock().unlock();
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/invoke/util/ValueConversions.java
--- a/src/share/classes/sun/invoke/util/ValueConversions.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/invoke/util/ValueConversions.java	Fri Aug 24 09:29:17 2012 +0100
@@ -118,42 +118,15 @@
         return primitiveConversion(Wrapper.DOUBLE, x, cast).doubleValue();
     }
 
-    /// Converting references to "raw" values.
-    /// A raw primitive value is always an int or long.
-
-    static int unboxByteRaw(Object x, boolean cast) {
-        return unboxByte(x, cast);
-    }
-
-    static int unboxShortRaw(Object x, boolean cast) {
-        return unboxShort(x, cast);
-    }
-
-    static int unboxBooleanRaw(Object x, boolean cast) {
-        return unboxBoolean(x, cast) ? 1 : 0;
-    }
-
-    static int unboxCharacterRaw(Object x, boolean cast) {
-        return unboxCharacter(x, cast);
-    }
-
-    static int unboxFloatRaw(Object x, boolean cast) {
-        return Float.floatToIntBits(unboxFloat(x, cast));
-    }
-
-    static long unboxDoubleRaw(Object x, boolean cast) {
-        return Double.doubleToRawLongBits(unboxDouble(x, cast));
-    }
-
-    private static MethodType unboxType(Wrapper wrap, boolean raw) {
-        return MethodType.methodType(rawWrapper(wrap, raw).primitiveType(), Object.class, boolean.class);
+    private static MethodType unboxType(Wrapper wrap) {
+        return MethodType.methodType(wrap.primitiveType(), Object.class, boolean.class);
     }
 
     private static final EnumMap[]
-            UNBOX_CONVERSIONS = newWrapperCaches(4);
+            UNBOX_CONVERSIONS = newWrapperCaches(2);
 
-    private static MethodHandle unbox(Wrapper wrap, boolean raw, boolean cast) {
-        EnumMap cache = UNBOX_CONVERSIONS[(cast?1:0)+(raw?2:0)];
+    private static MethodHandle unbox(Wrapper wrap, boolean cast) {
+        EnumMap cache = UNBOX_CONVERSIONS[(cast?1:0)];
         MethodHandle mh = cache.get(wrap);
         if (mh != null) {
             return mh;
@@ -163,19 +136,15 @@
             case OBJECT:
                 mh = IDENTITY; break;
             case VOID:
-                mh = raw ? ALWAYS_ZERO : IGNORE; break;
-            case INT: case LONG:
-                // these guys don't need separate raw channels
-                if (raw)  mh = unbox(wrap, false, cast);
-                break;
+                mh = IGNORE; break;
         }
         if (mh != null) {
             cache.put(wrap, mh);
             return mh;
         }
         // look up the method
-        String name = "unbox" + wrap.simpleName() + (raw ? "Raw" : "");
-        MethodType type = unboxType(wrap, raw);
+        String name = "unbox" + wrap.wrapperSimpleName();
+        MethodType type = unboxType(wrap);
         try {
             mh = IMPL_LOOKUP.findStatic(THIS_CLASS, name, type);
         } catch (ReflectiveOperationException ex) {
@@ -187,32 +156,30 @@
             return mh;
         }
         throw new IllegalArgumentException("cannot find unbox adapter for " + wrap
-                + (cast ? " (cast)" : "") + (raw ? " (raw)" : ""));
+                + (cast ? " (cast)" : ""));
     }
 
     public static MethodHandle unboxCast(Wrapper type) {
-        return unbox(type, false, true);
-    }
-
-    public static MethodHandle unboxRaw(Wrapper type) {
-        return unbox(type, true, false);
+        return unbox(type, true);
     }
 
     public static MethodHandle unbox(Class type) {
-        return unbox(Wrapper.forPrimitiveType(type), false, false);
+        return unbox(Wrapper.forPrimitiveType(type), false);
     }
 
     public static MethodHandle unboxCast(Class type) {
-        return unbox(Wrapper.forPrimitiveType(type), false, true);
-    }
-
-    public static MethodHandle unboxRaw(Class type) {
-        return unbox(Wrapper.forPrimitiveType(type), true, false);
+        return unbox(Wrapper.forPrimitiveType(type), true);
     }
 
     static private final Integer ZERO_INT = 0, ONE_INT = 1;
 
     /// Primitive conversions
+    /**
+     * Produce a Number which represents the given value {@code x}
+     * according to the primitive type of the given wrapper {@code wrap}.
+     * Caller must invoke intValue, byteValue, longValue (etc.) on the result
+     * to retrieve the desired primitive value.
+     */
     public static Number primitiveConversion(Wrapper wrap, Object x, boolean cast) {
         // Maybe merge this code with Wrapper.convert/cast.
         Number res = null;
@@ -237,6 +204,27 @@
         return res;
     }
 
+    /**
+     * The JVM verifier allows boolean, byte, short, or char to widen to int.
+     * Support exactly this conversion, from a boxed value type Boolean,
+     * Byte, Short, Character, or Integer.
+     */
+    public static int widenSubword(Object x) {
+        if (x instanceof Integer)
+            return (int) x;
+        else if (x instanceof Boolean)
+            return fromBoolean((boolean) x);
+        else if (x instanceof Character)
+            return (char) x;
+        else if (x instanceof Short)
+            return (short) x;
+        else if (x instanceof Byte)
+            return (byte) x;
+        else
+            // Fail with a ClassCastException.
+            return (int) x;
+    }
+
     /// Converting primitives to references
 
     static Integer boxInteger(int x) {
@@ -271,53 +259,17 @@
         return x;
     }
 
-    /// Converting raw primitives to references
-
-    static Byte boxByteRaw(int x) {
-        return boxByte((byte)x);
-    }
-
-    static Short boxShortRaw(int x) {
-        return boxShort((short)x);
-    }
-
-    static Boolean boxBooleanRaw(int x) {
-        return boxBoolean(x != 0);
-    }
-
-    static Character boxCharacterRaw(int x) {
-        return boxCharacter((char)x);
-    }
-
-    static Float boxFloatRaw(int x) {
-        return boxFloat(Float.intBitsToFloat(x));
-    }
-
-    static Double boxDoubleRaw(long x) {
-        return boxDouble(Double.longBitsToDouble(x));
-    }
-
-    // a raw void value is (arbitrarily) a garbage int
-    static Void boxVoidRaw(int x) {
-        return null;
-    }
-
-    private static MethodType boxType(Wrapper wrap, boolean raw) {
+    private static MethodType boxType(Wrapper wrap) {
         // be exact, since return casts are hard to compose
         Class boxType = wrap.wrapperType();
-        return MethodType.methodType(boxType, rawWrapper(wrap, raw).primitiveType());
-    }
-
-    private static Wrapper rawWrapper(Wrapper wrap, boolean raw) {
-        if (raw)  return wrap.isDoubleWord() ? Wrapper.LONG : Wrapper.INT;
-        return wrap;
+        return MethodType.methodType(boxType, wrap.primitiveType());
     }
 
     private static final EnumMap[]
-            BOX_CONVERSIONS = newWrapperCaches(4);
+            BOX_CONVERSIONS = newWrapperCaches(2);
 
-    private static MethodHandle box(Wrapper wrap, boolean exact, boolean raw) {
-        EnumMap cache = BOX_CONVERSIONS[(exact?1:0)+(raw?2:0)];
+    private static MethodHandle box(Wrapper wrap, boolean exact) {
+        EnumMap cache = BOX_CONVERSIONS[(exact?1:0)];
         MethodHandle mh = cache.get(wrap);
         if (mh != null) {
             return mh;
@@ -327,11 +279,7 @@
             case OBJECT:
                 mh = IDENTITY; break;
             case VOID:
-                if (!raw)  mh = ZERO_OBJECT;
-                break;
-            case INT: case LONG:
-                // these guys don't need separate raw channels
-                if (raw)  mh = box(wrap, exact, false);
+                mh = ZERO_OBJECT;
                 break;
         }
         if (mh != null) {
@@ -339,8 +287,8 @@
             return mh;
         }
         // look up the method
-        String name = "box" + wrap.simpleName() + (raw ? "Raw" : "");
-        MethodType type = boxType(wrap, raw);
+        String name = "box" + wrap.wrapperSimpleName();
+        MethodType type = boxType(wrap);
         if (exact) {
             try {
                 mh = IMPL_LOOKUP.findStatic(THIS_CLASS, name, type);
@@ -348,160 +296,26 @@
                 mh = null;
             }
         } else {
-            mh = box(wrap, !exact, raw).asType(type.erase());
+            mh = box(wrap, !exact).asType(type.erase());
         }
         if (mh != null) {
             cache.put(wrap, mh);
             return mh;
         }
         throw new IllegalArgumentException("cannot find box adapter for "
-                + wrap + (exact ? " (exact)" : "") + (raw ? " (raw)" : ""));
+                + wrap + (exact ? " (exact)" : ""));
     }
 
     public static MethodHandle box(Class type) {
         boolean exact = false;
         // e.g., boxShort(short)Short if exact,
         // e.g., boxShort(short)Object if !exact
-        return box(Wrapper.forPrimitiveType(type), exact, false);
-    }
-
-    public static MethodHandle boxRaw(Class type) {
-        boolean exact = false;
-        // e.g., boxShortRaw(int)Short if exact
-        // e.g., boxShortRaw(int)Object if !exact
-        return box(Wrapper.forPrimitiveType(type), exact, true);
+        return box(Wrapper.forPrimitiveType(type), exact);
     }
 
     public static MethodHandle box(Wrapper type) {
         boolean exact = false;
-        return box(type, exact, false);
-    }
-
-    public static MethodHandle boxRaw(Wrapper type) {
-        boolean exact = false;
-        return box(type, exact, true);
-    }
-
-    /// Kludges for when raw values get accidentally boxed.
-
-    static int unboxRawInteger(Object x) {
-        if (x instanceof Integer)
-            return (int) x;
-        else
-            return (int) unboxLong(x, false);
-    }
-
-    static Integer reboxRawInteger(Object x) {
-        if (x instanceof Integer)
-            return (Integer) x;
-        else
-            return (int) unboxLong(x, false);
-    }
-
-    static Byte reboxRawByte(Object x) {
-        if (x instanceof Byte)  return (Byte) x;
-        return boxByteRaw(unboxRawInteger(x));
-    }
-
-    static Short reboxRawShort(Object x) {
-        if (x instanceof Short)  return (Short) x;
-        return boxShortRaw(unboxRawInteger(x));
-    }
-
-    static Boolean reboxRawBoolean(Object x) {
-        if (x instanceof Boolean)  return (Boolean) x;
-        return boxBooleanRaw(unboxRawInteger(x));
-    }
-
-    static Character reboxRawCharacter(Object x) {
-        if (x instanceof Character)  return (Character) x;
-        return boxCharacterRaw(unboxRawInteger(x));
-    }
-
-    static Float reboxRawFloat(Object x) {
-        if (x instanceof Float)  return (Float) x;
-        return boxFloatRaw(unboxRawInteger(x));
-    }
-
-    static Long reboxRawLong(Object x) {
-        return (Long) x;  //never a rebox
-    }
-
-    static Double reboxRawDouble(Object x) {
-        if (x instanceof Double)  return (Double) x;
-        return boxDoubleRaw(unboxLong(x, true));
-    }
-
-    private static MethodType reboxType(Wrapper wrap) {
-        Class boxType = wrap.wrapperType();
-        return MethodType.methodType(boxType, Object.class);
-    }
-
-    private static final EnumMap[]
-            REBOX_CONVERSIONS = newWrapperCaches(1);
-
-    /**
-     * Because we normalize primitive types to reduce the number of signatures,
-     * primitives are sometimes manipulated under an "erased" type,
-     * either int (for types other than long/double) or long (for all types).
-     * When the erased primitive value is then boxed into an Integer or Long,
-     * the final boxed primitive is sometimes required.  This transformation
-     * is called a "rebox".  It takes an Integer or Long and produces some
-     * other boxed value, typed (inexactly) as an Object
-     */
-    public static MethodHandle rebox(Wrapper wrap) {
-        EnumMap cache = REBOX_CONVERSIONS[0];
-        MethodHandle mh = cache.get(wrap);
-        if (mh != null) {
-            return mh;
-        }
-        // slow path
-        switch (wrap) {
-            case OBJECT:
-                mh = IDENTITY; break;
-            case VOID:
-                throw new IllegalArgumentException("cannot rebox a void");
-        }
-        if (mh != null) {
-            cache.put(wrap, mh);
-            return mh;
-        }
-        // look up the method
-        String name = "reboxRaw" + wrap.simpleName();
-        MethodType type = reboxType(wrap);
-        try {
-            mh = IMPL_LOOKUP.findStatic(THIS_CLASS, name, type);
-            mh = mh.asType(IDENTITY.type());
-        } catch (ReflectiveOperationException ex) {
-            mh = null;
-        }
-        if (mh != null) {
-            cache.put(wrap, mh);
-            return mh;
-        }
-        throw new IllegalArgumentException("cannot find rebox adapter for " + wrap);
-    }
-
-    public static MethodHandle rebox(Class type) {
-        return rebox(Wrapper.forPrimitiveType(type));
-    }
-
-    /// Width-changing conversions between int and long.
-
-    static long widenInt(int x) {
-        return (long) x;
-    }
-
-    static Long widenBoxedInt(Integer x) {
-        return (long)(int)x;
-    }
-
-    static int narrowLong(long x) {
-        return (int) x;
-    }
-
-    static Integer narrowBoxedLong(Long x) {
-        return (int)(long) x;
+        return box(type, exact);
     }
 
     /// Constant functions
@@ -553,7 +367,7 @@
             case OBJECT:
             case INT: case LONG: case FLOAT: case DOUBLE:
                 try {
-                    mh = IMPL_LOOKUP.findStatic(THIS_CLASS, "zero"+wrap.simpleName(), type);
+                    mh = IMPL_LOOKUP.findStatic(THIS_CLASS, "zero"+wrap.wrapperSimpleName(), type);
                 } catch (ReflectiveOperationException ex) {
                     mh = null;
                 }
@@ -564,12 +378,9 @@
             return mh;
         }
 
-        // use the raw method
-        Wrapper rawWrap = wrap.rawPrimitive();
-        if (mh == null && rawWrap != wrap) {
-            mh = MethodHandles.explicitCastArguments(zeroConstantFunction(rawWrap), type);
-        }
-        if (mh != null) {
+        // use zeroInt and cast the result
+        if (wrap.isSubwordOrInt() && wrap != Wrapper.INT) {
+            mh = MethodHandles.explicitCastArguments(zeroConstantFunction(Wrapper.INT), type);
             cache.put(wrap, mh);
             return mh;
         }
@@ -657,7 +468,7 @@
         return t.cast(x);
     }
 
-    private static final MethodHandle IDENTITY, IDENTITY_I, IDENTITY_J, CAST_REFERENCE, ALWAYS_NULL, ALWAYS_ZERO, ZERO_OBJECT, IGNORE, EMPTY, NEW_ARRAY;
+    private static final MethodHandle IDENTITY, CAST_REFERENCE, ALWAYS_NULL, ALWAYS_ZERO, ZERO_OBJECT, IGNORE, EMPTY, NEW_ARRAY;
     static {
         try {
             MethodType idType = MethodType.genericMethodType(1);
@@ -666,8 +477,6 @@
             MethodType ignoreType = idType.changeReturnType(void.class);
             MethodType zeroObjectType = MethodType.genericMethodType(0);
             IDENTITY = IMPL_LOOKUP.findStatic(THIS_CLASS, "identity", idType);
-            IDENTITY_I = IMPL_LOOKUP.findStatic(THIS_CLASS, "identity", MethodType.methodType(int.class, int.class));
-            IDENTITY_J = IMPL_LOOKUP.findStatic(THIS_CLASS, "identity", MethodType.methodType(long.class, long.class));
             //CAST_REFERENCE = IMPL_LOOKUP.findVirtual(Class.class, "cast", idType);
             CAST_REFERENCE = IMPL_LOOKUP.findStatic(THIS_CLASS, "castReference", castType);
             ALWAYS_NULL = IMPL_LOOKUP.findStatic(THIS_CLASS, "alwaysNull", idType);
@@ -723,7 +532,6 @@
         if (exact) {
             MethodType xmt = MethodType.methodType(type, Object.class);
             mh = MethodHandles.explicitCastArguments(mh, xmt);
-            //mh = AdapterMethodHandle.makeRetypeRaw(IMPL_TOKEN, xmt, mh);
         }
         if (cache != null)
             cache.put(wrap, mh);
@@ -735,8 +543,10 @@
     }
 
     public static MethodHandle identity(Class type) {
-        // This stuff has been moved into MethodHandles:
-        return MethodHandles.identity(type);
+        if (!type.isPrimitive())
+            // Reference identity has been moved into MethodHandles:
+            return MethodHandles.identity(type);
+        return identity(Wrapper.findPrimitiveType(type));
     }
 
     public static MethodHandle identity(Wrapper wrap) {
@@ -769,95 +579,203 @@
         throw new IllegalArgumentException("cannot find identity for " + wrap);
     }
 
-    /// Float/non-float conversions.
+    /// Primitive conversions.
+    // These are supported directly by the JVM, usually by a single instruction.
+    // In the case of narrowing to a subword, there may be a pair of instructions.
+    // In the case of booleans, there may be a helper routine to manage a 1-bit value.
+    // This is the full 8x8 matrix (minus the diagonal).
 
-    static float doubleToFloat(double x) {
+    // narrow double to all other types:
+    static float doubleToFloat(double x) {  // bytecode: d2f
         return (float) x;
     }
-    static double floatToDouble(float x) {
-        return x;
-    }
-
-    // narrow double to integral type
-    static long doubleToLong(double x) {
+    static long doubleToLong(double x) {  // bytecode: d2l
         return (long) x;
     }
-    static int doubleToInt(double x) {
+    static int doubleToInt(double x) {  // bytecode: d2i
         return (int) x;
     }
-    static short doubleToShort(double x) {
+    static short doubleToShort(double x) {  // bytecodes: d2i, i2s
         return (short) x;
     }
-    static char doubleToChar(double x) {
+    static char doubleToChar(double x) {  // bytecodes: d2i, i2c
         return (char) x;
     }
-    static byte doubleToByte(double x) {
+    static byte doubleToByte(double x) {  // bytecodes: d2i, i2b
         return (byte) x;
     }
     static boolean doubleToBoolean(double x) {
         return toBoolean((byte) x);
     }
 
-    // narrow float to integral type
-    static long floatToLong(float x) {
+    // widen float:
+    static double floatToDouble(float x) {  // bytecode: f2d
+        return x;
+    }
+    // narrow float:
+    static long floatToLong(float x) {  // bytecode: f2l
         return (long) x;
     }
-    static int floatToInt(float x) {
+    static int floatToInt(float x) {  // bytecode: f2i
         return (int) x;
     }
-    static short floatToShort(float x) {
+    static short floatToShort(float x) {  // bytecodes: f2i, i2s
         return (short) x;
     }
-    static char floatToChar(float x) {
+    static char floatToChar(float x) {  // bytecodes: f2i, i2c
         return (char) x;
     }
-    static byte floatToByte(float x) {
+    static byte floatToByte(float x) {  // bytecodes: f2i, i2b
         return (byte) x;
     }
     static boolean floatToBoolean(float x) {
         return toBoolean((byte) x);
     }
 
-    // widen integral type to double
-    static double longToDouble(long x) {
+    // widen long:
+    static double longToDouble(long x) {  // bytecode: l2d
+        return x;
+    }
+    static float longToFloat(long x) {  // bytecode: l2f
+        return x;
+    }
+    // narrow long:
+    static int longToInt(long x) {  // bytecode: l2i
+        return (int) x;
+    }
+    static short longToShort(long x) {  // bytecodes: f2i, i2s
+        return (short) x;
+    }
+    static char longToChar(long x) {  // bytecodes: f2i, i2c
+        return (char) x;
+    }
+    static byte longToByte(long x) {  // bytecodes: f2i, i2b
+        return (byte) x;
+    }
+    static boolean longToBoolean(long x) {
+        return toBoolean((byte) x);
+    }
+
+    // widen int:
+    static double intToDouble(int x) {  // bytecode: i2d
         return x;
     }
-    static double intToDouble(int x) {
+    static float intToFloat(int x) {  // bytecode: i2f
+        return x;
+    }
+    static long intToLong(int x) {  // bytecode: i2l
+        return x;
+    }
+    // narrow int:
+    static short intToShort(int x) {  // bytecode: i2s
+        return (short) x;
+    }
+    static char intToChar(int x) {  // bytecode: i2c
+        return (char) x;
+    }
+    static byte intToByte(int x) {  // bytecode: i2b
+        return (byte) x;
+    }
+    static boolean intToBoolean(int x) {
+        return toBoolean((byte) x);
+    }
+
+    // widen short:
+    static double shortToDouble(short x) {  // bytecode: i2d (implicit 's2i')
+        return x;
+    }
+    static float shortToFloat(short x) {  // bytecode: i2f (implicit 's2i')
+        return x;
+    }
+    static long shortToLong(short x) {  // bytecode: i2l (implicit 's2i')
+        return x;
+    }
+    static int shortToInt(short x) {  // (implicit 's2i')
         return x;
     }
-    static double shortToDouble(short x) {
+    // narrow short:
+    static char shortToChar(short x) {  // bytecode: i2c (implicit 's2i')
+        return (char)x;
+    }
+    static byte shortToByte(short x) {  // bytecode: i2b (implicit 's2i')
+        return (byte)x;
+    }
+    static boolean shortToBoolean(short x) {
+        return toBoolean((byte) x);
+    }
+
+    // widen char:
+    static double charToDouble(char x) {  // bytecode: i2d (implicit 'c2i')
+        return x;
+    }
+    static float charToFloat(char x) {  // bytecode: i2f (implicit 'c2i')
+        return x;
+    }
+    static long charToLong(char x) {  // bytecode: i2l (implicit 'c2i')
+        return x;
+    }
+    static int charToInt(char x) {  // (implicit 'c2i')
         return x;
     }
-    static double charToDouble(char x) {
+    // narrow char:
+    static short charToShort(char x) {  // bytecode: i2s (implicit 'c2i')
+        return (short)x;
+    }
+    static byte charToByte(char x) {  // bytecode: i2b (implicit 'c2i')
+        return (byte)x;
+    }
+    static boolean charToBoolean(char x) {
+        return toBoolean((byte) x);
+    }
+
+    // widen byte:
+    static double byteToDouble(byte x) {  // bytecode: i2d (implicit 'b2i')
+        return x;
+    }
+    static float byteToFloat(byte x) {  // bytecode: i2f (implicit 'b2i')
         return x;
     }
-    static double byteToDouble(byte x) {
+    static long byteToLong(byte x) {  // bytecode: i2l (implicit 'b2i')
+        return x;
+    }
+    static int byteToInt(byte x) {  // (implicit 'b2i')
         return x;
     }
+    static short byteToShort(byte x) {  // bytecode: i2s (implicit 'b2i')
+        return (short)x;
+    }
+    static char byteToChar(byte x) {  // bytecode: i2b (implicit 'b2i')
+        return (char)x;
+    }
+    // narrow byte to boolean:
+    static boolean byteToBoolean(byte x) {
+        return toBoolean(x);
+    }
+
+    // widen boolean to all types:
     static double booleanToDouble(boolean x) {
         return fromBoolean(x);
     }
-
-    // widen integral type to float
-    static float longToFloat(long x) {
-        return x;
-    }
-    static float intToFloat(int x) {
-        return x;
-    }
-    static float shortToFloat(short x) {
-        return x;
-    }
-    static float charToFloat(char x) {
-        return x;
-    }
-    static float byteToFloat(byte x) {
-        return x;
-    }
     static float booleanToFloat(boolean x) {
         return fromBoolean(x);
     }
+    static long booleanToLong(boolean x) {
+        return fromBoolean(x);
+    }
+    static int booleanToInt(boolean x) {
+        return fromBoolean(x);
+    }
+    static short booleanToShort(boolean x) {
+        return fromBoolean(x);
+    }
+    static char booleanToChar(boolean x) {
+        return (char)fromBoolean(x);
+    }
+    static byte booleanToByte(boolean x) {
+        return fromBoolean(x);
+    }
 
+    // helpers to force boolean into the conversion scheme:
     static boolean toBoolean(byte x) {
         // see javadoc for MethodHandles.explicitCastArguments
         return ((x & 1) != 0);
@@ -868,62 +786,48 @@
     }
 
     private static final EnumMap[]
-            CONVERT_FLOAT_FUNCTIONS = newWrapperCaches(4);
+            CONVERT_PRIMITIVE_FUNCTIONS = newWrapperCaches(Wrapper.values().length);
 
-    static MethodHandle convertFloatFunction(Wrapper wrap, boolean toFloat, boolean doubleSize) {
-        EnumMap cache = CONVERT_FLOAT_FUNCTIONS[(toFloat?1:0)+(doubleSize?2:0)];
-        MethodHandle mh = cache.get(wrap);
+    public static MethodHandle convertPrimitive(Wrapper wsrc, Wrapper wdst) {
+        EnumMap cache = CONVERT_PRIMITIVE_FUNCTIONS[wsrc.ordinal()];
+        MethodHandle mh = cache.get(wdst);
         if (mh != null) {
             return mh;
         }
         // slow path
-        Wrapper fwrap = (doubleSize ? Wrapper.DOUBLE : Wrapper.FLOAT);
-        Class fix = wrap.primitiveType();
-        Class flt = (doubleSize ? double.class : float.class);
-        Class src = toFloat ? fix : flt;
-        Class dst = toFloat ? flt : fix;
-        if (src == dst)  return identity(wrap);
-        MethodType type = MethodType.methodType(dst, src);
-        switch (wrap) {
-            case VOID:
-                mh = toFloat ? zeroConstantFunction(fwrap) : MethodHandles.dropArguments(EMPTY, 0, flt);
-                break;
-            case OBJECT:
-                mh = toFloat ? unbox(flt) : box(flt);
-                break;
-            default:
-                try {
-                    mh = IMPL_LOOKUP.findStatic(THIS_CLASS, src.getSimpleName()+"To"+capitalize(dst.getSimpleName()), type);
-                } catch (ReflectiveOperationException ex) {
-                    mh = null;
-                }
-                break;
+        Class src = wsrc.primitiveType();
+        Class dst = wdst.primitiveType();
+        MethodType type = src == void.class ? MethodType.methodType(dst) : MethodType.methodType(dst, src);
+        if (wsrc == wdst) {
+            mh = identity(src);
+        } else if (wsrc == Wrapper.VOID) {
+            mh = zeroConstantFunction(wdst);
+        } else if (wdst == Wrapper.VOID) {
+            mh = MethodHandles.dropArguments(EMPTY, 0, src);  // Defer back to MethodHandles.
+        } else if (wsrc == Wrapper.OBJECT) {
+            mh = unboxCast(dst);
+        } else if (wdst == Wrapper.OBJECT) {
+            mh = box(src);
+        } else {
+            assert(src.isPrimitive() && dst.isPrimitive());
+            try {
+                mh = IMPL_LOOKUP.findStatic(THIS_CLASS, src.getSimpleName()+"To"+capitalize(dst.getSimpleName()), type);
+            } catch (ReflectiveOperationException ex) {
+                mh = null;
+            }
         }
         if (mh != null) {
             assert(mh.type() == type) : mh;
-            cache.put(wrap, mh);
+            cache.put(wdst, mh);
             return mh;
         }
 
-        throw new IllegalArgumentException("cannot find float conversion constant for " +
+        throw new IllegalArgumentException("cannot find primitive conversion function for " +
                                            src.getSimpleName()+" -> "+dst.getSimpleName());
     }
 
-    public static MethodHandle convertFromFloat(Class fixType) {
-        Wrapper wrap = Wrapper.forPrimitiveType(fixType);
-        return convertFloatFunction(wrap, false, false);
-    }
-    public static MethodHandle convertFromDouble(Class fixType) {
-        Wrapper wrap = Wrapper.forPrimitiveType(fixType);
-        return convertFloatFunction(wrap, false, true);
-    }
-    public static MethodHandle convertToFloat(Class fixType) {
-        Wrapper wrap = Wrapper.forPrimitiveType(fixType);
-        return convertFloatFunction(wrap, true, false);
-    }
-    public static MethodHandle convertToDouble(Class fixType) {
-        Wrapper wrap = Wrapper.forPrimitiveType(fixType);
-        return convertFloatFunction(wrap, true, true);
+    public static MethodHandle convertPrimitive(Class src, Class dst) {
+        return convertPrimitive(Wrapper.forPrimitiveType(src), Wrapper.forPrimitiveType(dst));
     }
 
     private static String capitalize(String x) {
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/invoke/util/VerifyAccess.java
--- a/src/share/classes/sun/invoke/util/VerifyAccess.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/invoke/util/VerifyAccess.java	Fri Aug 24 09:29:17 2012 +0100
@@ -169,6 +169,46 @@
     }
 
     /**
+     * Decide if the given method type, attributed to a member or symbolic
+     * reference of a given reference class, is really visible to that class.
+     * @param type the supposed type of a member or symbolic reference of refc
+     * @param refc
+     */
+    public static boolean isTypeVisible(Class type, Class refc) {
+        if (type == refc)  return true;  // easy check
+        while (type.isArray())  type = type.getComponentType();
+        if (type.isPrimitive() || type == Object.class)  return true;
+        ClassLoader parent = type.getClassLoader();
+        if (parent == null)  return true;
+        ClassLoader child  = refc.getClassLoader();
+        if (child == null)  return false;
+        if (parent == child || loadersAreRelated(parent, child, true))
+            return true;
+        // Do it the hard way:  Look up the type name from the refc loader.
+        try {
+            Class res = child.loadClass(type.getName());
+            return (type == res);
+        } catch (ClassNotFoundException ex) {
+            return false;
+        }
+    }
+
+    /**
+     * Decide if the given method type, attributed to a member or symbolic
+     * reference of a given reference class, is really visible to that class.
+     * @param type the supposed type of a member or symbolic reference of refc
+     * @param refc
+     */
+    public static boolean isTypeVisible(java.lang.invoke.MethodType type, Class refc) {
+        for (int n = -1, max = type.parameterCount(); n < max; n++) {
+            Class ptype = (n < 0 ? type.returnType() : type.parameterType(n));
+            if (!isTypeVisible(ptype, refc))
+                return false;
+        }
+        return true;
+    }
+
+    /**
      * Test if two classes have the same class loader and package qualifier.
      * @param class1
      * @param class2
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/invoke/util/VerifyType.java
--- a/src/share/classes/sun/invoke/util/VerifyType.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/invoke/util/VerifyType.java	Fri Aug 24 09:29:17 2012 +0100
@@ -122,8 +122,6 @@
         return isNullConversion(recv.returnType(), call.returnType());
     }
 
-    //TO DO: isRawConversion
-
     /**
      * Determine if the JVM verifier allows a value of type call to be
      * passed to a formal parameter (or return variable) of type recv.
@@ -188,40 +186,6 @@
         return -1;
     }
 
-    public static int canPassRaw(Class src, Class dst) {
-        if (dst.isPrimitive()) {
-            if (dst == void.class)
-                // As above, return anything to a caller expecting void.
-                return 1;
-            if (src == void.class)
-                // Special permission for raw conversions: allow a void
-                // to be captured as a garbage int.
-                // Caller promises that the actual value will be disregarded.
-                return dst == int.class ? 1 : 0;
-            if (isNullType(src))
-                // Special permission for raw conversions: allow a null
-                // to be reinterpreted as anything.  For objects, it is safe,
-                // and for primitives you get a garbage value (probably zero).
-                return 1;
-            if (!src.isPrimitive())
-                return 0;
-            Wrapper sw = Wrapper.forPrimitiveType(src);
-            Wrapper dw = Wrapper.forPrimitiveType(dst);
-            if (sw.stackSlots() == dw.stackSlots())
-                return 1;  // can do a reinterpret-cast on a stacked primitive
-            if (sw.isSubwordOrInt() && dw == Wrapper.VOID)
-                return 1;  // can drop an outgoing int value
-            return 0;
-        } else if (src.isPrimitive()) {
-            return 0;
-        }
-
-        // Both references.
-        if (isNullReferenceConversion(src, dst))
-            return 1;
-        return -1;
-    }
-
     public static boolean isSpreadArgType(Class spreadArg) {
         return spreadArg.isArray();
     }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/invoke/util/Wrapper.java
--- a/src/share/classes/sun/invoke/util/Wrapper.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/invoke/util/Wrapper.java	Fri Aug 24 09:29:17 2012 +0100
@@ -47,7 +47,8 @@
     private final Object   zero;
     private final Object   emptyArray;
     private final int      format;
-    private final String   simpleName;
+    private final String   wrapperSimpleName;
+    private final String   primitiveSimpleName;
 
     private Wrapper(Class wtype, Class ptype, char tchar, Object zero, Object emptyArray, int format) {
         this.wrapperType = wtype;
@@ -56,12 +57,13 @@
         this.zero = zero;
         this.emptyArray = emptyArray;
         this.format = format;
-        this.simpleName = wtype.getSimpleName();
+        this.wrapperSimpleName = wtype.getSimpleName();
+        this.primitiveSimpleName = ptype.getSimpleName();
     }
 
     /** For debugging, give the details of this wrapper. */
     public String detailString() {
-        return simpleName+
+        return wrapperSimpleName+
                 java.util.Arrays.asList(wrapperType, primitiveType,
                 basicTypeChar, zero,
                 "0x"+Integer.toHexString(format));
@@ -418,7 +420,11 @@
 
     /** What is the simple name of the wrapper type?
      */
-    public String simpleName() { return simpleName; }
+    public String wrapperSimpleName() { return wrapperSimpleName; }
+
+    /** What is the simple name of the primitive type?
+     */
+    public String primitiveSimpleName() { return primitiveSimpleName; }
 
 //    /** Wrap a value in the given type, which may be either a primitive or wrapper type.
 //     *  Performs standard primitive conversions, including truncation and float conversions.
@@ -456,26 +462,31 @@
             // If the target type is an interface, perform no runtime check.
             // (This loophole is safe, and is allowed by the JVM verifier.)
             // If the target type is a primitive, change it to a wrapper.
+            assert(!type.isPrimitive());
+            if (!type.isInterface())
+                type.cast(x);
             @SuppressWarnings("unchecked")
             T result = (T) x;  // unchecked warning is expected here
             return result;
         }
         Class wtype = wrapperType(type);
         if (wtype.isInstance(x)) {
-            @SuppressWarnings("unchecked")
-            T result = (T) x;  // unchecked warning is expected here
-            return result;
+            return wtype.cast(x);
         }
-        Class sourceType = x.getClass();  // throw NPE if x is null
         if (!isCast) {
+            Class sourceType = x.getClass();  // throw NPE if x is null
             Wrapper source = findWrapperType(sourceType);
             if (source == null || !this.isConvertibleFrom(source)) {
                 throw newClassCastException(wtype, sourceType);
             }
+        } else if (x == null) {
+            @SuppressWarnings("unchecked")
+            T z = (T) zero;
+            return z;
         }
         @SuppressWarnings("unchecked")
         T result = (T) wrap(x);  // unchecked warning is expected here
-        assert result.getClass() == wtype;
+        assert (result == null ? Void.class : result.getClass()) == wtype;
         return result;
     }
 
@@ -523,7 +534,7 @@
             case 'S': return Short.valueOf((short) xn.intValue());
             case 'B': return Byte.valueOf((byte) xn.intValue());
             case 'C': return Character.valueOf((char) xn.intValue());
-            case 'Z': return Boolean.valueOf(boolValue(xn.longValue()));
+            case 'Z': return Boolean.valueOf(boolValue(xn.byteValue()));
         }
         throw new InternalError("bad wrapper");
     }
@@ -546,72 +557,11 @@
             case 'S': return Short.valueOf((short) x);
             case 'B': return Byte.valueOf((byte) x);
             case 'C': return Character.valueOf((char) x);
-            case 'Z': return Boolean.valueOf(boolValue(x));
+            case 'Z': return Boolean.valueOf(boolValue((byte) x));
         }
         throw new InternalError("bad wrapper");
     }
 
-    /** Wrap a value (a long or smaller value) in this wrapper's type.
-     * Does not perform floating point conversion.
-     * Produces a {@code Long} for {@code OBJECT}, although the exact type
-     * of the operand is not known.
-     * Returns null for {@code VOID}.
-     */
-    public Object wrapRaw(long x) {
-        switch (basicTypeChar) {
-            case 'F':  return Float.valueOf(Float.intBitsToFloat((int)x));
-            case 'D':  return Double.valueOf(Double.longBitsToDouble(x));
-            case 'L':  // same as 'J':
-            case 'J':  return (Long) x;
-        }
-        // Other wrapping operations are just the same, given that the
-        // operand is already promoted to an int.
-        return wrap((int)x);
-    }
-
-    /** Produce bitwise value which encodes the given wrapped value.
-     * Does not perform floating point conversion.
-     * Returns zero for {@code VOID}.
-     */
-    public long unwrapRaw(Object x) {
-        switch (basicTypeChar) {
-            case 'F':  return Float.floatToRawIntBits((Float) x);
-            case 'D':  return Double.doubleToRawLongBits((Double) x);
-
-            case 'L': throw newIllegalArgumentException("cannot unwrap from sobject type");
-            case 'V': return 0;
-            case 'I': return (int)(Integer) x;
-            case 'J': return (long)(Long) x;
-            case 'S': return (short)(Short) x;
-            case 'B': return (byte)(Byte) x;
-            case 'C': return (char)(Character) x;
-            case 'Z': return (boolean)(Boolean) x ? 1 : 0;
-        }
-        throw new InternalError("bad wrapper");
-    }
-
-    /** Report what primitive type holds this guy's raw value. */
-    public Class rawPrimitiveType() {
-        return rawPrimitive().primitiveType();
-    }
-
-    /** Report, as a wrapper, what primitive type holds this guy's raw value.
-     *  Returns self for INT, LONG, OBJECT; returns LONG for DOUBLE,
-     *  else returns INT.
-     */
-    public Wrapper rawPrimitive() {
-        switch (basicTypeChar) {
-            case 'S': case 'B':
-            case 'C': case 'Z':
-            case 'V':
-            case 'F':
-                return INT;
-            case 'D':
-                return LONG;
-        }
-        return this;
-    }
-
     private static Number numberValue(Object x) {
         if (x instanceof Number)     return (Number)x;
         if (x instanceof Character)  return (int)(Character)x;
@@ -620,7 +570,10 @@
         return (Number)x;
     }
 
-    private static boolean boolValue(long bits) {
+    // Parameter type of boolValue must be byte, because
+    // MethodHandles.explicitCastArguments defines boolean
+    // conversion as first converting to byte.
+    private static boolean boolValue(byte bits) {
         bits &= 1;  // simple 31-bit zero extension
         return (bits != 0);
     }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/launcher/LauncherHelper.java
--- a/src/share/classes/sun/launcher/LauncherHelper.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/launcher/LauncherHelper.java	Fri Aug 24 09:29:17 2012 +0100
@@ -48,6 +48,9 @@
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.nio.charset.Charset;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.ResourceBundle;
 import java.text.MessageFormat;
 import java.util.ArrayList;
@@ -69,8 +72,6 @@
 
     private static StringBuilder outBuf = new StringBuilder();
 
-    private static ResourceBundle javarb = null;
-
     private static final String INDENT = "    ";
     private static final String VM_SETTINGS     = "VM settings:";
     private static final String PROP_SETTINGS   = "Property settings:";
@@ -78,6 +79,7 @@
 
     // sync with java.c and sun.misc.VM
     private static final String diagprop = "sun.java.launcher.diag";
+    final static boolean trace = sun.misc.VM.getSavedProperty(diagprop) != null;
 
     private static final String defaultBundleName =
             "sun.launcher.resources.launcher";
@@ -428,7 +430,7 @@
         if (msgKey != null) {
             ostream.println(getLocalizedMessage(msgKey, args));
         }
-        if (sun.misc.VM.getSavedProperty(diagprop) != null) {
+        if (trace) {
             if (t != null) {
                 t.printStackTrace();
             } else {
@@ -532,4 +534,82 @@
         }
         return null; // keep the compiler happy
     }
+
+    static String[] expandArgs(String[] argArray) {
+        List aList = new ArrayList<>();
+        for (String x : argArray) {
+            aList.add(new StdArg(x));
+        }
+        return expandArgs(aList);
+    }
+
+    static String[] expandArgs(List argList) {
+        ArrayList out = new ArrayList<>();
+        if (trace) {
+            System.err.println("Incoming arguments:");
+        }
+        for (StdArg a : argList) {
+            if (trace) {
+                System.err.println(a);
+            }
+            if (a.needsExpansion) {
+                File x = new File(a.arg);
+                File parent = x.getParentFile();
+                String glob = x.getName();
+                if (parent == null) {
+                    parent = new File(".");
+                }
+                try (DirectoryStream dstream =
+                        Files.newDirectoryStream(parent.toPath(), glob)) {
+                    int entries = 0;
+                    for (Path p : dstream) {
+                        out.add(p.normalize().toString());
+                        entries++;
+                    }
+                    if (entries == 0) {
+                        out.add(a.arg);
+                    }
+                } catch (Exception e) {
+                    out.add(a.arg);
+                    if (trace) {
+                        System.err.println("Warning: passing argument as-is " + a);
+                        System.err.print(e);
+                    }
+                }
+            } else {
+                out.add(a.arg);
+            }
+        }
+        String[] oarray = new String[out.size()];
+        out.toArray(oarray);
+
+        if (trace) {
+            System.err.println("Expanded arguments:");
+            for (String x : oarray) {
+                System.err.println(x);
+            }
+        }
+        return oarray;
+    }
+
+    /* duplicate of the native StdArg struct */
+    private static class StdArg {
+        final String arg;
+        final boolean needsExpansion;
+        StdArg(String arg, boolean expand) {
+            this.arg = arg;
+            this.needsExpansion = expand;
+        }
+        // protocol: first char indicates whether expansion is required
+        // 'T' = true ; needs expansion
+        // 'F' = false; needs no expansion
+        StdArg(String in) {
+            this.arg = in.substring(1);
+            needsExpansion = in.charAt(0) == 'T';
+        }
+        public String toString() {
+            return "StdArg{" + "arg=" + arg + ", needsExpansion=" + needsExpansion + '}';
+        }
+    }
 }
+
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/launcher/resources/launcher.properties
--- a/src/share/classes/sun/launcher/resources/launcher.properties	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/launcher/resources/launcher.properties	Fri Aug 24 09:29:17 2012 +0100
@@ -136,3 +136,4 @@
     Error: An unexpected error occurred while trying to open file {0}
 java.launcher.jar.error2=manifest not found in {0}
 java.launcher.jar.error3=no main manifest attribute, in {0}
+java.launcher.init.error=initialization error
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/misc/MetaIndex.java
--- a/src/share/classes/sun/misc/MetaIndex.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/misc/MetaIndex.java	Fri Aug 24 09:29:17 2012 +0100
@@ -71,7 +71,6 @@
 org/w3c/
 com/sun/imageio/
 javax/
-sunw/util/
 java/
 sun/
 ...
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/misc/Unsafe.java
--- a/src/share/classes/sun/misc/Unsafe.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/misc/Unsafe.java	Fri Aug 24 09:29:17 2012 +0100
@@ -678,6 +678,14 @@
     public native Object staticFieldBase(Field f);
 
     /**
+     * Detect if the given class may need to be initialized. This is often
+     * needed in conjunction with obtaining the static field base of a
+     * class.
+     * @return false only if a call to {@code ensureClassInitialized} would have no effect
+     */
+    public native boolean shouldBeInitialized(Class c);
+
+    /**
      * Ensure the given class has been initialized. This is often
      * needed in conjunction with obtaining the static field base of a
      * class.
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/SingleByte.java
--- a/src/share/classes/sun/nio/cs/SingleByte.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/nio/cs/SingleByte.java	Fri Aug 24 09:29:17 2012 +0100
@@ -107,7 +107,7 @@
                 return decodeBufferLoop(src, dst);
         }
 
-        private final char decode(int b) {
+        public final char decode(int b) {
             return b2c[b + 128];
         }
 
@@ -221,7 +221,7 @@
                 return encodeBufferLoop(src, dst);
         }
 
-        private final int encode(char ch) {
+        public final int encode(char ch) {
             char index = c2bIndex[ch >> 8];
             if (index == UNMAPPABLE_ENCODING)
                 return UNMAPPABLE_ENCODING;
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/SingleByteDecoder.java
--- a/src/share/classes/sun/nio/cs/SingleByteDecoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CoderResult;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-
-
-public abstract class SingleByteDecoder
-    extends CharsetDecoder
-{
-
-    private final String byteToCharTable;
-
-    protected SingleByteDecoder(Charset cs, String byteToCharTable) {
-        super(cs, 1.0f, 1.0f);
-        this.byteToCharTable = byteToCharTable;
-    }
-
-    private CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) {
-        byte[] sa = src.array();
-        int sp = src.arrayOffset() + src.position();
-        int sl = src.arrayOffset() + src.limit();
-        assert (sp <= sl);
-        sp = (sp <= sl ? sp : sl);
-        char[] da = dst.array();
-        int dp = dst.arrayOffset() + dst.position();
-        int dl = dst.arrayOffset() + dst.limit();
-        assert (dp <= dl);
-        dp = (dp <= dl ? dp : dl);
-
-        try {
-            while (sp < sl) {
-                int b = sa[sp];
-
-                char c = decode(b);
-                if (c == '\uFFFD')
-                    return CoderResult.unmappableForLength(1);
-                if (dl - dp < 1)
-                    return CoderResult.OVERFLOW;
-                da[dp++] = c;
-                sp++;
-            }
-            return CoderResult.UNDERFLOW;
-        } finally {
-            src.position(sp - src.arrayOffset());
-            dst.position(dp - dst.arrayOffset());
-        }
-    }
-
-    private CoderResult decodeBufferLoop(ByteBuffer src, CharBuffer dst) {
-        int mark = src.position();
-        try {
-            while (src.hasRemaining()) {
-                int b = src.get();
-
-                char c = decode(b);
-                if (c == '\uFFFD')
-                    return CoderResult.unmappableForLength(1);
-                if (!dst.hasRemaining())
-                    return CoderResult.OVERFLOW;
-                mark++;
-                dst.put(c);
-            }
-            return CoderResult.UNDERFLOW;
-        } finally {
-            src.position(mark);
-        }
-    }
-
-    protected CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
-        if (true && src.hasArray() && dst.hasArray())
-            return decodeArrayLoop(src, dst);
-        else
-            return decodeBufferLoop(src, dst);
-    }
-
-    public char decode(int byteIndex) {
-        int n = byteIndex + 128;
-        if (n >= byteToCharTable.length() || n < 0)
-            return '\uFFFD';
-        return byteToCharTable.charAt(n);
-    }
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/SingleByteEncoder.java
--- a/src/share/classes/sun/nio/cs/SingleByteEncoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CoderResult;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
-import sun.nio.cs.Surrogate;
-
-
-public abstract class SingleByteEncoder
-    extends CharsetEncoder
-{
-
-    private final short index1[];
-    private final String index2;
-    private final int mask1;
-    private final int mask2;
-    private final int shift;
-
-    private final Surrogate.Parser sgp = new Surrogate.Parser();
-
-    protected SingleByteEncoder(Charset cs,
-                                short[] index1, String index2,
-                                int mask1, int mask2, int shift)
-    {
-        super(cs, 1.0f, 1.0f);
-        this.index1 = index1;
-        this.index2 = index2;
-        this.mask1 = mask1;
-        this.mask2 = mask2;
-        this.shift = shift;
-    }
-
-    public boolean canEncode(char c) {
-        char testEncode = index2.charAt(index1[(c & mask1) >> shift]
-                                        + (c & mask2));
-        return testEncode != '\u0000' || c == '\u0000';
-    }
-
-    private CoderResult encodeArrayLoop(CharBuffer src, ByteBuffer dst) {
-        char[] sa = src.array();
-        int sp = src.arrayOffset() + src.position();
-        int sl = src.arrayOffset() + src.limit();
-        assert (sp <= sl);
-        sp = (sp <= sl ? sp : sl);
-        byte[] da = dst.array();
-        int dp = dst.arrayOffset() + dst.position();
-        int dl = dst.arrayOffset() + dst.limit();
-        assert (dp <= dl);
-        dp = (dp <= dl ? dp : dl);
-
-        try {
-            while (sp < sl) {
-                char c = sa[sp];
-                if (Character.isSurrogate(c)) {
-                    if (sgp.parse(c, sa, sp, sl) < 0)
-                        return sgp.error();
-                    return sgp.unmappableResult();
-                }
-                if (c >= '\uFFFE')
-                    return CoderResult.unmappableForLength(1);
-                if (dl - dp < 1)
-                    return CoderResult.OVERFLOW;
-
-                char e = index2.charAt(index1[(c & mask1) >> shift]
-                                       + (c & mask2));
-
-                // If output byte is zero because input char is zero
-                // then character is mappable, o.w. fail
-                if (e == '\u0000' && c != '\u0000')
-                    return CoderResult.unmappableForLength(1);
-
-                sp++;
-                da[dp++] = (byte)e;
-            }
-            return CoderResult.UNDERFLOW;
-        } finally {
-            src.position(sp - src.arrayOffset());
-            dst.position(dp - dst.arrayOffset());
-        }
-    }
-
-    private CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) {
-        int mark = src.position();
-        try {
-            while (src.hasRemaining()) {
-                char c = src.get();
-                if (Character.isSurrogate(c)) {
-                    if (sgp.parse(c, src) < 0)
-                        return sgp.error();
-                    return sgp.unmappableResult();
-                }
-                if (c >= '\uFFFE')
-                    return CoderResult.unmappableForLength(1);
-                if (!dst.hasRemaining())
-                    return CoderResult.OVERFLOW;
-
-                char e = index2.charAt(index1[(c & mask1) >> shift]
-                                       + (c & mask2));
-
-                // If output byte is zero because input char is zero
-                // then character is mappable, o.w. fail
-                if (e == '\u0000' && c != '\u0000')
-                    return CoderResult.unmappableForLength(1);
-
-                mark++;
-                dst.put((byte)e);
-            }
-            return CoderResult.UNDERFLOW;
-        } finally {
-            src.position(mark);
-        }
-    }
-
-    protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
-        if (true && src.hasArray() && dst.hasArray())
-            return encodeArrayLoop(src, dst);
-        else
-            return encodeBufferLoop(src, dst);
-    }
-
-    public byte encode(char inputChar) {
-        return (byte)index2.charAt(index1[(inputChar & mask1) >> shift] +
-                (inputChar & mask2));
-    }
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/DoubleByte.java
--- a/src/share/classes/sun/nio/cs/ext/DoubleByte.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/nio/cs/ext/DoubleByte.java	Fri Aug 24 09:29:17 2012 +0100
@@ -249,11 +249,11 @@
         }
 
         public char decodeDouble(int b1, int b2) {
-            if (b2 < b2Min || b2 > b2Max)
+            if (b1 < 0 || b1 > b2c.length ||
+                b2 < b2Min || b2 > b2Max)
                 return UNMAPPABLE_DECODING;
             return  b2c[b1][b2 - b2Min];
         }
-
     }
 
     // IBM_EBCDIC_DBCS
@@ -435,15 +435,15 @@
         }
     }
 
-    // EBCDIC_DBCS_ONLY
-    public static class Decoder_EBCDIC_DBCSONLY extends Decoder {
-        static final char[] b2cSB;
+    // DBCS_ONLY
+    public static class Decoder_DBCSONLY extends Decoder {
+        static final char[] b2cSB_UNMAPPABLE;
         static {
-            b2cSB = new char[0x100];
-            Arrays.fill(b2cSB, UNMAPPABLE_DECODING);
+            b2cSB_UNMAPPABLE = new char[0x100];
+            Arrays.fill(b2cSB_UNMAPPABLE, UNMAPPABLE_DECODING);
         }
-        Decoder_EBCDIC_DBCSONLY(Charset cs, char[][] b2c, int b2Min, int b2Max) {
-            super(cs, 0.5f, 1.0f, b2c, b2cSB, b2Min, b2Max);
+        Decoder_DBCSONLY(Charset cs, char[][] b2c, char[] b2cSB, int b2Min, int b2Max) {
+            super(cs, 0.5f, 1.0f, b2c, b2cSB_UNMAPPABLE, b2Min, b2Max);
         }
     }
 
@@ -727,9 +727,9 @@
         }
     }
 
-    public static class Encoder_EBCDIC_DBCSONLY extends Encoder {
-        Encoder_EBCDIC_DBCSONLY(Charset cs, byte[] repl,
-                                char[] c2b, char[] c2bIndex) {
+    public static class Encoder_DBCSONLY extends Encoder {
+        Encoder_DBCSONLY(Charset cs, byte[] repl,
+                         char[] c2b, char[] c2bIndex) {
             super(cs, 2.0f, 2.0f, repl, c2b, c2bIndex);
         }
 
@@ -741,6 +741,8 @@
         }
     }
 
+
+
     public static class Encoder_EBCDIC extends Encoder {
         static final int SBCS = 0;
         static final int DBCS = 1;
@@ -911,4 +913,5 @@
             super(cs, c2b, c2bIndex);
         }
     }
+
 }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/DoubleByteDecoder.java
--- a/src/share/classes/sun/nio/cs/ext/DoubleByteDecoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-/*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CoderResult;
-
-abstract class DoubleByteDecoder
-    extends CharsetDecoder
-{
-
-    private short index1[];
-
-    /*
-     * 2nd level index, provided by subclass
-     * every string has 0x10*(end-start+1) characters.
-     */
-    private String  index2[];
-
-    protected int start;
-    protected int end;
-
-    protected static final char REPLACE_CHAR = '\uFFFD';
-    protected char highSurrogate;
-    protected char lowSurrogate;
-
-    protected DoubleByteDecoder(Charset cs, short[] index1, String[] index2,
-                                int start, int end ) {
-        super(cs, 0.5f, 1.0f);
-        this.index1 = index1;
-        this.index2 = index2;
-        this.start = start;
-        this.end = end;
-    }
-
-    private CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) {
-        byte[] sa = src.array();
-        int sp = src.arrayOffset() + src.position();
-        int sl = src.arrayOffset() + src.limit();
-        assert (sp <= sl);
-        sp = (sp <= sl ? sp : sl);
-        char[] da = dst.array();
-        int dp = dst.arrayOffset() + dst.position();
-        int dl = dst.arrayOffset() + dst.limit();
-        assert (dp <= dl);
-        dp = (dp <= dl ? dp : dl);
-
-        try {
-            while (sp < sl) {
-                int b1, b2;
-                b1 = sa[sp];
-                int inputSize = 1;
-                int outputSize = 1;
-                highSurrogate = lowSurrogate = 0;
-                char c = decodeSingle(b1);
-                if (c == REPLACE_CHAR) {
-                    b1 &= 0xff;
-                    if (sl - sp < 2)
-                        return CoderResult.UNDERFLOW;
-                    b2 = sa[sp + 1] & 0xff;
-                    c = decodeDouble(b1, b2);
-                    inputSize = 2;
-                    if (c == REPLACE_CHAR)
-                        return CoderResult.unmappableForLength(inputSize);
-                    outputSize = (highSurrogate > 0) ? 2: 1;
-                }
-
-                if (dl - dp < outputSize)
-                    return CoderResult.OVERFLOW;
-                if (outputSize == 2) {
-                    da[dp++] = highSurrogate;
-                    da[dp++] = lowSurrogate;
-                } else {
-                    da[dp++] = c;
-                }
-                sp += inputSize;
-            }
-            return CoderResult.UNDERFLOW;
-        } finally {
-            src.position(sp - src.arrayOffset());
-            dst.position(dp - dst.arrayOffset());
-        }
-    }
-
-    private CoderResult decodeBufferLoop(ByteBuffer src, CharBuffer dst) {
-        int mark = src.position();
-        int inputSize = 0;
-        int outputSize = 0;
-        try {
-            while (src.hasRemaining()) {
-                int b1 = src.get();
-                inputSize = 1;
-                outputSize = 1;
-                highSurrogate = lowSurrogate = 0;
-
-                char c = decodeSingle(b1);
-
-                if (c == REPLACE_CHAR) {
-                    if (src.remaining() < 1)
-                        return CoderResult.UNDERFLOW;
-                    b1 &= 0xff;
-                    int b2 = src.get() & 0xff;
-                    inputSize = 2;
-
-                    c = decodeDouble(b1, b2);
-
-                    if (c == REPLACE_CHAR)
-                        return CoderResult.unmappableForLength(2);
-
-                    outputSize =  (highSurrogate > 0) ? 2: 1;
-                }
-                if (dst.remaining() < outputSize)
-                    return CoderResult.OVERFLOW;
-                mark += inputSize;
-
-                if (outputSize == 2) {
-                    dst.put(highSurrogate);
-                    dst.put(lowSurrogate);
-                } else {
-                    dst.put(c);
-                }
-            }
-            return CoderResult.UNDERFLOW;
-        } finally {
-            src.position(mark);
-        }
-    }
-
-    protected CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
-        if (src.hasArray() && dst.hasArray())
-            return decodeArrayLoop(src, dst);
-        else
-            return decodeBufferLoop(src, dst);
-    }
-
-    /*
-     * Can be changed by subclass
-     */
-    protected char decodeSingle(int b) {
-        if (b >= 0)
-            return (char) b;
-        return REPLACE_CHAR;
-    }
-
-    protected char decodeDouble(int byte1, int byte2) {
-        if (((byte1 < 0) || (byte1 > index1.length))
-            || ((byte2 < start) || (byte2 > end)))
-            return REPLACE_CHAR;
-
-        int n = (index1[byte1] & 0xf) * (end - start + 1) + (byte2 - start);
-        return index2[index1[byte1] >> 4].charAt(n);
-    }
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/EUC_JP.java
--- a/src/share/classes/sun/nio/cs/ext/EUC_JP.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/nio/cs/ext/EUC_JP.java	Fri Aug 24 09:29:17 2012 +0100
@@ -23,9 +23,6 @@
  * questions.
  */
 
-/*
- */
-
 package sun.nio.cs.ext;
 
 import java.nio.ByteBuffer;
@@ -36,6 +33,8 @@
 import java.nio.charset.CoderResult;
 import sun.nio.cs.HistoricallyNamedCharset;
 import sun.nio.cs.Surrogate;
+import sun.nio.cs.SingleByte;
+import static sun.nio.cs.CharsetMapping.*;
 
 public class EUC_JP
     extends Charset
@@ -62,52 +61,47 @@
     }
 
     public CharsetEncoder newEncoder() {
-
-        // Need to force the replacement byte to 0x3f
-        // because JIS_X_0208_Encoder defines its own
-        // alternative 2 byte substitution to permit it
-        // to exist as a self-standing Encoder
-
-        byte[] replacementBytes = { (byte)0x3f };
-        return new Encoder(this).replaceWith(replacementBytes);
+        return new Encoder(this);
     }
 
-
-    static class Decoder extends JIS_X_0208_Decoder
+    static class Decoder extends CharsetDecoder
         implements DelegatableDecoder {
 
-        JIS_X_0201.Decoder decoderJ0201;
-        JIS_X_0212_Decoder decoderJ0212;
+        final static SingleByte.Decoder DEC0201 =
+            (SingleByte.Decoder)new JIS_X_0201().newDecoder();
+
+        final static DoubleByte.Decoder DEC0208 =
+            (DoubleByte.Decoder)new JIS_X_0208().newDecoder();
 
-        private static final short[] j0208Index1 =
-          JIS_X_0208_Decoder.getIndex1();
-        private static final String[] j0208Index2 =
-          JIS_X_0208_Decoder.getIndex2();
+        final static DoubleByte.Decoder DEC0212 =
+            (DoubleByte.Decoder)new JIS_X_0212().newDecoder();
+
+        private final SingleByte.Decoder dec0201;
+        private final DoubleByte.Decoder dec0208;
+        private final DoubleByte.Decoder dec0212;
 
         protected Decoder(Charset cs) {
-            super(cs);
-            decoderJ0201 = new JIS_X_0201.Decoder(cs);
-            decoderJ0212 = new JIS_X_0212_Decoder(cs);
-            start = 0xa1;
-            end = 0xfe;
+            this(cs, 0.5f, 1.0f, DEC0201, DEC0208, DEC0212);
         }
-        protected char decode0212(int byte1, int byte2) {
-             return decoderJ0212.decodeDouble(byte1, byte2);
+
+        protected Decoder(Charset cs, float avgCpb, float maxCpb,
+                          SingleByte.Decoder dec0201,
+                          DoubleByte.Decoder dec0208,
+                          DoubleByte.Decoder dec0212) {
+            super(cs, avgCpb, maxCpb);
+            this.dec0201 = dec0201;
+            this.dec0208 = dec0208;
+            this.dec0212 = dec0212;
         }
 
+
         protected char decodeDouble(int byte1, int byte2) {
             if (byte1 == 0x8e) {
-                return decoderJ0201.decode(byte2 - 256);
+                if (byte2 < 0x80)
+                    return UNMAPPABLE_DECODING;
+                return dec0201.decode((byte)byte2);
             }
-            // Fix for bug 4121358 - similar fix for bug 4117820 put
-            // into ByteToCharDoubleByte.getUnicode()
-            if (((byte1 < 0) || (byte1 > getIndex1().length))
-                || ((byte2 < start) || (byte2 > end)))
-                return REPLACE_CHAR;
-
-            int n = (j0208Index1[byte1 - 0x80] & 0xf) * (end - start + 1)
-                    + (byte2 - start);
-            return j0208Index2[j0208Index1[byte1 - 0x80] >> 4].charAt(n);
+            return dec0208.decodeDouble(byte1 - 0x80, byte2 - 0x80);
         }
 
         private CoderResult decodeArrayLoop(ByteBuffer src,
@@ -127,8 +121,7 @@
 
             int b1 = 0, b2 = 0;
             int inputSize = 0;
-            char outputChar = REPLACE_CHAR; // U+FFFD;
-
+            char outputChar = UNMAPPABLE_DECODING;
             try {
                 while (sp < sl) {
                     b1 = sa[sp] & 0xff;
@@ -136,17 +129,17 @@
 
                     if ((b1 & 0x80) == 0) {
                         outputChar = (char)b1;
-                    }
-                    else {      // Multibyte char
-                        if ((b1 & 0xff) == 0x8f) {   // JIS0212
+                    } else {                        // Multibyte char
+                        if (b1 == 0x8f) {           // JIS0212
                             if (sp + 3 > sl)
                                return CoderResult.UNDERFLOW;
                             b1 = sa[sp + 1] & 0xff;
                             b2 = sa[sp + 2] & 0xff;
                             inputSize += 2;
-                            outputChar = decode0212(b1-0x80, b2-0x80);
-                        } else {
-                          // JIS0208
+                            if (dec0212 == null)    // JIS02012 not supported
+                                return CoderResult.unmappableForLength(inputSize);
+                            outputChar = dec0212.decodeDouble(b1-0x80, b2-0x80);
+                        } else {                     // JIS0201, JIS0208
                             if (sp + 2 > sl)
                                return CoderResult.UNDERFLOW;
                             b2 = sa[sp + 1] & 0xff;
@@ -154,7 +147,7 @@
                             outputChar = decodeDouble(b1, b2);
                         }
                     }
-                    if (outputChar == REPLACE_CHAR) { // can't be decoded
+                    if (outputChar == UNMAPPABLE_DECODING) { // can't be decoded
                         return CoderResult.unmappableForLength(inputSize);
                     }
                     if (dp + 1 > dl)
@@ -175,26 +168,25 @@
             int mark = src.position();
             int b1 = 0, b2 = 0;
             int inputSize = 0;
-
-            char outputChar = REPLACE_CHAR; // U+FFFD;
+            char outputChar = UNMAPPABLE_DECODING;
 
             try {
                 while (src.hasRemaining()) {
                     b1 = src.get() & 0xff;
                     inputSize = 1;
-
                     if ((b1 & 0x80) == 0) {
                         outputChar = (char)b1;
-                    } else {    // Multibyte char
-                        if ((b1 & 0xff) == 0x8f) {   // JIS0212
+                    } else {                         // Multibyte char
+                        if (b1 == 0x8f) {   // JIS0212
                             if (src.remaining() < 2)
                                return CoderResult.UNDERFLOW;
                             b1 = src.get() & 0xff;
                             b2 = src.get() & 0xff;
                             inputSize += 2;
-                            outputChar = decode0212(b1-0x80, b2-0x80);
-                        } else {
-                          // JIS0208
+                            if (dec0212 == null)    // JIS02012 not supported
+                                return CoderResult.unmappableForLength(inputSize);
+                            outputChar = dec0212.decodeDouble(b1-0x80, b2-0x80);
+                        } else {                     // JIS0201 JIS0208
                             if (src.remaining() < 1)
                                return CoderResult.UNDERFLOW;
                             b2 = src.get() & 0xff;
@@ -202,8 +194,7 @@
                             outputChar = decodeDouble(b1, b2);
                         }
                     }
-
-                    if (outputChar == REPLACE_CHAR) {
+                    if (outputChar == UNMAPPABLE_DECODING) {
                         return CoderResult.unmappableForLength(inputSize);
                     }
                 if (dst.remaining() < 1)
@@ -233,65 +224,67 @@
     }
 
 
-    static class Encoder extends JIS_X_0208_Encoder {
+    static class Encoder extends CharsetEncoder {
 
-        JIS_X_0201.Encoder encoderJ0201;
-        JIS_X_0212_Encoder encoderJ0212;
+        final static SingleByte.Encoder ENC0201 =
+            (SingleByte.Encoder)new JIS_X_0201().newEncoder();
 
-        private static final short[] j0208Index1 =
-          JIS_X_0208_Encoder.getIndex1();
-        private static final String[] j0208Index2 =
-          JIS_X_0208_Encoder.getIndex2();
+        final static DoubleByte.Encoder ENC0208 =
+            (DoubleByte.Encoder)new JIS_X_0208().newEncoder();
+
+        final static DoubleByte.Encoder ENC0212 =
+            (DoubleByte.Encoder)new JIS_X_0212().newEncoder();
 
         private final Surrogate.Parser sgp = new Surrogate.Parser();
 
+
+        private final SingleByte.Encoder enc0201;
+        private final DoubleByte.Encoder enc0208;
+        private final DoubleByte.Encoder enc0212;
+
         protected Encoder(Charset cs) {
-            super(cs, 3.0f, 3.0f);
-            encoderJ0201 = new JIS_X_0201.Encoder(cs);
-            encoderJ0212 = new JIS_X_0212_Encoder(cs);
+            this(cs, 3.0f, 3.0f, ENC0201, ENC0208, ENC0212);
+        }
+
+        protected Encoder(Charset cs, float avgBpc, float maxBpc,
+                          SingleByte.Encoder enc0201,
+                          DoubleByte.Encoder enc0208,
+                          DoubleByte.Encoder enc0212) {
+            super(cs, avgBpc, maxBpc);
+            this.enc0201 = enc0201;
+            this.enc0208 = enc0208;
+            this.enc0212 = enc0212;
         }
 
         public boolean canEncode(char c) {
             byte[]  encodedBytes = new byte[3];
-
-            if (encodeSingle(c, encodedBytes) == 0) { //doublebyte
-                if (encodeDouble(c) == 0)
-                    return false;
-            }
-            return true;
+            return encodeSingle(c, encodedBytes) != 0 ||
+                   encodeDouble(c) != UNMAPPABLE_ENCODING;
         }
 
         protected int encodeSingle(char inputChar, byte[] outputByte) {
-            byte b;
-
-            if (inputChar == 0) {
-                outputByte[0] = (byte)0;
+            int b = enc0201.encode(inputChar);
+            if (b == UNMAPPABLE_ENCODING)
+                return 0;
+            if (b >= 0 && b < 128) {
+                outputByte[0] = (byte)b;
                 return 1;
             }
-
-            if ((b = encoderJ0201.encode(inputChar)) == 0)
-                return 0;
-
-            if (b > 0 && b < 128) {
-                outputByte[0] = b;
-                return 1;
-            }
-
             outputByte[0] = (byte)0x8e;
-            outputByte[1] = b;
+            outputByte[1] = (byte)b;
             return 2;
         }
 
         protected int encodeDouble(char ch) {
-            int offset = j0208Index1[((ch & 0xff00) >> 8 )] << 8;
-            int r = j0208Index2[offset >> 12].charAt((offset & 0xfff) +
-                    (ch & 0xff));
-            if (r != 0)
-                return r + 0x8080;
-            r = encoderJ0212.encodeDouble(ch);
-            if (r == 0)
-                return r;
-            return r + 0x8F8080;
+            int b = enc0208.encodeChar(ch);
+            if (b != UNMAPPABLE_ENCODING)
+                return b + 0x8080;
+            if (enc0212 != null) {
+                b = enc0212.encodeChar(ch);
+                if (b != UNMAPPABLE_ENCODING)
+                    b += 0x8F8080;
+            }
+            return b;
         }
 
         private CoderResult encodeArrayLoop(CharBuffer src,
@@ -317,18 +310,15 @@
                 while (sp < sl) {
                     outputByte = tmpBuf;
                     char c = sa[sp];
-
                     if (Character.isSurrogate(c)) {
                         if (sgp.parse(c, sa, sp, sl) < 0)
                             return sgp.error();
                         return sgp.unmappableResult();
                     }
-
                     outputSize = encodeSingle(c, outputByte);
-
                     if (outputSize == 0) { // DoubleByte
                         int ncode = encodeDouble(c);
-                        if (ncode != 0 ) {
+                        if (ncode != UNMAPPABLE_ENCODING) {
                             if ((ncode & 0xFF0000) == 0) {
                                 outputByte[0] = (byte) ((ncode & 0xff00) >> 8);
                                 outputByte[1] = (byte) (ncode & 0xff);
@@ -340,7 +330,7 @@
                                 outputSize = 3;
                             }
                         } else {
-                                return CoderResult.unmappableForLength(1);
+                            return CoderResult.unmappableForLength(1);
                         }
                     }
                     if (dl - dp < outputSize)
@@ -377,11 +367,10 @@
                             return sgp.error();
                         return sgp.unmappableResult();
                     }
-
                     outputSize = encodeSingle(c, outputByte);
                     if (outputSize == 0) { // DoubleByte
                         int ncode = encodeDouble(c);
-                        if (ncode != 0 ) {
+                        if (ncode != UNMAPPABLE_ENCODING) {
                             if ((ncode & 0xFF0000) == 0) {
                                 outputByte[0] = (byte) ((ncode & 0xff00) >> 8);
                                 outputByte[1] = (byte) (ncode & 0xff);
@@ -393,10 +382,9 @@
                                 outputSize = 3;
                             }
                         } else {
-                                return CoderResult.unmappableForLength(1);
+                            return CoderResult.unmappableForLength(1);
                         }
                     }
-
                     if (dst.remaining() < outputSize)
                         return CoderResult.OVERFLOW;
                     // Put the byte in the output buffer
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/EUC_JP_LINUX.java
--- a/src/share/classes/sun/nio/cs/ext/EUC_JP_LINUX.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/nio/cs/ext/EUC_JP_LINUX.java	Fri Aug 24 09:29:17 2012 +0100
@@ -23,9 +23,6 @@
  * questions.
  */
 
-/*
- */
-
 package sun.nio.cs.ext;
 
 import java.nio.ByteBuffer;
@@ -35,7 +32,6 @@
 import java.nio.charset.CharsetEncoder;
 import java.nio.charset.CoderResult;
 import sun.nio.cs.HistoricallyNamedCharset;
-import sun.nio.cs.Surrogate;
 
 public class EUC_JP_LINUX
     extends Charset
@@ -63,308 +59,15 @@
         return new Encoder(this);
     }
 
-    private static class Decoder extends CharsetDecoder {
-        JIS_X_0201.Decoder decoderJ0201;
-        protected final char REPLACE_CHAR='\uFFFD';
-
-        private static final int start = 0xa1;
-        private static final int end = 0xfe;
-        private static final short[] jis0208Index1 =
-            JIS_X_0208_Decoder.getIndex1();
-        private static final String[] jis0208Index2 =
-            JIS_X_0208_Decoder.getIndex2();
-
+    private static class Decoder extends EUC_JP.Decoder {
         private Decoder(Charset cs) {
-            super(cs, 1.0f, 1.0f);
-            decoderJ0201 = new JIS_X_0201.Decoder(cs);
-        }
-
-        protected char convSingleByte(int b) {
-            if (b < 0 || b > 0x7f)
-                return REPLACE_CHAR;
-            return decoderJ0201.decode(b);
-        }
-
-        protected char decodeDouble(int byte1, int byte2) {
-            if (byte1 == 0x8e) {
-                return decoderJ0201.decode(byte2 - 256);
-            }
-
-            if (((byte1 < 0) || (byte1 > jis0208Index1.length))
-                || ((byte2 < start) || (byte2 > end)))
-                return REPLACE_CHAR;
-
-            int n = (jis0208Index1[byte1 - 0x80] & 0xf) * (end - start + 1)
-                    + (byte2 - start);
-            return jis0208Index2[jis0208Index1[byte1 - 0x80] >> 4].charAt(n);
-        }
-
-        private CoderResult decodeArrayLoop(ByteBuffer src,
-                                            CharBuffer dst)
-        {
-            byte[] sa = src.array();
-            int sp = src.arrayOffset() + src.position();
-            int sl = src.arrayOffset() + src.limit();
-            assert (sp <= sl);
-            sp = (sp <= sl ? sp : sl);
-
-            char[] da = dst.array();
-            int dp = dst.arrayOffset() + dst.position();
-            int dl = dst.arrayOffset() + dst.limit();
-            assert (dp <= dl);
-            dp = (dp <= dl ? dp : dl);
-
-            int b1 = 0, b2 = 0;
-            int inputSize = 0;
-            char outputChar = REPLACE_CHAR; // U+FFFD;
-
-            try {
-                while (sp < sl) {
-                    b1 = sa[sp] & 0xff;
-                    inputSize = 1;
-                    if ((b1 & 0x80) == 0) {
-                        outputChar = (char)b1;
-                    }
-                    else {      // Multibyte char
-                        if ((b1 & 0xff) == 0x8f) {   // JIS0212
-                            if (sp + 3 > sl)
-                               return CoderResult.UNDERFLOW;
-                            inputSize = 3;
-                            return CoderResult.unmappableForLength(inputSize); // substitute
-                        } else {
-                          // JIS0208
-                            if (sp + 2 > sl)
-                               return CoderResult.UNDERFLOW;
-                            b2 = sa[sp + 1] & 0xff;
-                            inputSize = 2;
-                            outputChar = decodeDouble(b1, b2);
-                        }
-                    }
-                    if (outputChar == REPLACE_CHAR) { // can't be decoded
-                        return CoderResult.unmappableForLength(inputSize);
-                    }
-                    if (dp + 1 > dl)
-                        return CoderResult.OVERFLOW;
-                    da[dp++] = outputChar;
-                    sp += inputSize;
-                }
-                return CoderResult.UNDERFLOW;
-            } finally {
-                src.position(sp - src.arrayOffset());
-                dst.position(dp - dst.arrayOffset());
-            }
-        }
-
-        private CoderResult decodeBufferLoop(ByteBuffer src,
-                                             CharBuffer dst)
-        {
-            int mark = src.position();
-            char outputChar = REPLACE_CHAR; // U+FFFD;
-
-            try {
-                while (src.hasRemaining()) {
-                    int b1 = src.get() & 0xff;
-                    int inputSize = 1;
-
-                    if ((b1 & 0x80) == 0) {
-                        outputChar = (char)b1;
-                    } else {    // Multibyte char
-
-                        if ((b1 & 0xff) == 0x8f) { // JIS0212 not supported
-                            if (src.remaining() < 2)
-                                return CoderResult.UNDERFLOW;
-                            return CoderResult.unmappableForLength(3);
-                        } else {
-                            // JIS0208
-                            if (src.remaining() < 1)
-                                return CoderResult.UNDERFLOW;
-                            int b2 = src.get() & 0xff;
-                            inputSize++;
-                            outputChar = decodeDouble(b1, b2);
-                        }
-                    }
-
-                    if (outputChar == REPLACE_CHAR)
-                        return CoderResult.unmappableForLength(inputSize);
-                    if (dst.remaining() < 1)
-                        return CoderResult.OVERFLOW;
-                    dst.put(outputChar);
-                    mark += inputSize;
-                }
-                return CoderResult.UNDERFLOW;
-            } finally {
-                src.position(mark);
-            }
-        }
-
-        protected CoderResult decodeLoop(ByteBuffer src,
-                                         CharBuffer dst)
-        {
-            if (src.hasArray() && dst.hasArray())
-                return decodeArrayLoop(src, dst);
-            else
-                return decodeBufferLoop(src, dst);
+            super(cs, 1.0f, 1.0f, DEC0201, DEC0208, null);
         }
     }
 
-
-    private static class Encoder extends CharsetEncoder {
-
-        JIS_X_0201.Encoder encoderJ0201;
-
-        private final Surrogate.Parser sgp = new Surrogate.Parser();
-        private static final short[] jis0208Index1 =
-            JIS_X_0208_Encoder.getIndex1();
-        private static final String[] jis0208Index2 =
-            JIS_X_0208_Encoder.getIndex2();
-
+    private static class Encoder extends EUC_JP.Encoder {
         private Encoder(Charset cs) {
-            super(cs, 2.0f, 2.0f);
-            encoderJ0201 = new JIS_X_0201.Encoder(cs);
-        }
-
-        public boolean canEncode(char c) {
-            byte[]  encodedBytes = new byte[2];
-
-            if (encodeSingle(c, encodedBytes) == 0) { //doublebyte
-                if (encodeDouble(c) == 0)
-                    return false;
-            }
-            return true;
-        }
-
-        protected int encodeSingle(char inputChar, byte[] outputByte) {
-            byte b;
-
-            if (inputChar == 0) {
-                outputByte[0] = (byte)0;
-                return 1;
-            }
-
-            if ((b = encoderJ0201.encode(inputChar)) == 0)
-                return 0;
-
-            if (b > 0 && b < 128) {
-                outputByte[0] = b;
-                return 1;
-            }
-            outputByte[0] = (byte)0x8e;
-            outputByte[1] = b;
-            return 2;
-        }
-
-        protected int encodeDouble(char ch) {
-            int offset = jis0208Index1[((ch & 0xff00) >> 8 )] << 8;
-            int r = jis0208Index2[offset >> 12].charAt((offset & 0xfff) + (ch & 0xff));
-            if (r != 0)
-                return r + 0x8080;
-            return r;
-        }
-
-        private CoderResult encodeArrayLoop(CharBuffer src,
-                                            ByteBuffer dst)
-        {
-            char[] sa = src.array();
-            int sp = src.arrayOffset() + src.position();
-            int sl = src.arrayOffset() + src.limit();
-            assert (sp <= sl);
-            sp = (sp <= sl ? sp : sl);
-            byte[] da = dst.array();
-            int dp = dst.arrayOffset() + dst.position();
-            int dl = dst.arrayOffset() + dst.limit();
-            assert (dp <= dl);
-            dp = (dp <= dl ? dp : dl);
-
-            final byte[]  outputByte = new byte[2];
-
-            try {
-                while (sp < sl) {
-                    char c = sa[sp];
-
-                    if (Character.isSurrogate(c)) {
-                        if (sgp.parse(c, sa, sp, sl) < 0)
-                            return sgp.error();
-                        return sgp.unmappableResult();
-                    }
-
-                    int outputSize = encodeSingle(c, outputByte);
-                    if (outputSize == 0) { // DoubleByte
-                        int ncode = encodeDouble(c);
-                        if (ncode != 0 && ((ncode & 0xFF0000) == 0)) {
-                                outputByte[0] = (byte) ((ncode & 0xff00) >> 8);
-                                outputByte[1] = (byte) (ncode & 0xff);
-                                outputSize = 2;
-                        } else {
-                                return CoderResult.unmappableForLength(1);
-                        }
-                    }
-
-                    if (dl - dp < outputSize)
-                        return CoderResult.OVERFLOW;
-                    // Put the byte in the output buffer
-                    for (int i = 0; i < outputSize; i++) {
-                        da[dp++] = outputByte[i];
-                    }
-                    sp++;
-                }
-                return CoderResult.UNDERFLOW;
-            } finally {
-                src.position(sp - src.arrayOffset());
-                dst.position(dp - dst.arrayOffset());
-            }
-        }
-
-        private CoderResult encodeBufferLoop(CharBuffer src,
-                                             ByteBuffer dst)
-        {
-            final byte[]  outputByte = new byte[4];
-            int mark = src.position();
-
-            try {
-                while (src.hasRemaining()) {
-                    char c = src.get();
-                    if (Character.isSurrogate(c)) {
-                        if (sgp.parse(c, src) < 0)
-                            return sgp.error();
-                        return sgp.unmappableResult();
-                    }
-
-                    int outputSize = encodeSingle(c, outputByte);
-                    if (outputSize == 0) { // DoubleByte
-                        int ncode = encodeDouble(c);
-                        if (ncode != 0 ) {
-                            if ((ncode & 0xFF0000) == 0) {
-                                outputByte[0] = (byte) ((ncode & 0xff00) >> 8);
-                                outputByte[1] = (byte) (ncode & 0xff);
-                                outputSize = 2;
-                            }
-                        } else {
-                                return CoderResult.unmappableForLength(1);
-                        }
-                    }
-
-                    if (dst.remaining() < outputSize)
-                        return CoderResult.OVERFLOW;
-
-                    // Put the byte in the output buffer
-                    for (int i = 0; i < outputSize; i++) {
-                        dst.put(outputByte[i]);
-                    }
-                    mark++;
-                }
-                return CoderResult.UNDERFLOW;
-            } finally {
-                src.position(mark);
-            }
-        }
-
-        protected CoderResult encodeLoop(CharBuffer src,
-                                         ByteBuffer dst)
-        {
-            if (src.hasArray() && dst.hasArray())
-                return encodeArrayLoop(src, dst);
-            else
-                return encodeBufferLoop(src, dst);
+            super(cs, 2.0f, 2.0f, ENC0201, ENC0208, null);
         }
     }
 }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/EUC_JP_Open.java
--- a/src/share/classes/sun/nio/cs/ext/EUC_JP_Open.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/nio/cs/ext/EUC_JP_Open.java	Fri Aug 24 09:29:17 2012 +0100
@@ -23,9 +23,6 @@
  * questions.
  */
 
-/*
- */
-
 package sun.nio.cs.ext;
 
 import java.nio.ByteBuffer;
@@ -35,7 +32,7 @@
 import java.nio.charset.CharsetEncoder;
 import java.nio.charset.CoderResult;
 import sun.nio.cs.HistoricallyNamedCharset;
-import sun.nio.cs.Surrogate;
+import static sun.nio.cs.CharsetMapping.*;
 
 public class EUC_JP_Open
     extends Charset
@@ -60,118 +57,55 @@
     }
 
     public CharsetEncoder newEncoder() {
-
-        // Need to force the replacement byte to 0x3f
-        // because JIS_X_0208_Encoder defines its own
-        // alternative 2 byte substitution to permit it
-        // to exist as a self-standing Encoder
-
-        byte[] replacementBytes = { (byte)0x3f };
-        return new Encoder(this).replaceWith(replacementBytes);
+        return new Encoder(this);
     }
 
     private static class Decoder extends EUC_JP.Decoder {
-        JIS_X_0201.Decoder decoderJ0201;
-        JIS_X_0212_Solaris_Decoder decodeMappingJ0212;
-        JIS_X_0208_Solaris_Decoder decodeMappingJ0208;
-
-        private static final short[] j0208Index1 =
-          JIS_X_0208_Solaris_Decoder.getIndex1();
-        private static final String[] j0208Index2 =
-          JIS_X_0208_Solaris_Decoder.getIndex2();
-        private static final int start = 0xa1;
-        private static final int end = 0xfe;
-
-        protected final char REPLACE_CHAR='\uFFFD';
+        private static DoubleByte.Decoder DEC0208_Solaris =
+            (DoubleByte.Decoder)new JIS_X_0208_Solaris().newDecoder();
+        private static DoubleByte.Decoder DEC0212_Solaris =
+            (DoubleByte.Decoder)new JIS_X_0212_Solaris().newDecoder();
 
         private Decoder(Charset cs) {
-            super(cs);
-            decoderJ0201 = new JIS_X_0201.Decoder(cs);
-            decodeMappingJ0212 = new JIS_X_0212_Solaris_Decoder(cs);
-        }
-
-
-        protected char decode0212(int byte1, int byte2) {
-             return decodeMappingJ0212.decodeDouble(byte1, byte2);
-
+            // JIS_X_0208_Solaris only has the "extra" mappings, it
+            // does not have the JIS_X_0208 entries
+            super(cs, 0.5f, 1.0f, DEC0201, DEC0208, DEC0212_Solaris);
         }
 
         protected char decodeDouble(int byte1, int byte2) {
-            if (byte1 == 0x8e) {
-                return decoderJ0201.decode(byte2 - 256);
-            }
-
-            if (((byte1 < 0)
-                || (byte1 > j0208Index1.length))
-                || ((byte2 < start)
-                || (byte2 > end)))
-                return REPLACE_CHAR;
-
-            char result = super.decodeDouble(byte1, byte2);
-            if (result != '\uFFFD') {
-                return result;
-            } else {
-                int n = (j0208Index1[byte1 - 0x80] & 0xf) *
-                        (end - start + 1)
-                        + (byte2 - start);
-                return j0208Index2[j0208Index1[byte1 - 0x80] >> 4].charAt(n);
-            }
+            char c = super.decodeDouble(byte1, byte2);
+            if (c == UNMAPPABLE_DECODING)
+                return DEC0208_Solaris.decodeDouble(byte1 - 0x80, byte2 - 0x80);
+            return c;
         }
     }
 
-
     private static class Encoder extends EUC_JP.Encoder {
-
-        JIS_X_0201.Encoder encoderJ0201;
-        JIS_X_0212_Solaris_Encoder encoderJ0212;
+        private static DoubleByte.Encoder ENC0208_Solaris =
+            (DoubleByte.Encoder)new JIS_X_0208_Solaris().newEncoder();
 
-        private static final short[] j0208Index1 =
-            JIS_X_0208_Solaris_Encoder.getIndex1();
-        private static final String[] j0208Index2 =
-            JIS_X_0208_Solaris_Encoder.getIndex2();
-
-        private final Surrogate.Parser sgp = new Surrogate.Parser();
+        private static DoubleByte.Encoder ENC0212_Solaris =
+            (DoubleByte.Encoder)new JIS_X_0212_Solaris().newEncoder();
 
         private Encoder(Charset cs) {
+            // The EUC_JP_Open has some interesting tweak for the
+            // encoding, so can't just pass the euc0208_solaris to
+            // the euc_jp. Have to override the encodeDouble() as
+            // showed below (mapping testing catches this).
+            // super(cs, 3.0f, 3.0f, ENC0201, ENC0208_Solaris, ENC0212_Solaris);
             super(cs);
-            encoderJ0201 = new JIS_X_0201.Encoder(cs);
-            encoderJ0212 = new JIS_X_0212_Solaris_Encoder(cs);
-        }
-
-        protected int encodeSingle(char inputChar, byte[] outputByte) {
-            byte b;
-
-            if (inputChar == 0) {
-                outputByte[0] = (byte)0;
-                return 1;
-            }
-
-            if ((b = encoderJ0201.encode(inputChar)) == 0)
-                return 0;
-
-            if (b > 0 && b < 128) {
-                outputByte[0] = b;
-                return 1;
-            }
-
-            outputByte[0] = (byte)0x8e;
-            outputByte[1] = b;
-            return 2;
         }
 
         protected int encodeDouble(char ch) {
-            int r = super.encodeDouble(ch);
-            if (r != 0) {
-                return r;
+            int b = super.encodeDouble(ch);
+            if (b != UNMAPPABLE_ENCODING)
+                return b;
+            b = ENC0208_Solaris.encodeChar(ch);
+            if (b != UNMAPPABLE_ENCODING && b > 0x7500) {
+                return 0x8F8080 + ENC0212_Solaris.encodeChar(ch);
             }
-            else {
-                int offset = j0208Index1[((ch & 0xff00) >> 8 )] << 8;
-                r = j0208Index2[offset >> 12].charAt((offset & 0xfff) +
-                    (ch & 0xFF));
-                if (r > 0x7500)
-                   return 0x8F8080 + encoderJ0212.encodeDouble(ch);
-                }
-                return (r==0 ? 0: r + 0x8080);
+            return b == UNMAPPABLE_ENCODING ? b : b + 0x8080;
+
         }
     }
 }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/IBM834.java
--- a/src/share/classes/sun/nio/cs/ext/IBM834.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/nio/cs/ext/IBM834.java	Fri Aug 24 09:29:17 2012 +0100
@@ -49,8 +49,8 @@
 
     public CharsetDecoder newDecoder() {
         IBM933.initb2c();
-        return new DoubleByte.Decoder_EBCDIC_DBCSONLY(
-            this, IBM933.b2c, 0x40, 0xfe);  // hardcode the b2min/max
+        return new DoubleByte.Decoder_DBCSONLY(
+            this, IBM933.b2c, null, 0x40, 0xfe);  // hardcode the b2min/max
     }
 
     public CharsetEncoder newEncoder() {
@@ -58,7 +58,7 @@
         return new Encoder(this);
     }
 
-    protected static class Encoder extends DoubleByte.Encoder_EBCDIC_DBCSONLY {
+    protected static class Encoder extends DoubleByte.Encoder_DBCSONLY {
         public Encoder(Charset cs) {
             super(cs, new byte[] {(byte)0xfe, (byte)0xfe},
                   IBM933.c2b, IBM933.c2bIndex);
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/ISO2022_JP.java
--- a/src/share/classes/sun/nio/cs/ext/ISO2022_JP.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/nio/cs/ext/ISO2022_JP.java	Fri Aug 24 09:29:17 2012 +0100
@@ -35,6 +35,7 @@
 import sun.nio.cs.HistoricallyNamedCharset;
 import sun.nio.cs.Surrogate;
 import sun.nio.cs.US_ASCII;
+import static sun.nio.cs.CharsetMapping.*;
 
 /*
  * Implementation notes:
@@ -154,73 +155,43 @@
     }
 
     public CharsetDecoder newDecoder() {
-        return new Decoder(this,
-                           getDecIndex1(),
-                           getDecIndex2(),
-                           get0212Decoder());
+        return new Decoder(this);
     }
 
     public CharsetEncoder newEncoder() {
-        return new Encoder(this,
-                           getEncIndex1(),
-                           getEncIndex2(),
-                           get0212Encoder(),
-                           doSBKANA());
-    }
-
-    protected short[] getDecIndex1() {
-        return JIS_X_0208_Decoder.getIndex1();
-    }
-
-    protected String[] getDecIndex2() {
-        return JIS_X_0208_Decoder.getIndex2();
-    }
-
-    protected DoubleByteDecoder get0212Decoder() {
-        return null;
-    }
-
-    protected short[] getEncIndex1() {
-        return JIS_X_0208_Encoder.getIndex1();
-    }
-
-    protected String[] getEncIndex2() {
-        return JIS_X_0208_Encoder.getIndex2();
-    }
-
-    protected DoubleByteEncoder get0212Encoder() {
-        return null;
+        return new Encoder(this);
     }
 
     protected boolean doSBKANA() {
         return true;
     }
 
-    private static class Decoder extends DoubleByteDecoder
+    static class Decoder extends CharsetDecoder
         implements DelegatableDecoder {
 
+        final static DoubleByte.Decoder DEC0208 =
+            (DoubleByte.Decoder)new JIS_X_0208().newDecoder();
+
         private int currentState;
         private int previousState;
-        private DoubleByteDecoder decoder0212;
+
+        private DoubleByte.Decoder dec0208;
+        private DoubleByte.Decoder dec0212;
+
+        private Decoder(Charset cs) {
+            this(cs, DEC0208, null);
+        }
 
         protected Decoder(Charset cs,
-                          short[] index1,
-                          String[] index2,
-                          DoubleByteDecoder decoder0212) {
-            super(cs,
-                  index1,
-                  index2,
-                  0x21,
-                  0x7e);
-            this.decoder0212 = decoder0212;
+                          DoubleByte.Decoder dec0208,
+                          DoubleByte.Decoder dec0212) {
+            super(cs, 0.5f, 1.0f);
+            this.dec0208 = dec0208;
+            this.dec0212 = dec0212;
             currentState = ASCII;
             previousState = ASCII;
         }
 
-        protected char convSingleByte(int b) {
-            return REPLACE_CHAR;
-        }
-
         public void implReset() {
             currentState = ASCII;
             previousState = ASCII;
@@ -231,7 +202,7 @@
         {
             int inputSize = 0;
             int b1 = 0, b2 = 0, b3 = 0, b4 = 0;
-            char c = REPLACE_CHAR;
+            char c = UNMAPPABLE_DECODING;
             byte[] sa = src.array();
             int sp = src.arrayOffset() + src.position();
             int sl = src.arrayOffset() + src.limit();
@@ -273,7 +244,7 @@
                                     currentState = JISX0208_1978;
                                 } else if (b3 == 'B'){
                                     currentState = JISX0208_1983;
-                                } else if (b3 == '(' && decoder0212 != null) {
+                                } else if (b3 == '(' && dec0212 != null) {
                                     if (sp + inputSize + 1 > sl)
                                         return CoderResult.UNDERFLOW;
                                     b4 = sa[sp + inputSize++] & 0xff;
@@ -322,8 +293,8 @@
                             if (sp + inputSize + 1 > sl)
                                 return CoderResult.UNDERFLOW;
                             b2 = sa[sp + inputSize++] & 0xff;
-                            c = decodeDouble(b1,b2);
-                            if (c == REPLACE_CHAR)
+                            c = dec0208.decodeDouble(b1,b2);
+                            if (c == UNMAPPABLE_DECODING)
                                 return CoderResult.unmappableForLength(inputSize);
                             da[dp++] = c;
                             break;
@@ -331,8 +302,8 @@
                             if (sp + inputSize + 1 > sl)
                                 return CoderResult.UNDERFLOW;
                             b2 = sa[sp + inputSize++] & 0xff;
-                            c = decoder0212.decodeDouble(b1,b2);
-                            if (c == REPLACE_CHAR)
+                            c = dec0212.decodeDouble(b1,b2);
+                            if (c == UNMAPPABLE_DECODING)
                                 return CoderResult.unmappableForLength(inputSize);
                             da[dp++] = c;
                             break;
@@ -358,7 +329,7 @@
         {
             int mark = src.position();
             int b1 = 0, b2 = 0, b3 = 0, b4=0;
-            char c = REPLACE_CHAR;
+            char c = UNMAPPABLE_DECODING;
             int inputSize = 0;
             try {
                 while (src.hasRemaining()) {
@@ -391,7 +362,7 @@
                                     currentState = JISX0208_1978;
                                 } else if (b3 == 'B'){
                                     currentState = JISX0208_1983;
-                                } else if (b3 == '(' && decoder0212 != null) {
+                                } else if (b3 == '(' && dec0212 != null) {
                                     if (!src.hasRemaining())
                                         return CoderResult.UNDERFLOW;
                                     b4 = src.get() & 0xff;
@@ -442,8 +413,8 @@
                                 return CoderResult.UNDERFLOW;
                             b2 = src.get() & 0xff;
                             inputSize++;
-                            c = decodeDouble(b1,b2);
-                            if (c == REPLACE_CHAR)
+                            c = dec0208.decodeDouble(b1,b2);
+                            if (c == UNMAPPABLE_DECODING)
                                 return CoderResult.unmappableForLength(inputSize);
                             dst.put(c);
                             break;
@@ -452,8 +423,8 @@
                                 return CoderResult.UNDERFLOW;
                             b2 = src.get() & 0xff;
                             inputSize++;
-                            c = decoder0212.decodeDouble(b1,b2);
-                            if (c == REPLACE_CHAR)
+                            c = dec0212.decodeDouble(b1,b2);
+                            if (c == UNMAPPABLE_DECODING)
                                 return CoderResult.unmappableForLength(inputSize);
                             dst.put(c);
                             break;
@@ -486,25 +457,29 @@
         }
     }
 
-    private static class Encoder extends DoubleByteEncoder {
+    static class Encoder extends CharsetEncoder {
+
+        final static DoubleByte.Encoder ENC0208 =
+            (DoubleByte.Encoder)new JIS_X_0208().newEncoder();
+
         private static byte[] repl = { (byte)0x21, (byte)0x29 };
         private int currentMode = ASCII;
         private int replaceMode = JISX0208_1983;
-        private DoubleByteEncoder encoder0212 = null;
+        private DoubleByte.Encoder enc0208;
+        private DoubleByte.Encoder enc0212;
         private boolean doSBKANA;
 
-        private Encoder(Charset cs,
-                        short[] index1,
-                        String[] index2,
-                        DoubleByteEncoder encoder0212,
-                        boolean doSBKANA) {
-            super(cs,
-                  index1,
-                  index2,
-                  repl,
-                  4.0f,
-                  (encoder0212 != null)? 9.0f : 8.0f);
-            this.encoder0212 = encoder0212;
+        private Encoder(Charset cs) {
+            this(cs, ENC0208, null, true);
+        }
+
+        Encoder(Charset cs,
+                DoubleByte.Encoder enc0208,
+                DoubleByte.Encoder enc0212,
+                boolean doSBKANA) {
+            super(cs, 4.0f, (enc0212 != null)? 9.0f : 8.0f, repl);
+            this.enc0208 = enc0208;
+            this.enc0212 = enc0212;
             this.doSBKANA = doSBKANA;
         }
 
@@ -545,8 +520,8 @@
                     (c >= 0xFF61 && c <= 0xFF9F) ||
                     (c == '\u00A5') ||
                     (c == '\u203E') ||
-                    super.canEncode(c) ||
-                    (encoder0212!=null && encoder0212.canEncode(c)));
+                    enc0208.canEncode(c) ||
+                    (enc0212!=null && enc0212.canEncode(c)));
         }
 
         private final Surrogate.Parser sgp = new Surrogate.Parser();
@@ -607,8 +582,8 @@
                             return CoderResult.OVERFLOW;
                         da[dp++] = (c == '\u00A5')?(byte)0x5C:(byte)0x7e;
                     } else {
-                        int index = encodeDouble(c);
-                        if (index != 0) {
+                        int index = enc0208.encodeChar(c);
+                        if (index != UNMAPPABLE_ENCODING) {
                             if (currentMode != JISX0208_1983) {
                                 if (dl - dp < 3)
                                     return CoderResult.OVERFLOW;
@@ -621,8 +596,8 @@
                                 return CoderResult.OVERFLOW;
                             da[dp++] = (byte)(index >> 8);
                             da[dp++] = (byte)(index & 0xff);
-                        } else if (encoder0212 != null &&
-                                   (index = encoder0212.encodeDouble(c)) != 0) {
+                        } else if (enc0212 != null &&
+                                   (index = enc0212.encodeChar(c)) != UNMAPPABLE_ENCODING) {
                             if (currentMode != JISX0212_1990) {
                                 if (dl - dp < 4)
                                     return CoderResult.OVERFLOW;
@@ -715,8 +690,8 @@
                             return CoderResult.OVERFLOW;
                         dst.put((c == '\u00A5')?(byte)0x5C:(byte)0x7e);
                     } else {
-                        int index = encodeDouble(c);
-                        if (index != 0) {
+                        int index = enc0208.encodeChar(c);
+                        if (index != UNMAPPABLE_ENCODING) {
                             if (currentMode != JISX0208_1983) {
                                 if (dst.remaining() < 3)
                                     return CoderResult.OVERFLOW;
@@ -729,8 +704,8 @@
                                 return CoderResult.OVERFLOW;
                             dst.put((byte)(index >> 8));
                             dst.put((byte)(index & 0xff));
-                        } else if (encoder0212 != null &&
-                                   (index = encoder0212.encodeDouble(c)) != 0) {
+                        } else if (enc0212 != null &&
+                                   (index = enc0212.encodeChar(c)) != UNMAPPABLE_ENCODING) {
                             if (currentMode != JISX0212_1990) {
                                 if (dst.remaining() < 4)
                                     return CoderResult.OVERFLOW;
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/ISO2022_JP_2.java
--- a/src/share/classes/sun/nio/cs/ext/ISO2022_JP_2.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/nio/cs/ext/ISO2022_JP_2.java	Fri Aug 24 09:29:17 2012 +0100
@@ -26,6 +26,8 @@
 package sun.nio.cs.ext;
 
 import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
 
 public class ISO2022_JP_2 extends ISO2022_JP
 {
@@ -44,12 +46,18 @@
              (cs instanceof ISO2022_JP_2);
     }
 
-    protected DoubleByteDecoder get0212Decoder() {
-        return new JIS_X_0212_Decoder(this);
+    public CharsetDecoder newDecoder() {
+        return new Decoder(this, Decoder.DEC0208, DEC0212);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new Encoder(this, Encoder.ENC0208, ENC0212, true);
     }
 
-    protected DoubleByteEncoder get0212Encoder() {
-        return new JIS_X_0212_Encoder(this);
-    }
+    private final static DoubleByte.Decoder DEC0212 =
+        (DoubleByte.Decoder)new JIS_X_0212().newDecoder();
+
+    private final static DoubleByte.Encoder ENC0212 =
+        (DoubleByte.Encoder)new JIS_X_0212().newEncoder();
 
 }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0201.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0201.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,226 +0,0 @@
-/*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import sun.nio.cs.SingleByteEncoder;
-import sun.nio.cs.SingleByteDecoder;
-
-public class JIS_X_0201
-    extends Charset
-{
-
-    public JIS_X_0201() {
-        super("JIS_X0201", ExtendedCharsets.aliasesFor("JIS_X0201"));
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof JIS_X_0201));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    public static class Decoder extends SingleByteDecoder {
-
-        public Decoder(Charset cs) {
-            super(cs, byteToCharTable);
-        }
-
-        private final static String byteToCharTable =
-
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +    // 0x80 - 0x87
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +    // 0x88 - 0x8F
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +    // 0x90 - 0x97
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +    // 0x98 - 0x9F
-        "\uFFFD\uFF61\uFF62\uFF63\uFF64\uFF65\uFF66\uFF67" +    // 0xA0 - 0xA7
-        "\uFF68\uFF69\uFF6A\uFF6B\uFF6C\uFF6D\uFF6E\uFF6F" +    // 0xA8 - 0xAF
-        "\uFF70\uFF71\uFF72\uFF73\uFF74\uFF75\uFF76\uFF77" +    // 0xB0 - 0xB7
-        "\uFF78\uFF79\uFF7A\uFF7B\uFF7C\uFF7D\uFF7E\uFF7F" +    // 0xB8 - 0xBF
-        "\uFF80\uFF81\uFF82\uFF83\uFF84\uFF85\uFF86\uFF87" +    // 0xC0 - 0xC7
-        "\uFF88\uFF89\uFF8A\uFF8B\uFF8C\uFF8D\uFF8E\uFF8F" +    // 0xC8 - 0xCF
-        "\uFF90\uFF91\uFF92\uFF93\uFF94\uFF95\uFF96\uFF97" +    // 0xD0 - 0xD7
-        "\uFF98\uFF99\uFF9A\uFF9B\uFF9C\uFF9D\uFF9E\uFF9F" +    // 0xD8 - 0xDF
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +    // 0xE0 - 0xE7
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +    // 0xE8 - 0xEF
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +    // 0xF0 - 0xF7
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +    // 0xF8 - 0xFF
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +    // 0x00 - 0x07
-        "\b\t\n\u000B\f\r\u000E\u000F" +        // 0x08 - 0x0F
-        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +    // 0x10 - 0x17
-        "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +    // 0x18 - 0x1F
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +    // 0x20 - 0x27
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +    // 0x28 - 0x2F
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +    // 0x30 - 0x37
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +    // 0x38 - 0x3F
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +    // 0x40 - 0x47
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +    // 0x48 - 0x4F
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +    // 0x50 - 0x57
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +        // 0x58 - 0x5F
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +    // 0x60 - 0x67
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +    // 0x68 - 0x6F
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +    // 0x70 - 0x77
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F";     // 0x78 - 0x7F
-    }
-
-    public static class Encoder extends SingleByteEncoder {
-
-        public Encoder(Charset cs) {
-            super(cs, index1, index2, 0xFF00, 0x00FF, 8);
-        }
-
-        private final static String index2 =
-
-            "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-            "\b\t\n\u000B\f\r\u000E\u000F" +
-            "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-            "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-            "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" +
-            "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-            "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-            "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-            "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-            "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-            "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-            "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-            "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-            "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-            "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-            "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\\\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u007E\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8" +
-            "\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0" +
-            "\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8" +
-            "\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0" +
-            "\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8" +
-            "\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0" +
-            "\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8" +
-            "\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" +
-            "\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-        private final static short index1[] = {
-            0, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            360, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
-            166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 519,
-        };
-    }
-
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0208.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0208.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-
-public class JIS_X_0208
-    extends Charset
-{
-
-    public JIS_X_0208() {
-        super("x-JIS0208", ExtendedCharsets.aliasesFor("x-JIS0208"));
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof JIS_X_0208);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new JIS_X_0208_Encoder(this);
-    }
-
-    private static class Decoder extends JIS_X_0208_Decoder {
-        protected char decodeSingle(int b) {
-            return DoubleByteDecoder.REPLACE_CHAR;
-        }
-
-        public Decoder(Charset cs) {
-            super(cs);
-        }
-    }
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0208_Decoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0208_Decoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1010 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-
-public class JIS_X_0208_Decoder extends DoubleByteDecoder
-{
-    public JIS_X_0208_Decoder(Charset cs) {
-        super(cs,
-              index1,
-              index2,
-              0x21,
-              0x7E);
-    }
-
-    private final static String innerIndex0=
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u3000\u3001"+
-        "\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01"+
-        "\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F"+
-        "\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006"+
-        "\u3007\u30FC\u2014\u2010\uFF0F\uFF3C\u301C\u2016"+
-        "\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08"+
-        "\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008"+
-        "\u3009\u300A\u300B\u300C\u300D\u300E\u300F\u3010"+
-        "\u3011\uFF0B\u2212\u00B1\u00D7\u00F7\uFF1D\u2260"+
-        "\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640"+
-        "\u00B0\u2032\u2033\u2103\uFFE5\uFF04\u00A2\u00A3"+
-        "\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605"+
-        "\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3"+
-        "\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191"+
-        "\u2193\u3013\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2208\u220B\u2286"+
-        "\u2287\u2282\u2283\u222A\u2229\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2227\u2228\u00AC"+
-        "\u21D2\u21D4\u2200\u2203\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2220"+
-        "\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B"+
-        "\u221A\u223D\u221D\u2235\u222B\u222C\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u212B\u2030\u266F"+
-        "\u266D\u266A\u2020\u2021\u00B6\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u25EF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15\uFF16"+
-        "\uFF17\uFF18\uFF19\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26"+
-        "\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E"+
-        "\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36"+
-        "\uFF37\uFF38\uFF39\uFF3A\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46"+
-        "\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E"+
-        "\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56"+
-        "\uFF57\uFF58\uFF59\uFF5A\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048"+
-        "\u3049\u304A\u304B\u304C\u304D\u304E\u304F\u3050"+
-        "\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058"+
-        "\u3059\u305A\u305B\u305C\u305D\u305E\u305F\u3060"+
-        "\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068"+
-        "\u3069\u306A\u306B\u306C\u306D\u306E\u306F\u3070"+
-        "\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078"+
-        "\u3079\u307A\u307B\u307C\u307D\u307E\u307F\u3080"+
-        "\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088"+
-        "\u3089\u308A\u308B\u308C\u308D\u308E\u308F\u3090"+
-        "\u3091\u3092\u3093\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u30A1\u30A2"+
-        "\u30A3\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA"+
-        "\u30AB\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2"+
-        "\u30B3\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA"+
-        "\u30BB\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2"+
-        "\u30C3\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA"+
-        "\u30CB\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2"+
-        "\u30D3\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA"+
-        "\u30DB\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2"+
-        "\u30E3\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA"+
-        "\u30EB\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2"+
-        "\u30F3\u30F4\u30F5\u30F6\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u0391\u0392\u0393\u0394"+
-        "\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C"+
-        "\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5"+
-        "\u03A6\u03A7\u03A8\u03A9\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u03B1\u03B2\u03B3\u03B4"+
-        "\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC"+
-        "\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C4\u03C5"+
-        "\u03C6\u03C7\u03C8\u03C9\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u0410\u0411\u0412\u0413\u0414\u0415"+
-        "\u0401\u0416\u0417\u0418\u0419\u041A\u041B\u041C"+
-        "\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424"+
-        "\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C"+
-        "\u042D\u042E\u042F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u0430\u0431\u0432\u0433\u0434\u0435"+
-        "\u0451\u0436\u0437\u0438\u0439\u043A\u043B\u043C"+
-        "\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444"+
-        "\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C"+
-        "\u044D\u044E\u044F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C"+
-        "\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B"+
-        "\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F"+
-        "\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u4E9C\u5516"+
-        "\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475"+
-        "\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6"+
-        "\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B"+
-        "\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89"+
-        "\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5"+
-        "\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01"+
-        "\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F"+
-        "\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02"+
-        "\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1"+
-        "\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B"+
-        "\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15"+
-        "\u98F2\u6DEB\u80E4\u852D\u9662\u9670\u96A0\u97FB"+
-        "\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F"+
-        "\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504"+
-        "\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F"+
-        "\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6"+
-        "\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29"+
-        "\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED"+
-        "\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2"+
-        "\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6"+
-        "\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159"+
-        "\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B"+
-        "\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965"+
-        "\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B"+
-        "\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B"+
-        "\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA"+
-        "\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE"+
-        "\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F"+
-        "\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C"+
-        "\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1"+
-        "\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629"+
-        "\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211"+
-        "\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913"+
-        "\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB"+
-        "\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"+
-        "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75"+
-        "\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916"+
-        "\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB"+
-        "\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3"+
-        "\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1"+
-        "\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A"+
-        "\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66"+
-        "\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F"+
-        "\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B"+
-        "\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6"+
-        "\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC"+
-        "\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208"+
-        "\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8"+
-        "\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB"+
-        "\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562"+
-        "\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97"+
-        "\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21"+
-        "\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC"+
-        "\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3"+
-        "\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C"+
-        "\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858"+
-        "\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09"+
-        "\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7"+
-        "\u65E2\u671F\u68CB\u68C4\u6A5F\u5E30\u6BC5\u6C17"+
-        "\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F"+
-        "\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C"+
-        "\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC"+
-        "\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70"+
-        "\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58"+
-        "\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650"+
-        "\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE"+
-        "\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078"+
-        "\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7"+
-        "\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20"+
-        "\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8"+
-        "\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171"+
-        "\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1"+
-        "\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B"+
-        "\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E"+
-        "\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D"+
-        "\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81"+
-        "\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D"+
-        "\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F"+
-        "\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036"+
-        "\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6"+
-        "\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076"+
-        "\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48";
-
-    private final static String innerIndex1=
-        "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688"+
-        "\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB"+
-        "\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2"+
-        "\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951"+
-        "\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A"+
-        "\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C"+
-        "\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63"+
-        "\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287"+
-        "\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A"+
-        "\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039"+
-        "\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805"+
-        "\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29"+
-        "\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9"+
-        "\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855"+
-        "\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B"+
-        "\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650"+
-        "\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1"+
-        "\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA"+
-        "\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237"+
-        "\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449"+
-        "\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A"+
-        "\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4"+
-        "\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9"+
-        "\u52FE\u539A\u53E3\u5411\u540E\u5589\u5751\u57A2"+
-        "\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78"+
-        "\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8"+
-        "\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897"+
-        "\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687"+
-        "\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015"+
-        "\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C"+
-        "\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F"+
-        "\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B"+
-        "\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F"+
-        "\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60"+
-        "\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8"+
-        "\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE"+
-        "\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7"+
-        "\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506"+
-        "\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50"+
-        "\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D"+
-        "\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1"+
-        "\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826"+
-        "\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264"+
-        "\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A"+
-        "\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C"+
-        "\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56"+
-        "\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"+
-        "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1"+
-        "\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09"+
-        "\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6"+
-        "\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178"+
-        "\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F"+
-        "\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9"+
-        "\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307"+
-        "\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B"+
-        "\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2"+
-        "\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE"+
-        "\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D"+
-        "\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB"+
-        "\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033"+
-        "\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B"+
-        "\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931"+
-        "\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F"+
-        "\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E"+
-        "\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E"+
-        "\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F"+
-        "\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B"+
-        "\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B"+
-        "\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152"+
-        "\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC"+
-        "\u9700\u56DA\u53CE\u5468\u5B97\u5C31\u5DDE\u4FEE"+
-        "\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2"+
-        "\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F"+
-        "\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145"+
-        "\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26"+
-        "\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E"+
-        "\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB"+
-        "\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC"+
-        "\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1"+
-        "\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9"+
-        "\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8"+
-        "\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664"+
-        "\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546"+
-        "\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F"+
-        "\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284"+
-        "\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E"+
-        "\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C"+
-        "\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0"+
-        "\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549"+
-        "\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE"+
-        "\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08"+
-        "\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22"+
-        "\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573"+
-        "\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"+
-        "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6"+
-        "\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507"+
-        "\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B"+
-        "\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E"+
-        "\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB"+
-        "\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875"+
-        "\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663"+
-        "\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017"+
-        "\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B"+
-        "\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E"+
-        "\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E"+
-        "\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A"+
-        "\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2"+
-        "\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674"+
-        "\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE"+
-        "\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D"+
-        "\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D"+
-        "\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D"+
-        "\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207"+
-        "\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC"+
-        "\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360"+
-        "\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813"+
-        "\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D"+
-        "\u65CB\u7A7F\u7BAD\u7DDA\u7E4A\u7FA8\u817A\u821B"+
-        "\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD"+
-        "\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168"+
-        "\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA"+
-        "\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956"+
-        "\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061"+
-        "\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE"+
-        "\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C"+
-        "\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD"+
-        "\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF"+
-        "\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB"+
-        "\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF"+
-        "\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074"+
-        "\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F"+
-        "\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176"+
-        "\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6"+
-        "\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0"+
-        "\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53"+
-        "\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B"+
-        "\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B"+
-        "\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0"+
-        "\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353"+
-        "\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422"+
-        "\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"+
-        "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA"+
-        "\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39"+
-        "\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1"+
-        "\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6"+
-        "\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696"+
-        "\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B"+
-        "\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718"+
-        "\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010"+
-        "\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99"+
-        "\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B"+
-        "\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457"+
-        "\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33"+
-        "\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2"+
-        "\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178"+
-        "\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802"+
-        "\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3"+
-        "\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A"+
-        "\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C"+
-        "\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A"+
-        "\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD"+
-        "\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A"+
-        "\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A"+
-        "\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247"+
-        "\u8A02\u8AE6\u8E44\u9013\u90B8\u912D\u91D8\u9F0E"+
-        "\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069"+
-        "\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244"+
-        "\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C"+
-        "\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530"+
-        "\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92"+
-        "\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD"+
-        "\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012"+
-        "\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858"+
-        "\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771"+
-        "\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F"+
-        "\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6"+
-        "\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46"+
-        "\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8"+
-        "\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E"+
-        "\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07"+
-        "\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4"+
-        "\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934"+
-        "\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F"+
-        "\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7"+
-        "\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E"+
-        "\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357"+
-        "\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9"+
-        "\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165";
-
-    private final static String innerIndex2=
-        "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1"+
-        "\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5"+
-        "\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC"+
-        "\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2"+
-        "\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2"+
-        "\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3"+
-        "\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC"+
-        "\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973"+
-        "\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F"+
-        "\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF"+
-        "\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD"+
-        "\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1"+
-        "\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551"+
-        "\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10"+
-        "\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4"+
-        "\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C"+
-        "\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554"+
-        "\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812"+
-        "\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE"+
-        "\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249"+
-        "\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891"+
-        "\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F"+
-        "\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787"+
-        "\u6BD8\u7435\u7709\u7F8E\u9F3B\u67CA\u7A17\u5339"+
-        "\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5"+
-        "\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E"+
-        "\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968"+
-        "\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7"+
-        "\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C"+
-        "\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D"+
-        "\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C"+
-        "\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26"+
-        "\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C"+
-        "\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8"+
-        "\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9"+
-        "\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17"+
-        "\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674"+
-        "\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B"+
-        "\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63"+
-        "\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73"+
-        "\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511"+
-        "\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4"+
-        "\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217"+
-        "\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42"+
-        "\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9"+
-        "\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0"+
-        "\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"+
-        "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C"+
-        "\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD"+
-        "\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8"+
-        "\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2"+
-        "\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E"+
-        "\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2"+
-        "\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86"+
-        "\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469"+
-        "\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE"+
-        "\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52"+
-        "\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4"+
-        "\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513"+
-        "\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C"+
-        "\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720"+
-        "\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B"+
-        "\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7"+
-        "\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF"+
-        "\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F"+
-        "\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728"+
-        "\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E"+
-        "\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6"+
-        "\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79"+
-        "\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453"+
-        "\u6109\u6108\u6CB9\u7652\u8AED\u8F38\u552F\u4F51"+
-        "\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6"+
-        "\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950"+
-        "\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915"+
-        "\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C"+
-        "\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A"+
-        "\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000"+
-        "\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A"+
-        "\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0"+
-        "\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B"+
-        "\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB"+
-        "\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8"+
-        "\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678"+
-        "\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41"+
-        "\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D"+
-        "\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21"+
-        "\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD"+
-        "\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818"+
-        "\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433"+
-        "\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99"+
-        "\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA"+
-        "\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A"+
-        "\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2"+
-        "\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"+
-        "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2"+
-        "\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C"+
-        "\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E"+
-        "\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6"+
-        "\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0"+
-        "\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900"+
-        "\u6E7E\u7897\u8155\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u5F0C\u4E10"+
-        "\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56"+
-        "\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E"+
-        "\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE"+
-        "\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF"+
-        "\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47"+
-        "\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91"+
-        "\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8"+
-        "\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028"+
-        "\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029"+
-        "\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703"+
-        "\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080"+
-        "\u509A\u5085\u50B4\u50B2\u50C9\u50CA\u50B3\u50C2"+
-        "\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5"+
-        "\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121"+
-        "\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C"+
-        "\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182"+
-        "\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196"+
-        "\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1"+
-        "\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0"+
-        "\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B"+
-        "\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F"+
-        "\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269"+
-        "\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288"+
-        "\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1"+
-        "\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3"+
-        "\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310"+
-        "\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338"+
-        "\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E"+
-        "\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0"+
-        "\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9"+
-        "\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401"+
-        "\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429"+
-        "\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477"+
-        "\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486"+
-        "\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"+
-        "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6"+
-        "\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539"+
-        "\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557"+
-        "\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F"+
-        "\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9"+
-        "\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4"+
-        "\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9"+
-        "\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B"+
-        "\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0"+
-        "\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC"+
-        "\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7"+
-        "\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B"+
-        "\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737"+
-        "\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788"+
-        "\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA"+
-        "\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6"+
-        "\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B"+
-        "\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F"+
-        "\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3"+
-        "\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF"+
-        "\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A"+
-        "\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938"+
-        "\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962"+
-        "\u5960\u5967\u596C\u5969\u5978\u5981\u599D\u4F5E"+
-        "\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9"+
-        "\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40"+
-        "\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC"+
-        "\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9"+
-        "\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0"+
-        "\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55"+
-        "\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78"+
-        "\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7"+
-        "\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5"+
-        "\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D"+
-        "\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46"+
-        "\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62"+
-        "\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB"+
-        "\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9"+
-        "\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17"+
-        "\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19"+
-        "\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76"+
-        "\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD"+
-        "\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6"+
-        "\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11"+
-        "\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57"+
-        "\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A"+
-        "\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF";
-
-    private final static String innerIndex3=
-        "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8"+
-        "\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE"+
-        "\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29"+
-        "\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51"+
-        "\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83"+
-        "\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99"+
-        "\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4"+
-        "\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019"+
-        "\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026"+
-        "\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A"+
-        "\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B"+
-        "\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B"+
-        "\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0"+
-        "\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D"+
-        "\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103"+
-        "\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128"+
-        "\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142"+
-        "\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174"+
-        "\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199"+
-        "\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB"+
-        "\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6"+
-        "\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA"+
-        "\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209"+
-        "\u620D\u620C\u6214\u621B\u621E\u6221\u622A\u622E"+
-        "\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B"+
-        "\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293"+
-        "\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF"+
-        "\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2"+
-        "\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302"+
-        "\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F"+
-        "\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389"+
-        "\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6"+
-        "\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406"+
-        "\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467"+
-        "\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9"+
-        "\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8"+
-        "\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3"+
-        "\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD"+
-        "\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535"+
-        "\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D"+
-        "\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A"+
-        "\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4"+
-        "\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772"+
-        "\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C"+
-        "\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667"+
-        "\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689"+
-        "\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"+
-        "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9"+
-        "\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727"+
-        "\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746"+
-        "\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9"+
-        "\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7"+
-        "\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE"+
-        "\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C"+
-        "\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3"+
-        "\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD"+
-        "\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5"+
-        "\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908"+
-        "\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7"+
-        "\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9"+
-        "\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6"+
-        "\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E"+
-        "\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D"+
-        "\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3"+
-        "\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7"+
-        "\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8"+
-        "\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05"+
-        "\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1"+
-        "\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47"+
-        "\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D"+
-        "\u6AA0\u6A84\u6AA2\u6AA3\u6A97\u8617\u6ABB\u6AC3"+
-        "\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA"+
-        "\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16"+
-        "\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47"+
-        "\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61"+
-        "\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98"+
-        "\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1"+
-        "\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC"+
-        "\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B"+
-        "\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D"+
-        "\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90"+
-        "\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE"+
-        "\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F"+
-        "\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33"+
-        "\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59"+
-        "\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5"+
-        "\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8"+
-        "\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE"+
-        "\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23"+
-        "\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E"+
-        "\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9"+
-        "\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5"+
-        "\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC"+
-        "\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"+
-        "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80"+
-        "\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E"+
-        "\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9"+
-        "\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1"+
-        "\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F"+
-        "\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030"+
-        "\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1"+
-        "\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9"+
-        "\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166"+
-        "\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195"+
-        "\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4"+
-        "\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF"+
-        "\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232"+
-        "\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274"+
-        "\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7"+
-        "\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2"+
-        "\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C"+
-        "\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E"+
-        "\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375"+
-        "\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5"+
-        "\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432"+
-        "\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469"+
-        "\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7"+
-        "\u74CA\u74CF\u74D4\u73F1\u74E0\u74E3\u74E7\u74E9"+
-        "\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503"+
-        "\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526"+
-        "\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546"+
-        "\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576"+
-        "\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A"+
-        "\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD"+
-        "\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3"+
-        "\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2"+
-        "\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621"+
-        "\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646"+
-        "\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667"+
-        "\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683"+
-        "\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0"+
-        "\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2"+
-        "\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708"+
-        "\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B"+
-        "\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765"+
-        "\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E"+
-        "\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7"+
-        "\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C"+
-        "\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886"+
-        "\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1"+
-        "\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"+
-        "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919"+
-        "\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955"+
-        "\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA"+
-        "\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC"+
-        "\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F"+
-        "\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49"+
-        "\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88"+
-        "\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6"+
-        "\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF"+
-        "\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6"+
-        "\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18"+
-        "\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04"+
-        "\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67"+
-        "\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D"+
-        "\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB"+
-        "\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11"+
-        "\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3"+
-        "\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F"+
-        "\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40"+
-        "\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75"+
-        "\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8"+
-        "\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5"+
-        "\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2"+
-        "\u7CF4\u7CF6\u7CFA\u7D06\u7D02\u7D1C\u7D15\u7D0A"+
-        "\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73"+
-        "\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93"+
-        "\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3"+
-        "\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC"+
-        "\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB"+
-        "\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31"+
-        "\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35"+
-        "\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56"+
-        "\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B"+
-        "\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C"+
-        "\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C"+
-        "\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51"+
-        "\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67"+
-        "\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94"+
-        "\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE"+
-        "\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4"+
-        "\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004"+
-        "\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F"+
-        "\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062"+
-        "\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F"+
-        "\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190"+
-        "\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6"+
-        "\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B";
-
-    private final static String innerIndex4=
-        "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E"+
-        "\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182"+
-        "\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0"+
-        "\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9"+
-        "\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0"+
-        "\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207"+
-        "\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233"+
-        "\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262"+
-        "\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E"+
-        "\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3"+
-        "\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB"+
-        "\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334"+
-        "\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F"+
-        "\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2"+
-        "\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373"+
-        "\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE"+
-        "\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0"+
-        "\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB"+
-        "\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD"+
-        "\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435"+
-        "\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB"+
-        "\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF"+
-        "\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC"+
-        "\u8540\u8563\u8558\u8548\u8541\u8602\u854B\u8555"+
-        "\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594"+
-        "\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9"+
-        "\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC"+
-        "\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622"+
-        "\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667"+
-        "\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6"+
-        "\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4"+
-        "\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706"+
-        "\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9"+
-        "\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A"+
-        "\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768"+
-        "\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F"+
-        "\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB"+
-        "\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0"+
-        "\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811"+
-        "\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827"+
-        "\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B"+
-        "\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882"+
-        "\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0"+
-        "\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD"+
-        "\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C"+
-        "\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941"+
-        "\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"+
-        "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E"+
-        "\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6"+
-        "\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA"+
-        "\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10"+
-        "\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52"+
-        "\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82"+
-        "\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3"+
-        "\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4"+
-        "\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C"+
-        "\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33"+
-        "\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F"+
-        "\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C"+
-        "\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93"+
-        "\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C"+
-        "\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82"+
-        "\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98"+
-        "\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6"+
-        "\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB"+
-        "\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E"+
-        "\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73"+
-        "\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6"+
-        "\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC"+
-        "\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42"+
-        "\u8E35\u8E30\u8E34\u8E4A\u8E47\u8E49\u8E4C\u8E50"+
-        "\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76"+
-        "\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A"+
-        "\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0"+
-        "\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3"+
-        "\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12"+
-        "\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33"+
-        "\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46"+
-        "\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F"+
-        "\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA"+
-        "\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015"+
-        "\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035"+
-        "\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049"+
-        "\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8"+
-        "\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F"+
-        "\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB"+
-        "\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158"+
-        "\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182"+
-        "\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0"+
-        "\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB"+
-        "\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215"+
-        "\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295"+
-        "\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A"+
-        "\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"+
-        "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C"+
-        "\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394"+
-        "\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD"+
-        "\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407"+
-        "\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452"+
-        "\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470"+
-        "\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F"+
-        "\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0"+
-        "\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA"+
-        "\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC"+
-        "\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642"+
-        "\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F"+
-        "\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA"+
-        "\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9"+
-        "\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5"+
-        "\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F"+
-        "\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E"+
-        "\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764"+
-        "\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C"+
-        "\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8"+
-        "\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB"+
-        "\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F"+
-        "\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F"+
-        "\u984B\u986B\u986F\u9870\u9871\u9874\u9873\u98AA"+
-        "\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB"+
-        "\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E"+
-        "\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949"+
-        "\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997"+
-        "\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD"+
-        "\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8"+
-        "\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45"+
-        "\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57"+
-        "\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD"+
-        "\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE"+
-        "\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4"+
-        "\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22"+
-        "\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F"+
-        "\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58"+
-        "\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0"+
-        "\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1"+
-        "\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2"+
-        "\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06"+
-        "\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24"+
-        "\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60"+
-        "\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08"+
-        "\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F"+
-        "\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"+
-        "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89"+
-        "\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2"+
-        "\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2"+
-        "\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A"+
-        "\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B"+
-        "\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8"+
-        "\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4"+
-        "\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4"+
-        "\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08"+
-        "\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54"+
-        "\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A"+
-        "\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7"+
-        "\u9059\u7464\u51DC\u7199\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD";
-
-    private final static short index1[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0,
-        9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
-        25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
-        41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
-        57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
-        73, 74, 75, 76, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-
-    private final static String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4
-    };
-
-
-    protected char convSingleByte(int b) {
-        return REPLACE_CHAR;
-    }
-
-    static short[] getIndex1() {
-       return index1;
-    }
-
-    static String[] getIndex2() {
-       return index2;
-    }
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0208_Encoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0208_Encoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3123 +0,0 @@
-/*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetEncoder;
-
-public class JIS_X_0208_Encoder extends DoubleByteEncoder
-{
-
-    /*
-     * default replacement defined merely for pseudo
-     * charset x-JIS-X-0208 to instantiate with a
-     * decodeable replacement byte sequence
-     * JIS X 0208(1987) 0x2129 maps to FULLWIDTH QUESTION MARK
-     *
-     */
-
-    private static byte[] repl = { (byte)0x21, (byte)0x29 };
-
-    public JIS_X_0208_Encoder(Charset cs) {
-        super(cs,
-              index1,
-              index2 ,
-              repl
-             );
-    }
-    public JIS_X_0208_Encoder(Charset cs, float avg, float max) {
-        super(cs,
-              index1,
-              index2 ,
-              repl,
-              avg,
-              max
-             );
-    }
-
-    protected int encodeSingle(char inputChar) {
-        return -1;
-    }
-
-    static short[] getIndex1() {
-       return index1;
-    }
-
-    static String[] getIndex2() {
-       return index2;
-    }
-
-    private final static String innerIndex0=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2171\u2172\u0000\u0000\u0000\u2178"+
-        "\u212F\u0000\u0000\u0000\u224C\u0000\u0000\u0000"+
-        "\u216B\u215E\u0000\u0000\u212D\u0000\u2279\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u215F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u2160"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2621\u2622\u2623\u2624\u2625\u2626\u2627"+
-        "\u2628\u2629\u262A\u262B\u262C\u262D\u262E\u262F"+
-        "\u2630\u2631\u0000\u2632\u2633\u2634\u2635\u2636"+
-        "\u2637\u2638\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2641\u2642\u2643\u2644\u2645\u2646\u2647"+
-        "\u2648\u2649\u264A\u264B\u264C\u264D\u264E\u264F"+
-        "\u2650\u2651\u0000\u2652\u2653\u2654\u2655\u2656"+
-        "\u2657\u2658\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2727\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2721\u2722\u2723\u2724\u2725\u2726\u2728\u2729"+
-        "\u272A\u272B\u272C\u272D\u272E\u272F\u2730\u2731"+
-        "\u2732\u2733\u2734\u2735\u2736\u2737\u2738\u2739"+
-        "\u273A\u273B\u273C\u273D\u273E\u273F\u2740\u2741"+
-        "\u2751\u2752\u2753\u2754\u2755\u2756\u2758\u2759"+
-        "\u275A\u275B\u275C\u275D\u275E\u275F\u2760\u2761"+
-        "\u2762\u2763\u2764\u2765\u2766\u2767\u2768\u2769"+
-        "\u276A\u276B\u276C\u276D\u276E\u276F\u2770\u2771"+
-        "\u0000\u2757\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u213E\u0000\u0000\u0000\u213D\u0000\u2142\u0000"+
-        "\u2146\u2147\u0000\u0000\u2148\u2149\u0000\u0000"+
-        "\u2277\u2278\u0000\u0000\u0000\u2145\u2144\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2273\u0000\u216C\u216D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2228\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u216E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2272\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u222B\u222C\u222A\u222D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u224D\u0000\u224E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u224F\u0000\u225F\u2250\u0000\u0000\u0000\u2260"+
-        "\u223A\u0000\u0000\u223B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u215D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2265\u0000\u0000\u2267\u2167\u0000"+
-        "\u225C\u0000\u0000\u0000\u0000\u0000\u0000\u224A"+
-        "\u224B\u2241\u2240\u2269\u226A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2168\u2268\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2266\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2262\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2162\u2261\u0000\u0000\u0000\u0000\u2165\u2166"+
-        "\u0000\u0000\u2263\u2264\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u223E\u223F\u0000\u0000\u223C\u223D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u225D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u225E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2821\u282C\u2822\u282D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2823\u0000\u0000\u282E"+
-        "\u2824\u0000\u0000\u282F\u2826\u0000\u0000\u2831"+
-        "\u2825\u0000\u0000\u2830\u2827\u283C\u0000\u0000"+
-        "\u2837\u0000\u0000\u2832\u2829\u283E\u0000\u0000"+
-        "\u2839\u0000\u0000\u2834\u2828\u0000\u0000\u2838"+
-        "\u283D\u0000\u0000\u2833\u282A\u0000\u0000\u283A"+
-        "\u283F\u0000\u0000\u2835\u282B\u0000\u0000\u283B"+
-        "\u0000\u0000\u2840\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2836\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2223\u2222\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2225\u2224\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2227\u2226\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2221\u217E"+
-        "\u0000\u0000\u0000\u217B\u0000\u0000\u217D\u217C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u227E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u217A\u2179\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u216A\u0000\u2169\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2276\u0000\u0000\u2275\u0000\u2274"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2121\u2122\u2123\u2137\u0000\u2139\u213A\u213B"+
-        "\u2152\u2153\u2154\u2155\u2156\u2157\u2158\u2159"+
-        "\u215A\u215B\u2229\u222E\u214C\u214D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2141\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2421\u2422\u2423\u2424\u2425\u2426\u2427"+
-        "\u2428\u2429\u242A\u242B\u242C\u242D\u242E\u242F"+
-        "\u2430\u2431\u2432\u2433\u2434\u2435\u2436\u2437"+
-        "\u2438\u2439\u243A\u243B\u243C\u243D\u243E\u243F"+
-        "\u2440\u2441\u2442\u2443\u2444\u2445\u2446\u2447"+
-        "\u2448\u2449\u244A\u244B\u244C\u244D\u244E\u244F"+
-        "\u2450\u2451\u2452\u2453\u2454\u2455\u2456\u2457"+
-        "\u2458\u2459\u245A\u245B\u245C\u245D\u245E\u245F"+
-        "\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467"+
-        "\u2468\u2469\u246A\u246B\u246C\u246D\u246E\u246F"+
-        "\u2470\u2471\u2472\u2473\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u212B\u212C\u2135\u2136\u0000"+
-        "\u0000\u2521\u2522\u2523\u2524\u2525\u2526\u2527"+
-        "\u2528\u2529\u252A\u252B\u252C\u252D\u252E\u252F"+
-        "\u2530\u2531\u2532\u2533\u2534\u2535\u2536\u2537"+
-        "\u2538\u2539\u253A\u253B\u253C\u253D\u253E\u253F"+
-        "\u2540\u2541\u2542\u2543\u2544\u2545\u2546\u2547"+
-        "\u2548\u2549\u254A\u254B\u254C\u254D\u254E\u254F"+
-        "\u2550\u2551\u2552\u2553\u2554\u2555\u2556\u2557"+
-        "\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F"+
-        "\u2560\u2561\u2562\u2563\u2564\u2565\u2566\u2567"+
-        "\u2568\u2569\u256A\u256B\u256C\u256D\u256E\u256F"+
-        "\u2570\u2571\u2572\u2573\u2574\u2575\u2576\u0000"+
-        "\u0000\u0000\u0000\u2126\u213C\u2133\u2134\u0000"+
-        "\u306C\u437A\u0000\u3C37\u0000\u0000\u0000\u4B7C"+
-        "\u3E66\u3B30\u3E65\u323C\u0000\u4954\u4D3F\u0000"+
-        "\u5022\u312F\u0000\u0000\u336E\u5023\u4024\u5242"+
-        "\u3556\u4A3A\u0000\u0000\u0000\u0000\u3E67\u0000"+
-        "\u0000\u4E3E\u0000\u0000\u0000\u0000\u4A42\u0000"+
-        "\u0000\u0000\u5024\u0000\u0000\u4366\u0000\u0000"+
-        "\u0000\u5025\u367A\u0000\u0000\u0000\u5026\u0000"+
-        "\u345D\u4330\u0000\u3C67\u5027\u0000\u0000\u5028"+
-        "\u0000\u0000\u5029\u4735\u0000\u3557\u0000\u0000"+
-        "\u0000\u0000\u0000\u4737\u0000\u4663\u3843\u4B33"+
-        "\u0000\u0000\u0000\u0000\u0000\u6949\u502A\u3E68"+
-        "\u502B\u3235\u0000\u0000\u0000\u3665\u3870\u4C69"+
-        "\u0000\u0000\u5626\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4D70\u0000\u467D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3425\u0000"+
-        "\u3535\u0000\u502C\u0000\u0000\u502D\u4E3B\u0000"+
-        "\u4D3D\u4168\u502F\u3B76\u4673\u0000\u5032\u0000"+
-        "\u0000\u313E\u385F\u0000\u385E\u3066\u0000\u0000"+
-        "\u4F4B\u4F4A\u0000\u3A33\u3021\u0000\u5033\u5034"+
-        "\u5035\u4B34\u5036\u0000\u3872\u3067\u4B72\u0000"+
-        "\u357C\u0000\u0000\u357D\u357E\u4462\u4E3C\u0000"+
-        "\u5037\u0000\u0000\u5038\u0000\u0000\u5039\u0000"+
-        "\u0000\u0000\u3F4D\u0000\u0000\u0000\u0000\u0000"+
-        "\u3D3A\u3F4E\u503E\u0000\u503C\u0000\u503D\u3558"+
-        "\u0000\u0000\u3A23\u3270\u0000\u503B\u503A\u4A29"+
-        "\u0000\u0000\u0000\u0000\u3B46\u3B45\u423E\u503F"+
-        "\u4955\u4067\u0000\u0000\u0000\u2138\u5040\u5042"+
-        "\u0000\u0000\u0000\u4265\u4E61\u304A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5041\u323E\u0000"+
-        "\u3644\u0000\u4367\u0000\u0000\u0000\u376F\u5043"+
-        "\u0000\u0000\u0000\u4724\u0000\u0000\u0000\u0000"+
-        "\u0000\u346B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5044\u304B\u0000\u0000\u3860\u346C\u497A"+
-        "\u4832\u3559\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3271\u0000\u5067\u4541\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u476C"+
-        "\u5046\u0000\u0000\u0000\u483C\u0000\u4E62\u0000"+
-        "\u3F2D\u0000\u3B47\u0000\u3B77\u3240\u0000\u0000"+
-        "\u0000\u0000\u0000\u4451\u0000\u0000\u4322\u504A"+
-        "\u0000\u0000\u0000\u0000\u0000\u304C\u4463\u3D3B"+
-        "\u3A34\u4D24\u0000\u424E\u0000\u323F\u0000\u5049"+
-        "\u0000\u4D3E\u5045\u5047\u3A6E\u5048\u5524\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5050\u0000\u0000\u0000\u0000\u0000\u5053"+
-        "\u5051\u0000\u0000\u3242\u0000\u4A3B\u504B\u0000"+
-        "\u0000\u0000\u0000\u504F\u3873\u0000\u0000\u3B48"+
-        "\u0000\u0000\u0000\u3426\u0000\u0000\u5054\u0000"+
-        "\u504C\u0000\u0000\u4E63\u0000\u3B78\u0000\u504D"+
-        "\u0000\u5052\u0000\u0000\u0000\u0000\u5055\u0000"+
-        "\u504E\u0000\u0000\u3621\u0000\u304D\u0000\u0000"+
-        "\u3622\u3241\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5525\u0000\u4B79\u496E\u3874"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F2F\u4E37\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4A58"+
-        "\u0000\u0000\u3738\u4225\u3264\u0000\u0000\u0000"+
-        "\u0000\u0000\u3D53\u0000\u0000\u0000\u5059\u0000"+
-        "\u505E\u505C\u0000\u0000\u5057\u0000\u0000\u422F"+
-        "\u505A\u0000\u505D\u505B\u0000\u4A5D\u0000\u5058"+
-        "\u0000\u3F2E\u0000\u4B73\u505F\u5060\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3D24\u506D"+
-        "\u0000\u0000\u0000\u4750\u0000\u4936\u5068\u0000"+
-        "\u4A70\u0000\u3236\u0000\u0000\u0000\u506C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5066\u506F\u0000"+
-        "\u0000\u4152\u0000\u3844\u0000\u475C\u0000\u6047"+
-        "\u0000\u506E\u455D\u0000\u5063\u0000\u3876\u0000"+
-        "\u0000\u3875\u5061\u0000\u0000\u0000\u0000\u3C5A"+
-        "\u0000\u5069\u0000\u4A6F\u434D\u5065\u3771\u0000"+
-        "\u5062\u506A\u5064\u4E51\u506B\u4F41\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3666\u0000"+
-        "\u0000\u3770\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5070\u0000\u0000\u0000\u5071"+
-        "\u5075\u304E\u0000\u0000\u0000\u0000\u0000\u4A50"+
-        "\u5074\u0000\u0000\u0000\u0000\u5073\u5077\u0000"+
-        "\u0000\u0000\u5076\u0000\u4464\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3772\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5078\u0000\u0000\u0000"+
-        "\u0000\u0000\u3C45\u0000\u4226\u4465\u3676\u0000"+
-        "\u5079\u0000\u0000\u0000\u0000\u3536\u0000\u0000"+
-        "\u507A\u0000\u0000\u0000\u0000\u507C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4B35\u0000\u0000"+
-        "\u0000\u3766\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3B31\u4877\u507B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3A45\u4D43\u0000\u0000"+
-        "\u0000\u0000\u507E\u5123\u507D\u3A44\u0000\u3D7D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3739\u0000"+
-        "\u0000\u0000\u5124\u0000\u0000\u364F\u0000\u0000"+
-        "\u0000\u5121\u5122\u0000\u0000\u462F\u0000\u417C"+
-        "\u0000\u3623\u0000\u0000\u0000\u4B4D\u5125\u0000"+
-        "\u0000\u0000\u4E3D\u0000\u0000\u0000\u5126\u0000"+
-        "\u0000\u0000\u0000\u5129\u0000\u5127\u0000\u414E"+
-        "\u0000\u0000\u0000\u0000\u0000\u5128\u512A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u512C\u0000\u0000"+
-        "\u0000\u512B\u0000\u4A48\u0000\u0000\u0000\u0000"+
-        "\u3537\u512E\u512F\u0000\u322F\u0000\u0000\u0000"+
-        "\u0000\u512D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3C74\u0000\u5132\u5131\u5130\u0000"+
-        "\u5056\u0000\u5133\u0000\u0000\u0000\u0000\u3D7E"+
-        "\u0000\u5134\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D25\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C59\u0000\u0000\u0000\u0000\u5136"+
-        "\u0000\u0000\u5135\u5138\u5137\u0000\u0000\u5139"+
-        "\u513A\u3074\u0000\u3835\u373B\u3D3C\u437B\u3624"+
-        "\u4068\u3877\u0000\u396E\u513C\u4C48\u4546\u0000"+
-        "\u3B79\u0000\u513B\u0000\u513D\u0000\u0000\u0000"+
-        "\u0000\u0000\u455E\u0000\u3375\u0000\u0000\u0000"+
-        "\u0000\u0000\u513E\u0000\u0000\u467E\u0000\u0000"+
-        "\u4134\u5140\u5141\u482C\u3878\u4F3B\u5142\u0000"+
-        "\u0000\u3626\u0000\u0000\u0000\u4A3C\u4236\u3671"+
-        "\u4535\u0000\u0000\u0000\u3773\u0000\u0000\u0000"+
-        "\u5143\u0000\u5144\u0000\u0000\u4662\u315F\u0000"+
-        "\u0000\u5147\u3A7D\u0000\u5146\u3A46\u0000\u5148"+
-        "\u666E\u5149\u4B41\u514A\u0000\u514B\u514C\u3E69"+
-        "\u0000\u3C4C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3427\u0000\u514F\u0000\u514D\u4C3D\u514E\u0000"+
-        "\u495A\u5150\u5151\u5152\u455F\u0000\u0000\u0000"+
-        "\u5156\u5154\u5155\u5153\u3A63\u5157\u4C6A\u4E64"+
-        "\u0000\u0000\u0000\u0000\u0000\u5158\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4028\u5159\u3D5A\u0000"+
-        "\u0000\u515A\u0000\u437C\u4E3F\u4560\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5245\u0000"+
-        "\u0000\u0000\u0000\u515B\u7425\u3645\u0000\u0000"+
-        "\u515C\u4B5E\u0000\u0000\u0000\u0000\u3D68\u427C"+
-        "\u0000\u515E\u4664\u0000\u0000\u515F\u0000\u0000"+
-        "\u5160\u332E\u0000\u0000\u0000\u5161\u3627\u0000"+
-        "\u464C\u317A\u3D50\u0000\u0000\u4821\u5162\u0000"+
-        "\u4561\u0000\u0000\u3F4F\u5163\u0000\u4A2C\u405A"+
-        "\u3422\u0000\u3429\u5164\u0000\u0000\u5166\u0000"+
-        "\u0000\u373A\u0000\u0000\u5165\u0000\u0000\u4E73"+
-        "\u0000\u0000\u0000\u0000\u0000\u3D69\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u483D\u4A4C\u0000\u5167"+
-        "\u0000\u4D78\u5168\u0000\u0000\u0000\u5169\u0000"+
-        "\u457E\u0000\u0000\u516A\u0000\u0000\u4029\u3A7E"+
-        "\u3774\u516B\u3B49\u396F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4466\u516D\u0000\u0000\u4227"+
-        "\u0000\u0000\u3A6F\u516E\u516F\u4130\u0000\u516C"+
-        "\u0000\u0000\u0000\u0000\u5171\u0000\u4B36\u0000"+
-        "\u0000\u0000\u0000\u3964\u0000\u0000\u5170\u0000"+
-        "\u0000\u0000\u0000\u3775\u3A5E\u476D\u0000\u0000"+
-        "\u0000\u5174\u5172\u0000\u0000\u0000\u0000\u497B"+
-        "\u3E6A\u517B\u3364\u5175\u5173\u414F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5177\u0000\u5176"+
-        "\u0000\u0000\u0000\u3344\u0000\u0000\u0000\u3760"+
-        "\u517C\u4E2D\u0000\u0000\u0000\u5178\u0000\u0000"+
-        "\u0000\u517D\u517A\u0000\u5179\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4E4F\u0000\u0000\u0000\u3879"+
-        "\u3243\u0000\u0000\u4E74\u0000\u0000\u0000\u0000"+
-        "\u0000\u3D75\u4558\u3965\u5222\u5223\u0000\u0000"+
-        "\u0000\u4E65\u0000\u0000\u4F2B\u5225\u0000\u0000"+
-        "\u0000\u387A\u0000\u0000\u5224\u0000\u332F\u0000"+
-        "\u0000\u5226\u0000\u4B56\u0000\u443C\u0000\u4D26"+
-        "\u0000\u4A59\u0000\u0000\u0000\u5227\u0000\u0000"+
-        "\u0000\u0000\u7055\u0000\u0000\u4630\u0000\u5228"+
-        "\u342A\u4C33\u0000\u0000\u0000\u3E21\u5229\u4A67"+
-        "\u522D\u0000\u402A\u522A\u3650\u0000\u522B\u342B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u372E\u522E\u0000\u522F\u0000\u0000"+
-        "\u5230\u5231\u3C5B\u0000\u0000\u0000\u387B\u4C5E";
-
-    private final static String innerIndex1=
-        "\u0000\u4C68\u4677\u0000\u0000\u4A71\u5232\u0000"+
-        "\u5233\u0000\u0000\u0000\u0000\u5235\u0000\u5237"+
-        "\u5236\u0000\u0000\u0000\u0000\u5238\u323D\u4B4C"+
-        "\u0000\u3A7C\u5239\u0000\u0000\u4159\u0000\u0000"+
-        "\u3E22\u3629\u0000\u523A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u485B\u0000\u0000\u0000\u0000\u523B"+
-        "\u0000\u523C\u0000\u523D\u0000\u0000\u0000\u0000"+
-        "\u523E\u4924\u3668\u3065\u0000\u0000\u0000\u463F"+
-        "\u523F\u3D3D\u0000\u4069\u0000\u5241\u5240\u3E23"+
-        "\u3861\u5243\u483E\u0000\u0000\u5244\u0000\u0000"+
-        "\u0000\u485C\u4234\u426E\u3628\u0000\u0000\u466E"+
-        "\u4331\u0000\u476E\u0000\u4B4E\u0000\u5246\u0000"+
-        "\u406A\u0000\u0000\u0000\u0000\u0000\u3735\u0000"+
-        "\u0000\u5247\u0000\u0000\u0000\u0000\u5248\u312C"+
-        "\u3075\u346D\u0000\u4228\u3551\u4D71\u0000\u524B"+
-        "\u3237\u0000\u0000\u524A\u0000\u0000\u0000\u362A"+
-        "\u0000\u0000\u524C\u0000\u4C71\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u524D\u0000"+
-        "\u4E52\u0000\u387C\u0000\u0000\u0000\u0000\u3836"+
-        "\u524E\u0000\u0000\u0000\u0000\u5250\u524F\u0000"+
-        "\u3F5F\u3139\u0000\u0000\u0000\u315E\u5251\u0000"+
-        "\u5252\u0000\u0000\u3837\u0000\u0000\u5253\u0000"+
-        "\u0000\u0000\u0000\u356E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B32\u5254\u0000\u0000\u0000\u0000"+
-        "\u4B74\u3A35\u355A\u4D27\u4150\u483F\u3C7D\u0000"+
-        "\u0000\u0000\u0000\u0000\u3D47\u0000\u3C68\u3C75"+
-        "\u0000\u3D76\u0000\u4840\u0000\u0000\u0000\u5257"+
-        "\u0000\u3143\u4151\u387D\u3845\u3667\u0000\u0000"+
-        "\u525B\u4321\u427E\u362B\u3E24\u525C\u525A\u3244"+
-        "\u4266\u3C38\u3B4B\u3126\u0000\u0000\u3370\u3966"+
-        "\u3B4A\u0000\u525D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u525E\u0000\u3549\u3346\u0000\u0000\u0000"+
-        "\u3967\u3548\u445F\u3125\u4631\u4C3E\u3921\u4D79"+
-        "\u4547\u387E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u372F\u0000\u5267\u0000\u3663"+
-        "\u4B4A\u0000\u0000\u0000\u0000\u0000\u485D\u0000"+
-        "\u0000\u5266\u0000\u345E\u5261\u5262\u5264\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5265\u0000"+
-        "\u355B\u3F61\u0000\u4A2D\u5263\u525F\u3863\u0000"+
-        "\u5260\u0000\u4F24\u0000\u0000\u0000\u4A72\u0000"+
-        "\u4468\u3862\u3970\u0000\u0000\u0000\u5268\u0000"+
-        "\u0000\u465D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u526C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C7E\u0000\u3C76\u0000\u0000\u0000\u0000\u0000"+
-        "\u526F\u526D\u0000\u4C23\u0000\u526A\u5273\u526E"+
-        "\u0000\u0000\u0000\u5271\u3846\u4C3F\u0000\u0000"+
-        "\u5272\u0000\u0000\u0000\u5274\u0000\u5276\u0000"+
-        "\u0000\u0000\u0000\u3A70\u4F42\u0000\u526B\u5269"+
-        "\u5275\u0000\u5270\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5278\u0000\u5323\u527A\u0000\u0000"+
-        "\u527E\u0000\u0000\u5321\u527B\u0000\u0000\u533E"+
-        "\u0000\u0000\u3A69\u3331\u0000\u0000\u0000\u0000"+
-        "\u5279\u0000\u0000\u0000\u5325\u3076\u5324\u0000"+
-        "\u3025\u494A\u5322\u0000\u527C\u0000\u0000\u5277"+
-        "\u527D\u3A48\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5326\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3077\u532F\u0000\u0000\u5327\u5328\u0000"+
-        "\u3E25\u4B69\u0000\u0000\u0000\u532D\u532C\u0000"+
-        "\u0000\u0000\u452F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u532E\u0000\u0000\u532B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3134\u0000\u3A36\u3F30"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5329"+
-        "\u4562\u0000\u0000\u0000\u532A\u0000\u3022\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5334\u4D23"+
-        "\u0000\u3E27\u0000\u533A\u0000\u0000\u0000\u0000"+
-        "\u5339\u5330\u0000\u0000\u0000\u0000\u4243\u0000"+
-        "\u5331\u0000\u0000\u0000\u426F\u5336\u3E26\u0000"+
-        "\u0000\u0000\u0000\u0000\u5333\u0000\u0000\u4C64"+
-        "\u0000\u0000\u0000\u373C\u0000\u0000\u5337\u5338"+
-        "\u0000\u0000\u0000\u0000\u5335\u533B\u0000\u0000"+
-        "\u0000\u0000\u0000\u5332\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5341\u5346\u0000\u5342\u0000"+
-        "\u533D\u0000\u0000\u5347\u4131\u0000\u0000\u5349"+
-        "\u0000\u3922\u533F\u437D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5343\u533C\u342D\u0000\u346E\u3365\u5344\u5340"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3776"+
-        "\u534A\u5348\u4153\u354A\u362C\u0000\u5345\u0000"+
-        "\u3674\u0000\u0000\u0000\u0000\u0000\u3144\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u534E\u534C\u0000\u5427"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5351\u0000\u0000\u0000"+
-        "\u0000\u0000\u534B\u0000\u534F\u0000\u0000\u534D"+
-        "\u0000\u0000\u0000\u3B4C\u5350\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5353"+
-        "\u0000\u5358\u0000\u0000\u0000\u5356\u5355\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4332\u0000"+
-        "\u0000\u3245\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5352\u0000\u5354\u3E28"+
-        "\u3133\u0000\u0000\u5357\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u325E\u0000\u0000\u0000\u0000\u0000\u5362"+
-        "\u0000\u3E7C\u535E\u0000\u535C\u0000\u535D\u0000"+
-        "\u535F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u313D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4139\u0000\u5359\u0000"+
-        "\u535A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u337A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5361\u0000\u0000\u0000"+
-        "\u346F\u0000\u5364\u5360\u5363\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4A2E\u0000\u0000\u0000"+
-        "\u4655\u0000\u4838\u0000\u0000\u0000\u0000\u0000"+
-        "\u5366\u0000\u0000\u0000\u0000\u0000\u5365\u3345"+
-        "\u0000\u0000\u5367\u0000\u0000\u0000\u0000\u536A"+
-        "\u0000\u0000\u0000\u0000\u5369\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5368\u0000\u4739\u0000\u0000\u536B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u536C\u0000"+
-        "\u0000\u0000\u0000\u0000\u536E\u0000\u536D\u0000"+
-        "\u0000\u0000\u0000\u0000\u5370\u0000\u0000\u0000"+
-        "\u5373\u5371\u536F\u5372\u0000\u0000\u0000\u0000"+
-        "\u5374\u0000\u0000\u0000\u0000\u0000\u5375\u0000"+
-        "\u0000\u5376\u0000\u5377\u0000\u0000\u0000\u5378"+
-        "\u5145\u0000\u3C7C\u3B4D\u0000\u0000\u3273\u0000"+
-        "\u3078\u0000\u0000\u4344\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5379\u0000"+
-        "\u3A24\u0000\u304F\u3F5E\u0000\u0000\u0000\u0000"+
-        "\u0000\u537A\u3847\u0000\u0000\u3971\u0000\u537C"+
-        "\u537B\u0000\u0000\u4A60\u537D\u0000\u0000\u0000"+
-        "\u5421\u537E\u0000\u5422\u0000\u5423\u0000\u3777"+
-        "\u0000\u0000\u3160\u5424\u0000\u0000\u5426\u0000"+
-        "\u5425\u0000\u0000\u0000\u5428\u0000\u0000\u455A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5429\u3035"+
-        "\u3A5F\u0000\u0000\u0000\u0000\u373D\u0000\u0000"+
-        "\u434F\u0000\u0000\u0000\u0000\u0000\u0000\u542A"+
-        "\u542B\u0000\u0000\u542D\u0000\u0000\u0000\u0000"+
-        "\u542E\u0000\u3A64\u0000\u0000\u0000\u0000\u3651"+
-        "\u0000\u0000\u4B37\u0000\u0000\u0000\u542C\u542F"+
-        "\u3A41\u3923\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5433\u0000\u0000\u3A25\u0000\u4333\u0000"+
-        "\u0000\u5430\u445A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5434"+
-        "\u0000\u0000\u3F62\u0000\u0000\u0000\u0000\u0000"+
-        "\u5432\u5435\u0000\u373F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5436\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5437\u0000\u3924\u3340\u5439\u0000\u0000\u0000"+
-        "\u0000\u0000\u543A\u0000\u0000\u0000\u0000\u0000"+
-        "\u543B\u0000\u0000\u5438\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5431\u0000\u0000\u543C\u0000\u0000\u543D\u0000"+
-        "\u0000\u0000\u0000\u4B64\u0000\u0000\u3E6B\u0000"+
-        "\u0000\u0000\u543F\u5440\u543E\u0000\u5442\u0000"+
-        "\u0000\u0000\u0000\u0000\u4738\u0000\u0000\u3068"+
-        "\u4956\u0000\u0000\u5443\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3E7D\u0000\u0000\u3C39"+
-        "\u0000\u475D\u3470\u0000\u3A6B\u0000\u0000\u0000"+
-        "\u4B59\u0000\u4632\u0000\u0000\u3778\u424F\u0000"+
-        "\u0000\u0000\u5441\u5444\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4244\u0000\u0000"+
-        "\u0000\u5445\u0000\u0000\u0000\u5446\u0000\u0000"+
-        "\u0000\u5448\u0000\u0000\u4469\u0000\u0000\u0000"+
-        "\u0000\u0000\u342E\u0000\u0000\u0000\u0000\u7421"+
-        "\u3161\u4A73\u0000\u0000\u3E6C\u4548\u0000\u0000"+
-        "\u0000\u0000\u3A66\u0000\u0000\u544E\u0000\u0000"+
-        "\u4A3D\u4E5D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3274\u544A\u0000\u0000\u0000\u0000"+
-        "\u0000\u413A\u544D\u0000\u4563\u0000\u0000\u4549"+
-        "\u4564\u4839\u444D\u0000\u0000\u0000\u3A49\u0000"+
-        "\u0000\u0000\u5449\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3176\u0000\u4536\u0000\u0000\u0000\u0000"+
-        "\u544B\u0000\u5447\u0000\u0000\u3F50\u0000\u0000"+
-        "\u0000\u544F\u0000\u0000\u0000\u0000\u3D4E\u0000"+
-        "\u0000\u0000\u0000\u362D\u0000\u5450\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A68\u0000\u0000\u0000\u417D"+
-        "\u0000\u0000\u0000\u0000\u4446\u0000\u0000\u5452"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4B4F\u0000\u0000\u5453\u0000\u0000\u5458\u0000"+
-        "\u0000\u0000\u0000\u4A2F\u0000\u0000\u0000\u0000"+
-        "\u5457\u5451\u5454\u5456\u0000\u0000\u3A26\u0000"+
-        "\u0000\u4A49\u0000\u0000\u0000\u5459\u0000\u4345"+
-        "\u0000\u0000\u3275\u0000\u3E6D\u0000\u0000\u0000"+
-        "\u0000\u545B\u0000\u545A\u0000\u3968\u0000\u545C"+
-        "\u545E\u545D\u0000\u0000\u5460\u0000\u5455\u5462"+
-        "\u0000\u0000\u0000\u0000\u5461\u545F\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B4E\u3F51\u0000\u4154\u5463"+
-        "\u403C\u306D\u4764\u0000\u0000\u0000\u0000\u445B"+
-        "\u0000\u5465\u5464\u5466\u5467\u5468\u0000\u0000"+
-        "\u0000\u0000\u5469\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A51\u546A\u0000\u0000\u0000\u0000\u3246"+
-        "\u546B\u0000\u0000\u0000\u0000\u4D3C\u3330\u0000"+
-        "\u5249\u3D48\u423F\u546C\u4C6B\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C34\u0000\u0000\u546E\u0000\u4267"+
-        "\u0000\u4537\u4240\u4957\u546F\u5470\u317B\u0000"+
-        "\u0000\u3C3A\u5471\u0000\u0000\u0000\u0000\u3050"+
-        "\u5472\u0000\u0000\u0000\u0000\u0000\u5473\u0000"+
-        "\u0000\u0000\u0000\u0000\u3162\u0000\u0000\u3471"+
-        "\u4660\u4A74\u0000\u0000\u0000\u0000\u5477\u4155"+
-        "\u5476\u3740\u0000\u0000\u4B5B\u5475\u0000\u4565"+
-        "\u5479\u0000\u5478\u0000\u0000\u0000\u0000\u0000"+
-        "\u547B\u0000\u547A\u0000\u0000\u317C\u0000\u547C"+
-        "\u3E29\u547E\u4325\u0000\u547D\u0000\u4A33\u0000"+
-        "\u0000\u0000\u0000\u3D77\u455B\u0000\u0000\u0000"+
-        "\u5521\u0000\u0000\u0000\u0000\u3925\u0000\u0000"+
-        "\u0000\u5522\u4721\u485E\u4C51\u0000\u0000\u0000"+
-        "\u0000\u0000\u4725\u0000\u0000\u552B\u0000\u0000"+
-        "\u0000\u0000\u0000\u3538\u0000\u0000\u4D45\u0000"+
-        "\u0000\u4C2F\u0000\u562C\u0000\u5523\u0000\u0000"+
-        "\u0000\u0000\u0000\u5526\u0000\u4245\u0000\u0000"+
-        "\u4B38\u0000\u0000\u0000\u454A\u0000\u0000\u0000"+
-        "\u0000\u0000\u5527\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4B65\u0000\u3A4A\u0000\u0000\u3E2A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5528\u0000"+
-        "\u0000\u3B50\u0000\u3B4F\u0000\u0000\u0000\u0000"+
-        "\u3039\u3848\u0000\u402B\u3051\u0000\u0000\u0000"+
-        "\u0000\u552C\u552D\u0000\u552A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3138\u342F\u0000"+
-        "\u5529\u0000\u4C45\u4931\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3028\u0000"+
-        "\u0000\u0000\u0000\u3079\u0000\u0000\u0000\u3B51"+
-        "\u0000\u3052\u0000\u3023\u0000\u0000\u0000\u0000"+
-        "\u0000\u5532\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5530\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C3C\u0000\u5533\u0000\u5531\u0000\u0000\u552F"+
-        "\u3F31\u0000\u0000\u0000\u0000\u552E\u0000\u0000"+
-        "\u0000\u4A5A\u0000\u0000\u0000\u0000\u0000\u3864"+
-        "\u0000\u0000\u0000\u0000\u0000\u5537\u5538\u0000"+
-        "\u0000\u0000\u0000\u0000\u3E2B\u0000\u0000\u0000"+
-        "\u5534\u4F2C\u0000\u0000\u0000\u0000\u474C\u0000"+
-        "\u0000\u5536\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A27\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5539\u0000\u0000\u0000\u4958\u0000"+
-        "\u0000\u0000\u553A\u0000\u5535\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4C3B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u475E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u553B\u4932\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u553C\u5540\u553D\u0000"+
-        "\u0000\u3247\u553F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3C3B\u0000\u553E\u3779\u0000\u0000\u0000"+
-        "\u554C\u0000\u0000\u0000\u0000\u0000\u5545\u5542"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4364\u0000\u5541\u0000\u0000\u5543\u0000"+
-        "\u0000\u5544\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5546\u5547\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3472\u0000\u5549\u5548\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u554A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3E6E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u554D\u0000\u445C\u0000\u0000\u0000"+
-        "\u3145\u0000\u554B\u0000\u0000\u0000\u554E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u554F\u0000"+
-        "\u5552\u0000\u0000\u5550\u0000\u5551\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3B52\u5553\u0000\u0000\u3926\u5554\u0000\u3B7A"+
-        "\u4238\u0000\u5555\u5556\u3B5A\u3927\u0000\u4C52"+
-        "\u0000\u0000\u0000\u3528\u3849\u5557\u3358\u0000"+
-        "\u0000\u5558\u0000\u4239\u0000\u0000\u0000\u0000"+
-        "\u5559\u5623\u0000\u555A\u0000\u555B\u0000\u0000"+
-        "\u555C\u0000\u555E\u0000\u0000\u0000\u0000\u0000"+
-        "\u555F\u0000\u0000\u5560\u0000\u4270\u0000\u3127"+
-        "\u3C69\u3042\u0000\u4157\u3430\u3C35\u0000\u3928"+
-        "\u0000\u0000\u0000\u0000\u0000\u4566\u0000\u3D21"+
-        "\u3431\u4368\u446A\u3038\u3539\u4A75\u0000\u3C42"+
-        "\u0000\u0000\u3552\u406B\u3C3C\u4D28\u5561\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u355C\u0000"+
-        "\u3A4B\u0000\u0000\u3332\u3163\u3E2C\u3248\u0000"+
-        "\u5562\u4D46\u0000\u0000\u0000\u0000\u0000\u3D49"+
-        "\u0000\u0000\u3C64\u5563\u3473\u4652\u4C29\u5564"+
-        "\u0000\u5565\u0000\u0000\u4959\u0000\u0000\u0000"+
-        "\u5567\u0000\u3428\u3677\u5566\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3432\u0000\u3F32\u556B\u3B21"+
-        "\u0000\u3249\u556A\u0000\u5568\u556C\u5569\u472B"+
-        "\u5C4D\u3F33\u0000\u556D\u0000\u0000\u4E40\u0000"+
-        "\u556E\u0000\u0000\u5570\u0000\u437E\u556F\u0000"+
-        "\u4023\u0000\u3B7B\u0000\u0000\u0000\u4250\u3C77"+
-        "\u0000\u4975\u406C\u0000\u3C4D\u5571\u3E2D\u5572"+
-        "\u5573\u3053\u423A\u3F52\u0000\u5574\u4633\u3E2E"+
-        "\u0000\u3E2F\u0000\u5575\u0000\u0000\u406D\u0000"+
-        "\u0000\u0000\u3E30\u0000\u0000\u0000\u0000\u0000"+
-        "\u5576\u0000\u5577\u0000\u4C60\u0000\u0000\u0000"+
-        "\u5578\u0000\u0000\u0000\u0000\u3646\u0000\u0000"+
-        "\u0000\u3D22\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5579\u557A\u3C5C\u3F2C\u4674\u3F54\u4878\u4722"+
-        "\u3649\u557B\u0000\u0000\u0000\u356F\u557C\u0000"+
-        "\u367E\u0000\u464F\u3230\u0000\u3B53\u557D\u5622"+
-        "\u5621\u367D\u0000\u557E\u0000\u4538\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4230\u0000"+
-        "\u454B\u3C48\u0000\u0000\u4158\u4D7A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5624\u0000\u5625\u4656"+
-        "\u0000\u3B33\u0000\u0000\u0000\u0000\u5627\u0000"+
-        "\u0000\u5628\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5629\u0000\u0000\u0000"+
-        "\u3474\u562A\u0000\u0000\u562B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u322C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u413B\u3464\u0000\u562D\u4C28\u0000\u0000\u0000"+
-        "\u0000\u4252\u0000\u3359\u0000\u0000\u562F\u5631"+
-        "\u345F\u0000\u0000\u562E\u5630\u0000\u5633\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5632\u0000\u5634"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5635\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u463D\u362E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3265\u5636\u563B\u0000\u0000\u5639\u0000\u4A77"+
-        "\u4A76\u0000\u0000\u0000\u0000\u0000\u4567\u0000"+
-        "\u0000\u0000\u5638\u3D54\u0000\u5637\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3F72"+
-        "\u0000\u0000\u0000\u563C\u0000\u0000\u3A6A\u0000"+
-        "\u0000\u5642\u0000\u0000\u5643\u563D\u3333\u563E"+
-        "\u5647\u5646\u5645\u5641\u0000\u0000\u0000\u5640"+
-        "\u0000\u0000\u5644\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A78\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u564B\u5648\u0000\u564A\u0000"+
-        "\u4D72\u0000\u5649\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u563F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F73\u0000\u0000\u564C\u0000\u0000\u3A37"+
-        "\u0000\u0000\u0000\u564D\u0000\u0000\u564E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5651\u0000\u5650\u0000\u0000\u564F"+
-        "\u0000\u0000\u0000\u4568\u563A\u0000\u0000\u0000"+
-        "\u5657\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5653\u0000\u0000"+
-        "\u0000\u0000\u5652\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5654\u0000\u5655\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5658"+
-        "\u0000\u0000\u4E66\u0000\u5659\u5656\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u565A\u0000\u0000\u3460\u565B\u0000\u0000"+
-        "\u0000\u0000\u565D\u565C\u0000\u0000\u565E\u0000"+
-        "\u0000\u0000\u0000\u565F\u0000\u406E\u3D23\u0000"+
-        "\u0000\u3D64\u0000\u4163\u0000\u3929\u3A38\u392A"+
-        "\u3570\u0000\u0000\u5660\u0000\u0000\u3A39\u0000"+
-        "\u0000\u384A\u5661\u4C26\u4743\u5662\u0000\u392B"+
-        "\u0000\u0000\u0000\u342C\u0000\u4327\u3652\u0000"+
-        "\u0000\u0000\u3B54\u495B\u0000\u0000\u4841\u0000"+
-        "\u0000\u0000\u0000\u5663\u3475\u0000\u0000\u0000"+
-        "\u0000\u5666\u0000\u0000\u0000\u0000\u4421\u0000"+
-        "\u0000\u5665\u5664\u5667\u0000\u446B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F63\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B55\u0000\u404A\u0000\u4253"+
-        "\u3522\u0000\u0000\u4422\u0000\u0000\u5668\u5669"+
-        "\u3E6F\u0000\u0000\u0000\u0000\u4B39\u0000\u0000"+
-        "\u566C\u0000\u0000\u566B\u566A\u497D\u0000\u5673"+
-        "\u0000\u0000\u0000\u0000\u4B5A\u0000\u566D\u0000"+
-        "\u0000\u0000\u0000\u0000\u566F\u4B6B\u0000\u566E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5670"+
-        "\u0000\u4828\u5671\u4A3E\u5672\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3433\u4A3F\u472F\u5674\u5675\u0000"+
-        "\u392C\u3434\u5676\u3838\u4D44\u4D29\u3476\u5678"+
-        "\u0000\u4423\u0000\u392D\u3E31\u0000\u0000\u485F"+
-        "\u0000\u0000\u3E32\u0000\u0000\u0000\u0000\u3D78"+
-        "\u0000\u0000\u0000\u0000\u0000\u446C\u4A79\u4539"+
-        "\u0000\u0000\u392E\u0000\u495C\u0000\u0000\u0000"+
-        "\u5679\u0000\u0000\u0000\u0000\u0000\u4559\u3A42"+
-        "\u0000\u0000\u0000\u384B\u0000\u446D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3043\u3D6E\u392F"+
-        "\u4D47\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u567A\u567B\u4751\u0000\u0000\u0000\u0000"+
-        "\u567C\u4E77\u4F2D\u0000\u0000\u0000\u0000\u567E"+
-        "\u567D\u0000\u0000\u3347\u0000\u0000\u5721\u0000"+
-        "\u0000\u0000\u5724\u5725\u0000\u5723\u0000\u4940"+
-        "\u3E33\u5727\u5726\u5722\u0000\u0000\u0000\u0000"+
-        "\u5728\u5729\u0000\u0000\u572A\u0000\u0000\u0000"+
-        "\u572D\u572B\u0000\u572C\u572E\u0000\u3164\u446E"+
-        "\u572F\u0000\u377A\u3276\u4736\u0000\u5730\u467B"+
-        "\u0000\u4A5B\u0000\u5731\u4F2E\u0000\u0000\u0000"+
-        "\u0000\u5732\u4A40\u5735\u5021\u5031\u0000\u3C30"+
-        "\u4675\u5736\u0000\u355D\u4424\u307A\u5737\u4A26"+
-        "\u3930\u0000\u0000\u4350\u0000\u0000\u0000\u446F"+
-        "\u0000\u0000\u0000\u0000\u0000\u4C6F\u3839\u384C"+
-        "\u0000\u5738\u0000\u0000\u0000\u5739\u0000\u573F"+
-        "\u0000\u3C65\u0000\u0000\u0000\u4425\u0000\u362F"+
-        "\u573A\u0000\u0000\u0000\u492B\u0000\u4346\u0000"+
-        "\u0000\u573B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u573C\u0000\u3630\u0000\u573D\u0000\u573E\u0000"+
-        "\u0000\u5740\u0000\u4576\u0000\u0000\u5741\u5742"+
-        "\u0000\u5743\u0000\u0000\u5734\u5733\u0000\u0000"+
-        "\u0000\u5744\u3741\u0000\u0000\u0000\u4927\u0000"+
-        "\u0000\u3A4C\u4937\u4426\u494B\u5745\u0000\u0000"+
-        "\u3E34\u3146\u0000\u5746\u0000\u0000\u0000\u5747"+
-        "\u0000\u4C72\u0000\u0000\u4860\u0000\u0000\u574A"+
-        "\u317D\u402C\u5749\u5748\u3742\u4254\u0000\u574E"+
-        "\u574C\u0000\u574B\u4E27\u3865\u0000\u0000\u0000"+
-        "\u3D79\u574D\u454C\u3D3E\u0000\u0000\u0000\u4640"+
-        "\u5751\u5750\u0000\u0000\u0000\u0000\u574F\u0000"+
-        "\u5752\u3866\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5753\u497C\u3D5B\u0000\u0000\u5754\u4879\u0000"+
-        "\u0000\u0000\u0000\u4641\u4427\u0000\u0000\u0000"+
-        "\u0000\u4530\u0000\u0000\u5755\u352B\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F34\u0000\u492C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3477\u4726\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5756\u3B56"+
-        "\u4B3A\u4B3B\u0000\u0000\u317E\u575B\u0000\u0000"+
-        "\u4369\u0000\u0000\u0000\u5758\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3277\u0000\u0000\u0000\u0000"+
-        "\u582D\u575A\u0000\u0000\u0000\u4730\u0000\u0000"+
-        "\u5759\u0000\u0000\u5757\u0000\u397A\u0000\u575D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5763\u5769"+
-        "\u5761\u0000\u455C\u0000\u0000\u5766\u495D\u0000"+
-        "\u0000\u5760\u0000\u5765\u4E67\u3B57\u0000\u0000"+
-        "\u4255\u575E\u0000\u0000\u0000\u355E\u5768\u402D"+
-        "\u3165\u5762\u3278\u5767\u0000\u0000\u0000\u3631"+
-        "\u0000\u5764\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u576A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u576C\u5776\u5774\u0000\u0000\u5771\u0000"+
-        "\u0000\u0000\u5770\u4E78\u0000\u5772\u0000\u0000"+
-        "\u3632\u0000\u3931\u0000\u0000\u3D7A\u0000\u0000"+
-        "\u0000\u5779\u576B\u0000\u0000\u0000\u0000\u576F"+
-        "\u575F\u0000\u327A\u5773\u5775\u4351\u0000\u0000"+
-        "\u3A28\u3238\u576D\u5778\u5777\u3633\u0000\u4229"+
-        "\u3366\u0000\u0000\u0000\u0000\u3743\u0000\u576E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u577A\u0000\u577D\u5821\u0000\u0000\u0000"+
-        "\u0000\u3C3D\u0000\u5827\u4470\u577B\u0000\u0000"+
-        "\u0000\u0000\u5825\u0000\u3279\u0000\u5823\u5824"+
-        "\u0000\u0000\u577E\u5822\u0000\u0000\u0000\u3867"+
-        "\u4D2A\u0000\u0000\u3435\u0000\u0000\u3159\u5826"+
-        "\u0000\u473A\u302D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4861\u575C\u582C\u5830\u4C65\u0000"+
-        "\u5829\u0000\u0000\u0000\u4569\u582E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3E70\u582F\u4657"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4F47\u0000\u582B\u0000\u0000\u0000\u0000"+
-        "\u5831\u0000\u397B\u0000\u404B\u0000\u0000\u3054"+
-        "\u582A\u5828\u0000\u415A\u0000\u0000\u0000\u577C"+
-        "\u3B34\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4246\u583D\u0000\u415B\u5838\u0000\u5835\u5836"+
-        "\u0000\u3C66\u5839\u583C\u0000\u0000\u0000\u0000"+
-        "\u5837\u3D25\u0000\u583A\u0000\u0000\u5834\u0000"+
-        "\u4C7C\u4C7B\u0000\u0000\u0000\u583E\u583F\u3055"+
-        "\u0000\u0000\u0000\u0000\u0000\u5833\u0000\u0000"+
-        "\u0000\u0000\u3672\u3026\u0000\u0000\u0000\u3436"+
-        "\u0000\u583B\u0000\u0000\u0000\u0000\u0000\u5843"+
-        "\u5842\u0000\u0000\u0000\u5847\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5848\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5846\u5849\u5841\u5845"+
-        "\u0000\u0000\u584A\u0000\u584B\u0000\u0000\u5840"+
-        "\u3B7C\u0000\u5844\u4256\u3932\u5832\u3F35\u0000"+
-        "\u0000\u0000\u0000\u5858\u0000\u4A69\u0000\u0000"+
-        "\u584E\u584F\u5850\u0000\u0000\u5857\u0000\u5856"+
-        "\u0000\u0000\u4B7D\u3437\u0000\u5854\u0000\u3745"+
-        "\u3334\u0000\u0000\u5851\u0000\u0000\u4E38\u5853"+
-        "\u3056\u5855\u0000\u584C\u5852\u5859\u3744\u584D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4D5D\u0000"+
-        "\u0000\u0000\u4D2B\u0000\u0000\u0000\u0000\u585C"+
-        "\u0000\u0000\u5860\u0000\u0000\u0000\u417E\u0000"+
-        "\u4E79\u5861\u0000\u0000\u585E\u0000\u585B\u0000"+
-        "\u0000\u585A\u585F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4A30\u0000\u0000\u4634"+
-        "\u0000\u3746\u0000\u5862\u585D\u0000\u5863\u0000"+
-        "\u0000\u0000\u377B\u0000\u0000\u0000\u3231\u0000"+
-        "\u0000\u0000\u586B\u0000\u0000\u0000\u3438\u0000"+
-        "\u0000\u0000\u0000\u5869\u0000\u0000\u586A\u3A29"+
-        "\u5868\u5866\u5865\u586C\u5864\u586E\u0000\u0000"+
-        "\u327B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5870\u0000\u0000\u586F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4428\u0000\u5873\u0000\u5871\u5867"+
-        "\u377C\u0000\u5872\u0000\u5876\u5875\u5877\u5874"+
-        "\u5878\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5879\u587A\u4A6A\u0000\u587C\u587B\u3D3F\u0000"+
-        "\u402E\u3266\u327C\u0000\u587D\u0000\u303F\u0000"+
-        "\u0000\u0000\u404C\u587E\u0000\u6C43\u5921\u3761"+
-        "\u0000\u5922\u0000\u0000\u0000\u0000\u406F\u0000"+
-        "\u0000\u0000\u5923\u0000\u0000\u0000\u5924\u353A"+
-        "\u5925\u0000\u5926\u5927\u4257\u0000\u0000\u0000"+
-        "\u384D\u0000\u0000\u4C61\u0000\u0000\u0000\u4B3C"+
-        "\u3D6A\u5928\u0000\u0000\u0000\u0000\u0000\u4070"+
-        "\u6E3D\u4862\u0000\u3C6A\u0000\u3A4D\u5929\u0000"+
-        "\u0000\u0000\u0000\u4247\u0000\u4A27\u0000\u0000"+
-        "\u4271\u0000\u0000\u592C\u0000\u0000\u592A\u0000"+
-        "\u592D\u0000\u0000\u592B\u0000\u0000\u0000\u0000"+
-        "\u592E\u0000\u0000\u0000\u0000\u0000\u4A31\u0000"+
-        "\u0000\u3037\u0000\u0000\u0000\u0000\u495E\u0000"+
-        "\u0000\u4863\u0000\u0000\u592F\u0000\u5932\u3E35"+
-        "\u353B\u0000\u5930\u5937\u3E36\u0000\u0000\u0000"+
-        "\u0000\u5931\u4744\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4D5E\u5933\u5934\u5938\u456A\u5935\u3933"+
-        "\u405E\u0000\u0000\u5946\u4834\u0000\u4272\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4864\u5A2D\u0000\u0000\u0000"+
-        "\u0000\u4A7A\u0000\u0000\u0000\u4471\u0000\u0000"+
-        "\u0000\u4B75\u0000\u593B\u3221\u436A\u0000\u0000"+
-        "\u0000\u0000\u5944\u0000\u0000\u4334\u593E\u5945"+
-        "\u5940\u5947\u5943\u0000\u5942\u476F\u0000\u593C"+
-        "\u327D\u593A\u3571\u4273\u5936\u0000\u0000\u5939"+
-        "\u3934\u405B\u0000\u3E37\u5941\u4752\u0000\u0000"+
-        "\u3572\u3348\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3367\u3F21\u5949\u594E"+
-        "\u0000\u594A\u0000\u377D\u0000\u594F\u3B22\u3969"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3D26\u593D";
-
-    private final static String innerIndex2=
-        "\u0000\u3B7D\u594C\u0000\u0000\u0000\u0000\u3B58"+
-        "\u594D\u3044\u0000\u0000\u5948\u0000\u0000\u0000"+
-        "\u0000\u4429\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3573\u0000\u0000\u0000\u0000\u0000\u3634"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u594B"+
-        "\u3027\u0000\u0000\u3A43\u0000\u0000\u0000\u3F36"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4472\u0000\u0000\u4854\u5951\u415E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u422A\u0000\u0000\u3B2B\u5952\u0000\u5954"+
-        "\u5950\u0000\u0000\u0000\u0000\u4A61\u0000\u443D"+
-        "\u0000\u0000\u0000\u0000\u415C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4A7B"+
-        "\u3C4E\u5960\u0000\u595F\u0000\u0000\u3F78\u0000"+
-        "\u0000\u0000\u377E\u0000\u0000\u0000\u5959\u3E39"+
-        "\u0000\u0000\u4668\u4731\u0000\u0000\u0000\u0000"+
-        "\u5957\u0000\u0000\u415D\u0000\u0000\u0000\u0000"+
-        "\u3C78\u595C\u0000\u0000\u3E38\u0000\u5956\u595B"+
-        "\u0000\u0000\u4753\u0000\u0000\u0000\u5955\u0000"+
-        "\u3721\u0000\u0000\u335D\u0000\u0000\u0000\u595D"+
-        "\u4E2B\u3A4E\u4335\u595A\u0000\u405C\u0000\u3935"+
-        "\u3F64\u3166\u413C\u5958\u3545\u0000\u0000\u0000"+
-        "\u0000\u0000\u3747\u0000\u444F\u595E\u0000\u0000"+
-        "\u0000\u0000\u0000\u415F\u0000\u0000\u5961\u0000"+
-        "\u5963\u0000\u0000\u4237\u5969\u0000\u5964\u0000"+
-        "\u0000\u5966\u0000\u0000\u0000\u0000\u0000\u4941"+
-        "\u4473\u0000\u5967\u0000\u0000\u0000\u4D2C\u0000"+
-        "\u0000\u0000\u4D48\u3439\u0000\u0000\u0000\u0000"+
-        "\u0000\u302E\u0000\u5965\u0000\u0000\u0000\u0000"+
-        "\u0000\u5962\u0000\u0000\u0000\u0000\u3478\u0000"+
-        "\u0000\u0000\u0000\u0000\u3167\u0000\u5968\u0000"+
-        "\u0000\u0000\u4D49\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u596C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u423B\u0000\u5973"+
-        "\u0000\u0000\u0000\u596D\u0000\u0000\u596A\u5971"+
-        "\u0000\u0000\u0000\u0000\u5953\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u596E\u0000"+
-        "\u5972\u0000\u0000\u0000\u4842\u456B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u596B\u0000\u596F\u0000"+
-        "\u0000\u0000\u3748\u0000\u0000\u0000\u3A71\u0000"+
-        "\u0000\u0000\u405D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5977\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4526\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5974"+
-        "\u0000\u4B60\u0000\u0000\u0000\u0000\u0000\u5975"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5976\u0000"+
-        "\u4C4E\u0000\u4022\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3762\u0000\u0000\u0000\u0000"+
-        "\u597D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B35\u597A\u0000\u5979\u0000\u0000"+
-        "\u0000\u0000\u4732\u0000\u0000\u0000\u4635\u0000"+
-        "\u0000\u0000\u0000\u0000\u4531\u597B\u0000\u0000"+
-        "\u0000\u597C\u0000\u496F\u0000\u4745\u3B23\u0000"+
-        "\u4071\u0000\u4B50\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3349\u0000\u5A25\u597E\u0000\u0000\u0000"+
-        "\u0000\u4D4A\u5A27\u0000\u0000\u5A23\u0000\u5A24"+
-        "\u0000\u0000\u0000\u0000\u0000\u4160\u0000\u0000"+
-        "\u0000\u0000\u5A22\u0000\u593F\u0000\u0000\u0000"+
-        "\u5A26\u0000\u5A21\u0000\u0000\u0000\u0000\u0000"+
-        "\u5A2B\u5A2C\u4527\u5A2E\u0000\u0000\u3B24\u5A29"+
-        "\u0000\u0000\u0000\u0000\u353C\u0000\u0000\u5A2F"+
-        "\u0000\u5A28\u5A33\u0000\u5A32\u0000\u5A31\u0000"+
-        "\u0000\u0000\u5A34\u0000\u0000\u5A36\u3E71\u0000"+
-        "\u5A35\u0000\u0000\u0000\u0000\u5A39\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5A37\u0000\u0000\u0000\u5A38\u5970\u0000\u0000"+
-        "\u0000\u0000\u0000\u5A3B\u5A3A\u0000\u0000\u0000"+
-        "\u0000\u0000\u5978\u5A3C\u5A30\u0000\u0000\u3B59"+
-        "\u0000\u0000\u0000\u0000\u5A3D\u5A3E\u5A40\u5A3F"+
-        "\u5A41\u327E\u0000\u3936\u0000\u0000\u4A7C\u402F"+
-        "\u0000\u0000\u0000\u0000\u0000\u384E\u0000\u0000"+
-        "\u5A43\u0000\u0000\u0000\u0000\u5A46\u0000\u4952"+
-        "\u0000\u355F\u0000\u0000\u0000\u5A45\u5A44\u4754"+
-        "\u5A47\u3635\u0000\u0000\u0000\u5A49\u5A48\u0000"+
-        "\u0000\u0000\u343A\u3B36\u0000\u0000\u4658\u0000"+
-        "\u0000\u0000\u0000\u0000\u3749\u0000\u0000\u0000"+
-        "\u3F74\u0000\u5A4A\u0000\u4030\u4528\u0000\u495F"+
-        "\u5A4B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5A4C\u5A4D\u0000\u0000\u0000\u4A38"+
-        "\u555D\u4046\u0000\u0000\u494C\u0000\u3A58\u0000"+
-        "\u4865\u4843\u0000\u0000\u0000\u0000\u0000\u454D"+
-        "\u0000\u4E41\u0000\u5A4F\u3C50\u0000\u0000\u5A50"+
-        "\u0000\u3036\u0000\u0000\u3654\u404D\u0000\u4960"+
-        "\u0000\u0000\u0000\u5A51\u3B42\u4347\u0000\u3B5B"+
-        "\u3F37\u0000\u0000\u0000\u0000\u0000\u0000\u5A52"+
-        "\u0000\u4A7D\u0000\u0000\u3177\u3B5C\u0000\u0000"+
-        "\u0000\u5A55\u0000\u5A53\u5A56\u4E39\u5A54\u0000"+
-        "\u0000\u0000\u0000\u407B\u5A57\u0000\u0000\u4232"+
-        "\u0000\u0000\u5A58\u0000\u0000\u0000\u0000\u347A"+
-        "\u0000\u5A5A\u0000\u5A59\u0000\u0000\u0000\u0000"+
-        "\u5A5B\u5A5C\u347B\u0000\u0000\u467C\u4336\u356C"+
-        "\u3B5D\u4161\u0000\u0000\u3D5C\u3030\u0000\u0000"+
-        "\u0000\u5A5D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3222\u5A61\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3937\u5A60\u0000\u0000\u3A2B\u3E3A"+
-        "\u0000\u0000\u5A5F\u0000\u3E3B\u0000\u4C40\u3A2A"+
-        "\u0000\u0000\u0000\u3057\u404E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5A66\u0000\u0000\u4031"+
-        "\u3147\u0000\u0000\u0000\u0000\u3D55\u0000\u4B66"+
-        "\u3A72\u0000\u0000\u0000\u0000\u3E3C\u0000\u4027"+
-        "\u0000\u0000\u0000\u0000\u5A65\u5A63\u5A64\u0000"+
-        "\u0000\u0000\u0000\u0000\u436B\u0000\u0000\u5B26"+
-        "\u0000\u5A6A\u3B7E\u3938\u5A68\u0000\u0000\u0000"+
-        "\u0000\u5A69\u0000\u3F38\u0000\u0000\u0000\u5A67"+
-        "\u0000\u0000\u3B2F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5A6C\u5A6B\u5A70"+
-        "\u0000\u0000\u5A71\u0000\u5A6D\u0000\u3322\u5A6E"+
-        "\u5A6F\u4855\u0000\u0000\u0000\u0000\u4961\u374A"+
-        "\u5A72\u0000\u0000\u0000\u4032\u0000\u3E3D\u0000"+
-        "\u0000\u0000\u4352\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3647\u0000\u5A73\u5A77\u0000\u0000\u324B"+
-        "\u5A74\u5A76\u0000\u0000\u0000\u0000\u5A75\u0000"+
-        "\u0000\u3D6B\u0000\u0000\u0000\u0000\u4348\u3045"+
-        "\u5A78\u0000\u0000\u0000\u0000\u5A79\u0000\u0000"+
-        "\u0000\u0000\u442A\u0000\u0000\u0000\u4E71\u0000"+
-        "\u0000\u0000\u0000\u3B43\u0000\u0000\u4A6B\u0000"+
-        "\u0000\u0000\u0000\u0000\u4B3D\u0000\u0000\u0000"+
-        "\u5B22\u5A7B\u0000\u0000\u5A7E\u0000\u5A7D\u0000"+
-        "\u0000\u5A7A\u0000\u0000\u5B21\u0000\u0000\u465E"+
-        "\u0000\u5A7C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B23\u0000"+
-        "\u0000\u3D6C\u5B24\u0000\u4D4B\u4778\u0000\u0000"+
-        "\u5B25\u0000\u0000\u0000\u0000\u0000\u5B27\u0000"+
-        "\u0000\u5B28\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5B29\u0000\u364A\u3148\u3939\u5B2A\u0000\u5B2B"+
-        "\u3D71\u4162\u0000\u0000\u5258\u413E\u413D\u4258"+
-        "\u3A47\u0000\u0000\u5072\u0000\u0000\u0000\u0000"+
-        "\u376E\u4D2D\u0000\u4A7E\u0000\u497E\u0000\u5B2C"+
-        "\u0000\u0000\u0000\u0000\u3A73\u443F\u5B2D\u4F2F"+
-        "\u0000\u0000\u0000\u4B3E\u0000\u442B\u5B2E\u347C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B2F\u5B30"+
-        "\u4C5A\u0000\u4C24\u4B76\u4B5C\u3B25\u5B32\u0000"+
-        "\u0000\u3C6B\u0000\u0000\u4B51\u0000\u5B34\u5B37"+
-        "\u5B36\u0000\u3479\u0000\u0000\u3560\u0000\u5B33"+
-        "\u0000\u5B35\u0000\u0000\u0000\u0000\u5B38\u0000"+
-        "\u0000\u3F79\u0000\u0000\u0000\u0000\u4D7B\u3049"+
-        "\u3A60\u423C\u0000\u3C5D\u0000\u0000\u3E73\u0000"+
-        "\u0000\u5B3B\u0000\u0000\u454E\u0000\u5B39\u422B"+
-        "\u5B3A\u3E72\u4C5D\u5B3C\u5B3D\u4D68\u0000\u0000"+
-        "\u0000\u0000\u5B42\u0000\u0000\u393A\u0000\u4755"+
-        "\u5B3F\u456C\u5A5E\u5A62\u0000\u354F\u0000\u4747"+
-        "\u0000\u0000\u0000\u0000\u5B41\u0000\u3E3E\u4844"+
-        "\u0000\u0000\u0000\u0000\u0000\u5B47\u0000\u487A"+
-        "\u0000\u5B3E\u0000\u5B44\u5B43\u0000\u0000\u0000"+
-        "\u404F\u0000\u0000\u0000\u0000\u4B6D\u0000\u4E53"+
-        "\u0000\u0000\u4B67\u0000\u324C\u3B5E\u0000\u0000"+
-        "\u4F48\u5B46\u3F75\u0000\u0000\u0000\u5B45\u0000"+
-        "\u0000\u5B40\u0000\u0000\u0000\u0000\u0000\u384F"+
-        "\u0000\u0000\u0000\u5B4C\u5B4A\u0000\u324D\u5B48"+
-        "\u5B4E\u5B54\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4248\u0000\u0000\u4A41\u0000\u5B56\u0000"+
-        "\u0000\u0000\u4922\u0000\u0000\u0000\u5B55\u4770"+
-        "\u4B3F\u343B\u0000\u4077\u3D40\u0000\u0000\u0000"+
-        "\u4453\u0000\u4D2E\u0000\u0000\u5B51\u5B50\u0000"+
-        "\u0000\u0000\u5B52\u0000\u5B4F\u0000\u0000\u5B57"+
-        "\u0000\u5B4D\u0000\u0000\u5B4B\u0000\u5B53\u5B49"+
-        "\u0000\u436C\u0000\u4C78\u3C46\u3A74\u0000\u0000"+
-        "\u0000\u0000\u0000\u3A3A\u0000\u0000\u4B6F\u3341"+
-        "\u0000\u0000\u444E\u464A\u3149\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4072\u0000\u0000\u4034\u372A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B59\u0000"+
-        "\u0000\u393B\u337C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5B5B\u3374\u5B61\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5B5E\u0000\u4073\u0000\u0000\u0000"+
-        "\u334B\u3A2C\u0000\u0000\u334A\u3A4F\u0000\u0000"+
-        "\u5B5C\u3765\u374B\u456D\u0000\u0000\u5B5A\u0000"+
-        "\u3046\u0000\u0000\u0000\u0000\u5B5D\u5B5F\u0000"+
-        "\u364D\u372C\u0000\u343C\u354B\u0000\u0000\u0000"+
-        "\u0000\u5B62\u0000\u0000\u3A79\u4B71\u0000\u3B37"+
-        "\u0000\u0000\u0000\u5B63\u0000\u0000\u0000\u4930"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5B6F\u0000\u3233\u5B64"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B75\u5B65"+
-        "\u0000\u4E42\u0000\u5B6C\u0000\u475F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5B74\u0000\u5B67"+
-        "\u0000\u0000\u0000\u3034\u5B69\u0000\u0000\u393C"+
-        "\u0000\u0000\u0000\u5B6B\u0000\u5B6A\u0000\u5B66"+
-        "\u5B71\u0000\u3E3F\u0000\u0000\u0000\u546D\u3868"+
-        "\u4D7C\u0000\u0000\u0000\u0000\u5B68\u0000\u4474"+
-        "\u3323\u3A2D\u0000\u5B60\u0000\u5B70\u3361\u0000"+
-        "\u0000\u5B6E\u5B72\u0000\u456E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u347E\u0000\u5C32\u0000"+
-        "\u0000\u4C49\u5B77\u347D\u0000\u5B7E\u0000\u0000"+
-        "\u0000\u0000\u4B40\u0000\u5C21\u5C23\u0000\u5C27"+
-        "\u5B79\u0000\u432A\u0000\u0000\u0000\u0000\u456F"+
-        "\u5C2B\u5B7C\u0000\u5C28\u0000\u0000\u0000\u5C22"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3F39\u5C2C"+
-        "\u0000\u0000\u4033\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C2A\u343D\u0000\u0000\u0000\u0000\u0000"+
-        "\u4F50\u5B76\u0000\u0000\u5C26\u3058\u0000\u0000"+
-        "\u5B78\u0000\u0000\u4C3A\u5B7D\u3F22\u4447\u5B73"+
-        "\u0000\u0000\u5C25\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F7A\u5C2F\u3371\u3821\u0000\u0000\u0000"+
-        "\u0000\u5C31\u5B7A\u5C30\u0000\u5C29\u5B7B\u0000"+
-        "\u5C2D\u0000\u5C2E\u0000\u0000\u0000\u0000\u0000"+
-        "\u5C3F\u0000\u0000\u0000\u464E\u0000\u5C24\u0000"+
-        "\u0000\u5C3B\u0000\u0000\u0000\u5C3D\u0000\u4458"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D4C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4976\u5C38\u424A\u0000\u0000"+
-        "\u0000\u5C3E\u413F\u0000\u5C35\u5C42\u5C41\u0000"+
-        "\u466F\u5C40\u466A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5C44\u5C37\u0000\u3648\u5C3A\u3D5D"+
-        "\u0000\u0000\u0000\u4760\u5C3C\u364B\u0000\u5C34"+
-        "\u5C36\u5C33\u0000\u0000\u4F30\u335A\u5C39\u0000"+
-        "\u0000\u5C43\u3335\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A67\u0000\u0000\u0000\u315D\u0000"+
-        "\u0000\u5C54\u0000\u0000\u4F31\u5C57\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F3A\u5C56\u0000\u0000\u0000"+
-        "\u5C55\u0000\u0000\u0000\u0000\u0000\u0000\u5C52"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5C46\u0000"+
-        "\u0000\u5C63\u5C45\u0000\u5C58\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5C50\u0000\u0000\u5C4B\u5C48"+
-        "\u0000\u5C49\u0000\u5C51\u0000\u0000\u0000\u7422"+
-        "\u0000\u0000\u5C4E\u393D\u4448\u4164\u5C4C\u0000"+
-        "\u5C47\u0000\u0000\u5C4A\u0000\u0000\u0000\u0000"+
-        "\u4D4D\u4B6A\u0000\u0000\u0000\u5C4F\u5C59\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5C61"+
-        "\u5C5A\u0000\u0000\u5C67\u0000\u5C65\u0000\u0000"+
-        "\u0000\u0000\u5C60\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C5F\u0000\u4450\u0000\u4165\u0000\u5C5D"+
-        "\u0000\u0000\u5C5B\u0000\u0000\u5C62\u0000\u0000"+
-        "\u0000\u0000\u5C68\u4875\u5C6E\u0000\u0000\u0000"+
-        "\u0000\u0000\u5C69\u5C6C\u5C66\u0000\u0000\u4374"+
-        "\u0000\u4938\u0000\u5C5C\u0000\u0000\u5C64\u3E40"+
-        "\u0000\u4C4F\u5C78\u5C6B\u0000\u0000\u0000\u0000"+
-        "\u0000\u3822\u3223\u335F\u0000\u0000\u5C53\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3E41\u5C70\u0000"+
-        "\u5C77\u3C79\u3372\u0000\u0000\u432E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5C6D\u0000\u0000\u5C72"+
-        "\u5C76\u0000\u0000\u3636\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u354C\u5C74\u0000\u0000\u0000\u0000\u0000\u3521"+
-        "\u0000\u464B\u5C73\u0000\u0000\u0000\u5C75\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5C6F\u0000\u0000\u0000\u0000\u0000"+
-        "\u5C71\u0000\u0000\u0000\u0000\u0000\u0000\u3360"+
-        "\u4349\u0000\u0000\u0000\u5C7C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5C7A\u3869\u0000"+
-        "\u5C79\u0000\u0000\u0000\u0000\u0000\u0000\u5D21"+
-        "\u0000\u0000\u0000\u0000\u5B58\u0000\u0000\u0000"+
-        "\u5C7B\u0000\u5C7D\u5C7E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D2C\u0000\u5D28\u0000\u5B6D\u0000"+
-        "\u0000\u0000\u0000\u5D27\u0000\u0000\u0000\u0000"+
-        "\u5D26\u0000\u0000\u5D23\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C6A\u5D25\u5D24\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5D2A\u0000\u4F26\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D2D\u367B\u0000\u0000\u5D29\u5D2B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4827\u0000\u5D2E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D32\u5D2F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4D73\u5D30\u0000\u0000"+
-        "\u0000\u0000\u5C5E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D33\u0000\u0000\u0000\u5D34\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3135\u0000\u5D36"+
-        "\u3767\u3C21\u0000\u3655\u0000\u0000\u0000\u3224"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D5F\u0000\u0000\u0000\u0000\u5D38"+
-        "\u5D37\u5D3A\u353D\u0000\u0000\u3656\u343E\u0000"+
-        "\u0000\u0000\u0000\u5D3D\u0000\u0000\u0000\u5D3C"+
-        "\u0000\u5D3E\u0000\u0000\u324E\u0000\u4337\u0000"+
-        "\u5D3F\u0000\u0000\u343F\u5D41\u0000\u0000\u0000"+
-        "\u0000\u5D40\u0000\u5D42\u0000\u0000\u0000\u5D43"+
-        "\u0000\u5D44\u3B5F\u4035\u3A21\u0000\u4970\u0000"+
-        "\u0000\u4A62\u4F44\u0000\u0000\u0000\u0000\u3B75"+
-        "\u0000\u0000\u0000\u3A50\u4E72\u0000\u0000\u0000"+
-        "\u5D45\u5D46\u0000\u3B60\u0000\u0000\u0000\u5D47"+
-        "\u5D48\u0000\u0000\u5D4A\u5D49\u0000\u4B58\u0000"+
-        "\u0000\u3D5E\u3C6C\u3B44\u0000\u5D4B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5D4D\u3F23\u0000"+
-        "\u5D4C\u0000\u0000\u0000\u0000\u0000\u5D4E\u0000"+
-        "\u0000\u0000\u0000\u0000\u5D4F\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D50\u5D51\u0000\u0000\u0000\u5D52"+
-        "\u0000\u5D54\u5D53\u5D55\u3225\u434A\u0000\u5D56"+
-        "\u0000\u0000\u3B26\u334C\u5D57\u0000\u0000\u4542"+
-        "\u544C\u0000\u0000\u0000\u0000\u3523\u5D58\u0000"+
-        "\u0000\u0000\u0000\u5D59\u0000\u4A6C\u4B68\u0000"+
-        "\u0000\u0000\u4647\u5D5A\u4866\u0000\u0000\u0000"+
-        "\u487B\u0000\u0000\u4C53\u0000\u0000\u0000\u5D5B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5D5D\u5D5C\u0000\u0000\u5D5F"+
-        "\u0000\u0000\u0000\u5D5E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5D61\u0000\u0000\u0000\u0000\u0000\u0000\u3B61"+
-        "\u0000\u4C31\u0000\u5D62\u5D63\u0000\u0000\u3524"+
-        "\u0000\u0000\u0000\u5D64\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5D66\u5D65\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F65\u0000\u0000\u4939"+
-        "\u314A\u0000\u0000\u0000\u0000\u0000\u4845\u0000"+
-        "\u4475\u3D41\u3561\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4846\u0000"+
-        "\u3C2E\u0000\u0000\u0000\u0000\u5D68\u0000\u3440"+
-        "\u0000\u0000\u3178\u0000\u0000\u4672\u5D67\u393E"+
-        "\u4353\u0000\u5D69\u0000\u0000\u0000\u0000\u0000"+
-        "\u5D71\u0000\u5D6A\u0000\u0000\u0000\u0000\u0000"+
-        "\u4241\u0000\u3562\u5D72\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3768\u0000\u0000\u3525\u5D70\u0000"+
-        "\u0000\u5D6E\u5D6B\u4D60\u0000\u0000\u0000\u0000"+
-        "\u4440\u0000\u0000\u0000\u4659\u5D6C\u0000\u0000"+
-        "\u5D74\u0000\u5D73\u3723\u0000\u0000\u322D\u0000"+
-        "\u0000\u3A3B\u5D6D\u5D6F\u0000\u0000\u0000\u0000"+
-        "\u0000\u4B57\u4274\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4B77\u0000\u0000\u5D7C\u0000"+
-        "\u0000\u5D7D\u0000\u324F\u0000\u0000\u0000\u0000"+
-        "\u4A28\u4C7D\u5E21\u3C23\u3E42\u5D78\u5D7E\u3168"+
-        "\u0000\u3637\u0000\u0000\u5D75\u5D7A\u0000\u0000"+
-        "\u0000\u4074\u4771\u0000\u4867\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5D77\u0000\u4B21\u0000\u5D79"+
-        "\u0000\u5E24\u0000\u5E22\u0000\u5D7B\u0000\u0000"+
-        "\u0000\u4B22\u4748\u3563\u0000\u4525\u0000\u0000"+
-        "\u436D\u0000\u5E25\u0000\u0000\u0000\u0000\u5E23"+
-        "\u4259\u5D76\u0000\u314B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4D4E\u5E30\u0000\u0000\u0000"+
-        "\u0000\u0000\u5E2F\u0000\u0000\u0000\u0000\u4076"+
-        "\u0000\u5E2C\u0000\u4D6C\u0000\u0000\u4636\u5E26"+
-        "\u0000\u0000\u0000\u0000\u0000\u4445\u0000\u0000"+
-        "\u0000\u314C\u393F\u5E29\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3D27\u5E2E\u0000\u5E2D\u5E28\u0000"+
-        "\u5E2B\u0000\u0000\u3368\u0000\u5E2A\u4749\u0000"+
-        "\u0000\u4E2E\u0000\u0000\u3E74\u4075\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5E36\u5E34\u0000\u494D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5E31\u5E33\u0000\u313A\u0000"+
-        "\u0000\u3940\u4F32\u0000\u333D\u0000\u4962\u0000"+
-        "\u0000\u0000\u0000\u0000\u4D61\u0000\u0000\u3324"+
-        "\u3F3B\u5E35\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5E3A\u0000\u0000"+
-        "\u3E43\u0000\u0000\u0000\u4D30\u0000\u5E37\u0000"+
-        "\u0000\u0000\u0000\u5E32\u0000\u5E38\u0000\u0000"+
-        "\u0000\u4E5E\u0000\u4573\u4642\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3336"+
-        "\u0000\u0000\u3155\u0000\u0000\u5E3E\u0000\u0000"+
-        "\u5E41\u0000\u0000\u0000\u4E43\u0000\u0000\u0000"+
-        "\u4D64\u0000\u0000\u0000\u0000\u5E48\u5E42\u5E3F"+
-        "\u0000\u0000\u0000\u4E54\u5E45\u0000\u0000\u0000"+
-        "\u0000\u3D4A\u5E47\u0000\u0000\u5E4C\u0000\u0000"+
-        "\u4571\u5E4A\u0000\u0000\u0000\u0000\u5E44\u0000"+
-        "\u0000\u4338\u0000\u0000\u5E4B\u0000\u5E40\u0000"+
-        "\u5E46\u0000\u5E4D\u307C\u5E43\u0000\u5E4E\u0000"+
-        "\u0000\u3F3C\u0000\u3D5F\u0000\u4A25\u0000\u3A2E"+
-        "\u0000\u5E3B\u5E49\u453A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4036\u0000\u3369"+
-        "\u3A51\u3E44\u5E3D\u3D42\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u374C\u0000\u5E3C\u0000\u0000"+
-        "\u0000\u5E52\u3D6D\u383A\u0000\u5E61\u0000\u5E5B"+
-        "\u3574\u454F\u0000\u5E56\u5E5F\u302F\u3132\u0000"+
-        "\u0000\u3239\u0000\u5E58\u422C\u5E4F\u5E51\u3941"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5E62\u0000\u5E5D\u0000\u0000\u0000\u5E55\u0000"+
-        "\u0000\u0000\u0000\u5E5C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C2B\u0000\u0000\u5E5A\u5E5E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3850\u0000"+
-        "\u3E45\u0000\u0000\u4339\u0000\u0000\u0000\u5E54"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4D2F"+
-        "\u0000\u0000\u0000\u5E57\u0000\u0000\u5E50\u4572"+
-        "\u0000\u0000\u5E53\u0000\u0000\u0000\u5E59\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4F51\u3C3E"+
-        "\u4B7E\u0000\u5E63\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u482E\u0000\u0000\u5E6F"+
-        "\u383B\u0000\u0000\u0000\u0000\u0000\u3D60\u0000"+
-        "\u5E65\u0000\u0000\u0000\u4E2F\u3942\u0000\u5E72"+
-        "\u0000\u0000\u306E\u0000\u0000\u5E70\u0000\u0000"+
-        "\u0000\u0000\u5E64\u0000\u0000\u0000\u0000\u5E6A"+
-        "\u0000\u0000\u5E6C\u0000\u0000\u0000\u4D4F\u5E67"+
-        "\u0000\u0000\u452E\u0000\u0000\u5E69\u0000\u0000"+
-        "\u0000\u0000\u5E71\u0000\u5E6B\u4C47\u0000\u0000"+
-        "\u0000\u5E66\u0000\u3C22\u5E7E\u0000\u0000\u0000"+
-        "\u0000\u336A\u0000\u5E68\u5E6D\u5E6E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u426C\u425A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E76\u0000\u0000\u5E7C"+
-        "\u0000\u0000\u5E7A\u0000\u4529\u0000\u0000\u5F23"+
-        "\u5E77\u0000\u0000\u0000\u0000\u0000\u5E78\u5E60"+
-        "\u0000\u3579\u493A\u0000\u0000\u0000\u3C3F\u0000"+
-        "\u0000\u3977\u0000\u0000\u0000\u0000\u0000\u4F33"+
-        "\u0000\u5E74\u0000\u5F22\u3169\u4166\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4779\u0000\u3441\u4E7A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4C21\u4452\u0000\u0000\u0000"+
-        "\u0000\u5E7B\u5E7D\u0000\u0000\u0000\u0000\u0000"+
-        "\u4132\u0000\u0000\u0000\u0000\u0000\u5F21\u5E79"+
-        "\u0000\u5E73\u0000\u0000\u0000\u3443\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3769\u0000\u0000\u0000"+
-        "\u5F2F\u0000\u0000\u5F2A\u4078\u0000\u0000\u3363"+
-        "\u0000\u0000\u0000\u0000\u3D61\u0000\u5F33\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F2C\u442C\u5F29"+
-        "\u4459\u0000\u0000\u0000\u5F4C\u0000\u0000\u0000"+
-        "\u5F26\u0000\u5F25\u0000\u5F2E\u0000\u0000\u0000"+
-        "\u5F28\u5F27\u5F2D\u0000\u4021\u0000\u5F24\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5F30\u0000"+
-        "\u0000\u5F31\u0000\u0000\u0000\u0000\u0000\u3442"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F36\u0000\u5F35\u5F37\u0000\u0000\u0000"+
-        "\u0000\u0000\u5F3A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4543\u0000\u5F34\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F38\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3763\u4279\u5F32\u473B\u0000\u0000\u5F39\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5F3E\u5F3C\u0000\u0000"+
-        "\u5F3F\u0000\u0000\u5F42\u0000\u0000\u0000\u5F3B"+
-        "\u396A\u4728\u0000\u0000\u5E39\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4D74\u5F3D\u0000\u5F41\u4275"+
-        "\u0000\u5F40\u0000\u5F2B\u0000\u0000\u6F69\u0000"+
-        "\u0000\u0000\u5F45\u0000\u0000\u0000\u5F49\u0000"+
-        "\u0000\u5F47\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F43\u0000\u5F44\u0000\u0000\u0000\u5F48"+
-        "\u0000\u5F46\u0000\u0000\u0000\u494E\u0000\u0000"+
-        "\u5F4E\u0000\u5F4B\u5F4A\u0000\u5F4D\u4654\u5F4F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4375\u426D"+
-        "\u0000\u0000\u0000\u0000\u4025\u0000\u0000\u0000"+
-        "\u5F50\u0000\u5F52\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5F51\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E75\u0000\u0000\u0000"+
-        "\u0000\u5F53\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4667\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5F54\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3250\u0000\u0000\u0000\u4574"+
-        "\u3325\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3564\u0000\u0000\u0000\u3C5E\u3A52\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4F27\u3F66\u0000\u0000\u0000\u316A\u0000"+
-        "\u0000\u0000\u5F56\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F55\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5F59\u433A\u5F5C\u5F57"+
-        "\u0000\u0000\u0000\u5F5B\u0000\u0000\u0000\u0000"+
-        "\u5F5A\u4540\u3059\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4E75\u0000\u0000\u5F5E\u0000\u0000\u0000\u3128"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F60\u0000\u0000\u0000\u5F5F\u0000\u5F5D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F58\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4B23\u0000\u0000\u0000\u5F62\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F61\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u316B\u0000\u0000\u0000"+
-        "\u0000\u5F64\u4A32\u0000\u5F63\u0000\u0000\u0000"+
-        "\u0000\u4C35\u0000\u0000\u0000\u0000\u3E47\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4133\u0000"+
-        "\u0000\u0000\u0000\u0000\u3E46\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4E7B\u0000\u0000\u5F6A\u0000\u4079\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F66\u5F6B\u0000"+
-        "\u0000\u316C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5F69\u0000\u4761\u5F65\u5F68\u3E48"+
-        "\u0000\u4851\u0000\u0000\u5F6C\u0000\u3C51\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u407A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5F6F\u0000\u0000\u0000"+
-        "\u5F67\u0000\u3727\u0000\u0000\u0000\u0000\u5F6D"+
-        "\u0000\u0000\u0000\u0000\u4D50\u5F70\u0000\u0000"+
-        "\u0000\u7426\u0000\u0000\u0000\u0000\u0000\u3D4F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5F71\u0000\u0000\u0000\u5F72\u0000\u0000\u0000"+
-        "\u0000\u472E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F74\u0000\u0000\u0000\u0000\u5F75\u0000"+
-        "\u0000\u0000\u0000\u4733\u0000\u0000\u0000\u0000"+
-        "\u4575\u5F77\u0000\u0000\u0000\u0000\u5F79\u0000"+
-        "\u4E55\u0000\u5F76\u0000\u5F78\u316D\u0000\u5F73"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u535B"+
-        "\u5F7A\u0000\u0000\u0000\u0000\u4167\u3B38\u5F7C"+
-        "\u0000\u0000\u0000\u0000\u5F7B\u3F24\u5259\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F7D\u0000\u0000"+
-        "\u0000\u6021\u0000\u5F6E\u5F7E\u0000\u0000\u6022"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u477A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6023\u0000\u0000"+
-        "\u6024\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6025\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6026\u0000\u445E\u0000\u6028\u6027\u0000\u0000"+
-        "\u6029\u0000\u602A\u0000\u0000\u3C5F\u4963\u0000"+
-        "\u0000\u0000\u4C6C\u602B\u602C\u4156\u3C24\u602D"+
-        "\u602E\u0000\u0000\u0000\u0000\u0000\u602F\u4A52"+
-        "\u4847\u0000\u0000\u6030\u4757\u0000\u0000\u0000"+
-        "\u0000\u0000\u442D\u0000\u0000\u0000\u0000\u0000"+
-        "\u6031\u3267\u0000\u356D\u0000\u4C46\u0000\u4C36"+
-        "\u0000\u3234\u4F34\u0000\u0000\u0000\u0000\u4B52"+
-        "\u0000\u4A2A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4037\u0000\u6032\u0000\u0000\u0000"+
-        "\u0000\u4643\u0000\u0000\u0000\u3823\u6033\u0000"+
-        "\u3A54\u6035\u6034\u0000\u0000\u0000\u0000\u6036"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6037\u0000\u0000\u0000\u6038\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u353E\u0000\u6039\u0000\u0000\u0000\u0000\u603A"+
-        "\u0000\u0000\u0000\u0000\u3824\u0000\u0000\u4848"+
-        "\u0000\u0000\u603C\u0000\u0000\u0000\u3E75\u0000"+
-        "\u0000\u603B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3638\u603D\u603F\u0000\u603E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6040\u0000"+
-        "\u3851\u0000\u6041\u0000\u0000\u0000\u0000\u3669"+
-        "\u0000\u4140\u0000\u397D\u0000\u0000\u0000\u0000"+
-        "\u6043\u6044\u6042\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3C6D\u0000\u0000\u4648\u3639\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6046"+
-        "\u432C\u6045\u0000\u0000\u4F35\u4762\u0000\u0000";
-
-    private final static String innerIndex3=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6049\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u604B\u6048"+
-        "\u0000\u0000\u0000\u4C54\u604A\u604C\u0000\u4E44"+
-        "\u0000\u0000\u0000\u0000\u0000\u6050\u0000\u0000"+
-        "\u0000\u604F\u4376\u472D\u0000\u0000\u3825\u604E"+
-        "\u0000\u0000\u0000\u0000\u604D\u0000\u4D31\u4D32"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6051\u316E"+
-        "\u0000\u0000\u0000\u0000\u3976\u3B62\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6052\u6053"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6055"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3D43\u0000\u0000\u0000\u0000"+
-        "\u6057\u0000\u6056\u0000\u0000\u0000\u0000\u0000"+
-        "\u6058\u0000\u334D\u0000\u0000\u605A\u0000\u0000"+
-        "\u6059\u0000\u605C\u605B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u383C\u0000\u0000\u4E28"+
-        "\u0000\u364C\u0000\u3226\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u366A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3461\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4E68\u605E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6060\u0000\u0000\u0000\u0000"+
-        "\u6061\u0000\u3251\u0000\u0000\u0000\u0000\u0000"+
-        "\u605D\u0000\u3B39\u0000\u0000\u4441\u605F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6064\u0000"+
-        "\u3C6E\u0000\u0000\u0000\u0000\u6062\u0000\u0000"+
-        "\u0000\u0000\u373E\u0000\u0000\u4849\u6063\u0000"+
-        "\u0000\u607E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6069\u0000\u0000\u0000\u0000\u0000\u383D\u0000"+
-        "\u0000\u0000\u0000\u3565\u0000\u6066\u4D7D\u0000"+
-        "\u0000\u4E30\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4276\u0000\u0000\u6068\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u606A\u4E56\u3657\u487C\u474A\u0000"+
-        "\u0000\u0000\u606B\u0000\u0000\u0000\u0000\u606D"+
-        "\u0000\u6070\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u606C\u0000\u0000"+
-        "\u0000\u606F\u386A\u314D\u6071\u0000\u3F70\u606E"+
-        "\u4E5C\u0000\u0000\u6074\u7424\u0000\u0000\u0000"+
-        "\u0000\u6072\u6075\u0000\u0000\u0000\u0000\u6067"+
-        "\u6073\u0000\u0000\u3A3C\u0000\u0000\u6076\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6077\u0000"+
-        "\u0000\u0000\u0000\u4D7E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6078\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6079\u0000"+
-        "\u0000\u0000\u6065\u0000\u0000\u0000\u0000\u607A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3444\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3C25\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u607B\u0000\u0000\u0000\u0000\u607C"+
-        "\u0000\u0000\u0000\u0000\u607D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u313B\u0000\u0000\u0000"+
-        "\u6121\u0000\u493B\u6122\u0000\u0000\u3424\u6123"+
-        "\u0000\u6124\u0000\u0000\u0000\u0000\u6125\u0000"+
-        "\u6127\u6128\u6126\u0000\u0000\u0000\u4953\u612A"+
-        "\u6129\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u612C\u612B\u612D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u612E\u6130\u612F\u0000"+
-        "\u0000\u3979\u0000\u6132\u0000\u6131\u0000\u0000"+
-        "\u3445\u0000\u3F53\u0000\u453C\u0000\u6133\u4038"+
-        "\u0000\u0000\u0000\u3B3A\u0000\u3179\u6134\u0000"+
-        "\u4D51\u0000\u0000\u4A63\u6135\u0000\u0000\u0000"+
-        "\u4544\u4D33\u3943\u3F3D\u0000\u0000\u0000\u434B"+
-        "\u5234\u0000\u442E\u3268\u6136\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6137\u0000\u613C\u0000"+
-        "\u0000\u613A\u6139\u5A42\u3326\u6138\u0000\u305A"+
-        "\u0000\u482A\u0000\u0000\u484A\u0000\u0000\u0000"+
-        "\u0000\u4E31\u613D\u613B\u435C\u4026\u0000\u0000"+
-        "\u482B\u0000\u492D\u0000\u613F\u4E2C\u374D\u6140"+
-        "\u0000\u613E\u4856\u6141\u0000\u6142\u0000\u0000"+
-        "\u305B\u0000\u0000\u3E76\u6147\u0000\u6144\u466D"+
-        "\u6143\u0000\u0000\u0000\u0000\u0000\u0000\u3526"+
-        "\u0000\u0000\u614A\u0000\u0000\u0000\u6145\u6146"+
-        "\u0000\u6149\u6148\u4925\u0000\u0000\u4142\u4141"+
-        "\u0000\u353F\u0000\u0000\u614B\u0000\u0000\u0000"+
-        "\u0000\u0000\u614C\u0000\u0000\u614D\u0000\u0000"+
-        "\u0000\u0000\u0000\u614F\u0000\u614E\u0000\u0000"+
-        "\u0000\u0000\u0000\u3156\u0000\u0000\u0000\u0000"+
-        "\u0000\u6157\u4868\u6151\u0000\u6153\u0000\u0000"+
-        "\u6155\u3F3E\u0000\u0000\u6156\u6154\u3C40\u0000"+
-        "\u0000\u0000\u6150\u6152\u0000\u4942\u0000\u3E49"+
-        "\u0000\u0000\u6159\u0000\u0000\u6158\u0000\u0000"+
-        "\u0000\u0000\u615A\u0000\u3C26\u3A2F\u0000\u0000"+
-        "\u4577\u615B\u0000\u444B\u0000\u0000\u615D\u0000"+
-        "\u0000\u0000\u4E21\u615C\u0000\u0000\u0000\u0000"+
-        "\u0000\u4169\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6162\u0000\u6164\u6165\u4354\u0000\u0000\u0000"+
-        "\u0000\u0000\u6163\u0000\u6160\u0000\u615E\u615F"+
-        "\u0000\u6161\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6168\u0000\u6166\u0000\u6167\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6169"+
-        "\u616B\u616C\u616D\u0000\u616E\u0000\u0000\u616A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6170\u0000\u0000\u0000\u616F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6171\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4E45\u0000\u0000\u0000\u6174\u6172"+
-        "\u6173\u0000\u0000\u0000\u3462\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C7E\u0000\u0000\u0000\u4A4A\u0000"+
-        "\u6176\u0000\u0000\u0000\u6175\u0000\u0000\u0000"+
-        "\u0000\u6177\u6178\u0000\u0000\u0000\u0000\u617C"+
-        "\u6179\u617A\u617B\u0000\u617D\u0000\u0000\u0000"+
-        "\u617E\u0000\u6221\u0000\u0000\u0000\u6222\u0000"+
-        "\u6223\u0000\u482F\u4550\u6224\u4772\u4934\u0000"+
-        "\u6225\u0000\u0000\u6226\u452A\u0000\u3327\u3944"+
-        "\u6227\u0000\u0000\u6228\u0000\u0000\u6229\u0000"+
-        "\u3B29\u0000\u0000\u622B\u0000\u0000\u622A\u0000"+
-        "\u0000\u622C\u622D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4869\u0000"+
-        "\u622E\u0000\u0000\u0000\u622F\u0000\u0000\u7369"+
-        "\u6230\u6231\u6232\u0000\u0000\u0000\u0000\u3B2E"+
-        "\u0000\u0000\u6233\u4756\u0000\u0000\u4B5F\u0000"+
-        "\u314E\u0000\u3157\u0000\u0000\u6234\u0000\u0000"+
-        "\u0000\u0000\u6236\u0000\u0000\u0000\u6235\u4570"+
-        "\u0000\u0000\u0000\u4039\u5D39\u0000\u6237\u4C41"+
-        "\u0000\u6238\u0000\u3446\u4857\u6239\u0000\u623A"+
-        "\u0000\u0000\u623B\u0000\u0000\u0000\u4C5C\u0000"+
-        "\u0000\u0000\u4C55\u0000\u443E\u0000\u0000\u0000"+
-        "\u416A\u0000\u0000\u623D\u0000\u0000\u3D62\u0000"+
-        "\u0000\u3E4A\u0000\u0000\u6240\u0000\u0000\u623F"+
-        "\u623E\u487D\u0000\u3447\u3829\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6246\u0000\u0000\u6243\u3F3F"+
-        "\u4C32\u0000\u0000\u0000\u6242\u6244\u6245\u0000"+
-        "\u0000\u6241\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6247"+
-        "\u6248\u0000\u442F\u0000\u3463\u0000\u0000\u0000"+
-        "\u4365\u0000\u0000\u0000\u0000\u0000\u0000\u6249"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u624A\u624D\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F67\u0000\u4644\u0000\u624E\u4B53\u0000"+
-        "\u624B\u0000\u0000\u624C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6251\u0000\u0000\u0000\u0000\u6250\u624F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6253\u0000\u0000\u6252\u0000"+
-        "\u0000\u6254\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6256\u0000"+
-        "\u6255\u0000\u0000\u0000\u0000\u4A4D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3D56\u4E46\u0000\u0000"+
-        "\u6257\u0000\u0000\u4637\u0000\u0000\u6258\u0000"+
-        "\u0000\u6259\u0000\u625D\u625B\u625C\u0000\u625A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u625E"+
-        "\u0000\u0000\u0000\u0000\u0000\u625F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6260"+
-        "\u0000\u0000\u6261\u4C37\u6262\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C70\u6263\u0000\u434E\u0000\u476A"+
-        "\u0000\u366B\u0000\u0000\u0000\u433B\u6264\u363A"+
-        "\u0000\u0000\u0000\u4050\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6265\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A3D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6266\u0000\u0000\u0000"+
-        "\u0000\u0000\u6267\u0000\u3826\u3A55\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6269\u0000\u0000\u0000\u0000\u4556\u3A56\u354E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4B24\u0000\u474B\u0000\u0000\u0000"+
-        "\u0000\u0000\u4557\u0000\u0000\u0000\u0000\u395C"+
-        "\u0000\u0000\u0000\u0000\u0000\u626B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3E4B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4E32\u3945\u0000\u0000\u3827"+
-        "\u0000\u0000\u4823\u0000\u626D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u626F\u0000\u0000\u0000"+
-        "\u0000\u386B\u0000\u0000\u0000\u0000\u626E\u4476"+
-        "\u0000\u0000\u0000\u0000\u6271\u3337\u626C\u0000"+
-        "\u0000\u486A\u0000\u3130\u0000\u3A6C\u0000\u4F52"+
-        "\u0000\u0000\u6270\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6272\u0000\u0000\u0000\u4A4B"+
-        "\u0000\u4059\u6274\u0000\u0000\u0000\u0000\u6275"+
-        "\u0000\u0000\u0000\u0000\u0000\u6273\u0000\u0000"+
-        "\u0000\u0000\u334E\u0000\u627B\u0000\u627A\u0000"+
-        "\u0000\u3C27\u0000\u0000\u0000\u627C\u6277\u0000"+
-        "\u0000\u0000\u627D\u6278\u0000\u0000\u0000\u0000"+
-        "\u4858\u6276\u0000\u0000\u6279\u0000\u0000\u0000"+
-        "\u0000\u0000\u6322\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6321"+
-        "\u4B61\u0000\u0000\u0000\u627E\u0000\u0000\u306B"+
-        "\u0000\u0000\u0000\u0000\u6324\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6323\u0000\u0000"+
-        "\u0000\u3E4C\u0000\u0000\u0000\u0000\u0000\u6325"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4143\u0000"+
-        "\u0000\u6327\u6326\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6328\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6268\u0000"+
-        "\u0000\u0000\u626A\u632A\u6329\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3C28\u0000\u4E69\u0000\u3C52\u0000"+
-        "\u632B\u3737\u0000\u0000\u0000\u0000\u0000\u3540"+
-        "\u3527\u3B63\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4D34\u0000\u0000\u6331\u0000\u6330\u4144\u632D"+
-        "\u0000\u0000\u632F\u0000\u0000\u3D4B\u3F40\u632E"+
-        "\u632C\u0000\u472A\u0000\u0000\u3E4D\u0000\u0000"+
-        "\u493C\u0000\u0000\u0000\u0000\u3A57\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4578"+
-        "\u0000\u0000\u6332\u0000\u0000\u0000\u0000\u6333"+
-        "\u6349\u3658\u0000\u0000\u4F3D\u4135\u0000\u0000"+
-        "\u0000\u0000\u6334\u0000\u0000\u3252\u4477\u4A21"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6335\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u357A\u6336"+
-        "\u0000\u0000\u6338\u0000\u0000\u0000\u6339\u0000"+
-        "\u4729\u0000\u0000\u633A\u0000\u0000\u0000\u0000"+
-        "\u0000\u633B\u633C\u0000\u0000\u3659\u3253\u4645"+
-        "\u3D28\u3B64\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u633D\u0000\u3D29\u0000\u0000\u0000\u0000"+
-        "\u0000\u324A\u4943\u0000\u0000\u633E\u0000\u0000"+
-        "\u486B\u0000\u0000\u0000\u0000\u0000\u0000\u4145"+
-        "\u0000\u6341\u0000\u6342\u4769\u0000\u3F41\u633F"+
-        "\u0000\u4361\u0000\u0000\u6340\u0000\u0000\u0000"+
-        "\u3E4E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u305C\u0000\u0000\u0000\u0000"+
-        "\u3529\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6343\u0000\u0000\u4478\u0000\u6344\u4047\u0000"+
-        "\u0000\u0000\u0000\u0000\u4C2D\u0000\u0000\u4923"+
-        "\u6345\u6346\u4355\u0000\u4E47\u0000\u0000\u6348"+
-        "\u6347\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3C6F\u0000"+
-        "\u0000\u634A\u3070\u0000\u0000\u0000\u0000\u634D"+
-        "\u0000\u0000\u0000\u634B\u3254\u374E\u634C\u3946"+
-        "\u3972\u0000\u4A66\u634E\u0000\u0000\u4B54\u0000"+
-        "\u0000\u6350\u0000\u0000\u0000\u4051\u314F\u323A"+
-        "\u302C\u0000\u0000\u0000\u0000\u0000\u0000\u634F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6351\u6352\u3E77\u0000\u0000\u0000\u0000"+
-        "\u0000\u6353\u0000\u334F\u0000\u0000\u0000\u0000"+
-        "\u6355\u0000\u0000\u0000\u376A\u0000\u3566\u0000"+
-        "\u0000\u6356\u3675\u0000\u0000\u6357\u0000\u407C"+
-        "\u0000\u464D\u0000\u4060\u3A75\u0000\u0000\u0000"+
-        "\u6358\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4362\u416B\u0000\u635A\u635C\u6359"+
-        "\u635B\u0000\u0000\u0000\u0000\u0000\u0000\u3722"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u635D\u3726\u0000\u0000\u0000\u3567\u4D52"+
-        "\u635F\u0000\u0000\u0000\u0000\u0000\u6360\u0000"+
-        "\u0000\u0000\u312E\u0000\u0000\u0000\u0000\u6363"+
-        "\u0000\u0000\u0000\u3376\u6362\u6361\u0000\u6365"+
-        "\u635E\u0000\u6366\u4E29\u0000\u6367\u0000\u6368"+
-        "\u0000\u0000\u5474\u636A\u0000\u6369\u0000\u0000"+
-        "\u0000\u636B\u636C\u0000\u4E35\u636D\u0000\u706F"+
-        "\u3E4F\u636E\u636F\u3D57\u0000\u4638\u6370\u0000"+
-        "\u0000\u0000\u4328\u0000\u0000\u6371\u0000\u433C"+
-        "\u6372\u0000\u0000\u0000\u0000\u0000\u3625\u0000"+
-        "\u513F\u435D\u3C33\u0000\u0000\u0000\u0000\u3448"+
-        "\u0000\u0000\u6373\u0000\u6422\u0000\u6376\u0000"+
-        "\u3568\u0000\u6375\u6424\u0000\u0000\u0000\u6374"+
-        "\u0000\u3E50\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6378\u6379\u0000\u452B\u0000\u0000\u637A\u0000"+
-        "\u335E\u0000\u0000\u0000\u0000\u3F5A\u4964\u0000"+
-        "\u637C\u0000\u0000\u0000\u4268\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6377\u0000\u637B\u637D\u0000"+
-        "\u0000\u3A7B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6426\u492E\u0000"+
-        "\u4826\u4579\u0000\u365A\u6425\u6423\u0000\u4835"+
-        "\u637E\u435E\u457B\u0000\u457A\u0000\u3A76\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6438\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6428\u0000\u642A"+
-        "\u0000\u0000\u0000\u0000\u642D\u0000\u642E\u0000"+
-        "\u642B\u642C\u0000\u0000\u6429\u6427\u0000\u0000"+
-        "\u0000\u0000\u6421\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4A4F\u3255"+
-        "\u0000\u0000\u0000\u6435\u0000\u6432\u0000\u6437"+
-        "\u0000\u0000\u6436\u0000\u4773\u4C27\u0000\u3B3B"+
-        "\u6430\u6439\u6434\u0000\u6433\u642F\u0000\u6431"+
-        "\u0000\u3449\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u433D\u0000\u0000\u407D\u0000\u0000"+
-        "\u0000\u4822\u0000\u0000\u643E\u0000\u0000\u0000"+
-        "\u4824\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4061\u643B\u0000\u0000\u484F\u0000\u643F\u4A53"+
-        "\u0000\u435B\u0000\u643A\u643C\u0000\u0000\u643D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6440\u0000\u0000"+
-        "\u3C44\u0000\u0000\u0000\u4646\u6445\u6444\u0000"+
-        "\u0000\u6441\u0000\u0000\u0000\u4F36\u0000\u0000"+
-        "\u0000\u0000\u0000\u644A\u0000\u0000\u644E\u644B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6447\u0000\u0000\u0000\u0000\u0000\u0000\u6448"+
-        "\u0000\u0000\u0000\u0000\u0000\u644D\u0000\u0000"+
-        "\u0000\u6442\u5255\u6449\u6443\u0000\u0000\u644C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6452"+
-        "\u0000\u344A\u0000\u644F\u0000\u0000\u0000\u6450"+
-        "\u0000\u0000\u6451\u6454\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6453"+
-        "\u4876\u0000\u0000\u0000\u0000\u6455\u4E7C\u4A6D"+
-        "\u645A\u0000\u0000\u6457\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6456\u4052\u0000\u6459"+
-        "\u645B\u0000\u0000\u0000\u6458\u0000\u645F\u0000"+
-        "\u645C\u0000\u0000\u0000\u0000\u0000\u0000\u645D"+
-        "\u6446\u0000\u0000\u0000\u645E\u6460\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6461\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A46\u0000\u6462\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4C62\u0000"+
-        "\u0000\u364E\u3729\u6463\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A34\u0000\u3F68\u0000\u4C30\u0000\u0000"+
-        "\u6464\u0000\u4E33\u0000\u0000\u4774\u0000\u4146"+
-        "\u4734\u0000\u0000\u3D4D\u0000\u0000\u0000\u3040"+
-        "\u0000\u6469\u6467\u0000\u6465\u3421\u0000\u3E51"+
-        "\u646A\u0000\u0000\u6468\u0000\u6466\u646E\u0000"+
-        "\u0000\u646D\u646C\u646B\u0000\u0000\u0000\u0000"+
-        "\u0000\u646F\u0000\u0000\u0000\u6470\u403A\u0000"+
-        "\u6471\u0000\u6473\u0000\u0000\u6472\u0000\u0000"+
-        "\u0000\u0000\u3852\u0000\u0000\u0000\u4138\u0000"+
-        "\u0000\u0000\u6475\u0000\u0000\u0000\u457C\u0000"+
-        "\u6474\u0000\u0000\u0000\u6476\u0000\u4A35\u416C"+
-        "\u3947\u0000\u6477\u0000\u0000\u0000\u0000\u4E48"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6479"+
-        "\u0000\u0000\u647A\u0000\u647B\u0000\u647C\u0000"+
-        "\u3B65\u0000\u647D\u374F\u0000\u0000\u356A\u0000"+
-        "\u352A\u0000\u6521\u0000\u4C73\u3948\u647E\u0000"+
-        "\u0000\u0000\u6524\u4C66\u0000\u473C\u0000\u0000"+
-        "\u4933\u0000\u0000\u0000\u3D63\u6523\u0000\u3C53"+
-        "\u3949\u3B66\u3569\u4A36\u6522\u0000\u0000\u0000"+
-        "\u4147\u4B42\u3A77\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B67\u445D\u0000\u6527\u4E5F"+
-        "\u3A59\u0000\u6528\u3F42\u0000\u652A\u0000\u0000"+
-        "\u0000\u3E52\u3A30\u0000\u0000\u0000\u0000\u6529"+
-        "\u0000\u0000\u3D2A\u383E\u4148\u6525\u652B\u0000"+
-        "\u0000\u0000\u0000\u6526\u3750\u0000\u652E\u6532"+
-        "\u376B\u0000\u0000\u0000\u0000\u0000\u652D\u0000"+
-        "\u0000\u0000\u0000\u6536\u0000\u0000\u394A\u0000"+
-        "\u0000\u4D6D\u303C\u6533\u0000\u0000\u356B\u0000"+
-        "\u6530\u0000\u0000\u0000\u0000\u0000\u6531\u0000"+
-        "\u0000\u457D\u652F\u652C\u0000\u3328\u4064\u0000"+
-        "\u0000\u3828\u0000\u0000\u0000\u6538\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6535\u0000\u0000\u0000\u0000\u0000\u6537"+
-        "\u0000\u0000\u0000\u6534\u0000\u0000\u0000\u0000"+
-        "\u0000\u3751\u4233\u6539\u416E\u0000\u0000\u6546"+
-        "\u0000\u0000\u6542\u653C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6540\u3C7A\u305D\u653B\u6543"+
-        "\u6547\u394B\u4C56\u0000\u4456\u653D\u0000\u0000"+
-        "\u6545\u0000\u653A\u433E\u0000\u653F\u303D\u4C4A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u653E"+
-        "\u0000\u0000\u365B\u486C\u0000\u0000\u0000\u416D"+
-        "\u0000\u4E50\u3D6F\u0000\u0000\u656E\u0000\u0000"+
-        "\u6548\u0000\u407E\u0000\u6544\u6549\u654B\u0000"+
-        "\u4479\u654E\u0000\u0000\u654A\u0000\u0000\u0000"+
-        "\u4A54\u344B\u0000\u0000\u4C4B\u0000\u0000\u305E"+
-        "\u0000\u0000\u654D\u0000\u4E7D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u654C\u0000\u0000\u0000\u0000"+
-        "\u0000\u316F\u0000\u0000\u466C\u654F\u0000\u0000"+
-        "\u0000\u6556\u6550\u6557\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6553\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u477B\u0000\u0000\u3C4A\u6555"+
-        "\u0000\u6552\u6558\u6551\u0000\u0000\u3D44\u0000"+
-        "\u0000\u0000\u0000\u4B25\u0000\u0000\u3D4C\u0000"+
-        "\u0000\u6554\u6560\u0000\u0000\u655C\u0000\u655F"+
-        "\u0000\u655D\u6561\u655B\u0000\u6541\u4053\u0000"+
-        "\u0000\u484B\u0000\u655E\u0000\u0000\u6559\u0000"+
-        "\u0000\u0000\u4121\u3752\u0000\u3D2B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F25\u4136\u6564\u0000"+
-        "\u0000\u6566\u6567\u0000\u0000\u6563\u6565\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u655A\u6562"+
-        "\u0000\u656A\u6569\u0000\u0000\u4B7A\u0000\u0000"+
-        "\u372B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6568\u0000\u656C\u656B\u656F\u0000\u6571"+
-        "\u0000\u0000\u3B3C\u656D\u0000\u0000\u0000\u0000"+
-        "\u6572\u6573\u0000\u0000\u6574\u0000\u657A\u453B"+
-        "\u6576\u0000\u6575\u6577\u6578\u0000\u6579\u0000"+
-        "\u0000\u0000\u0000\u657B\u657C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u344C\u0000"+
-        "\u657D\u0000\u657E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6621\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6622\u6623\u6624\u0000"+
-        "\u6625\u6626\u0000\u0000\u6628\u6627\u0000\u0000"+
-        "\u6629\u0000\u0000\u0000\u0000\u0000\u0000\u662A"+
-        "\u662B\u0000\u0000\u0000\u0000\u0000\u0000\u662E"+
-        "\u662C\u662D\u3A61\u3753\u0000\u0000\u4356\u0000"+
-        "\u4833\u0000\u3D70\u0000\u0000\u474D\u0000\u486D"+
-        "\u662F\u586D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6630\u6632\u0000\u4D65\u6631\u6634"+
-        "\u6633\u0000\u4D53\u0000\u6635\u0000\u487E\u0000"+
-        "\u0000\u0000\u0000\u0000\u6636\u0000\u0000\u0000"+
-        "\u0000\u0000\u6639\u0000\u0000\u6638\u6637\u0000"+
-        "\u0000\u0000\u0000\u663A\u3732\u0000\u0000\u0000"+
-        "\u4122\u3541\u0000\u0000\u0000\u0000\u663E\u663B"+
-        "\u0000\u0000\u663C\u0000\u0000\u0000\u663F\u0000"+
-        "\u6640\u663D\u0000\u0000\u0000\u3129\u0000\u0000"+
-        "\u0000\u3227\u0000\u0000\u0000\u6642\u6643\u0000"+
-        "\u0000\u0000\u6644\u0000\u4D62\u0000\u0000\u0000"+
-        "\u0000\u0000\u3D2C\u0000\u6646\u6645\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3F69\u6647\u0000\u0000\u0000\u0000\u6648\u0000"+
-        "\u0000\u6649\u0000\u3465\u0000\u0000\u0000\u0000"+
-        "\u344D\u0000\u0000\u664A\u0000\u0000\u0000\u0000"+
-        "\u0000\u664B\u0000\u4B5D\u4D63\u0000\u0000\u0000"+
-        "\u4D54\u4F37\u0000\u394D\u664E\u3C54\u664D\u0000"+
-        "\u0000\u0000\u0000\u664F\u3C29\u0000\u0000\u0000"+
-        "\u4251\u0000\u6650\u0000\u0000\u394C\u0000\u4C57"+
-        "\u6651\u6652\u0000\u0000\u6653\u0000\u0000\u0000"+
-        "\u0000\u6654\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6655\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3C2A\u0000\u0000\u4C6D\u0000"+
-        "\u0000\u0000\u0000\u6657\u0000\u433F\u0000\u6656"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6659\u0000"+
-        "\u0000\u0000\u6658\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u665A\u0000\u0000\u0000\u403B\u0000"+
-        "\u665B\u0000\u665C\u0000\u0000\u0000\u4A39\u665D"+
-        "\u0000\u416F\u665E\u0000\u0000\u0000\u0000\u0000"+
-        "\u665F\u0000\u0000\u0000\u0000\u0000\u0000\u4E7E"+
-        "\u6662\u0000\u6661\u6660\u4430\u0000\u6663\u3F26"+
-        "\u0000\u6664\u0000\u0000\u0000\u6665\u4F38\u6666"+
-        "\u0000\u0000\u0000\u0000\u6667\u6669\u6668\u4825"+
-        "\u0000\u4679\u0000\u4F3E\u4829\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u666B\u0000\u0000\u3E53\u0000"+
-        "\u492A\u0000\u666C\u666A\u0000\u344E\u0000\u0000"+
-        "\u0000\u3854\u3B68\u0000\u0000\u486E\u0000\u0000"+
-        "\u0000\u382A\u4B43\u0000\u666F\u666D\u0000\u394E"+
-        "\u0000\u394F\u3069\u0000\u3A68\u0000\u0000\u0000"+
-        "\u0000\u0000\u4759\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u305F\u6674\u0000\u4340\u0000"+
-        "\u0000\u0000\u0000\u0000\u4758\u0000\u425B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6676\u0000"+
-        "\u0000\u6672\u6675\u6670\u0000\u6673\u4B26\u0000"+
-        "\u0000\u3855\u0000\u0000\u307D\u6671\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6678"+
-        "\u0000\u6679\u0000\u0000\u4639\u0000\u0000\u0000"+
-        "\u363B\u0000\u0000\u0000\u6726\u473D\u0000\u0000"+
-        "\u0000\u0000\u3B69\u0000\u0000\u363C\u4048\u4F46"+
-        "\u4C2E\u6677\u4054\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3553\u667A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u667C\u0000\u0000\u0000\u0000"+
-        "\u0000\u667B\u0000\u0000\u0000\u0000\u0000\u667D"+
-        "\u0000\u4326\u0000\u473E\u0000\u0000\u0000\u0000"+
-        "\u0000\u4431\u0000\u0000\u0000\u0000\u6723\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6722\u0000"+
-        "\u0000\u0000\u0000\u667E\u0000\u0000\u3F55\u0000"+
-        "\u4965\u6725\u0000\u6724\u3950\u4F53\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6735"+
-        "\u0000\u0000\u0000\u0000\u0000\u6729\u672A\u0000"+
-        "\u0000\u0000\u0000\u3C70\u0000\u0000\u6728\u0000"+
-        "\u3978\u6727\u0000\u0000\u672B\u0000\u0000\u0000"+
-        "\u4432\u4A22\u4123\u0000\u0000\u0000\u0000\u425C"+
-        "\u672F\u0000\u6730\u672C\u0000\u0000\u0000\u0000"+
-        "\u672D\u0000\u672E\u0000\u0000\u0000\u0000\u3951"+
-        "\u0000\u0000\u0000\u6736\u0000\u6732\u0000\u0000"+
-        "\u0000\u0000\u4966\u0000\u4B6C\u4928\u0000\u0000"+
-        "\u6731\u0000\u0000\u6734\u6733\u0000\u0000\u0000"+
-        "\u4B44\u6737\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6738\u0000\u0000\u4137\u0000\u6739\u0000\u0000"+
-        "\u673B\u0000\u673F\u0000\u0000\u673C\u673A\u473F"+
-        "\u673D\u0000\u673E\u0000\u0000\u0000\u3232\u0000"+
-        "\u6745\u6740\u0000\u0000\u0000\u6741\u0000\u0000"+
-        "\u0000\u6742\u0000\u4221\u0000\u0000\u0000\u0000"+
-        "\u6744\u6743\u6746\u0000\u0000\u0000\u0000\u6747"+
-        "\u6748\u0000\u0000\u3F43\u0000\u3269\u0000\u6749"+
-        "\u4E57\u0000\u3C2B\u0000\u0000\u3D2D\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B6A\u4357\u0000\u0000\u0000"+
-        "\u0000\u0000\u674A\u674B\u3131\u0000\u674C\u0000"+
-        "\u0000\u674D\u674E\u0000\u0000\u674F\u0000\u6750"+
-        "\u363D\u5A2A\u6751\u0000\u4065\u6752\u3C4B\u0000"+
-        "\u6753\u0000\u5030\u0000\u0000\u0000\u6754\u4A5E"+
-        "\u345C\u0000\u0000\u4124\u3D58\u0000\u4971\u3D2E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6755\u3952\u6756\u484C\u0000\u6764\u0000"+
-        "\u0000\u0000\u0000\u6758\u0000\u4249\u4775\u383F"+
-        "\u6757\u4125\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6759\u0000\u0000\u0000\u0000\u0000\u0000\u447A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u675B\u675A\u675D\u0000\u0000\u675C\u0000\u675E"+
-        "\u0000\u0000\u6760\u0000\u675F\u0000\u344F\u0000"+
-        "\u6761\u0000\u6762\u6763\u0000\u0000\u3A31\u4E49"+
-        "\u0000\u6765\u3F27\u0000\u0000\u0000\u3170\u6766"+
-        "\u6767\u0000\u0000\u0000\u0000\u0000\u6768\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3072\u0000\u6769\u0000\u0000"+
-        "\u0000\u0000\u676A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4967\u0000\u0000\u0000\u3C47\u0000\u676C"+
-        "\u0000\u0000\u0000\u0000\u0000\u3329\u3032\u0000"+
-        "\u0000\u0000\u0000\u676B\u676E\u474E\u0000\u3F44"+
-        "\u0000\u3256\u0000\u4B27\u0000\u0000\u0000\u0000"+
-        "\u375D\u365C\u0000\u676D\u0000\u326A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3423\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3171\u6772\u4E6A\u425D\u0000\u0000\u4944"+
-        "\u0000\u677E\u0000\u3257\u677C\u0000\u677A\u6771"+
-        "\u0000\u676F\u0000\u6770\u0000\u3C63\u366C\u4377"+
-        "\u0000\u0000\u0000\u4651\u0000\u0000\u0000\u0000"+
-        "\u0000\u3151\u0000\u6774\u6773\u0000\u0000\u0000"+
-        "\u0000\u6779\u6775\u6778\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex4=
-        "\u0000\u0000\u4C50\u6777\u3258\u337D\u677B\u0000"+
-        "\u0000\u677D\u0000\u0000\u0000\u0000\u3754\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6823\u682C"+
-        "\u682D\u0000\u0000\u0000\u302B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6834\u0000\u0000\u0000\u0000"+
-        "\u3071\u0000\u0000\u682B\u0000\u0000\u0000\u682A"+
-        "\u0000\u6825\u6824\u0000\u6822\u6821\u4363\u0000"+
-        "\u427B\u6827\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6826\u0000\u0000\u0000\u0000\u6829\u0000\u0000"+
-        "\u0000\u4170\u3755\u0000\u0000\u0000\u0000\u3141"+
-        "\u6828\u0000\u3953\u0000\u0000\u0000\u0000\u0000"+
-        "\u4171\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u683A\u0000\u683B\u0000\u3259"+
-        "\u0000\u0000\u0000\u322E\u6838\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u682E\u0000\u6836"+
-        "\u0000\u683D\u6837\u0000\u0000\u0000\u6835\u0000"+
-        "\u0000\u0000\u0000\u6776\u0000\u0000\u6833\u0000"+
-        "\u0000\u0000\u682F\u0000\u0000\u0000\u3450\u6831"+
-        "\u683C\u0000\u6832\u0000\u0000\u0000\u0000\u0000"+
-        "\u683E\u0000\u6830\u477C\u0000\u0000\u0000\u0000"+
-        "\u0000\u4D69\u0000\u0000\u0000\u6839\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u684F\u0000\u0000"+
-        "\u0000\u6847\u0000\u0000\u0000\u3F7B\u0000\u0000"+
-        "\u0000\u0000\u3546\u0000\u365D\u0000\u6842\u0000"+
-        "\u0000\u0000\u0000\u325B\u0000\u0000\u3E54\u0000"+
-        "\u6845\u0000\u0000\u0000\u3A5A\u0000\u0000\u4551"+
-        "\u684A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A6E\u0000\u6841\u0000\u0000\u0000\u325A"+
-        "\u3856\u4929\u684B\u0000\u683F\u0000\u0000\u6848"+
-        "\u0000\u0000\u0000\u6852\u0000\u6843\u0000\u0000"+
-        "\u0000\u0000\u0000\u6844\u463A\u0000\u0000\u6849"+
-        "\u0000\u0000\u0000\u6846\u4B28\u684C\u3060\u0000"+
-        "\u0000\u0000\u0000\u6840\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u684E\u0000\u684D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u476B\u6854\u0000\u685F\u0000\u0000\u0000"+
-        "\u0000\u337E\u0000\u0000\u0000\u6862\u0000\u0000"+
-        "\u6850\u0000\u0000\u0000\u6855\u4D6E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u685E\u0000"+
-        "\u0000\u4D55\u0000\u0000\u0000\u0000\u4E2A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4378"+
-        "\u0000\u0000\u0000\u336B\u0000\u0000\u0000\u0000"+
-        "\u0000\u4972\u6864\u4621\u0000\u0000\u3031\u0000"+
-        "\u0000\u685D\u0000\u6859\u4172\u6853\u685B\u6860"+
-        "\u0000\u472C\u0000\u0000\u0000\u302A\u0000\u6858"+
-        "\u0000\u6861\u4978\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u685C\u0000\u6857\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3E55\u0000\u0000\u0000\u0000"+
-        "\u3D2F\u0000\u0000\u0000\u3C2C\u0000\u0000\u0000"+
-        "\u0000\u4C58\u0000\u0000\u4947\u0000\u0000\u6867"+
-        "\u0000\u6870\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u685A\u0000\u0000"+
-        "\u0000\u0000\u3377\u0000\u0000\u0000\u0000\u0000"+
-        "\u3E78\u6865\u0000\u686A\u4173\u0000\u0000\u6866"+
-        "\u0000\u686D\u0000\u0000\u435F\u0000\u686E\u0000"+
-        "\u0000\u4D56\u6863\u3338\u0000\u6869\u0000\u0000"+
-        "\u686C\u4C2C\u0000\u0000\u0000\u0000\u686F\u0000"+
-        "\u0000\u6868\u686B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4B29\u0000\u4F21\u0000"+
-        "\u0000\u0000\u0000\u0000\u6873\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u687A\u0000\u0000\u6872"+
-        "\u3C43\u0000\u0000\u0000\u0000\u0000\u6851\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A4E\u0000\u4C22\u6879\u6878\u0000\u6874"+
-        "\u6875\u0000\u3136\u0000\u0000\u0000\u0000\u6877"+
-        "\u0000\u6871\u0000\u0000\u0000\u0000\u4455\u0000"+
-        "\u0000\u0000\u0000\u0000\u6876\u307E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4222\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4A43\u0000\u0000"+
-        "\u687B\u6921\u0000\u4859\u0000\u0000\u0000\u0000"+
-        "\u687E\u3E56\u3C49\u6923\u0000\u0000\u363E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6924\u0000\u4979"+
-        "\u687D\u0000\u6856\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u687C\u0000\u0000\u0000\u0000"+
-        "\u4F4F\u4622\u4973\u0000\u0000\u692B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6931"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6932\u0000"+
-        "\u6925\u0000\u0000\u0000\u4776\u0000\u0000\u692F"+
-        "\u6927\u0000\u6929\u0000\u0000\u0000\u0000\u0000"+
-        "\u6933\u6928\u0000\u0000\u692C\u0000\u0000\u3172"+
-        "\u0000\u4665\u0000\u692D\u6930\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6926\u0000\u4126\u0000"+
-        "\u692A\u3B27\u3F45\u3730\u4C74\u0000\u4C79\u3D72"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6937\u6935\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4F4E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6934\u0000\u0000\u0000\u4D75\u0000\u6936"+
-        "\u6938\u0000\u0000\u0000\u0000\u6939\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u693C\u693A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4623\u693B\u0000\u0000"+
-        "\u0000\u484D\u692E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3D73"+
-        "\u0000\u693D\u6942\u4174\u0000\u0000\u6941\u0000"+
-        "\u0000\u0000\u6922\u0000\u0000\u0000\u6943\u4149"+
-        "\u0000\u0000\u693E\u6940\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u693F\u0000\u0000\u5D31\u5D22"+
-        "\u0000\u0000\u6945\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6944\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4D76\u0000\u623C"+
-        "\u6946\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6947"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6948\u3857\u0000"+
-        "\u3554\u0000\u0000\u0000\u694A\u515D\u0000\u0000"+
-        "\u0000\u0000\u3575\u0000\u4E3A\u0000\u3673\u694B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u694C"+
-        "\u0000\u0000\u0000\u436E\u0000\u0000\u0000\u0000"+
-        "\u0000\u694D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u467A\u0000\u303A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3263\u6952\u6953\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u694E\u0000\u3B3D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u694F\u4742\u0000\u0000\u0000"+
-        "\u0000\u6950\u6951\u695B\u0000\u0000\u0000\u6955"+
-        "\u6958\u0000\u0000\u0000\u0000\u0000\u6954\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6956\u0000\u6957\u3C58"+
-        "\u0000\u6959\u0000\u4341\u0000\u3756\u3342\u0000"+
-        "\u0000\u0000\u0000\u0000\u695C\u0000\u0000\u0000"+
-        "\u0000\u333F\u0000\u6961\u0000\u0000\u695D\u6960"+
-        "\u0000\u0000\u0000\u0000\u483A\u0000\u0000\u0000"+
-        "\u0000\u695E\u0000\u0000\u695F\u4948\u485A\u6962"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u427D\u696C\u0000\u6968\u0000\u0000\u326B\u0000"+
-        "\u6966\u0000\u4B2A\u6967\u0000\u0000\u6964\u0000"+
-        "\u6965\u696A\u696D\u0000\u0000\u696B\u0000\u0000"+
-        "\u0000\u6969\u6963\u0000\u0000\u0000\u0000\u0000"+
-        "\u4358\u0000\u6974\u0000\u4C2A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6972\u0000\u0000"+
-        "\u0000\u6973\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u696E\u0000\u0000\u6970"+
-        "\u0000\u0000\u0000\u6971\u0000\u0000\u0000\u696F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4066\u0000\u4F39\u6978\u0000\u6979\u0000"+
-        "\u0000\u0000\u0000\u6A21\u0000\u3F2A\u0000\u697B"+
-        "\u0000\u697E\u0000\u0000\u0000\u0000\u0000\u6976"+
-        "\u6975\u0000\u0000\u6A22\u0000\u0000\u325C\u0000"+
-        "\u697C\u0000\u6A23\u0000\u0000\u0000\u697D\u0000"+
-        "\u0000\u0000\u0000\u0000\u697A\u0000\u4433\u0000"+
-        "\u6977\u0000\u0000\u0000\u0000\u0000\u0000\u4768"+
-        "\u0000\u0000\u6A27\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4D3B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6A26"+
-        "\u0000\u0000\u6A25\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6A2E\u0000\u0000\u0000\u6A28"+
-        "\u0000\u0000\u0000\u6A30\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D66\u6A33\u0000\u6A2A\u0000\u0000"+
-        "\u6A2B\u0000\u0000\u0000\u6A2F\u0000\u6A32\u6A31"+
-        "\u0000\u0000\u0000\u6A29\u0000\u0000\u0000\u0000"+
-        "\u6A2C\u0000\u6A3D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6A36\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6A34"+
-        "\u0000\u0000\u6A35\u0000\u0000\u0000\u6A3A\u6A3B"+
-        "\u0000\u332A\u0000\u3542\u0000\u0000\u6A39\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A24\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A38\u6A3C\u6A37"+
-        "\u0000\u6A3E\u0000\u0000\u0000\u6A40\u6A3F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6A42\u6A41\u695A\u0000\u0000\u0000\u6A46"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6A43\u0000\u0000\u0000\u0000\u6A44\u0000"+
-        "\u0000\u6A45\u0000\u6A47\u0000\u0000\u0000\u0000"+
-        "\u376C\u0000\u6A49\u0000\u6A48\u0000\u3D30\u0000"+
-        "\u0000\u0000\u0000\u0000\u3954\u5E27\u0000\u0000"+
-        "\u0000\u0000\u6A4A\u3D51\u0000\u0000\u0000\u3339"+
-        "\u0000\u6A4B\u0000\u3152\u0000\u3E57\u6A4C\u0000"+
-        "\u0000\u3955\u6A4D\u3061\u0000\u0000\u0000\u0000"+
-        "\u493D\u0000\u0000\u6A4E\u0000\u0000\u0000\u0000"+
-        "\u3F6A\u0000\u6A55\u0000\u0000\u6A52\u0000\u436F"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A53\u6A50\u365E"+
-        "\u0000\u6A4F\u6A56\u0000\u0000\u0000\u0000\u0000"+
-        "\u3736\u0000\u0000\u425E\u0000\u6A5C\u0000\u0000"+
-        "\u0000\u0000\u6A58\u0000\u0000\u0000\u4235\u6A57"+
-        "\u0000\u6A5A\u0000\u0000\u0000\u0000\u6A51\u0000"+
-        "\u0000\u0000\u6A5B\u0000\u6A5D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u486F\u0000\u0000\u6A59\u0000"+
-        "\u6A5E\u6A60\u0000\u0000\u3853\u6A54\u0000\u3041"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6A5F"+
-        "\u0000\u3A5B\u4E76\u6A61\u6A62\u4175\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4E22"+
-        "\u0000\u0000\u0000\u0000\u6A63\u4D35\u0000\u0000"+
-        "\u6A64\u6A65\u0000\u0000\u4A64\u6A66\u0000\u3A40"+
-        "\u0000\u4E23\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6A6B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6A6C\u3E58\u6A6A\u0000\u0000\u0000"+
-        "\u4D67\u6A67\u0000\u0000\u6A69\u403D\u3F7E\u0000"+
-        "\u0000\u0000\u6A68\u0000\u6A6D\u0000\u0000\u4A23"+
-        "\u0000\u0000\u6A6F\u0000\u6A6E\u0000\u0000\u0000"+
-        "\u336C\u0000\u4B2B\u6A70\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A7C\u6A72\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A73\u0000\u0000"+
-        "\u0000\u0000\u6A74\u6A75\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6A79\u0000"+
-        "\u6A7A\u0000\u0000\u6A78\u0000\u0000\u0000\u0000"+
-        "\u0000\u6A76\u0000\u6A71\u6A77\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6A7B\u7037\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3228\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6A7E\u365F"+
-        "\u6A7D\u0000\u0000\u0000\u6B22\u0000\u6B21\u0000"+
-        "\u0000\u0000\u6B24\u0000\u0000\u6B23\u0000\u6B25"+
-        "\u0000\u0000\u3D31\u0000\u6B26\u0000\u0000\u6B27"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6B28\u403E"+
-        "\u0000\u4D57\u0000\u6B29\u0000\u0000\u4A24\u4746"+
-        "\u6B2A\u0000\u6B2B\u382B\u0000\u0000\u0000\u352C"+
-        "\u0000\u0000\u0000\u6B2C\u0000\u0000\u3B6B\u4741"+
-        "\u6B2D\u0000\u3350\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6B2E\u0000\u0000\u0000\u0000\u6B30\u4D77"+
-        "\u0000\u6B2F\u3F46\u0000\u6B31\u0000\u0000\u6B32"+
-        "\u0000\u0000\u6B33\u3451\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B34\u0000\u0000\u6B35\u0000\u6B36"+
-        "\u6B37\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3351\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B38\u0000\u6B39\u6B3A\u0000\u0000"+
-        "\u0000\u0000\u0000\u3272\u0000\u0000\u3F28\u6B3B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6B3C\u0000\u0000\u0000"+
-        "\u6B3D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3840\u0000\u447B\u6B3E\u0000\u0000\u0000\u0000"+
-        "\u3757\u0000\u3F56\u0000\u6B41\u0000\u4624\u0000"+
-        "\u6B40\u0000\u0000\u3731\u0000\u0000\u6B3F\u4277"+
-        "\u352D\u0000\u0000\u6B42\u0000\u6B43\u0000\u3E59"+
-        "\u0000\u0000\u0000\u376D\u0000\u6B44\u0000\u0000"+
-        "\u0000\u0000\u4B2C\u0000\u0000\u405F\u0000\u0000"+
-        "\u0000\u3576\u0000\u4C75\u414A\u0000\u6B45\u0000"+
-        "\u0000\u0000\u3F47\u4370\u3E5A\u0000\u0000\u0000"+
-        "\u0000\u6B46\u0000\u0000\u0000\u0000\u6B49\u0000"+
-        "\u6B4A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3A3E\u4242\u6B48\u0000\u3E5B\u493E\u0000\u0000"+
-        "\u0000\u0000\u0000\u6B47\u0000\u0000\u3B6C\u0000"+
-        "\u3153\u0000\u6B4E\u3758\u0000\u0000\u3B6E\u0000"+
-        "\u0000\u3B6D\u0000\u4F4D\u6B4D\u6B4C\u4127\u0000"+
-        "\u354D\u4F43\u333A\u3E5C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6B4B\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B50\u0000\u6B51\u6B4F\u0000\u3858"+
-        "\u0000\u4D40\u0000\u0000\u3B6F\u4727\u0000\u0000"+
-        "\u0000\u6B54\u0000\u4040\u0000\u4342\u0000\u0000"+
-        "\u4D36\u0000\u6B57\u0000\u0000\u0000\u386C\u0000"+
-        "\u403F\u6B53\u0000\u6B58\u386D\u6B55\u6B56\u0000"+
-        "\u6B52\u0000\u0000\u0000\u4062\u4649\u0000\u0000"+
-        "\u432F\u0000\u325D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4870\u0000\u0000\u3543\u0000\u0000\u4434"+
-        "\u0000\u0000\u6B5B\u0000\u6B59\u0000\u0000\u434C"+
-        "\u0000\u0000\u0000\u4041\u3452\u6B5A\u0000\u3F5B"+
-        "\u0000\u0000\u4E4A\u0000\u0000\u0000\u4F40\u0000"+
-        "\u0000\u0000\u6B5C\u6B67\u4435\u0000\u6B66\u0000"+
-        "\u6B63\u6B6B\u6B64\u0000\u6B60\u0000\u447C\u6B5F"+
-        "\u0000\u0000\u0000\u6B5D\u0000\u4D21\u3B70\u0000"+
-        "\u0000\u6B61\u0000\u6B5E\u0000\u0000\u0000\u6B65"+
-        "\u3D74\u0000\u3841\u0000\u0000\u0000\u427A\u0000"+
-        "\u4B45\u315A\u3062\u0000\u4625\u0000\u0000\u6B69"+
-        "\u0000\u0000\u0000\u0000\u6B68\u0000\u4666\u0000"+
-        "\u6B6D\u0000\u0000\u0000\u6B62\u0000\u6B6C\u6B6E"+
-        "\u0000\u382C\u6B6A\u3956\u0000\u3C55\u0000\u0000"+
-        "\u6B6F\u4D58\u0000\u0000\u0000\u0000\u6B72\u0000"+
-        "\u6B75\u0000\u0000\u6B73\u4935\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6B70\u0000\u0000\u0000\u0000"+
-        "\u0000\u3660\u0000\u0000\u0000\u0000\u6B74\u0000"+
-        "\u0000\u6B76\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6B7A\u0000\u0000\u6B77\u0000\u6B79\u6B78"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6B7B\u0000"+
-        "\u3C31\u0000\u6B7D\u6B7C\u4968\u0000\u0000\u6C21"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3759\u0000"+
-        "\u0000\u0000\u0000\u6B7E\u6C22\u0000\u0000\u6C23"+
-        "\u3544\u6641\u3E79\u0000\u6C24\u0000\u0000\u386E"+
-        "\u0000\u0000\u0000\u0000\u0000\u6C25\u0000\u0000"+
-        "\u6C26\u0000\u0000\u3B3E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5A4E\u0000\u6C27\u0000\u6C28\u0000"+
-        "\u3D32\u0000\u6C29\u6C2A\u0000\u0000\u6C2B\u0000"+
-        "\u0000\u6C2C\u6C2D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u432B"+
-        "\u0000\u0000\u6C2E\u0000\u0000\u0000\u0000\u6C30"+
-        "\u0000\u6C2F\u0000\u0000\u0000\u0000\u4626\u0000"+
-        "\u6C31\u0000\u4B2D\u0000\u6C32\u0000\u6C33\u0000"+
-        "\u6C34\u0000\u0000\u0000\u0000\u6C35\u0000\u0000"+
-        "\u0000\u0000\u465A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3E5D\u6C36\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u396B\u502E\u6C37\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6C38\u493F\u6C39\u0000\u6C41\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C3A\u0000\u0000\u6C3C\u0000\u0000"+
-        "\u0000\u6C3B\u6C3D\u0000\u4B46\u6C3E\u6C3F\u0000"+
-        "\u0000\u0000\u0000\u0000\u6C40\u0000\u0000\u0000"+
-        "\u6C42\u0000\u0000\u0000\u0000\u332D\u4467\u0000"+
-        "\u4969\u3A62\u3957\u0000\u0000\u0000\u0000\u494F"+
-        "\u325F\u484E\u6C45\u3453\u4055\u6C44\u6C49\u4379"+
-        "\u4C63\u0000\u6C47\u6C48\u352E\u0000\u6C4A\u4763"+
-        "\u425F\u0000\u0000\u4871\u453D\u6C46\u0000\u4B47"+
-        "\u326C\u6C4C\u4F28\u4442\u4F45\u0000\u0000\u3B71"+
-        "\u6C4B\u0000\u4231\u0000\u0000\u6C5C\u4128\u0000"+
-        "\u0000\u4678\u0000\u4950\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C4F\u3B3F\u3B72\u0000\u3E5E\u0000"+
-        "\u4765\u0000\u382D\u6C4E\u6C4D\u0000\u496A\u0000"+
-        "\u0000\u0000\u3C41\u0000\u0000\u4552\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C51\u6C52\u3958\u6C50\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6C53\u6C54\u0000\u6C56"+
-        "\u4223\u0000\u6C55\u3466\u0000\u6C58\u0000\u6C57"+
-        "\u6C59\u0000\u0000\u6C5B\u6C5D\u0000\u6C5E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4056\u0000\u3C4F\u6C5F"+
-        "\u0000\u0000\u0000\u3352\u0000\u6C60\u0000\u0000"+
-        "\u4176\u6C61\u0000\u6C62\u496B\u0000\u0000\u352F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6C63\u0000\u0000\u0000\u4436\u0000\u0000"+
-        "\u0000\u0000\u315B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6C64\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3C71\u0000\u0000\u0000\u0000"+
-        "\u3F76\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u422D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C67\u0000\u0000\u0000\u6C66\u0000"+
-        "\u0000\u0000\u6C65\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6C6D\u6C6B\u0000\u0000\u6C68"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6C6A\u0000"+
-        "\u0000\u0000\u6C69\u6C6C\u0000\u3577\u0000\u6C70"+
-        "\u0000\u4057\u0000\u6C71\u0000\u0000\u0000\u0000"+
-        "\u3859\u0000\u6C6E\u6C6F\u0000\u0000\u0000\u4F29"+
-        "\u0000\u0000\u0000\u4437\u0000\u4129\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6C72\u0000\u0000\u6C75"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6C73\u6C74\u4D59\u0000\u0000\u0000\u0000\u4627"+
-        "\u6C78\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6C76\u6C77\u6C79"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D29\u0000\u0000\u0000\u0000\u0000"+
-        "\u6C7C\u0000\u0000\u0000\u6C7D\u6C7B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C7A\u0000\u447D\u0000\u0000\u6D21"+
-        "\u6D25\u6D22\u6C7E\u0000\u6D23\u0000\u0000\u0000"+
-        "\u6D24\u0000\u0000\u0000\u0000\u6D2B\u0000\u0000"+
-        "\u0000\u6D26\u0000\u0000\u0000\u0000\u0000\u4058"+
-        "\u6D28\u0000\u0000\u6D2A\u6D27\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D2D\u0000\u3D33\u0000\u6D2C\u0000"+
-        "\u0000\u0000\u0000\u0000\u6D2E\u0000\u0000\u0000"+
-        "\u0000\u6D2F\u0000\u0000\u6D32\u6D31\u0000\u6D30"+
-        "\u0000\u0000\u6D34\u6D33\u0000\u4C76\u0000\u0000"+
-        "\u0000\u6D36\u0000\u6D35\u6D37\u0000\u0000\u0000"+
-        "\u0000\u6D38\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6D3A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D39\u3F48\u6D3B\u0000\u0000\u366D"+
-        "\u6D3C\u6D3E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6D3F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6D40\u6D3D\u0000"+
-        "\u6D41\u0000\u3C56\u6D42\u3530\u3733\u0000\u0000"+
-        "\u0000\u0000\u382E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6D43\u0000\u0000\u0000\u4670"+
-        "\u0000\u0000\u453E\u6D44\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6D47\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C34\u0000\u0000\u6D46\u6D45\u375A\u6D48\u0000"+
-        "\u0000\u0000\u0000\u3353\u0000\u6D4A\u0000\u0000"+
-        "\u0000\u3A5C\u6D49\u0000\u6D52\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D4C\u6D4E\u4A65\u6D4B\u0000\u0000"+
-        "\u0000\u6D4D\u0000\u6D51\u6D4F\u3531\u0000\u6D50"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6D53\u0000"+
-        "\u0000\u475A\u4E58\u0000\u0000\u0000\u0000\u3D34"+
-        "\u0000\u0000\u0000\u6D54\u0000\u0000\u0000\u0000"+
-        "\u4D22\u6D56\u0000\u6D55\u0000\u0000\u6D59\u4D41"+
-        "\u0000\u0000\u6D58\u0000\u336D\u6D57\u6D5C\u0000"+
-        "\u0000\u6D5B\u0000\u0000\u6D5A\u4532\u6D5D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6D5E"+
-        "\u0000\u0000\u0000\u0000\u6D5F\u0000\u0000\u396C"+
-        "\u0000\u3725\u6D60\u6D61\u6D62\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F49\u6D63\u0000\u3C2D\u6D64"+
-        "\u0000\u0000\u0000\u6D65\u0000\u0000\u0000\u5221"+
-        "\u517E\u0000\u0000\u0000\u0000\u6D66\u6570\u6D67"+
-        "\u4324\u3F2B\u4740\u0000\u0000\u0000\u0000\u6D68"+
-        "\u0000\u0000\u4A55\u4454\u397E\u0000\u0000\u4329"+
-        "\u0000\u0000\u312A\u0000\u4B78\u3F57\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u375E\u0000"+
-        "\u0000\u3661\u0000\u0000\u4A56\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D69\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D6B\u0000\u0000\u6D6A\u3260\u0000"+
-        "\u0000\u4676\u6D6C\u4777\u0000\u4533\u0000\u6D6D"+
-        "\u3D52\u0000\u0000\u0000\u6D6F\u0000\u0000\u4C42"+
-        "\u6D7E\u6D71\u6D72\u0000\u0000\u4449\u0000\u0000"+
-        "\u4260\u4177\u0000\u4628\u0000\u6D70\u3555\u0000"+
-        "\u0000\u0000\u0000\u6D79\u0000\u6D76\u6E25\u4629"+
-        "\u4360\u6D73\u0000\u447E\u4553\u6D74\u6D78\u3F60"+
-        "\u0000\u4767\u444C\u0000\u0000\u4042\u6D77\u422E"+
-        "\u4224\u6D75\u3029\u4F22\u0000\u0000\u0000\u6D7A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4261\u0000"+
-        "\u0000\u3D35\u3F4A\u0000\u0000\u6D7C\u6D7B\u0000"+
-        "\u306F\u6D7D\u0000\u0000\u492F\u0000\u6E27\u0000"+
-        "\u0000\u465B\u3F6B\u0000\u0000\u4359\u0000\u3678"+
-        "\u0000\u6E26\u4D37\u313F\u0000\u4A57\u3261\u6E21"+
-        "\u6E22\u6E23\u6E24\u463B\u4323\u3063\u6E28\u0000"+
-        "\u6E29\u7423\u0000\u0000\u423D\u0000\u6E2A\u0000"+
-        "\u3173\u414C\u0000\u382F\u0000\u4D5A\u0000\u0000"+
-        "\u6E2B\u452C\u0000\u0000\u0000\u4178\u3C57\u6E2C"+
-        "\u0000\u0000\u6E2F\u0000\u0000\u3D65\u6E2D\u412B"+
-        "\u412A\u0000\u3064\u0000\u4E4B\u6E31\u0000\u4872"+
-        "\u6E33\u6E32\u6E30\u6364\u3454\u0000\u0000\u6D6E"+
-        "\u0000\u6E35\u6E34\u0000\u0000\u0000\u0000\u6E36"+
-        "\u0000\u4D38\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4661\u0000\u0000\u4B2E\u0000"+
-        "\u6E37\u0000\u3C59\u0000\u0000\u0000\u0000\u6E38"+
-        "\u0000\u6E39\u0000\u0000\u0000\u6E3A\u0000\u0000"+
-        "\u4521\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u306A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3959\u0000\u0000\u0000\u4F3A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6E3E\u0000\u0000\u0000\u0000"+
-        "\u0000\u3734\u6E3B\u0000\u6E3C\u0000\u0000\u0000"+
-        "\u4974\u0000\u0000\u0000\u0000\u3354\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4D39\u0000\u363F"+
-        "\u0000\u0000\u0000\u0000\u0000\u4554\u0000\u0000"+
-        "\u0000\u0000\u6E3F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E40\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6E41\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4522\u0000\u0000"+
-        "\u6E43\u0000\u6E42\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4653\u6E44\u3D36\u3C60\u475B\u4371\u0000"+
-        "\u0000\u0000\u3C72\u0000\u3F6C\u0000\u6E45\u0000"+
-        "\u6E46\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3F5D\u6E47\u0000\u6E48\u0000\u0000"+
-        "\u0000\u6E49\u4D6F\u0000\u3D37\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E4B\u6E4A\u0000\u395A\u0000\u3973"+
-        "\u3B40\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E4E\u0000\u0000\u0000\u0000\u3D66"+
-        "\u0000\u6E4D\u0000\u6E4C\u0000\u4269\u0000\u0000"+
-        "\u386F\u0000\u4043\u0000\u0000\u0000\u0000\u4830"+
-        "\u0000\u0000\u0000\u0000\u3D39\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E4F\u0000\u3E5F\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E52\u6E50\u0000\u0000\u0000\u6E51"+
-        "\u0000\u0000\u0000\u0000\u6E54\u6E53\u0000\u0000"+
-        "\u3E7A\u0000\u6E55\u0000\u0000\u0000\u0000\u0000"+
-        "\u6E56\u6E57\u0000\u0000\u0000\u0000\u4850\u3A53"+
-        "\u3C61\u6E58\u0000\u6E59\u4E24\u3D45\u4C6E\u4E4C"+
-        "\u6E5A\u3662\u0000\u0000\u0000\u0000\u6E5B\u0000"+
-        "\u4523\u0000\u0000\u6E5E\u3378\u3F4B\u0000\u6E5C"+
-        "\u0000\u6E5D\u0000\u4460\u0000\u0000\u4B55\u367C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6E60\u6E61\u0000"+
-        "\u0000\u0000\u0000\u0000\u6E5F\u0000\u0000\u6E63"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u465F\u3343\u0000"+
-        "\u0000\u6E67\u0000\u0000\u6E64\u6E66\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6E62\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F4F\u0000\u0000\u6E65\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4E6B\u0000\u0000\u385A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E6F"+
-        "\u0000\u0000\u0000\u0000\u4534\u6E6A\u0000\u0000"+
-        "\u6E6D\u6E6B\u0000\u6E70\u0000\u0000\u0000\u0000"+
-        "\u6E71\u0000\u0000\u0000\u0000\u0000\u0000\u6E69"+
-        "\u0000\u0000\u6E76\u3174\u0000\u0000\u6E68\u0000"+
-        "\u0000\u0000\u482D\u0000\u6E6C\u0000\u3E60\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u395B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4B48\u0000"+
-        "\u3664\u0000\u0000\u3D46\u0000\u463C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u412D\u0000\u6E74\u0000\u6E6E\u6E73\u0000"+
-        "\u4C43\u0000\u4438\u6E75\u6E72\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u412C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E79"+
-        "\u0000\u6E78\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E77"+
-        "\u0000\u0000\u4B2F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3D7B\u0000\u0000\u0000"+
-        "\u0000\u6E7A\u4A5F\u0000\u0000\u3154\u0000\u0000"+
-        "\u0000\u0000\u4946\u4372\u0000\u0000\u0000\u0000"+
-        "\u3578\u0000\u6E7C\u0000\u395D\u0000\u0000\u0000";
-
-    private final static String innerIndex5=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3B2C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E7B"+
-        "\u3F6D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3F6E\u6F21\u6F23\u0000\u0000\u0000\u0000\u0000"+
-        "\u3E7B\u0000\u6F22\u6F24\u0000\u0000\u3653\u0000"+
-        "\u4945\u0000\u0000\u3C62\u4F23\u0000\u6E7E\u3A78"+
-        "\u0000\u0000\u4F3F\u0000\u0000\u6F26\u0000\u0000"+
-        "\u0000\u0000\u6F25\u6F27\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6E7D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4669\u0000\u4555\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4457\u0000\u6F2C\u0000"+
-        "\u0000\u0000\u0000\u4343\u6F28\u0000\u0000\u0000"+
-        "\u6F29\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u372D\u0000\u6F2B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3830\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6F2A\u0000\u3E61\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3379\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6F30\u0000\u3A3F\u4179"+
-        "\u0000\u0000\u444A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u333B"+
-        "\u0000\u0000\u0000\u0000\u6F2E\u6F2F\u4443\u0000"+
-        "\u6F2D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F31\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6F37\u0000\u0000\u0000\u0000"+
-        "\u6F3A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F39\u452D\u0000\u0000\u0000\u0000\u6F32\u6F33"+
-        "\u6F36\u0000\u0000\u0000\u0000\u6F38\u0000\u0000"+
-        "\u0000\u3640\u0000\u0000\u6F3B\u6F35\u0000\u0000"+
-        "\u6F34\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6F3F\u0000\u0000\u0000\u6F40"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F41\u0000\u0000\u6F3E\u6F3D\u0000\u0000\u0000"+
-        "\u3E62\u462A\u6F3C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F45\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6F43\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6F44\u6F42\u0000"+
-        "\u4278\u0000\u6F46\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F47\u0000\u0000\u6F49\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3455\u6F48\u4C7A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6F54\u6F4A\u0000\u0000\u6F4D\u0000"+
-        "\u6F4B\u0000\u6F4C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6F4E\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F50\u0000\u0000\u0000\u0000\u6F51\u0000\u6F52"+
-        "\u0000\u0000\u0000\u0000\u6F55\u6F53\u6F56\u6F58"+
-        "\u0000\u6F57\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4439"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C67\u0000\u6F59\u412E\u0000\u0000\u0000\u6F5A"+
-        "\u0000\u4A44\u6F5B\u332B\u0000\u0000\u0000\u313C"+
-        "\u0000\u3457\u0000\u3456\u6F5C\u0000\u6F5D\u0000"+
-        "\u6F5E\u6F5F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F60\u0000\u3458\u3355\u395E\u4836\u0000\u6F62"+
-        "\u6F61\u0000\u0000\u0000\u0000\u6F63\u0000\u0000"+
-        "\u0000\u0000\u315C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F66\u0000\u6F65\u6F64\u0000\u6F67\u0000"+
-        "\u0000\u0000\u0000\u6F6A\u0000\u0000\u0000\u3047"+
-        "\u0000\u0000\u6F68\u0000\u6F6C\u6F6B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6F6E\u6F6D\u6F6F\u0000"+
-        "\u462E\u0000\u0000\u0000\u6F70\u0000\u0000\u0000"+
-        "\u0000\u6F71\u6F73\u0000\u0000\u6F72\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u496C\u0000\u0000\u0000"+
-        "\u0000\u6F74\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F75\u0000\u3A65\u0000\u0000\u0000\u6F76\u6F77"+
-        "\u0000\u0000\u4B49\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u414B\u0000\u0000\u0000\u3024"+
-        "\u424B\u0000\u6F78\u0000\u496D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6F7B\u6F79\u395F\u0000\u6F7A"+
-        "\u3842\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A45\u6F7D\u7021\u6F7E\u7022"+
-        "\u0000\u0000\u3121\u3F58\u3D7C\u3459\u7023\u0000"+
-        "\u0000\u0000\u4766\u0000\u7025\u0000\u0000\u0000"+
-        "\u3122\u0000\u7024\u4444\u0000\u4E4D\u462B\u6F7C"+
-        "\u4E26\u0000\u3831\u0000\u0000\u4D5B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3679\u4E34\u0000"+
-        "\u3728\u0000\u4262\u6721\u0000\u7026\u332C\u3F6F"+
-        "\u0000\u0000\u0000\u0000\u3356\u7028\u0000\u7029"+
-        "\u7027\u3764\u0000\u3A5D\u3E63\u0000\u0000\u0000"+
-        "\u3123\u0000\u0000\u4E59\u0000\u0000\u0000\u702B"+
-        "\u6E2E\u0000\u702A\u0000\u0000\u0000\u0000\u0000"+
-        "\u702E\u702C\u702D\u0000\u702F\u0000\u7030\u4E6C"+
-        "\u7031\u7032\u0000\u4049\u483B\u0000\u0000\u0000"+
-        "\u3F7D\u3467\u0000\u0000\u4D3A\u326D\u3D38\u385B"+
-        "\u0000\u7035\u0000\u7034\u3B73\u7036\u7033\u0000"+
-        "\u0000\u3B28\u0000\u0000\u0000\u703A\u6A2D\u0000"+
-        "\u0000\u5256\u0000\u3F77\u7038\u0000\u0000\u0000"+
-        "\u0000\u0000\u4E25\u4671\u0000\u0000\u0000\u0000"+
-        "\u312B\u0000\u4063\u3C36\u0000\u0000\u0000\u0000"+
-        "\u4A37\u0000\u3140\u0000\u0000\u0000\u4E6D\u4D6B"+
-        "\u0000\u703B\u0000\u4545\u0000\u0000\u0000\u0000"+
-        "\u3C7B\u0000\u0000\u0000\u703C\u0000\u703D\u3F4C"+
-        "\u703E\u0000\u4E6E\u0000\u0000\u7039\u7040\u7042"+
-        "\u0000\u7041\u0000\u703F\u0000\u0000\u7043\u0000"+
-        "\u0000\u7044\u0000\u0000\u417A\u0000\u3262\u0000"+
-        "\u0000\u0000\u0000\u0000\u7045\u0000\u0000\u4C38"+
-        "\u0000\u0000\u7046\u0000\u0000\u0000\u0000\u0000"+
-        "\u7047\u0000\u4F2A\u0000\u0000\u0000\u0000\u0000"+
-        "\u5B31\u7048\u0000\u0000\u0000\u7049\u704A\u0000"+
-        "\u0000\u0000\u704E\u0000\u704B\u0000\u704C\u0000"+
-        "\u704D\u704F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4044\u0000\u0000\u0000\u4C77\u0000"+
-        "\u0000\u4045\u0000\u0000\u7050\u0000\u4873\u0000"+
-        "\u7051\u7353\u4C4C\u0000\u7052\u0000\u7053\u0000"+
-        "\u7054\u3357\u0000\u7056\u0000\u3F59\u0000\u0000"+
-        "\u0000\u7057\u0000\u0000\u3724\u0000\u0000\u0000"+
-        "\u0000\u7058\u705C\u0000\u705A\u0000\u0000\u0000"+
-        "\u0000\u705B\u0000\u0000\u3373\u7059\u705D\u0000"+
-        "\u0000\u0000\u0000\u705E\u0000\u3048\u0000\u705F"+
-        "\u7060\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3E64\u0000\u0000\u0000\u7061\u0000\u0000\u0000"+
-        "\u3547\u0000\u0000\u7064\u0000\u0000\u7063\u0000"+
-        "\u7062\u0000\u0000\u6B71\u0000\u4A5C\u0000\u0000"+
-        "\u0000\u0000\u0000\u7065\u7066\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7067\u0000\u0000\u7068\u0000"+
-        "\u7069\u0000\u0000\u706A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u345A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u706B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u706C\u4723\u0000"+
-        "\u0000\u0000\u706E\u323B\u0000\u7071\u7070\u0000"+
-        "\u0000\u0000\u0000\u3124\u0000\u0000\u0000\u3641"+
-        "\u0000\u4A47\u443A\u3A22\u0000\u3960\u3D67\u0000"+
-        "\u3F5C\u0000\u0000\u0000\u7073\u0000\u0000\u7072"+
-        "\u4D42\u3468\u4852\u465C\u0000\u0000\u0000\u3F7C"+
-        "\u4E4E\u0000\u375B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u7076\u0000\u0000\u7075\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4B4B\u462C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3150\u0000\u0000\u7077"+
-        "\u7074\u0000\u0000\u4951\u4D6A\u7078\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7079\u0000"+
-        "\u0000\u0000\u0000\u707B\u426A\u335B\u335C\u707A"+
-        "\u0000\u0000\u0000\u0000\u3469\u3832\u0000\u0000"+
-        "\u346A\u0000\u0000\u453F\u0000\u0000\u4E60\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u385C"+
-        "\u0000\u0000\u0000\u707C\u0000\u0000\u0000\u707D"+
-        "\u707E\u7121\u0000\u7123\u7122\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4977\u0000\u7124\u0000\u0000\u0000\u0000\u7125"+
-        "\u0000\u7126\u0000\u0000\u0000\u0000\u7127\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7129\u7128\u0000\u712A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4874\u664C\u0000\u0000\u3F29"+
-        "\u0000\u0000\u3532\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u712B\u0000\u712C\u0000\u522C\u5D3B\u4853"+
-        "\u0000\u0000\u307B\u0000\u303B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3B74\u4B30\u3E7E\u0000"+
-        "\u0000\u0000\u0000\u712D\u0000\u4C5F\u0000\u0000"+
-        "\u0000\u712E\u4D5C\u0000\u3142\u0000\u0000\u0000"+
-        "\u3B41\u0000\u712F\u326E\u7130\u0000\u0000\u0000"+
-        "\u7131\u0000\u0000\u0000\u0000\u7133\u7134\u0000"+
-        "\u7136\u7132\u0000\u0000\u7135\u0000\u0000\u0000"+
-        "\u345B\u0000\u0000\u0000\u7137\u0000\u7138\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7139\u713A\u0000"+
-        "\u0000\u0000\u713B\u0000\u0000\u713D\u0000\u0000"+
-        "\u0000\u713C\u0000\u713F\u7142\u0000\u0000\u0000"+
-        "\u713E\u7140\u7141\u0000\u0000\u7143\u0000\u3642"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3C73\u7144"+
-        "\u7145\u3961\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7146\u0000\u0000"+
-        "\u333E\u0000\u0000\u0000\u474F\u7147\u7148\u0000"+
-        "\u0000\u0000\u0000\u435A\u466B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7149\u0000\u0000\u0000"+
-        "\u0000\u477D\u0000\u0000\u424C\u3158\u366E\u0000"+
-        "\u366F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4373\u714E\u3670\u0000\u0000\u326F\u0000\u0000"+
-        "\u714D\u0000\u0000\u714B\u0000\u714C\u0000\u714A"+
-        "\u0000\u0000\u7158\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u714F\u7150\u0000"+
-        "\u0000\u7151\u7152\u0000\u0000\u0000\u0000\u0000"+
-        "\u7154\u0000\u0000\u7153\u0000\u0000\u0000\u3D59"+
-        "\u0000\u7155\u0000\u0000\u0000\u7157\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3533\u7156"+
-        "\u0000\u0000\u417B\u3833\u0000\u0000\u0000\u0000"+
-        "\u0000\u7159\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u424D\u0000\u0000\u715A\u0000\u0000\u0000\u0000"+
-        "\u462D\u0000\u0000\u0000\u0000\u0000\u0000\u715B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7160\u0000"+
-        "\u715E\u0000\u715D\u715F\u0000\u715C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7162\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7161\u0000\u7164"+
-        "\u0000\u0000\u3643\u7163\u0000\u0000\u0000\u7165"+
-        "\u0000\u0000\u7166\u0000\u7168\u7167\u0000\u0000"+
-        "\u0000\u7169\u716B\u716A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u397C\u0000\u0000\u0000\u0000\u716C\u0000\u0000"+
-        "\u716D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u333C\u0000\u0000\u0000\u716E\u0000\u0000\u0000"+
-        "\u716F\u0000\u0000\u0000\u3F71\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7170"+
-        "\u0000\u7171\u0000\u7172\u7173\u0000\u0000\u0000"+
-        "\u3962\u0000\u0000\u0000\u0000\u0000\u7174\u7175"+
-        "\u0000\u0000\u7176\u7177\u0000\u0000\u7178\u0000"+
-        "\u0000\u0000\u4831\u717A\u0000\u4926\u717B\u7179"+
-        "\u0000\u717D\u0000\u0000\u717C\u0000\u0000\u717E"+
-        "\u0000\u0000\u0000\u7221\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7222\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7223\u0000\u7224\u0000\u0000\u0000\u0000\u7225"+
-        "\u0000\u0000\u7226\u7227\u0000\u7228\u0000\u7229"+
-        "\u722A\u722B\u722C\u0000\u0000\u0000\u722D\u722E"+
-        "\u0000\u5D35\u722F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6478\u3534\u0000\u0000\u0000"+
-        "\u0000\u3321\u3A32\u7231\u7230\u4C25\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7233\u7234\u7232"+
-        "\u0000\u7235\u0000\u0000\u4B62\u0000\u0000\u0000"+
-        "\u7236\u0000\u357B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4F25"+
-        "\u0000\u0000\u0000\u0000\u7237\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7239\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u303E\u0000"+
-        "\u0000\u723A\u4A2B\u7238\u0000\u0000\u723B\u723C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u723D"+
-        "\u723E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u723F\u0000\u4B6E\u3B2D\u0000\u3A7A\u412F\u0000"+
-        "\u0000\u0000\u0000\u0000\u7240\u0000\u0000\u0000"+
-        "\u0000\u7243\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7241\u0000\u0000\u0000\u0000\u0000\u7244\u0000"+
-        "\u0000\u3871\u7242\u0000\u0000\u0000\u0000\u7245"+
-        "\u0000\u7246\u7247\u0000\u724B\u0000\u3B2A\u0000"+
-        "\u0000\u0000\u0000\u4264\u0000\u0000\u0000\u0000"+
-        "\u0000\u724C\u7249\u7248\u724A\u0000\u0000\u0000"+
-        "\u375F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7250\u724F\u724E\u0000\u0000\u3033\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u725A\u0000\u7256\u0000"+
-        "\u7257\u7253\u7259\u0000\u7255\u3362\u0000\u0000"+
-        "\u4F4C\u0000\u7258\u7254\u7252\u7251\u0000\u0000"+
-        "\u0000\u0000\u0000\u725C\u0000\u0000\u0000\u0000"+
-        "\u0000\u725F\u0000\u0000\u725E\u725D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4949\u725B\u3073"+
-        "\u7260\u0000\u7262\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u336F\u724D\u3137\u0000\u0000\u7264\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7263\u7261"+
-        "\u432D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4B70\u0000\u0000\u0000\u0000\u4E5A"+
-        "\u0000\u0000\u7265\u0000\u0000\u0000\u0000\u0000"+
-        "\u7266\u0000\u0000\u0000\u0000\u0000\u0000\u7267"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7268\u0000"+
-        "\u7269\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u443B\u0000\u726A"+
-        "\u0000\u4837\u0000\u726F\u726B\u0000\u0000\u0000"+
-        "\u726C\u0000\u0000\u4B31\u4C44\u0000\u4650\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7270\u0000\u0000\u7271\u463E"+
-        "\u726E\u726D\u0000\u0000\u0000\u0000\u322A\u0000"+
-        "\u0000\u0000\u7279\u0000\u0000\u7278\u0000\u0000"+
-        "\u0000\u0000\u0000\u3175\u0000\u0000\u0000\u7276"+
-        "\u0000\u0000\u0000\u7275\u0000\u0000\u7273\u0000"+
-        "\u337B\u0000\u7272\u3C32\u3229\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3963\u0000\u0000\u727C\u727B"+
-        "\u0000\u727A\u0000\u0000\u7277\u0000\u727D\u0000"+
-        "\u727E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7325\u7324\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u7326\u0000\u0000\u312D\u7321\u7322\u0000"+
-        "\u3974\u4C39\u0000\u0000\u7323\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4B32\u0000\u0000\u732B"+
-        "\u0000\u0000\u7327\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u732C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7329"+
-        "\u0000\u7328\u0000\u0000\u0000\u0000\u0000\u375C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u732D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u732E\u0000\u0000\u0000"+
-        "\u0000\u732F\u0000\u732A\u0000\u0000\u0000\u7274"+
-        "\u0000\u0000\u7330\u0000\u4461\u0000\u0000\u0000"+
-        "\u7334\u0000\u7335\u7333\u0000\u0000\u0000\u0000"+
-        "\u0000\u7332\u7338\u0000\u7331\u0000\u7336\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7337"+
-        "\u0000\u0000\u0000\u733A\u0000\u0000\u0000\u0000"+
-        "\u0000\u7339\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u733C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u733D\u0000\u733E"+
-        "\u0000\u0000\u4F49\u0000\u0000\u0000\u0000\u0000"+
-        "\u733B\u426B\u3A6D\u0000\u0000\u733F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u7340\u7341\u0000\u0000\u7342\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7343\u0000\u0000"+
-        "\u3834\u7344\u0000\u0000\u0000\u7345\u0000\u3C2F"+
-        "\u0000\u7346\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7347\u0000\u0000\u7348\u7349\u0000\u0000\u0000"+
-        "\u0000\u734C\u734A\u4F3C\u0000\u734B\u0000\u4E6F"+
-        "\u0000\u0000\u0000\u0000\u0000\u734D\u0000\u4E5B"+
-        "\u0000\u0000\u0000\u0000\u0000\u734E\u477E\u0000"+
-        "\u0000\u734F\u7351\u0000\u0000\u7352\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7350\u396D\u4C4D\u4B63\u5677\u0000\u5D60\u4B7B"+
-        "\u0000\u0000\u0000\u0000\u322B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7354\u3550\u7355\u7356"+
-        "\u7357\u0000\u3975\u0000\u7358\u0000\u0000\u0000"+
-        "\u6054\u4C5B\u0000\u4263\u7359\u735B\u735A\u0000"+
-        "\u735C\u0000\u0000\u0000\u0000\u735D\u0000\u0000"+
-        "\u735E\u0000\u0000\u0000\u0000\u0000\u0000\u735F"+
-        "\u0000\u0000\u0000\u0000\u7360\u0000\u7361\u7362"+
-        "\u0000\u7363\u0000\u7364\u7365\u7366\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7367"+
-        "\u7368\u0000\u0000\u0000\u0000\u0000\u4524\u0000"+
-        "\u0000\u0000\u0000\u385D\u0000\u736A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u414D\u736B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u736C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4921\u0000\u0000\u736D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u736E\u6337\u0000\u0000\u6C5A\u706D"+
-        "\u0000\u0000\u736F\u0000\u7370\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7372"+
-        "\u7373\u7374\u4E70\u7371\u0000\u0000\u7375\u7376"+
-        "\u0000\u0000\u7378\u0000\u7377\u0000\u0000\u0000"+
-        "\u0000\u0000\u737A\u0000\u0000\u0000\u737B\u7379"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4E36\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u737C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u737D\u6354\u0000\u0000"+
-        "\u737E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u212A\u0000\u2174\u2170\u2173\u2175\u0000"+
-        "\u214A\u214B\u2176\u215C\u2124\u0000\u2125\u213F"+
-        "\u2330\u2331\u2332\u2333\u2334\u2335\u2336\u2337"+
-        "\u2338\u2339\u2127\u2128\u2163\u2161\u2164\u2129"+
-        "\u2177\u2341\u2342\u2343\u2344\u2345\u2346\u2347"+
-        "\u2348\u2349\u234A\u234B\u234C\u234D\u234E\u234F"+
-        "\u2350\u2351\u2352\u2353\u2354\u2355\u2356\u2357"+
-        "\u2358\u2359\u235A\u214E\u2140\u214F\u2130\u2132"+
-        "\u212E\u2361\u2362\u2363\u2364\u2365\u2366\u2367"+
-        "\u2368\u2369\u236A\u236B\u236C\u236D\u236E\u236F"+
-        "\u2370\u2371\u2372\u2373\u2374\u2375\u2376\u2377"+
-        "\u2378\u2379\u237A\u2150\u2143\u2151\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2131\u0000\u216F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-        1, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        4, 5, 6, 7, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12,
-        13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
-        29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
-        45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
-        61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
-        77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93
-    };
-
-    private final static String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4,
-        innerIndex5
-    };
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0208_MS5022X_Decoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0208_MS5022X_Decoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1119 +0,0 @@
-/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-
-class JIS_X_0208_MS5022X_Decoder
-{
-    private final static String innerIndex0=
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u3000\u3001"+
-        "\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01"+
-        "\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F"+
-        "\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006"+
-        "\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\u301C\u2016"+
-        "\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08"+
-        "\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008"+
-        "\u3009\u300A\u300B\u300C\u300D\u300E\u300F\u3010"+
-        "\u3011\uFF0B\u2212\u00B1\u00D7\u00F7\uFF1D\u2260"+
-        "\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640"+
-        "\u00B0\u2032\u2033\u2103\uFFE5\uFF04\u00A2\u00A3"+
-        "\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605"+
-        "\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3"+
-        "\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191"+
-        "\u2193\u3013\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2208\u220B\u2286"+
-        "\u2287\u2282\u2283\u222A\u2229\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2227\u2228\u00AC"+
-        "\u21D2\u21D4\u2200\u2203\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2220"+
-        "\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B"+
-        "\u221A\u223D\u221D\u2235\u222B\u222C\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u212B\u2030\u266F"+
-        "\u266D\u266A\u2020\u2021\u00B6\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u25EF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15\uFF16"+
-        "\uFF17\uFF18\uFF19\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26"+
-        "\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E"+
-        "\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36"+
-        "\uFF37\uFF38\uFF39\uFF3A\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46"+
-        "\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E"+
-        "\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56"+
-        "\uFF57\uFF58\uFF59\uFF5A\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048"+
-        "\u3049\u304A\u304B\u304C\u304D\u304E\u304F\u3050"+
-        "\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058"+
-        "\u3059\u305A\u305B\u305C\u305D\u305E\u305F\u3060"+
-        "\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068"+
-        "\u3069\u306A\u306B\u306C\u306D\u306E\u306F\u3070"+
-        "\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078"+
-        "\u3079\u307A\u307B\u307C\u307D\u307E\u307F\u3080"+
-        "\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088"+
-        "\u3089\u308A\u308B\u308C\u308D\u308E\u308F\u3090"+
-        "\u3091\u3092\u3093\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u30A1\u30A2"+
-        "\u30A3\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA"+
-        "\u30AB\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2"+
-        "\u30B3\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA"+
-        "\u30BB\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2"+
-        "\u30C3\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA"+
-        "\u30CB\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2"+
-        "\u30D3\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA"+
-        "\u30DB\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2"+
-        "\u30E3\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA"+
-        "\u30EB\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2"+
-        "\u30F3\u30F4\u30F5\u30F6\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u0391\u0392\u0393\u0394"+
-        "\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C"+
-        "\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5"+
-        "\u03A6\u03A7\u03A8\u03A9\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u03B1\u03B2\u03B3\u03B4"+
-        "\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC"+
-        "\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C4\u03C5"+
-        "\u03C6\u03C7\u03C8\u03C9\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u0410\u0411\u0412\u0413\u0414\u0415"+
-        "\u0401\u0416\u0417\u0418\u0419\u041A\u041B\u041C"+
-        "\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424"+
-        "\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C"+
-        "\u042D\u042E\u042F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u0430\u0431\u0432\u0433\u0434\u0435"+
-        "\u0451\u0436\u0437\u0438\u0439\u043A\u043B\u043C"+
-        "\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444"+
-        "\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C"+
-        "\u044D\u044E\u044F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C"+
-        "\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B"+
-        "\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F"+
-        "\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2460\u2461"+
-        "\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469"+
-        "\u246A\u246B\u246C\u246D\u246E\u246F\u2470\u2471"+
-        "\u2472\u2473\u2160\u2161\u2162\u2163\u2164\u2165"+
-        "\u2166\u2167\u2168\u2169\uFFFD\u3349\u3314\u3322"+
-        "\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D"+
-        "\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E"+
-        "\u338E\u338F\u33C4\u33A1\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u337B\u301E\u301F\u2116"+
-        "\u33CD\u2121\u32A4\u32A5\u32A6\u32A7\u32A8\u3231"+
-        "\u3232\u3239\u337E\u337D\u337C\uFFFD\uFFFD\uFFFD"+
-        "\u222E\u2211\uFFFD\uFFFD\uFFFD\u221F\u22BF\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u4E9C\u5516\u5A03\u963F"+
-        "\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50"+
-        "\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893"+
-        "\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62"+
-        "\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309"+
-        "\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D"+
-        "\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF"+
-        "\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB"+
-        "\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A"+
-        "\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00"+
-        "\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141"+
-        "\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB"+
-        "\u80E4\u852D\u9662\u9670\u96A0\u97FB\u540B\u53F3"+
-        "\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA"+
-        "\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A"+
-        "\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91"+
-        "\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71"+
-        "\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8"+
-        "\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB"+
-        "\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD"+
-        "\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9"+
-        "\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F"+
-        "\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869"+
-        "\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"+
-        "\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956"+
-        "\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B"+
-        "\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069"+
-        "\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D"+
-        "\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6"+
-        "\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B"+
-        "\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304"+
-        "\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6"+
-        "\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B"+
-        "\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB"+
-        "\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A"+
-        "\u6094\u6062\u61D0\u6212\u62D0\u6539\u9B41\u6666"+
-        "\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9"+
-        "\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3"+
-        "\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72"+
-        "\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE"+
-        "\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C"+
-        "\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B"+
-        "\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D"+
-        "\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D"+
-        "\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1"+
-        "\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A"+
-        "\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B"+
-        "\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6"+
-        "\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB"+
-        "\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79"+
-        "\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853"+
-        "\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0"+
-        "\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36"+
-        "\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084"+
-        "\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218"+
-        "\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9"+
-        "\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E"+
-        "\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90"+
-        "\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F"+
-        "\u68CB\u68C4\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F"+
-        "\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4"+
-        "\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D"+
-        "\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0"+
-        "\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA"+
-        "\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827"+
-        "\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18"+
-        "\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025"+
-        "\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76"+
-        "\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB"+
-        "\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31"+
-        "\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC";
-
-    private final static String innerIndex1=
-        "\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354"+
-        "\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A"+
-        "\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2"+
-        "\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1"+
-        "\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D"+
-        "\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4"+
-        "\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981"+
-        "\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39"+
-        "\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A"+
-        "\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2"+
-        "\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047"+
-        "\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\u6398\u7A9F"+
-        "\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817"+
-        "\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4"+
-        "\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211"+
-        "\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84"+
-        "\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F"+
-        "\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B"+
-        "\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD"+
-        "\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483"+
-        "\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74"+
-        "\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065"+
-        "\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA"+
-        "\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC"+
-        "\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19"+
-        "\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78"+
-        "\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384"+
-        "\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B"+
-        "\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27"+
-        "\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1"+
-        "\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867"+
-        "\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F"+
-        "\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E"+
-        "\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF"+
-        "\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A"+
-        "\u53E3\u5411\u540E\u5589\u5751\u57A2\u597D\u5B54"+
-        "\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A"+
-        "\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B"+
-        "\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F"+
-        "\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F"+
-        "\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF"+
-        "\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B"+
-        "\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4"+
-        "\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7"+
-        "\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B"+
-        "\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344"+
-        "\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"+
-        "\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068"+
-        "\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A"+
-        "\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6"+
-        "\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF"+
-        "\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9"+
-        "\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73"+
-        "\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E"+
-        "\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750"+
-        "\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4"+
-        "\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B"+
-        "\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F"+
-        "\u685C\u9BAD\u7B39\u5319\u518A\u5237\u5BDF\u62F6"+
-        "\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6"+
-        "\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2"+
-        "\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523"+
-        "\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC"+
-        "\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8"+
-        "\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50"+
-        "\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C"+
-        "\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345"+
-        "\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3"+
-        "\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC"+
-        "\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57"+
-        "\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E"+
-        "\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494"+
-        "\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8"+
-        "\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4"+
-        "\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0"+
-        "\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199"+
-        "\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005"+
-        "\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A"+
-        "\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2"+
-        "\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A"+
-        "\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112"+
-        "\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA"+
-        "\u53CE\u5468\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE"+
-        "\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F"+
-        "\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B"+
-        "\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93"+
-        "\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283"+
-        "\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E"+
-        "\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC"+
-        "\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89"+
-        "\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187"+
-        "\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6"+
-        "\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9"+
-        "\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"+
-        "\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617"+
-        "\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A"+
-        "\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C"+
-        "\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F"+
-        "\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167"+
-        "\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11"+
-        "\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3"+
-        "\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266"+
-        "\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57"+
-        "\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5"+
-        "\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8"+
-        "\u8B72\u91B8\u9320\u5631\u57F4\u98FE\u62ED\u690D"+
-        "\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755"+
-        "\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD"+
-        "\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B"+
-        "\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33"+
-        "\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032"+
-        "\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B"+
-        "\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25"+
-        "\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782"+
-        "\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870"+
-        "\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07"+
-        "\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919"+
-        "\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16"+
-        "\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81"+
-        "\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816"+
-        "\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0"+
-        "\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752"+
-        "\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A"+
-        "\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A"+
-        "\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5"+
-        "\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76"+
-        "\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02"+
-        "\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9"+
-        "\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F"+
-        "\u7BAD\u7DDA\u7E4A\u7FA8\u817A\u821B\u8239\u85A6"+
-        "\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583"+
-        "\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55"+
-        "\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD"+
-        "\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97"+
-        "\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7"+
-        "\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D"+
-        "\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F"+
-        "\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15"+
-        "\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C"+
-        "\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70"+
-        "\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"+
-        "\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373"+
-        "\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E"+
-        "\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58"+
-        "\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A"+
-        "\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1"+
-        "\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE"+
-        "\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF"+
-        "\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000"+
-        "\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C"+
-        "\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85"+
-        "\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438"+
-        "\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\u53E9\u4F46"+
-        "\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA"+
-        "\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606"+
-        "\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD"+
-        "\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95"+
-        "\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5"+
-        "\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A"+
-        "\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3"+
-        "\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92"+
-        "\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD"+
-        "\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3"+
-        "\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01"+
-        "\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14"+
-        "\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E"+
-        "\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF"+
-        "\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5"+
-        "\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673"+
-        "\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A"+
-        "\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB"+
-        "\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C"+
-        "\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C"+
-        "\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95"+
-        "\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF"+
-        "\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6"+
-        "\u8E44\u9013\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458"+
-        "\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA"+
-        "\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B"+
-        "\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2"+
-        "\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E"+
-        "\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C"+
-        "\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825"+
-        "\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A"+
-        "\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95"+
-        "\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC"+
-        "\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53"+
-        "\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230";
-
-    private final static String innerIndex2=
-        "\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003"+
-        "\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5"+
-        "\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5"+
-        "\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97"+
-        "\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC"+
-        "\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6"+
-        "\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566"+
-        "\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948"+
-        "\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A"+
-        "\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF"+
-        "\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1"+
-        "\u8089\u8679\u5EFF\u65E5\u4E73\u5165\u5982\u5C3F"+
-        "\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962"+
-        "\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A"+
-        "\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9"+
-        "\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4"+
-        "\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436"+
-        "\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD"+
-        "\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29"+
-        "\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD"+
-        "\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7"+
-        "\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D"+
-        "\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206"+
-        "\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8"+
-        "\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B"+
-        "\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C"+
-        "\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34"+
-        "\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F"+
-        "\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C"+
-        "\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D"+
-        "\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351"+
-        "\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB"+
-        "\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB"+
-        "\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB"+
-        "\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435"+
-        "\u7709\u7F8E\u9F3B\u67CA\u7A17\u5339\u758B\u9AED"+
-        "\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46"+
-        "\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5"+
-        "\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55"+
-        "\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2"+
-        "\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015"+
-        "\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0"+
-        "\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276"+
-        "\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A"+
-        "\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE"+
-        "\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953"+
-        "\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"+
-        "\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8"+
-        "\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4"+
-        "\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587"+
-        "\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A"+
-        "\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB"+
-        "\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F"+
-        "\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF"+
-        "\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703"+
-        "\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893"+
-        "\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8"+
-        "\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29"+
-        "\u5E96\u62B1\u6367\u653E\u65B9\u670B\u6CD5\u6CE1"+
-        "\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702"+
-        "\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C"+
-        "\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8"+
-        "\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21"+
-        "\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420"+
-        "\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267"+
-        "\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C"+
-        "\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54"+
-        "\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9"+
-        "\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6"+
-        "\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D"+
-        "\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A"+
-        "\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1"+
-        "\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922"+
-        "\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18"+
-        "\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4"+
-        "\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762"+
-        "\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B"+
-        "\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE"+
-        "\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F"+
-        "\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A"+
-        "\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC"+
-        "\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108"+
-        "\u6CB9\u7652\u8AED\u8F38\u552F\u4F51\u512A\u52C7"+
-        "\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA"+
-        "\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98"+
-        "\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59"+
-        "\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9"+
-        "\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B"+
-        "\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9"+
-        "\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291"+
-        "\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA"+
-        "\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D"+
-        "\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D"+
-        "\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"+
-        "\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387"+
-        "\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409"+
-        "\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E"+
-        "\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE"+
-        "\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7"+
-        "\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1"+
-        "\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A"+
-        "\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E"+
-        "\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2"+
-        "\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62"+
-        "\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B"+
-        "\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\u84EE\u9023"+
-        "\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732"+
-        "\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A"+
-        "\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE"+
-        "\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C"+
-        "\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99"+
-        "\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897"+
-        "\u8155\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u5F0C\u4E10\u4E15\u4E2A"+
-        "\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82"+
-        "\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F"+
-        "\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4"+
-        "\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09"+
-        "\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88"+
-        "\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86"+
-        "\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1"+
-        "\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A"+
-        "\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE"+
-        "\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050"+
-        "\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085"+
-        "\u50B4\u50B2\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE"+
-        "\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101"+
-        "\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137"+
-        "\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162"+
-        "\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C"+
-        "\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6"+
-        "\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0"+
-        "\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9"+
-        "\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E"+
-        "\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B"+
-        "\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F"+
-        "\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"+
-        "\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7"+
-        "\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8"+
-        "\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315"+
-        "\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346"+
-        "\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E"+
-        "\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5"+
-        "\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC"+
-        "\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440"+
-        "\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E"+
-        "\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492"+
-        "\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2"+
-        "\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\u54AB\u54C2"+
-        "\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514"+
-        "\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563"+
-        "\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533"+
-        "\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E"+
-        "\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8"+
-        "\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614"+
-        "\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650"+
-        "\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F"+
-        "\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F"+
-        "\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3"+
-        "\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9"+
-        "\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713"+
-        "\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E"+
-        "\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F"+
-        "\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3"+
-        "\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B"+
-        "\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0"+
-        "\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA"+
-        "\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7"+
-        "\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA"+
-        "\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B"+
-        "\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2"+
-        "\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967"+
-        "\u596C\u5969\u5978\u5981\u599D\u4F5E\u4FAB\u59A3"+
-        "\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25"+
-        "\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49"+
-        "\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB"+
-        "\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA"+
-        "\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36"+
-        "\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B"+
-        "\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A"+
-        "\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4"+
-        "\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0"+
-        "\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20"+
-        "\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53";
-
-    private final static String innerIndex3=
-        "\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79"+
-        "\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC"+
-        "\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA"+
-        "\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F"+
-        "\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C"+
-        "\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84"+
-        "\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7"+
-        "\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB"+
-        "\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36"+
-        "\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F"+
-        "\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F"+
-        "\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\u5ED6\u5EE3"+
-        "\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC"+
-        "\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09"+
-        "\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38"+
-        "\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57"+
-        "\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F"+
-        "\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0"+
-        "\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1"+
-        "\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029"+
-        "\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A"+
-        "\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D"+
-        "\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081"+
-        "\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097"+
-        "\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4"+
-        "\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106"+
-        "\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB"+
-        "\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A"+
-        "\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173"+
-        "\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165"+
-        "\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187"+
-        "\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC"+
-        "\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB"+
-        "\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF"+
-        "\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C"+
-        "\u6214\u621B\u621E\u6221\u622A\u622E\u6230\u6232"+
-        "\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268"+
-        "\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4"+
-        "\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6"+
-        "\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B"+
-        "\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF"+
-        "\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E"+
-        "\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5"+
-        "\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9"+
-        "\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426"+
-        "\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476"+
-        "\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"+
-        "\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1"+
-        "\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C"+
-        "\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C"+
-        "\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536"+
-        "\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E"+
-        "\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F"+
-        "\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2"+
-        "\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603"+
-        "\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644"+
-        "\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F"+
-        "\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698"+
-        "\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\u66C4\u66B8"+
-        "\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5"+
-        "\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E"+
-        "\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760"+
-        "\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A"+
-        "\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4"+
-        "\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2"+
-        "\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846"+
-        "\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859"+
-        "\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D"+
-        "\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA"+
-        "\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922"+
-        "\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936"+
-        "\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF"+
-        "\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977"+
-        "\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974"+
-        "\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A"+
-        "\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE"+
-        "\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991"+
-        "\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B"+
-        "\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E"+
-        "\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13"+
-        "\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59"+
-        "\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84"+
-        "\u6AA2\u6AA3\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8"+
-        "\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA"+
-        "\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F"+
-        "\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49"+
-        "\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79"+
-        "\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E"+
-        "\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7"+
-        "\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3"+
-        "\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23"+
-        "\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81"+
-        "\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1"+
-        "\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"+
-        "\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36"+
-        "\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C"+
-        "\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95"+
-        "\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6"+
-        "\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5"+
-        "\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E"+
-        "\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B"+
-        "\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF"+
-        "\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3"+
-        "\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5"+
-        "\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE"+
-        "\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\u6F3E\u6F13"+
-        "\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B"+
-        "\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2"+
-        "\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA"+
-        "\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB"+
-        "\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B"+
-        "\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032"+
-        "\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8"+
-        "\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD"+
-        "\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C"+
-        "\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC"+
-        "\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0"+
-        "\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210"+
-        "\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C"+
-        "\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282"+
-        "\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2"+
-        "\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1"+
-        "\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D"+
-        "\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8"+
-        "\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A"+
-        "\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE"+
-        "\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455"+
-        "\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463"+
-        "\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF"+
-        "\u74D4\u73F1\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2"+
-        "\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C"+
-        "\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C"+
-        "\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569"+
-        "\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587"+
-        "\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5"+
-        "\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC"+
-        "\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE"+
-        "\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B"+
-        "\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624"+
-        "\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658"+
-        "\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"+
-        "\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B"+
-        "\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8"+
-        "\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1"+
-        "\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704"+
-        "\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738"+
-        "\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E"+
-        "\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6"+
-        "\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7"+
-        "\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926"+
-        "\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A"+
-        "\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB"+
-        "\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\u78E7\u78DA"+
-        "\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B"+
-        "\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A"+
-        "\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3"+
-        "\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3"+
-        "\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31"+
-        "\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62"+
-        "\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95"+
-        "\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4"+
-        "\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3"+
-        "\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0"+
-        "\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E"+
-        "\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B"+
-        "\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71"+
-        "\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A"+
-        "\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC"+
-        "\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6"+
-        "\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17"+
-        "\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B"+
-        "\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58"+
-        "\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90"+
-        "\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2"+
-        "\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8"+
-        "\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6"+
-        "\u7CFA\u7D06\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B"+
-        "\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E"+
-        "\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B"+
-        "\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7"+
-        "\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F"+
-        "\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1"+
-        "\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09"+
-        "\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43"+
-        "\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59"+
-        "\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5"+
-        "\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90"+
-        "\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A";
-
-    private final static String innerIndex4=
-        "\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54"+
-        "\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82"+
-        "\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D"+
-        "\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8"+
-        "\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6"+
-        "\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012"+
-        "\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A"+
-        "\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073"+
-        "\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086"+
-        "\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB"+
-        "\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF"+
-        "\u80F1\u811B\u8129\u8123\u812F\u814B\u968B\u8146"+
-        "\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166"+
-        "\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195"+
-        "\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE"+
-        "\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1"+
-        "\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA"+
-        "\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D"+
-        "\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259"+
-        "\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A"+
-        "\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292"+
-        "\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2"+
-        "\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE"+
-        "\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332"+
-        "\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317"+
-        "\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323"+
-        "\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0"+
-        "\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403"+
-        "\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D"+
-        "\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A"+
-        "\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482"+
-        "\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462"+
-        "\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0"+
-        "\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517"+
-        "\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563"+
-        "\u8558\u8548\u8541\u8602\u854B\u8555\u8580\u85A4"+
-        "\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA"+
-        "\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF"+
-        "\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A"+
-        "\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630"+
-        "\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693"+
-        "\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4"+
-        "\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9"+
-        "\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700"+
-        "\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734"+
-        "\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F"+
-        "\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"+
-        "\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF"+
-        "\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3"+
-        "\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D"+
-        "\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815"+
-        "\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844"+
-        "\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E"+
-        "\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892"+
-        "\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1"+
-        "\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902"+
-        "\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913"+
-        "\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B"+
-        "\u8936\u8938\u894C\u891D\u8960\u895E\u8966\u8964"+
-        "\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988"+
-        "\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF"+
-        "\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD"+
-        "\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B"+
-        "\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48"+
-        "\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8"+
-        "\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD"+
-        "\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14"+
-        "\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A"+
-        "\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26"+
-        "\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49"+
-        "\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74"+
-        "\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99"+
-        "\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50"+
-        "\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85"+
-        "\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD"+
-        "\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1"+
-        "\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05"+
-        "\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD"+
-        "\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99"+
-        "\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB"+
-        "\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09"+
-        "\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30"+
-        "\u8E34\u8E4A\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59"+
-        "\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C"+
-        "\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91"+
-        "\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1"+
-        "\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB"+
-        "\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13"+
-        "\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39"+
-        "\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57"+
-        "\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD"+
-        "\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087"+
-        "\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D"+
-        "\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"+
-        "\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056"+
-        "\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082"+
-        "\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF"+
-        "\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112"+
-        "\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165"+
-        "\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB"+
-        "\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9"+
-        "\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5"+
-        "\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E"+
-        "\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B"+
-        "\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9"+
-        "\u92B7\u92E9\u930F\u92FA\u9344\u932E\u9319\u9322"+
-        "\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C"+
-        "\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6"+
-        "\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8"+
-        "\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436"+
-        "\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B"+
-        "\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477"+
-        "\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587"+
-        "\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7"+
-        "\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3"+
-        "\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5"+
-        "\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F"+
-        "\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672"+
-        "\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1"+
-        "\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB"+
-        "\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704"+
-        "\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719"+
-        "\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746"+
-        "\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768"+
-        "\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A"+
-        "\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3"+
-        "\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED"+
-        "\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838"+
-        "\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B"+
-        "\u986F\u9870\u9871\u9874\u9873\u98AA\u98AF\u98B1"+
-        "\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909"+
-        "\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920"+
-        "\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950"+
-        "\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5"+
-        "\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1"+
-        "\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F"+
-        "\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40"+
-        "\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62"+
-        "\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC"+
-        "\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2"+
-        "\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"+
-        "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25"+
-        "\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44"+
-        "\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93"+
-        "\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4"+
-        "\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3"+
-        "\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0"+
-        "\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12"+
-        "\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30"+
-        "\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76"+
-        "\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03"+
-        "\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15"+
-        "\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\u9D5D\u9D5E"+
-        "\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB"+
-        "\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1"+
-        "\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3"+
-        "\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E"+
-        "\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92"+
-        "\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD"+
-        "\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE"+
-        "\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7"+
-        "\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15"+
-        "\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F"+
-        "\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72"+
-        "\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464"+
-        "\u51DC\u7199\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uE000\uE001\uE002\uE003\uE004\uE005"+
-        "\uE006\uE007\uE008\uE009\uE00A\uE00B\uE00C\uE00D"+
-        "\uE00E\uE00F\uE010\uE011\uE012\uE013\uE014\uE015"+
-        "\uE016\uE017\uE018\uE019\uE01A\uE01B\uE01C\uE01D"+
-        "\uE01E\uE01F\uE020\uE021\uE022\uE023\uE024\uE025"+
-        "\uE026\uE027\uE028\uE029\uE02A\uE02B\uE02C\uE02D"+
-        "\uE02E\uE02F\uE030\uE031\uE032\uE033\uE034\uE035"+
-        "\uE036\uE037\uE038\uE039\uE03A\uE03B\uE03C\uE03D"+
-        "\uE03E\uE03F\uE040\uE041\uE042\uE043\uE044\uE045"+
-        "\uE046\uE047\uE048\uE049\uE04A\uE04B\uE04C\uE04D"+
-        "\uE04E\uE04F\uE050\uE051\uE052\uE053\uE054\uE055"+
-        "\uE056\uE057\uE058\uE059\uE05A\uE05B\uE05C\uE05D";
-
-    private final static String innerIndex5=
-        "\uE05E\uE05F\uE060\uE061\uE062\uE063\uE064\uE065"+
-        "\uE066\uE067\uE068\uE069\uE06A\uE06B\uE06C\uE06D"+
-        "\uE06E\uE06F\uE070\uE071\uE072\uE073\uE074\uE075"+
-        "\uE076\uE077\uE078\uE079\uE07A\uE07B\uE07C\uE07D"+
-        "\uE07E\uE07F\uE080\uE081\uE082\uE083\uE084\uE085"+
-        "\uE086\uE087\uE088\uE089\uE08A\uE08B\uE08C\uE08D"+
-        "\uE08E\uE08F\uE090\uE091\uE092\uE093\uE094\uE095"+
-        "\uE096\uE097\uE098\uE099\uE09A\uE09B\uE09C\uE09D"+
-        "\uE09E\uE09F\uE0A0\uE0A1\uE0A2\uE0A3\uE0A4\uE0A5"+
-        "\uE0A6\uE0A7\uE0A8\uE0A9\uE0AA\uE0AB\uE0AC\uE0AD"+
-        "\uE0AE\uE0AF\uE0B0\uE0B1\uE0B2\uE0B3\uE0B4\uE0B5"+
-        "\uE0B6\uE0B7\uE0B8\uE0B9\uE0BA\uE0BB\uE0BC\uE0BD"+
-        "\uE0BE\uE0BF\uE0C0\uE0C1\uE0C2\uE0C3\uE0C4\uE0C5"+
-        "\uE0C6\uE0C7\uE0C8\uE0C9\uE0CA\uE0CB\uE0CC\uE0CD"+
-        "\uE0CE\uE0CF\uE0D0\uE0D1\uE0D2\uE0D3\uE0D4\uE0D5"+
-        "\uE0D6\uE0D7\uE0D8\uE0D9\uE0DA\uE0DB\uE0DC\uE0DD"+
-        "\uE0DE\uE0DF\uE0E0\uE0E1\uE0E2\uE0E3\uE0E4\uE0E5"+
-        "\uE0E6\uE0E7\uE0E8\uE0E9\uE0EA\uE0EB\uE0EC\uE0ED"+
-        "\uE0EE\uE0EF\uE0F0\uE0F1\uE0F2\uE0F3\uE0F4\uE0F5"+
-        "\uE0F6\uE0F7\uE0F8\uE0F9\uE0FA\uE0FB\uE0FC\uE0FD"+
-        "\uE0FE\uE0FF\uE100\uE101\uE102\uE103\uE104\uE105"+
-        "\uE106\uE107\uE108\uE109\uE10A\uE10B\uE10C\uE10D"+
-        "\uE10E\uE10F\uE110\uE111\uE112\uE113\uE114\uE115"+
-        "\uE116\uE117\uE118\uE119\uE11A\uE11B\uE11C\uE11D"+
-        "\uE11E\uE11F\uE120\uE121\uE122\uE123\uE124\uE125"+
-        "\uE126\uE127\uE128\uE129\uE12A\uE12B\uE12C\uE12D"+
-        "\uE12E\uE12F\uE130\uE131\uE132\uE133\uE134\uE135"+
-        "\uE136\uE137\uE138\uE139\uE13A\uE13B\uE13C\uE13D"+
-        "\uE13E\uE13F\uE140\uE141\uE142\uE143\uE144\uE145"+
-        "\uE146\uE147\uE148\uE149\uE14A\uE14B\uE14C\uE14D"+
-        "\uE14E\uE14F\uE150\uE151\uE152\uE153\uE154\uE155"+
-        "\uE156\uE157\uE158\uE159\uE15A\uE15B\uE15C\uE15D"+
-        "\uE15E\uE15F\uE160\uE161\uE162\uE163\uE164\uE165"+
-        "\uE166\uE167\uE168\uE169\uE16A\uE16B\uE16C\uE16D"+
-        "\uE16E\uE16F\uE170\uE171\uE172\uE173\uE174\uE175"+
-        "\uE176\uE177\uE178\uE179\uE17A\uE17B\uE17C\uE17D"+
-        "\uE17E\uE17F\uE180\uE181\uE182\uE183\uE184\uE185"+
-        "\uE186\uE187\uE188\uE189\uE18A\uE18B\uE18C\uE18D"+
-        "\uE18E\uE18F\uE190\uE191\uE192\uE193\uE194\uE195"+
-        "\uE196\uE197\uE198\uE199\uE19A\uE19B\uE19C\uE19D"+
-        "\uE19E\uE19F\uE1A0\uE1A1\uE1A2\uE1A3\uE1A4\uE1A5"+
-        "\uE1A6\uE1A7\uE1A8\uE1A9\uE1AA\uE1AB\uE1AC\uE1AD"+
-        "\uE1AE\uE1AF\uE1B0\uE1B1\uE1B2\uE1B3\uE1B4\uE1B5"+
-        "\uE1B6\uE1B7\uE1B8\uE1B9\uE1BA\uE1BB\uE1BC\uE1BD"+
-        "\uE1BE\uE1BF\uE1C0\uE1C1\uE1C2\uE1C3\uE1C4\uE1C5"+
-        "\uE1C6\uE1C7\uE1C8\uE1C9\uE1CA\uE1CB\uE1CC\uE1CD"+
-        "\uE1CE\uE1CF\uE1D0\uE1D1\uE1D2\uE1D3\uE1D4\uE1D5"+
-        "\uE1D6\uE1D7\uE1D8\uE1D9\uE1DA\uE1DB\uE1DC\uE1DD"+
-        "\uE1DE\uE1DF\uE1E0\uE1E1\uE1E2\uE1E3\uE1E4\uE1E5"+
-        "\uE1E6\uE1E7\uE1E8\uE1E9\uE1EA\uE1EB\uE1EC\uE1ED"+
-        "\uE1EE\uE1EF\uE1F0\uE1F1\uE1F2\uE1F3\uE1F4\uE1F5"+
-        "\uE1F6\uE1F7\uE1F8\uE1F9\uE1FA\uE1FB\uE1FC\uE1FD"+
-        "\uE1FE\uE1FF\uE200\uE201\uE202\uE203\uE204\uE205"+
-        "\uE206\uE207\uE208\uE209\uE20A\uE20B\uE20C\uE20D"+
-        "\uE20E\uE20F\uE210\uE211\uE212\uE213\uE214\uE215"+
-        "\uE216\uE217\uE218\uE219\uE21A\uE21B\uE21C\uE21D"+
-        "\uE21E\uE21F\uE220\uE221\uE222\uE223\uE224\uE225"+
-        "\uE226\uE227\uE228\uE229\uE22A\uE22B\uE22C\uE22D"+
-        "\uE22E\uE22F\uE230\uE231\uE232\uE233\uE234\uE235"+
-        "\uE236\uE237\uE238\uE239\uE23A\uE23B\uE23C\uE23D"+
-        "\uE23E\uE23F\uE240\uE241\uE242\uE243\uE244\uE245"+
-        "\uE246\uE247\uE248\uE249\uE24A\uE24B\uE24C\uE24D"+
-        "\uE24E\uE24F\uE250\uE251\uE252\uE253\uE254\uE255"+
-        "\uE256\uE257\uE258\uE259\uE25A\uE25B\uE25C\uE25D"+
-        "\uE25E\uE25F\uE260\uE261\uE262\uE263\uE264\uE265"+
-        "\uE266\uE267\uE268\uE269\uE26A\uE26B\uE26C\uE26D"+
-        "\uE26E\uE26F\uE270\uE271\uE272\uE273\uE274\uE275"+
-        "\uE276\uE277\uE278\uE279\uE27A\uE27B\uE27C\uE27D"+
-        "\uE27E\uE27F\uE280\uE281\uE282\uE283\uE284\uE285"+
-        "\uE286\uE287\uE288\uE289\uE28A\uE28B\uE28C\uE28D"+
-        "\uE28E\uE28F\uE290\uE291\uE292\uE293\uE294\uE295"+
-        "\uE296\uE297\uE298\uE299\uE29A\uE29B\uE29C\uE29D"+
-        "\uE29E\uE29F\uE2A0\uE2A1\uE2A2\uE2A3\uE2A4\uE2A5"+
-        "\uE2A6\uE2A7\uE2A8\uE2A9\uE2AA\uE2AB\uE2AC\uE2AD"+
-        "\uE2AE\uE2AF\uE2B0\uE2B1\uE2B2\uE2B3\uE2B4\uE2B5"+
-        "\uE2B6\uE2B7\uE2B8\uE2B9\uE2BA\uE2BB\uE2BC\uE2BD"+
-        "\uE2BE\uE2BF\uE2C0\uE2C1\uE2C2\uE2C3\uE2C4\uE2C5"+
-        "\uE2C6\uE2C7\uE2C8\uE2C9\uE2CA\uE2CB\uE2CC\uE2CD"+
-        "\uE2CE\uE2CF\uE2D0\uE2D1\uE2D2\uE2D3\uE2D4\uE2D5"+
-        "\uE2D6\uE2D7\uE2D8\uE2D9\uE2DA\uE2DB\uE2DC\uE2DD"+
-        "\uE2DE\uE2DF\uE2E0\uE2E1\uE2E2\uE2E3\uE2E4\uE2E5"+
-        "\uE2E6\uE2E7\uE2E8\uE2E9\uE2EA\uE2EB\uE2EC\uE2ED"+
-        "\uE2EE\uE2EF\uE2F0\uE2F1\uE2F2\uE2F3\uE2F4\uE2F5"+
-        "\uE2F6\uE2F7\uE2F8\uE2F9\uE2FA\uE2FB\uE2FC\uE2FD"+
-        "\uE2FE\uE2FF\uE300\uE301\uE302\uE303\uE304\uE305"+
-        "\uE306\uE307\uE308\uE309\uE30A\uE30B\uE30C\uE30D"+
-        "\uE30E\uE30F\uE310\uE311\uE312\uE313\uE314\uE315"+
-        "\uE316\uE317\uE318\uE319\uE31A\uE31B\uE31C\uE31D"+
-        "\uE31E\uE31F\uE320\uE321\uE322\uE323\uE324\uE325"+
-        "\uE326\uE327\uE328\uE329\uE32A\uE32B\uE32C\uE32D"+
-        "\uE32E\uE32F\uE330\uE331\uE332\uE333\uE334\uE335"+
-        "\uE336\uE337\uE338\uE339\uE33A\uE33B\uE33C\uE33D"+
-        "\uE33E\uE33F\uE340\uE341\uE342\uE343\uE344\uE345"+
-        "\uE346\uE347\uE348\uE349\uE34A\uE34B\uE34C\uE34D"+
-        "\uE34E\uE34F\uE350\uE351\uE352\uE353\uE354\uE355"+
-        "\uE356\uE357\uE358\uE359\uE35A\uE35B\uE35C\uE35D"+
-        "\uE35E\uE35F\uE360\uE361\uE362\uE363\uE364\uE365"+
-        "\uE366\uE367\uE368\uE369\uE36A\uE36B\uE36C\uE36D"+
-        "\uE36E\uE36F\uE370\uE371\uE372\uE373\uE374\uE375"+
-        "\uE376\uE377\uE378\uE379\uE37A\uE37B\uE37C\uE37D"+
-        "\uE37E\uE37F\uE380\uE381\uE382\uE383\uE384\uE385"+
-        "\uE386\uE387\uE388\uE389\uE38A\uE38B\uE38C\uE38D"+
-        "\uE38E\uE38F\uE390\uE391\uE392\uE393\uE394\uE395"+
-        "\uE396\uE397\uE398\uE399\uE39A\uE39B\uE39C\uE39D"+
-        "\uE39E\uE39F\uE3A0\uE3A1\uE3A2\uE3A3\uE3A4\uE3A5"+
-        "\uE3A6\uE3A7\uE3A8\uE3A9\uE3AA\uE3AB";
-
-    protected final static short index1[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 9, 0, 0,
-        10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
-        26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
-        42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-        58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
-        74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-
-    protected final static String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4,
-        innerIndex5
-    };
-
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0208_MS5022X_Encoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0208_MS5022X_Encoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3307 +0,0 @@
-/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetEncoder;
-
-class JIS_X_0208_MS5022X_Encoder
-{
-    private final static String innerIndex0=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2171\u2172\u0000\u0000\u0000\u2178"+
-        "\u212F\u0000\u0000\u0000\u224C\u0000\u0000\u0000"+
-        "\u216B\u215E\u0000\u0000\u212D\u0000\u2279\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u215F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u2160"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2621\u2622\u2623\u2624\u2625\u2626\u2627"+
-        "\u2628\u2629\u262A\u262B\u262C\u262D\u262E\u262F"+
-        "\u2630\u2631\u0000\u2632\u2633\u2634\u2635\u2636"+
-        "\u2637\u2638\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2641\u2642\u2643\u2644\u2645\u2646\u2647"+
-        "\u2648\u2649\u264A\u264B\u264C\u264D\u264E\u264F"+
-        "\u2650\u2651\u0000\u2652\u2653\u2654\u2655\u2656"+
-        "\u2657\u2658\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2727\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2721\u2722\u2723\u2724\u2725\u2726\u2728\u2729"+
-        "\u272A\u272B\u272C\u272D\u272E\u272F\u2730\u2731"+
-        "\u2732\u2733\u2734\u2735\u2736\u2737\u2738\u2739"+
-        "\u273A\u273B\u273C\u273D\u273E\u273F\u2740\u2741"+
-        "\u2751\u2752\u2753\u2754\u2755\u2756\u2758\u2759"+
-        "\u275A\u275B\u275C\u275D\u275E\u275F\u2760\u2761"+
-        "\u2762\u2763\u2764\u2765\u2766\u2767\u2768\u2769"+
-        "\u276A\u276B\u276C\u276D\u276E\u276F\u2770\u2771"+
-        "\u0000\u2757\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u213E\u0000\u0000\u0000\u0000\u213D\u2142\u0000"+
-        "\u2146\u2147\u0000\u0000\u2148\u2149\u0000\u0000"+
-        "\u2277\u2278\u0000\u0000\u0000\u2145\u2144\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2273\u0000\u216C\u216D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2228\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u216E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2D62\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D64\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2272\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2D35\u2D36\u2D37\u2D38\u2D39\u2D3A\u2D3B\u2D3C"+
-        "\u2D3D\u2D3E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u222B\u222C\u222A\u222D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u224D\u0000\u224E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u224F\u0000\u225F\u2250\u0000\u0000\u0000\u2260"+
-        "\u223A\u0000\u0000\u223B\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D74\u215D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2265\u0000\u0000\u2267\u2167\u2D78"+
-        "\u225C\u0000\u0000\u0000\u0000\u2142\u0000\u224A"+
-        "\u224B\u2241\u2240\u2269\u226A\u0000\u2D73\u0000"+
-        "\u0000\u0000\u0000\u0000\u2168\u2268\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2266\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2262\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2162\u2261\u0000\u0000\u0000\u0000\u2165\u2166"+
-        "\u0000\u0000\u2263\u2264\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u223E\u223F\u0000\u0000\u223C\u223D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u225D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u2D79"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u225E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2D21\u2D22\u2D23\u2D24\u2D25\u2D26\u2D27\u2D28"+
-        "\u2D29\u2D2A\u2D2B\u2D2C\u2D2D\u2D2E\u2D2F\u2D30"+
-        "\u2D31\u2D32\u2D33\u2D34\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2821\u282C\u2822\u282D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2823\u0000\u0000\u282E"+
-        "\u2824\u0000\u0000\u282F\u2826\u0000\u0000\u2831"+
-        "\u2825\u0000\u0000\u2830\u2827\u283C\u0000\u0000"+
-        "\u2837\u0000\u0000\u2832\u2829\u283E\u0000\u0000"+
-        "\u2839\u0000\u0000\u2834\u2828\u0000\u0000\u2838"+
-        "\u283D\u0000\u0000\u2833\u282A\u0000\u0000\u283A"+
-        "\u283F\u0000\u0000\u2835\u282B\u0000\u0000\u283B"+
-        "\u0000\u0000\u2840\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2836\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2223\u2222\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2225\u2224\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2227\u2226\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2221\u217E"+
-        "\u0000\u0000\u0000\u217B\u0000\u0000\u217D\u217C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u227E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u217A\u2179\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u216A\u0000\u2169\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2276\u0000\u0000\u2275\u0000\u2274"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2121\u2122\u2123\u2137\u0000\u2139\u213A\u213B"+
-        "\u2152\u2153\u2154\u2155\u2156\u2157\u2158\u2159"+
-        "\u215A\u215B\u2229\u222E\u214C\u214D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2141\u0000\u2D60\u2D61"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2421\u2422\u2423\u2424\u2425\u2426\u2427"+
-        "\u2428\u2429\u242A\u242B\u242C\u242D\u242E\u242F"+
-        "\u2430\u2431\u2432\u2433\u2434\u2435\u2436\u2437"+
-        "\u2438\u2439\u243A\u243B\u243C\u243D\u243E\u243F"+
-        "\u2440\u2441\u2442\u2443\u2444\u2445\u2446\u2447"+
-        "\u2448\u2449\u244A\u244B\u244C\u244D\u244E\u244F"+
-        "\u2450\u2451\u2452\u2453\u2454\u2455\u2456\u2457"+
-        "\u2458\u2459\u245A\u245B\u245C\u245D\u245E\u245F"+
-        "\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467"+
-        "\u2468\u2469\u246A\u246B\u246C\u246D\u246E\u246F"+
-        "\u2470\u2471\u2472\u2473\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u212B\u212C\u2135\u2136\u0000"+
-        "\u0000\u2521\u2522\u2523\u2524\u2525\u2526\u2527"+
-        "\u2528\u2529\u252A\u252B\u252C\u252D\u252E\u252F"+
-        "\u2530\u2531\u2532\u2533\u2534\u2535\u2536\u2537"+
-        "\u2538\u2539\u253A\u253B\u253C\u253D\u253E\u253F"+
-        "\u2540\u2541\u2542\u2543\u2544\u2545\u2546\u2547"+
-        "\u2548\u2549\u254A\u254B\u254C\u254D\u254E\u254F"+
-        "\u2550\u2551\u2552\u2553\u2554\u2555\u2556\u2557"+
-        "\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F"+
-        "\u2560\u2561\u2562\u2563\u2564\u2565\u2566\u2567"+
-        "\u2568\u2569\u256A\u256B\u256C\u256D\u256E\u256F"+
-        "\u2570\u2571\u2572\u2573\u2574\u2575\u2576\u0000"+
-        "\u0000\u0000\u0000\u2126\u213C\u2133\u2134\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D6A\u2D6B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D6C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2D65\u2D66\u2D67\u2D68"+
-        "\u2D69\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2D46\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2D4A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2D41\u0000\u0000\u0000"+
-        "\u2D44\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2D42\u2D4C\u0000\u0000\u2D4B\u2D45"+
-        "\u0000\u0000\u0000\u2D4D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2D47\u0000"+
-        "\u0000\u0000\u0000\u2D4F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D40\u2D4E\u0000\u0000\u2D43\u0000\u0000"+
-        "\u0000\u2D48\u0000\u0000\u0000\u0000\u0000\u2D49"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2D5F\u2D6F\u2D6E\u2D6D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2D53\u2D54"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2D50\u2D51\u2D52\u0000"+
-        "\u0000\u2D56\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2D55\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2D63\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u306C\u437A\u0000\u3C37\u0000\u0000\u0000\u4B7C"+
-        "\u3E66\u3B30\u3E65\u323C\u0000\u4954\u4D3F\u0000"+
-        "\u5022\u312F\u0000\u0000\u336E\u5023\u4024\u5242"+
-        "\u3556\u4A3A\u0000\u0000\u0000\u0000\u3E67\u0000"+
-        "\u0000\u4E3E\u0000\u0000\u0000\u0000\u4A42\u0000"+
-        "\u0000\u0000\u5024\u0000\u0000\u4366\u0000\u0000"+
-        "\u0000\u5025\u367A\u0000\u0000\u0000\u5026\u0000"+
-        "\u345D\u4330\u0000\u3C67\u5027\u0000\u0000\u5028"+
-        "\u0000\u0000\u5029\u4735\u0000\u3557\u0000\u0000"+
-        "\u0000\u0000\u0000\u4737\u0000\u4663\u3843\u4B33"+
-        "\u0000\u0000\u0000\u0000\u0000\u6949\u502A\u3E68"+
-        "\u502B\u3235\u0000\u0000\u0000\u3665\u3870\u4C69"+
-        "\u0000\u0000\u5626\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4D70\u0000\u467D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3425\u0000"+
-        "\u3535\u0000\u502C\u0000\u0000\u502D\u4E3B\u0000"+
-        "\u4D3D\u4168\u502F\u3B76\u4673\u0000\u5032\u0000"+
-        "\u0000\u313E\u385F\u0000\u385E\u3066\u0000\u0000"+
-        "\u4F4B\u4F4A\u0000\u3A33\u3021\u0000\u5033\u5034"+
-        "\u5035\u4B34\u5036\u0000\u3872\u3067\u4B72\u0000"+
-        "\u357C\u0000\u0000\u357D\u357E\u4462\u4E3C\u0000"+
-        "\u5037\u0000\u0000\u5038\u0000\u0000\u5039\u0000"+
-        "\u0000\u0000\u3F4D\u0000\u0000\u0000\u0000\u0000"+
-        "\u3D3A\u3F4E\u503E\u0000\u503C\u0000\u503D\u3558"+
-        "\u0000\u0000\u3A23\u3270\u0000\u503B\u503A\u4A29"+
-        "\u0000\u0000\u0000\u0000\u3B46\u3B45\u423E\u503F"+
-        "\u4955\u4067\u0000\u0000\u0000\u2138\u5040\u5042"+
-        "\u0000\u0000\u0000\u4265\u4E61\u304A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5041\u323E\u0000"+
-        "\u3644\u0000\u4367\u0000\u0000\u0000\u376F\u5043"+
-        "\u0000\u0000\u0000\u4724\u0000\u0000\u0000\u0000"+
-        "\u0000\u346B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5044\u304B\u0000\u0000\u3860\u346C\u497A"+
-        "\u4832\u3559\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3271\u0000\u5067\u4541\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u476C"+
-        "\u5046\u0000\u0000\u0000\u483C\u0000\u4E62\u0000"+
-        "\u3F2D\u0000\u3B47\u0000\u3B77\u3240\u0000\u0000"+
-        "\u0000\u0000\u0000\u4451\u0000\u0000\u4322\u504A"+
-        "\u0000\u0000\u0000\u0000\u0000\u304C\u4463\u3D3B"+
-        "\u3A34\u4D24\u0000\u424E\u0000\u323F\u0000\u5049"+
-        "\u0000\u4D3E\u5045\u5047\u3A6E\u5048\u5524\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5050\u0000\u0000\u0000\u0000\u0000\u5053"+
-        "\u5051\u0000\u0000\u3242\u0000\u4A3B\u504B\u0000"+
-        "\u0000\u0000\u0000\u504F\u3873\u0000\u0000\u3B48"+
-        "\u0000\u0000\u0000\u3426\u0000\u0000\u5054\u0000"+
-        "\u504C\u0000\u0000\u4E63\u0000\u3B78\u0000\u504D"+
-        "\u0000\u5052\u0000\u0000\u0000\u0000\u5055\u0000"+
-        "\u504E\u0000\u0000\u3621\u0000\u304D\u0000\u0000"+
-        "\u3622\u3241\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5525\u0000\u4B79\u496E\u3874"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F2F\u4E37\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4A58"+
-        "\u0000\u0000\u3738\u4225\u3264\u0000\u0000\u0000"+
-        "\u0000\u0000\u3D53\u0000\u0000\u0000\u5059\u0000"+
-        "\u505E\u505C\u0000\u0000\u5057\u0000\u0000\u422F"+
-        "\u505A\u0000\u505D\u505B\u0000\u4A5D\u0000\u5058"+
-        "\u0000\u3F2E\u0000\u4B73\u505F\u5060\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3D24\u506D"+
-        "\u0000\u0000\u0000\u4750\u0000\u4936\u5068\u0000"+
-        "\u4A70\u0000\u3236\u0000\u0000\u0000\u506C\u0000";
-
-    private final static String innerIndex1=
-        "\u0000\u0000\u0000\u0000\u0000\u5066\u506F\u0000"+
-        "\u0000\u4152\u0000\u3844\u0000\u475C\u0000\u6047"+
-        "\u0000\u506E\u455D\u0000\u5063\u0000\u3876\u0000"+
-        "\u0000\u3875\u5061\u0000\u0000\u0000\u0000\u3C5A"+
-        "\u0000\u5069\u0000\u4A6F\u434D\u5065\u3771\u0000"+
-        "\u5062\u506A\u5064\u4E51\u506B\u4F41\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3666\u0000"+
-        "\u0000\u3770\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5070\u0000\u0000\u0000\u5071"+
-        "\u5075\u304E\u0000\u0000\u0000\u0000\u0000\u4A50"+
-        "\u5074\u0000\u0000\u0000\u0000\u5073\u5077\u0000"+
-        "\u0000\u0000\u5076\u0000\u4464\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3772\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5078\u0000\u0000\u0000"+
-        "\u0000\u0000\u3C45\u0000\u4226\u4465\u3676\u0000"+
-        "\u5079\u0000\u0000\u0000\u0000\u3536\u0000\u0000"+
-        "\u507A\u0000\u0000\u0000\u0000\u507C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4B35\u0000\u0000"+
-        "\u0000\u3766\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3B31\u4877\u507B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3A45\u4D43\u0000\u0000"+
-        "\u0000\u0000\u507E\u5123\u507D\u3A44\u0000\u3D7D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3739\u0000"+
-        "\u0000\u0000\u5124\u0000\u0000\u364F\u0000\u0000"+
-        "\u0000\u5121\u5122\u0000\u0000\u462F\u0000\u417C"+
-        "\u0000\u3623\u0000\u0000\u0000\u4B4D\u5125\u0000"+
-        "\u0000\u0000\u4E3D\u0000\u0000\u0000\u5126\u0000"+
-        "\u0000\u0000\u0000\u5129\u0000\u5127\u0000\u414E"+
-        "\u0000\u0000\u0000\u0000\u0000\u5128\u512A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u512C\u0000\u0000"+
-        "\u0000\u512B\u0000\u4A48\u0000\u0000\u0000\u0000"+
-        "\u3537\u512E\u512F\u0000\u322F\u0000\u0000\u0000"+
-        "\u0000\u512D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3C74\u0000\u5132\u5131\u5130\u0000"+
-        "\u5056\u0000\u5133\u0000\u0000\u0000\u0000\u3D7E"+
-        "\u0000\u5134\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D25\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C59\u0000\u0000\u0000\u0000\u5136"+
-        "\u0000\u0000\u5135\u5138\u5137\u0000\u0000\u5139"+
-        "\u513A\u3074\u0000\u3835\u373B\u3D3C\u437B\u3624"+
-        "\u4068\u3877\u0000\u396E\u513C\u4C48\u4546\u0000"+
-        "\u3B79\u0000\u513B\u0000\u513D\u0000\u0000\u0000"+
-        "\u0000\u0000\u455E\u0000\u3375\u0000\u0000\u0000"+
-        "\u0000\u0000\u513E\u0000\u0000\u467E\u0000\u0000"+
-        "\u4134\u5140\u5141\u482C\u3878\u4F3B\u5142\u0000"+
-        "\u0000\u3626\u0000\u0000\u0000\u4A3C\u4236\u3671"+
-        "\u4535\u0000\u0000\u0000\u3773\u0000\u0000\u0000"+
-        "\u5143\u0000\u5144\u0000\u0000\u4662\u315F\u0000"+
-        "\u0000\u5147\u3A7D\u0000\u5146\u3A46\u0000\u5148"+
-        "\u666E\u5149\u4B41\u514A\u0000\u514B\u514C\u3E69"+
-        "\u0000\u3C4C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3427\u0000\u514F\u0000\u514D\u4C3D\u514E\u0000"+
-        "\u495A\u5150\u5151\u5152\u455F\u0000\u0000\u0000"+
-        "\u5156\u5154\u5155\u5153\u3A63\u5157\u4C6A\u4E64"+
-        "\u0000\u0000\u0000\u0000\u0000\u5158\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4028\u5159\u3D5A\u0000"+
-        "\u0000\u515A\u0000\u437C\u4E3F\u4560\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5245\u0000"+
-        "\u0000\u0000\u0000\u515B\u7425\u3645\u0000\u0000"+
-        "\u515C\u4B5E\u0000\u0000\u0000\u0000\u3D68\u427C"+
-        "\u0000\u515E\u4664\u0000\u0000\u515F\u0000\u0000"+
-        "\u5160\u332E\u0000\u0000\u0000\u5161\u3627\u0000"+
-        "\u464C\u317A\u3D50\u0000\u0000\u4821\u5162\u0000"+
-        "\u4561\u0000\u0000\u3F4F\u5163\u0000\u4A2C\u405A"+
-        "\u3422\u0000\u3429\u5164\u0000\u0000\u5166\u0000"+
-        "\u0000\u373A\u0000\u0000\u5165\u0000\u0000\u4E73"+
-        "\u0000\u0000\u0000\u0000\u0000\u3D69\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u483D\u4A4C\u0000\u5167"+
-        "\u0000\u4D78\u5168\u0000\u0000\u0000\u5169\u0000"+
-        "\u457E\u0000\u0000\u516A\u0000\u0000\u4029\u3A7E"+
-        "\u3774\u516B\u3B49\u396F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4466\u516D\u0000\u0000\u4227"+
-        "\u0000\u0000\u3A6F\u516E\u516F\u4130\u0000\u516C"+
-        "\u0000\u0000\u0000\u0000\u5171\u0000\u4B36\u0000"+
-        "\u0000\u0000\u0000\u3964\u0000\u0000\u5170\u0000"+
-        "\u0000\u0000\u0000\u3775\u3A5E\u476D\u0000\u0000"+
-        "\u0000\u5174\u5172\u0000\u0000\u0000\u0000\u497B"+
-        "\u3E6A\u517B\u3364\u5175\u5173\u414F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5177\u0000\u5176"+
-        "\u0000\u0000\u0000\u3344\u0000\u0000\u0000\u3760"+
-        "\u517C\u4E2D\u0000\u0000\u0000\u5178\u0000\u0000"+
-        "\u0000\u517D\u517A\u0000\u5179\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4E4F\u0000\u0000\u0000\u3879"+
-        "\u3243\u0000\u0000\u4E74\u0000\u0000\u0000\u0000"+
-        "\u0000\u3D75\u4558\u3965\u5222\u5223\u0000\u0000"+
-        "\u0000\u4E65\u0000\u0000\u4F2B\u5225\u0000\u0000"+
-        "\u0000\u387A\u0000\u0000\u5224\u0000\u332F\u0000"+
-        "\u0000\u5226\u0000\u4B56\u0000\u443C\u0000\u4D26"+
-        "\u0000\u4A59\u0000\u0000\u0000\u5227\u0000\u0000"+
-        "\u0000\u0000\u7055\u0000\u0000\u4630\u0000\u5228"+
-        "\u342A\u4C33\u0000\u0000\u0000\u3E21\u5229\u4A67"+
-        "\u522D\u0000\u402A\u522A\u3650\u0000\u522B\u342B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u372E\u522E\u0000\u522F\u0000\u0000"+
-        "\u5230\u5231\u3C5B\u0000\u0000\u0000\u387B\u4C5E"+
-        "\u0000\u4C68\u4677\u0000\u0000\u4A71\u5232\u0000"+
-        "\u5233\u0000\u0000\u0000\u0000\u5235\u0000\u5237"+
-        "\u5236\u0000\u0000\u0000\u0000\u5238\u323D\u4B4C"+
-        "\u0000\u3A7C\u5239\u0000\u0000\u4159\u0000\u0000"+
-        "\u3E22\u3629\u0000\u523A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u485B\u0000\u0000\u0000\u0000\u523B"+
-        "\u0000\u523C\u0000\u523D\u0000\u0000\u0000\u0000"+
-        "\u523E\u4924\u3668\u3065\u0000\u0000\u0000\u463F"+
-        "\u523F\u3D3D\u0000\u4069\u0000\u5241\u5240\u3E23"+
-        "\u3861\u5243\u483E\u0000\u0000\u5244\u0000\u0000"+
-        "\u0000\u485C\u4234\u426E\u3628\u0000\u0000\u466E"+
-        "\u4331\u0000\u476E\u0000\u4B4E\u0000\u5246\u0000"+
-        "\u406A\u0000\u0000\u0000\u0000\u0000\u3735\u0000"+
-        "\u0000\u5247\u0000\u0000\u0000\u0000\u5248\u312C"+
-        "\u3075\u346D\u0000\u4228\u3551\u4D71\u0000\u524B"+
-        "\u3237\u0000\u0000\u524A\u0000\u0000\u0000\u362A"+
-        "\u0000\u0000\u524C\u0000\u4C71\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u524D\u0000"+
-        "\u4E52\u0000\u387C\u0000\u0000\u0000\u0000\u3836"+
-        "\u524E\u0000\u0000\u0000\u0000\u5250\u524F\u0000"+
-        "\u3F5F\u3139\u0000\u0000\u0000\u315E\u5251\u0000"+
-        "\u5252\u0000\u0000\u3837\u0000\u0000\u5253\u0000"+
-        "\u0000\u0000\u0000\u356E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B32\u5254\u0000\u0000\u0000\u0000"+
-        "\u4B74\u3A35\u355A\u4D27\u4150\u483F\u3C7D\u0000"+
-        "\u0000\u0000\u0000\u0000\u3D47\u0000\u3C68\u3C75"+
-        "\u0000\u3D76\u0000\u4840\u0000\u0000\u0000\u5257"+
-        "\u0000\u3143\u4151\u387D\u3845\u3667\u0000\u0000"+
-        "\u525B\u4321\u427E\u362B\u3E24\u525C\u525A\u3244"+
-        "\u4266\u3C38\u3B4B\u3126\u0000\u0000\u3370\u3966"+
-        "\u3B4A\u0000\u525D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u525E\u0000\u3549\u3346\u0000\u0000\u0000"+
-        "\u3967\u3548\u445F\u3125\u4631\u4C3E\u3921\u4D79"+
-        "\u4547\u387E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u372F\u0000\u5267\u0000\u3663"+
-        "\u4B4A\u0000\u0000\u0000\u0000\u0000\u485D\u0000"+
-        "\u0000\u5266\u0000\u345E\u5261\u5262\u5264\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5265\u0000"+
-        "\u355B\u3F61\u0000\u4A2D\u5263\u525F\u3863\u0000"+
-        "\u5260\u0000\u4F24\u0000\u0000\u0000\u4A72\u0000"+
-        "\u4468\u3862\u3970\u0000\u0000\u0000\u5268\u0000"+
-        "\u0000\u465D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u526C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C7E\u0000\u3C76\u0000\u0000\u0000\u0000\u0000"+
-        "\u526F\u526D\u0000\u4C23\u0000\u526A\u5273\u526E"+
-        "\u0000\u0000\u0000\u5271\u3846\u4C3F\u0000\u0000"+
-        "\u5272\u0000\u0000\u0000\u5274\u0000\u5276\u0000"+
-        "\u0000\u0000\u0000\u3A70\u4F42\u0000\u526B\u5269"+
-        "\u5275\u0000\u5270\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5278\u0000\u5323\u527A\u0000\u0000"+
-        "\u527E\u0000\u0000\u5321\u527B\u0000\u0000\u533E"+
-        "\u0000\u0000\u3A69\u3331\u0000\u0000\u0000\u0000"+
-        "\u5279\u0000\u0000\u0000\u5325\u3076\u5324\u0000"+
-        "\u3025\u494A\u5322\u0000\u527C\u0000\u0000\u5277"+
-        "\u527D\u3A48\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5326\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3077\u532F\u0000\u0000\u5327\u5328\u0000"+
-        "\u3E25\u4B69\u0000\u0000\u0000\u532D\u532C\u0000"+
-        "\u0000\u0000\u452F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u532E\u0000\u0000\u532B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3134\u0000\u3A36\u3F30"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5329"+
-        "\u4562\u0000\u0000\u0000\u532A\u0000\u3022\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5334\u4D23"+
-        "\u0000\u3E27\u0000\u533A\u0000\u0000\u0000\u0000"+
-        "\u5339\u5330\u0000\u0000\u0000\u0000\u4243\u0000"+
-        "\u5331\u0000\u0000\u0000\u426F\u5336\u3E26\u0000"+
-        "\u0000\u0000\u0000\u0000\u5333\u0000\u0000\u4C64"+
-        "\u0000\u0000\u0000\u373C\u0000\u0000\u5337\u5338"+
-        "\u0000\u0000\u0000\u0000\u5335\u533B\u0000\u0000"+
-        "\u0000\u0000\u0000\u5332\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5341\u5346\u0000\u5342\u0000"+
-        "\u533D\u0000\u0000\u5347\u4131\u0000\u0000\u5349"+
-        "\u0000\u3922\u533F\u437D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5343\u533C\u342D\u0000\u346E\u3365\u5344\u5340"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3776"+
-        "\u534A\u5348\u4153\u354A\u362C\u0000\u5345\u0000"+
-        "\u3674\u0000\u0000\u0000\u0000\u0000\u3144\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u534E\u534C\u0000\u5427"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5351\u0000\u0000\u0000"+
-        "\u0000\u0000\u534B\u0000\u534F\u0000\u0000\u534D"+
-        "\u0000\u0000\u0000\u3B4C\u5350\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5353"+
-        "\u0000\u5358\u0000\u0000\u0000\u5356\u5355\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4332\u0000"+
-        "\u0000\u3245\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5352\u0000\u5354\u3E28"+
-        "\u3133\u0000\u0000\u5357\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u325E\u0000\u0000\u0000\u0000\u0000\u5362"+
-        "\u0000\u3E7C\u535E\u0000\u535C\u0000\u535D\u0000"+
-        "\u535F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u313D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4139\u0000\u5359\u0000"+
-        "\u535A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u337A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5361\u0000\u0000\u0000"+
-        "\u346F\u0000\u5364\u5360\u5363\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4A2E\u0000\u0000\u0000"+
-        "\u4655\u0000\u4838\u0000\u0000\u0000\u0000\u0000"+
-        "\u5366\u0000\u0000\u0000\u0000\u0000\u5365\u3345"+
-        "\u0000\u0000\u5367\u0000\u0000\u0000\u0000\u536A"+
-        "\u0000\u0000\u0000\u0000\u5369\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5368\u0000\u4739\u0000\u0000\u536B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u536C\u0000"+
-        "\u0000\u0000\u0000\u0000\u536E\u0000\u536D\u0000"+
-        "\u0000\u0000\u0000\u0000\u5370\u0000\u0000\u0000"+
-        "\u5373\u5371\u536F\u5372\u0000\u0000\u0000\u0000"+
-        "\u5374\u0000\u0000\u0000\u0000\u0000\u5375\u0000"+
-        "\u0000\u5376\u0000\u5377\u0000\u0000\u0000\u5378"+
-        "\u5145\u0000\u3C7C\u3B4D\u0000\u0000\u3273\u0000"+
-        "\u3078\u0000\u0000\u4344\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5379\u0000"+
-        "\u3A24\u0000\u304F\u3F5E\u0000\u0000\u0000\u0000"+
-        "\u0000\u537A\u3847\u0000\u0000\u3971\u0000\u537C"+
-        "\u537B\u0000\u0000\u4A60\u537D\u0000\u0000\u0000"+
-        "\u5421\u537E\u0000\u5422\u0000\u5423\u0000\u3777"+
-        "\u0000\u0000\u3160\u5424\u0000\u0000\u5426\u0000"+
-        "\u5425\u0000\u0000\u0000\u5428\u0000\u0000\u455A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5429\u3035"+
-        "\u3A5F\u0000\u0000\u0000\u0000\u373D\u0000\u0000"+
-        "\u434F\u0000\u0000\u0000\u0000\u0000\u0000\u542A"+
-        "\u542B\u0000\u0000\u542D\u0000\u0000\u0000\u0000"+
-        "\u542E\u0000\u3A64\u0000\u0000\u0000\u0000\u3651"+
-        "\u0000\u0000\u4B37\u0000\u0000\u0000\u542C\u542F"+
-        "\u3A41\u3923\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5433\u0000\u0000\u3A25\u0000\u4333\u0000"+
-        "\u0000\u5430\u445A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5434"+
-        "\u0000\u0000\u3F62\u0000\u0000\u0000\u0000\u0000"+
-        "\u5432\u5435\u0000\u373F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5436\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5437\u0000\u3924\u3340\u5439\u0000\u0000\u0000"+
-        "\u0000\u0000\u543A\u0000\u0000\u0000\u0000\u0000"+
-        "\u543B\u0000\u0000\u5438\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5431\u0000\u0000\u543C\u0000\u0000\u543D\u0000"+
-        "\u0000\u0000\u0000\u4B64\u0000\u0000\u3E6B\u0000"+
-        "\u0000\u0000\u543F\u5440\u543E\u0000\u5442\u0000"+
-        "\u0000\u0000\u0000\u0000\u4738\u0000\u0000\u3068"+
-        "\u4956\u0000\u0000\u5443\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3E7D\u0000\u0000\u3C39"+
-        "\u0000\u475D\u3470\u0000\u3A6B\u0000\u0000\u0000"+
-        "\u4B59\u0000\u4632\u0000\u0000\u3778\u424F\u0000"+
-        "\u0000\u0000\u5441\u5444\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4244\u0000\u0000"+
-        "\u0000\u5445\u0000\u0000\u0000\u5446\u0000\u0000"+
-        "\u0000\u5448\u0000\u0000\u4469\u0000\u0000\u0000"+
-        "\u0000\u0000\u342E\u0000\u0000\u0000\u0000\u7421"+
-        "\u3161\u4A73\u0000\u0000\u3E6C\u4548\u0000\u0000"+
-        "\u0000\u0000\u3A66\u0000\u0000\u544E\u0000\u0000"+
-        "\u4A3D\u4E5D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3274\u544A\u0000\u0000\u0000\u0000"+
-        "\u0000\u413A\u544D\u0000\u4563\u0000\u0000\u4549"+
-        "\u4564\u4839\u444D\u0000\u0000\u0000\u3A49\u0000"+
-        "\u0000\u0000\u5449\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3176\u0000\u4536\u0000\u0000\u0000\u0000"+
-        "\u544B\u0000\u5447\u0000\u0000\u3F50\u0000\u0000"+
-        "\u0000\u544F\u0000\u0000\u0000\u0000\u3D4E\u0000"+
-        "\u0000\u0000\u0000\u362D\u0000\u5450\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A68\u0000\u0000\u0000\u417D"+
-        "\u0000\u0000\u0000\u0000\u4446\u0000\u0000\u5452"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4B4F\u0000\u0000\u5453\u0000\u0000\u5458\u0000"+
-        "\u0000\u0000\u0000\u4A2F\u0000\u0000\u0000\u0000"+
-        "\u5457\u5451\u5454\u5456\u0000\u0000\u3A26\u0000"+
-        "\u0000\u4A49\u0000\u0000\u0000\u5459\u0000\u4345"+
-        "\u0000\u0000\u3275\u0000\u3E6D\u0000\u0000\u0000"+
-        "\u0000\u545B\u0000\u545A\u0000\u3968\u0000\u545C"+
-        "\u545E\u545D\u0000\u0000\u5460\u0000\u5455\u5462"+
-        "\u0000\u0000\u0000\u0000\u5461\u545F\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B4E\u3F51\u0000\u4154\u5463"+
-        "\u403C\u306D\u4764\u0000\u0000\u0000\u0000\u445B"+
-        "\u0000\u5465\u5464\u5466\u5467\u5468\u0000\u0000"+
-        "\u0000\u0000\u5469\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A51\u546A\u0000\u0000\u0000\u0000\u3246"+
-        "\u546B\u0000\u0000\u0000\u0000\u4D3C\u3330\u0000"+
-        "\u5249\u3D48\u423F\u546C\u4C6B\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C34\u0000\u0000\u546E\u0000\u4267"+
-        "\u0000\u4537\u4240\u4957\u546F\u5470\u317B\u0000"+
-        "\u0000\u3C3A\u5471\u0000\u0000\u0000\u0000\u3050"+
-        "\u5472\u0000\u0000\u0000\u0000\u0000\u5473\u0000"+
-        "\u0000\u0000\u0000\u0000\u3162\u0000\u0000\u3471"+
-        "\u4660\u4A74\u0000\u0000\u0000\u0000\u5477\u4155"+
-        "\u5476\u3740\u0000\u0000\u4B5B\u5475\u0000\u4565"+
-        "\u5479\u0000\u5478\u0000\u0000\u0000\u0000\u0000"+
-        "\u547B\u0000\u547A\u0000\u0000\u317C\u0000\u547C"+
-        "\u3E29\u547E\u4325\u0000\u547D\u0000\u4A33\u0000"+
-        "\u0000\u0000\u0000\u3D77\u455B\u0000\u0000\u0000"+
-        "\u5521\u0000\u0000\u0000\u0000\u3925\u0000\u0000"+
-        "\u0000\u5522\u4721\u485E\u4C51\u0000\u0000\u0000"+
-        "\u0000\u0000\u4725\u0000\u0000\u552B\u0000\u0000"+
-        "\u0000\u0000\u0000\u3538\u0000\u0000\u4D45\u0000"+
-        "\u0000\u4C2F\u0000\u562C\u0000\u5523\u0000\u0000"+
-        "\u0000\u0000\u0000\u5526\u0000\u4245\u0000\u0000"+
-        "\u4B38\u0000\u0000\u0000\u454A\u0000\u0000\u0000"+
-        "\u0000\u0000\u5527\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4B65\u0000\u3A4A\u0000\u0000\u3E2A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5528\u0000"+
-        "\u0000\u3B50\u0000\u3B4F\u0000\u0000\u0000\u0000"+
-        "\u3039\u3848\u0000\u402B\u3051\u0000\u0000\u0000"+
-        "\u0000\u552C\u552D\u0000\u552A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3138\u342F\u0000"+
-        "\u5529\u0000\u4C45\u4931\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3028\u0000"+
-        "\u0000\u0000\u0000\u3079\u0000\u0000\u0000\u3B51"+
-        "\u0000\u3052\u0000\u3023\u0000\u0000\u0000\u0000"+
-        "\u0000\u5532\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5530\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C3C\u0000\u5533\u0000\u5531\u0000\u0000\u552F"+
-        "\u3F31\u0000\u0000\u0000\u0000\u552E\u0000\u0000"+
-        "\u0000\u4A5A\u0000\u0000\u0000\u0000\u0000\u3864"+
-        "\u0000\u0000\u0000\u0000\u0000\u5537\u5538\u0000"+
-        "\u0000\u0000\u0000\u0000\u3E2B\u0000\u0000\u0000"+
-        "\u5534\u4F2C\u0000\u0000\u0000\u0000\u474C\u0000"+
-        "\u0000\u5536\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A27\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5539\u0000\u0000\u0000\u4958\u0000"+
-        "\u0000\u0000\u553A\u0000\u5535\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4C3B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u475E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u553B\u4932\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u553C\u5540\u553D\u0000"+
-        "\u0000\u3247\u553F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3C3B\u0000\u553E\u3779\u0000\u0000\u0000"+
-        "\u554C\u0000\u0000\u0000\u0000\u0000\u5545\u5542"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4364\u0000\u5541\u0000\u0000\u5543\u0000"+
-        "\u0000\u5544\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5546\u5547\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3472\u0000\u5549\u5548\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u554A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3E6E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u554D\u0000\u445C\u0000\u0000\u0000"+
-        "\u3145\u0000\u554B\u0000\u0000\u0000\u554E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u554F\u0000"+
-        "\u5552\u0000\u0000\u5550\u0000\u5551\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3B52\u5553\u0000\u0000\u3926\u5554\u0000\u3B7A"+
-        "\u4238\u0000\u5555\u5556\u3B5A\u3927\u0000\u4C52"+
-        "\u0000\u0000\u0000\u3528\u3849\u5557\u3358\u0000"+
-        "\u0000\u5558\u0000\u4239\u0000\u0000\u0000\u0000"+
-        "\u5559\u5623\u0000\u555A\u0000\u555B\u0000\u0000"+
-        "\u555C\u0000\u555E\u0000\u0000\u0000\u0000\u0000"+
-        "\u555F\u0000\u0000\u5560\u0000\u4270\u0000\u3127"+
-        "\u3C69\u3042\u0000\u4157\u3430\u3C35\u0000\u3928"+
-        "\u0000\u0000\u0000\u0000\u0000\u4566\u0000\u3D21"+
-        "\u3431\u4368\u446A\u3038\u3539\u4A75\u0000\u3C42"+
-        "\u0000\u0000\u3552\u406B\u3C3C\u4D28\u5561\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u355C\u0000"+
-        "\u3A4B\u0000\u0000\u3332\u3163\u3E2C\u3248\u0000"+
-        "\u5562\u4D46\u0000\u0000\u0000\u0000\u0000\u3D49"+
-        "\u0000\u0000\u3C64\u5563\u3473\u4652\u4C29\u5564"+
-        "\u0000\u5565\u0000\u0000\u4959\u0000\u0000\u0000"+
-        "\u5567\u0000\u3428\u3677\u5566\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3432\u0000\u3F32\u556B\u3B21"+
-        "\u0000\u3249\u556A\u0000\u5568\u556C\u5569\u472B"+
-        "\u5C4D\u3F33\u0000\u556D\u0000\u0000\u4E40\u0000"+
-        "\u556E\u0000\u0000\u5570\u0000\u437E\u556F\u0000"+
-        "\u4023\u0000\u3B7B\u0000\u0000\u0000\u4250\u3C77"+
-        "\u0000\u4975\u406C\u0000\u3C4D\u5571\u3E2D\u5572"+
-        "\u5573\u3053\u423A\u3F52\u0000\u5574\u4633\u3E2E"+
-        "\u0000\u3E2F\u0000\u5575\u0000\u0000\u406D\u0000"+
-        "\u0000\u0000\u3E30\u0000\u0000\u0000\u0000\u0000"+
-        "\u5576\u0000\u5577\u0000\u4C60\u0000\u0000\u0000"+
-        "\u5578\u0000\u0000\u0000\u0000\u3646\u0000\u0000"+
-        "\u0000\u3D22\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5579\u557A\u3C5C\u3F2C\u4674\u3F54\u4878\u4722"+
-        "\u3649\u557B\u0000\u0000\u0000\u356F\u557C\u0000"+
-        "\u367E\u0000\u464F\u3230\u0000\u3B53\u557D\u5622"+
-        "\u5621\u367D\u0000\u557E\u0000\u4538\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4230\u0000"+
-        "\u454B\u3C48\u0000\u0000\u4158\u4D7A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5624\u0000\u5625\u4656"+
-        "\u0000\u3B33\u0000\u0000\u0000\u0000\u5627\u0000"+
-        "\u0000\u5628\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5629\u0000\u0000\u0000"+
-        "\u3474\u562A\u0000\u0000\u562B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u322C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u413B\u3464\u0000\u562D\u4C28\u0000\u0000\u0000"+
-        "\u0000\u4252\u0000\u3359\u0000\u0000\u562F\u5631"+
-        "\u345F\u0000\u0000\u562E\u5630\u0000\u5633\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5632\u0000\u5634"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5635\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u463D\u362E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3265\u5636\u563B\u0000\u0000\u5639\u0000\u4A77"+
-        "\u4A76\u0000\u0000\u0000\u0000\u0000\u4567\u0000"+
-        "\u0000\u0000\u5638\u3D54\u0000\u5637\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3F72"+
-        "\u0000\u0000\u0000\u563C\u0000\u0000\u3A6A\u0000"+
-        "\u0000\u5642\u0000\u0000\u5643\u563D\u3333\u563E"+
-        "\u5647\u5646\u5645\u5641\u0000\u0000\u0000\u5640"+
-        "\u0000\u0000\u5644\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A78\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u564B\u5648\u0000\u564A\u0000"+
-        "\u4D72\u0000\u5649\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u563F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F73\u0000\u0000\u564C\u0000\u0000\u3A37"+
-        "\u0000\u0000\u0000\u564D\u0000\u0000\u564E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5651\u0000\u5650\u0000\u0000\u564F"+
-        "\u0000\u0000\u0000\u4568\u563A\u0000\u0000\u0000"+
-        "\u5657\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5653\u0000\u0000"+
-        "\u0000\u0000\u5652\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5654\u0000\u5655\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5658"+
-        "\u0000\u0000\u4E66\u0000\u5659\u5656\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u565A\u0000\u0000\u3460\u565B\u0000\u0000"+
-        "\u0000\u0000\u565D\u565C\u0000\u0000\u565E\u0000"+
-        "\u0000\u0000\u0000\u565F\u0000\u406E\u3D23\u0000"+
-        "\u0000\u3D64\u0000\u4163\u0000\u3929\u3A38\u392A"+
-        "\u3570\u0000\u0000\u5660\u0000\u0000\u3A39\u0000"+
-        "\u0000\u384A\u5661\u4C26\u4743\u5662\u0000\u392B"+
-        "\u0000\u0000\u0000\u342C\u0000\u4327\u3652\u0000"+
-        "\u0000\u0000\u3B54\u495B\u0000\u0000\u4841\u0000"+
-        "\u0000\u0000\u0000\u5663\u3475\u0000\u0000\u0000"+
-        "\u0000\u5666\u0000\u0000\u0000\u0000\u4421\u0000"+
-        "\u0000\u5665\u5664\u5667\u0000\u446B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F63\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B55\u0000\u404A\u0000\u4253"+
-        "\u3522\u0000\u0000\u4422\u0000\u0000\u5668\u5669"+
-        "\u3E6F\u0000\u0000\u0000\u0000\u4B39\u0000\u0000"+
-        "\u566C\u0000\u0000\u566B\u566A\u497D\u0000\u5673"+
-        "\u0000\u0000\u0000\u0000\u4B5A\u0000\u566D\u0000"+
-        "\u0000\u0000\u0000\u0000\u566F\u4B6B\u0000\u566E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5670"+
-        "\u0000\u4828\u5671\u4A3E\u5672\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3433\u4A3F\u472F\u5674\u5675\u0000"+
-        "\u392C\u3434\u5676\u3838\u4D44\u4D29\u3476\u5678"+
-        "\u0000\u4423\u0000\u392D\u3E31\u0000\u0000\u485F"+
-        "\u0000\u0000\u3E32\u0000\u0000\u0000\u0000\u3D78"+
-        "\u0000\u0000\u0000\u0000\u0000\u446C\u4A79\u4539"+
-        "\u0000\u0000\u392E\u0000\u495C\u0000\u0000\u0000"+
-        "\u5679\u0000\u0000\u0000\u0000\u0000\u4559\u3A42"+
-        "\u0000\u0000\u0000\u384B\u0000\u446D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3043\u3D6E\u392F"+
-        "\u4D47\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u567A\u567B\u4751\u0000\u0000\u0000\u0000"+
-        "\u567C\u4E77\u4F2D\u0000\u0000\u0000\u0000\u567E"+
-        "\u567D\u0000\u0000\u3347\u0000\u0000\u5721\u0000"+
-        "\u0000\u0000\u5724\u5725\u0000\u5723\u0000\u4940"+
-        "\u3E33\u5727\u5726\u5722\u0000\u0000\u0000\u0000"+
-        "\u5728\u5729\u0000\u0000\u572A\u0000\u0000\u0000"+
-        "\u572D\u572B\u0000\u572C\u572E\u0000\u3164\u446E"+
-        "\u572F\u0000\u377A\u3276\u4736\u0000\u5730\u467B"+
-        "\u0000\u4A5B\u0000\u5731\u4F2E\u0000\u0000\u0000"+
-        "\u0000\u5732\u4A40\u5735\u5021\u5031\u0000\u3C30"+
-        "\u4675\u5736\u0000\u355D\u4424\u307A\u5737\u4A26"+
-        "\u3930\u0000\u0000\u4350\u0000\u0000\u0000\u446F"+
-        "\u0000\u0000\u0000\u0000\u0000\u4C6F\u3839\u384C"+
-        "\u0000\u5738\u0000\u0000\u0000\u5739\u0000\u573F"+
-        "\u0000\u3C65\u0000\u0000\u0000\u4425\u0000\u362F"+
-        "\u573A\u0000\u0000\u0000\u492B\u0000\u4346\u0000"+
-        "\u0000\u573B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u573C\u0000\u3630\u0000\u573D\u0000\u573E\u0000"+
-        "\u0000\u5740\u0000\u4576\u0000\u0000\u5741\u5742"+
-        "\u0000\u5743\u0000\u0000\u5734\u5733\u0000\u0000"+
-        "\u0000\u5744\u3741\u0000\u0000\u0000\u4927\u0000"+
-        "\u0000\u3A4C\u4937\u4426\u494B\u5745\u0000\u0000"+
-        "\u3E34\u3146\u0000\u5746\u0000\u0000\u0000\u5747"+
-        "\u0000\u4C72\u0000\u0000\u4860\u0000\u0000\u574A"+
-        "\u317D\u402C\u5749\u5748\u3742\u4254\u0000\u574E"+
-        "\u574C\u0000\u574B\u4E27\u3865\u0000\u0000\u0000"+
-        "\u3D79\u574D\u454C\u3D3E\u0000\u0000\u0000\u4640"+
-        "\u5751\u5750\u0000\u0000\u0000\u0000\u574F\u0000"+
-        "\u5752\u3866\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5753\u497C\u3D5B\u0000\u0000\u5754\u4879\u0000"+
-        "\u0000\u0000\u0000\u4641\u4427\u0000\u0000\u0000"+
-        "\u0000\u4530\u0000\u0000\u5755\u352B\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F34\u0000\u492C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3477\u4726\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5756\u3B56"+
-        "\u4B3A\u4B3B\u0000\u0000\u317E\u575B\u0000\u0000"+
-        "\u4369\u0000\u0000\u0000\u5758\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3277\u0000\u0000\u0000\u0000"+
-        "\u582D\u575A\u0000\u0000\u0000\u4730\u0000\u0000"+
-        "\u5759\u0000\u0000\u5757\u0000\u397A\u0000\u575D";
-
-    private final static String innerIndex2=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5763\u5769"+
-        "\u5761\u0000\u455C\u0000\u0000\u5766\u495D\u0000"+
-        "\u0000\u5760\u0000\u5765\u4E67\u3B57\u0000\u0000"+
-        "\u4255\u575E\u0000\u0000\u0000\u355E\u5768\u402D"+
-        "\u3165\u5762\u3278\u5767\u0000\u0000\u0000\u3631"+
-        "\u0000\u5764\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u576A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u576C\u5776\u5774\u0000\u0000\u5771\u0000"+
-        "\u0000\u0000\u5770\u4E78\u0000\u5772\u0000\u0000"+
-        "\u3632\u0000\u3931\u0000\u0000\u3D7A\u0000\u0000"+
-        "\u0000\u5779\u576B\u0000\u0000\u0000\u0000\u576F"+
-        "\u575F\u0000\u327A\u5773\u5775\u4351\u0000\u0000"+
-        "\u3A28\u3238\u576D\u5778\u5777\u3633\u0000\u4229"+
-        "\u3366\u0000\u0000\u0000\u0000\u3743\u0000\u576E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u577A\u0000\u577D\u5821\u0000\u0000\u0000"+
-        "\u0000\u3C3D\u0000\u5827\u4470\u577B\u0000\u0000"+
-        "\u0000\u0000\u5825\u0000\u3279\u0000\u5823\u5824"+
-        "\u0000\u0000\u577E\u5822\u0000\u0000\u0000\u3867"+
-        "\u4D2A\u0000\u0000\u3435\u0000\u0000\u3159\u5826"+
-        "\u0000\u473A\u302D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4861\u575C\u582C\u5830\u4C65\u0000"+
-        "\u5829\u0000\u0000\u0000\u4569\u582E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3E70\u582F\u4657"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4F47\u0000\u582B\u0000\u0000\u0000\u0000"+
-        "\u5831\u0000\u397B\u0000\u404B\u0000\u0000\u3054"+
-        "\u582A\u5828\u0000\u415A\u0000\u0000\u0000\u577C"+
-        "\u3B34\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4246\u583D\u0000\u415B\u5838\u0000\u5835\u5836"+
-        "\u0000\u3C66\u5839\u583C\u0000\u0000\u0000\u0000"+
-        "\u5837\u3D25\u0000\u583A\u0000\u0000\u5834\u0000"+
-        "\u4C7C\u4C7B\u0000\u0000\u0000\u583E\u583F\u3055"+
-        "\u0000\u0000\u0000\u0000\u0000\u5833\u0000\u0000"+
-        "\u0000\u0000\u3672\u3026\u0000\u0000\u0000\u3436"+
-        "\u0000\u583B\u0000\u0000\u0000\u0000\u0000\u5843"+
-        "\u5842\u0000\u0000\u0000\u5847\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5848\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5846\u5849\u5841\u5845"+
-        "\u0000\u0000\u584A\u0000\u584B\u0000\u0000\u5840"+
-        "\u3B7C\u0000\u5844\u4256\u3932\u5832\u3F35\u0000"+
-        "\u0000\u0000\u0000\u5858\u0000\u4A69\u0000\u0000"+
-        "\u584E\u584F\u5850\u0000\u0000\u5857\u0000\u5856"+
-        "\u0000\u0000\u4B7D\u3437\u0000\u5854\u0000\u3745"+
-        "\u3334\u0000\u0000\u5851\u0000\u0000\u4E38\u5853"+
-        "\u3056\u5855\u0000\u584C\u5852\u5859\u3744\u584D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4D5D\u0000"+
-        "\u0000\u0000\u4D2B\u0000\u0000\u0000\u0000\u585C"+
-        "\u0000\u0000\u5860\u0000\u0000\u0000\u417E\u0000"+
-        "\u4E79\u5861\u0000\u0000\u585E\u0000\u585B\u0000"+
-        "\u0000\u585A\u585F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4A30\u0000\u0000\u4634"+
-        "\u0000\u3746\u0000\u5862\u585D\u0000\u5863\u0000"+
-        "\u0000\u0000\u377B\u0000\u0000\u0000\u3231\u0000"+
-        "\u0000\u0000\u586B\u0000\u0000\u0000\u3438\u0000"+
-        "\u0000\u0000\u0000\u5869\u0000\u0000\u586A\u3A29"+
-        "\u5868\u5866\u5865\u586C\u5864\u586E\u0000\u0000"+
-        "\u327B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5870\u0000\u0000\u586F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4428\u0000\u5873\u0000\u5871\u5867"+
-        "\u377C\u0000\u5872\u0000\u5876\u5875\u5877\u5874"+
-        "\u5878\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5879\u587A\u4A6A\u0000\u587C\u587B\u3D3F\u0000"+
-        "\u402E\u3266\u327C\u0000\u587D\u0000\u303F\u0000"+
-        "\u0000\u0000\u404C\u587E\u0000\u6C43\u5921\u3761"+
-        "\u0000\u5922\u0000\u0000\u0000\u0000\u406F\u0000"+
-        "\u0000\u0000\u5923\u0000\u0000\u0000\u5924\u353A"+
-        "\u5925\u0000\u5926\u5927\u4257\u0000\u0000\u0000"+
-        "\u384D\u0000\u0000\u4C61\u0000\u0000\u0000\u4B3C"+
-        "\u3D6A\u5928\u0000\u0000\u0000\u0000\u0000\u4070"+
-        "\u6E3D\u4862\u0000\u3C6A\u0000\u3A4D\u5929\u0000"+
-        "\u0000\u0000\u0000\u4247\u0000\u4A27\u0000\u0000"+
-        "\u4271\u0000\u0000\u592C\u0000\u0000\u592A\u0000"+
-        "\u592D\u0000\u0000\u592B\u0000\u0000\u0000\u0000"+
-        "\u592E\u0000\u0000\u0000\u0000\u0000\u4A31\u0000"+
-        "\u0000\u3037\u0000\u0000\u0000\u0000\u495E\u0000"+
-        "\u0000\u4863\u0000\u0000\u592F\u0000\u5932\u3E35"+
-        "\u353B\u0000\u5930\u5937\u3E36\u0000\u0000\u0000"+
-        "\u0000\u5931\u4744\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4D5E\u5933\u5934\u5938\u456A\u5935\u3933"+
-        "\u405E\u0000\u0000\u5946\u4834\u0000\u4272\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4864\u5A2D\u0000\u0000\u0000"+
-        "\u0000\u4A7A\u0000\u0000\u0000\u4471\u0000\u0000"+
-        "\u0000\u4B75\u0000\u593B\u3221\u436A\u0000\u0000"+
-        "\u0000\u0000\u5944\u0000\u0000\u4334\u593E\u5945"+
-        "\u5940\u5947\u5943\u0000\u5942\u476F\u0000\u593C"+
-        "\u327D\u593A\u3571\u4273\u5936\u0000\u0000\u5939"+
-        "\u3934\u405B\u0000\u3E37\u5941\u4752\u0000\u0000"+
-        "\u3572\u3348\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3367\u3F21\u5949\u594E"+
-        "\u0000\u594A\u0000\u377D\u0000\u594F\u3B22\u3969"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3D26\u593D"+
-        "\u0000\u3B7D\u594C\u0000\u0000\u0000\u0000\u3B58"+
-        "\u594D\u3044\u0000\u0000\u5948\u0000\u0000\u0000"+
-        "\u0000\u4429\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3573\u0000\u0000\u0000\u0000\u0000\u3634"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u594B"+
-        "\u3027\u0000\u0000\u3A43\u0000\u0000\u0000\u3F36"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4472\u0000\u0000\u4854\u5951\u415E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u422A\u0000\u0000\u3B2B\u5952\u0000\u5954"+
-        "\u5950\u0000\u0000\u0000\u0000\u4A61\u0000\u443D"+
-        "\u0000\u0000\u0000\u0000\u415C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4A7B"+
-        "\u3C4E\u5960\u0000\u595F\u0000\u0000\u3F78\u0000"+
-        "\u0000\u0000\u377E\u0000\u0000\u0000\u5959\u3E39"+
-        "\u0000\u0000\u4668\u4731\u0000\u0000\u0000\u0000"+
-        "\u5957\u0000\u0000\u415D\u0000\u0000\u0000\u0000"+
-        "\u3C78\u595C\u0000\u0000\u3E38\u0000\u5956\u595B"+
-        "\u0000\u0000\u4753\u0000\u0000\u0000\u5955\u0000"+
-        "\u3721\u0000\u0000\u335D\u0000\u0000\u0000\u595D"+
-        "\u4E2B\u3A4E\u4335\u595A\u0000\u405C\u0000\u3935"+
-        "\u3F64\u3166\u413C\u5958\u3545\u0000\u0000\u0000"+
-        "\u0000\u0000\u3747\u0000\u444F\u595E\u0000\u0000"+
-        "\u0000\u0000\u0000\u415F\u0000\u0000\u5961\u0000"+
-        "\u5963\u0000\u0000\u4237\u5969\u0000\u5964\u0000"+
-        "\u0000\u5966\u0000\u0000\u0000\u0000\u0000\u4941"+
-        "\u4473\u0000\u5967\u0000\u0000\u0000\u4D2C\u0000"+
-        "\u0000\u0000\u4D48\u3439\u0000\u0000\u0000\u0000"+
-        "\u0000\u302E\u0000\u5965\u0000\u0000\u0000\u0000"+
-        "\u0000\u5962\u0000\u0000\u0000\u0000\u3478\u0000"+
-        "\u0000\u0000\u0000\u0000\u3167\u0000\u5968\u0000"+
-        "\u0000\u0000\u4D49\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u596C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u423B\u0000\u5973"+
-        "\u0000\u0000\u0000\u596D\u0000\u0000\u596A\u5971"+
-        "\u0000\u0000\u0000\u0000\u5953\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u596E\u0000"+
-        "\u5972\u0000\u0000\u0000\u4842\u456B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u596B\u0000\u596F\u0000"+
-        "\u0000\u0000\u3748\u0000\u0000\u0000\u3A71\u0000"+
-        "\u0000\u0000\u405D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5977\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4526\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5974"+
-        "\u0000\u4B60\u0000\u0000\u0000\u0000\u0000\u5975"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5976\u0000"+
-        "\u4C4E\u0000\u4022\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3762\u0000\u0000\u0000\u0000"+
-        "\u597D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B35\u597A\u0000\u5979\u0000\u0000"+
-        "\u0000\u0000\u4732\u0000\u0000\u0000\u4635\u0000"+
-        "\u0000\u0000\u0000\u0000\u4531\u597B\u0000\u0000"+
-        "\u0000\u597C\u0000\u496F\u0000\u4745\u3B23\u0000"+
-        "\u4071\u0000\u4B50\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3349\u0000\u5A25\u597E\u0000\u0000\u0000"+
-        "\u0000\u4D4A\u5A27\u0000\u0000\u5A23\u0000\u5A24"+
-        "\u0000\u0000\u0000\u0000\u0000\u4160\u0000\u0000"+
-        "\u0000\u0000\u5A22\u0000\u593F\u0000\u0000\u0000"+
-        "\u5A26\u0000\u5A21\u0000\u0000\u0000\u0000\u0000"+
-        "\u5A2B\u5A2C\u4527\u5A2E\u0000\u0000\u3B24\u5A29"+
-        "\u0000\u0000\u0000\u0000\u353C\u0000\u0000\u5A2F"+
-        "\u0000\u5A28\u5A33\u0000\u5A32\u0000\u5A31\u0000"+
-        "\u0000\u0000\u5A34\u0000\u0000\u5A36\u3E71\u0000"+
-        "\u5A35\u0000\u0000\u0000\u0000\u5A39\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5A37\u0000\u0000\u0000\u5A38\u5970\u0000\u0000"+
-        "\u0000\u0000\u0000\u5A3B\u5A3A\u0000\u0000\u0000"+
-        "\u0000\u0000\u5978\u5A3C\u5A30\u0000\u0000\u3B59"+
-        "\u0000\u0000\u0000\u0000\u5A3D\u5A3E\u5A40\u5A3F"+
-        "\u5A41\u327E\u0000\u3936\u0000\u0000\u4A7C\u402F"+
-        "\u0000\u0000\u0000\u0000\u0000\u384E\u0000\u0000"+
-        "\u5A43\u0000\u0000\u0000\u0000\u5A46\u0000\u4952"+
-        "\u0000\u355F\u0000\u0000\u0000\u5A45\u5A44\u4754"+
-        "\u5A47\u3635\u0000\u0000\u0000\u5A49\u5A48\u0000"+
-        "\u0000\u0000\u343A\u3B36\u0000\u0000\u4658\u0000"+
-        "\u0000\u0000\u0000\u0000\u3749\u0000\u0000\u0000"+
-        "\u3F74\u0000\u5A4A\u0000\u4030\u4528\u0000\u495F"+
-        "\u5A4B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5A4C\u5A4D\u0000\u0000\u0000\u4A38"+
-        "\u555D\u4046\u0000\u0000\u494C\u0000\u3A58\u0000"+
-        "\u4865\u4843\u0000\u0000\u0000\u0000\u0000\u454D"+
-        "\u0000\u4E41\u0000\u5A4F\u3C50\u0000\u0000\u5A50"+
-        "\u0000\u3036\u0000\u0000\u3654\u404D\u0000\u4960"+
-        "\u0000\u0000\u0000\u5A51\u3B42\u4347\u0000\u3B5B"+
-        "\u3F37\u0000\u0000\u0000\u0000\u0000\u0000\u5A52"+
-        "\u0000\u4A7D\u0000\u0000\u3177\u3B5C\u0000\u0000"+
-        "\u0000\u5A55\u0000\u5A53\u5A56\u4E39\u5A54\u0000"+
-        "\u0000\u0000\u0000\u407B\u5A57\u0000\u0000\u4232"+
-        "\u0000\u0000\u5A58\u0000\u0000\u0000\u0000\u347A"+
-        "\u0000\u5A5A\u0000\u5A59\u0000\u0000\u0000\u0000"+
-        "\u5A5B\u5A5C\u347B\u0000\u0000\u467C\u4336\u356C"+
-        "\u3B5D\u4161\u0000\u0000\u3D5C\u3030\u0000\u0000"+
-        "\u0000\u5A5D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3222\u5A61\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3937\u5A60\u0000\u0000\u3A2B\u3E3A"+
-        "\u0000\u0000\u5A5F\u0000\u3E3B\u0000\u4C40\u3A2A"+
-        "\u0000\u0000\u0000\u3057\u404E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5A66\u0000\u0000\u4031"+
-        "\u3147\u0000\u0000\u0000\u0000\u3D55\u0000\u4B66"+
-        "\u3A72\u0000\u0000\u0000\u0000\u3E3C\u0000\u4027"+
-        "\u0000\u0000\u0000\u0000\u5A65\u5A63\u5A64\u0000"+
-        "\u0000\u0000\u0000\u0000\u436B\u0000\u0000\u5B26"+
-        "\u0000\u5A6A\u3B7E\u3938\u5A68\u0000\u0000\u0000"+
-        "\u0000\u5A69\u0000\u3F38\u0000\u0000\u0000\u5A67"+
-        "\u0000\u0000\u3B2F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5A6C\u5A6B\u5A70"+
-        "\u0000\u0000\u5A71\u0000\u5A6D\u0000\u3322\u5A6E"+
-        "\u5A6F\u4855\u0000\u0000\u0000\u0000\u4961\u374A"+
-        "\u5A72\u0000\u0000\u0000\u4032\u0000\u3E3D\u0000"+
-        "\u0000\u0000\u4352\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3647\u0000\u5A73\u5A77\u0000\u0000\u324B"+
-        "\u5A74\u5A76\u0000\u0000\u0000\u0000\u5A75\u0000"+
-        "\u0000\u3D6B\u0000\u0000\u0000\u0000\u4348\u3045"+
-        "\u5A78\u0000\u0000\u0000\u0000\u5A79\u0000\u0000"+
-        "\u0000\u0000\u442A\u0000\u0000\u0000\u4E71\u0000"+
-        "\u0000\u0000\u0000\u3B43\u0000\u0000\u4A6B\u0000"+
-        "\u0000\u0000\u0000\u0000\u4B3D\u0000\u0000\u0000"+
-        "\u5B22\u5A7B\u0000\u0000\u5A7E\u0000\u5A7D\u0000"+
-        "\u0000\u5A7A\u0000\u0000\u5B21\u0000\u0000\u465E"+
-        "\u0000\u5A7C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B23\u0000"+
-        "\u0000\u3D6C\u5B24\u0000\u4D4B\u4778\u0000\u0000"+
-        "\u5B25\u0000\u0000\u0000\u0000\u0000\u5B27\u0000"+
-        "\u0000\u5B28\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5B29\u0000\u364A\u3148\u3939\u5B2A\u0000\u5B2B"+
-        "\u3D71\u4162\u0000\u0000\u5258\u413E\u413D\u4258"+
-        "\u3A47\u0000\u0000\u5072\u0000\u0000\u0000\u0000"+
-        "\u376E\u4D2D\u0000\u4A7E\u0000\u497E\u0000\u5B2C"+
-        "\u0000\u0000\u0000\u0000\u3A73\u443F\u5B2D\u4F2F"+
-        "\u0000\u0000\u0000\u4B3E\u0000\u442B\u5B2E\u347C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B2F\u5B30"+
-        "\u4C5A\u0000\u4C24\u4B76\u4B5C\u3B25\u5B32\u0000"+
-        "\u0000\u3C6B\u0000\u0000\u4B51\u0000\u5B34\u5B37"+
-        "\u5B36\u0000\u3479\u0000\u0000\u3560\u0000\u5B33"+
-        "\u0000\u5B35\u0000\u0000\u0000\u0000\u5B38\u0000"+
-        "\u0000\u3F79\u0000\u0000\u0000\u0000\u4D7B\u3049"+
-        "\u3A60\u423C\u0000\u3C5D\u0000\u0000\u3E73\u0000"+
-        "\u0000\u5B3B\u0000\u0000\u454E\u0000\u5B39\u422B"+
-        "\u5B3A\u3E72\u4C5D\u5B3C\u5B3D\u4D68\u0000\u0000"+
-        "\u0000\u0000\u5B42\u0000\u0000\u393A\u0000\u4755"+
-        "\u5B3F\u456C\u5A5E\u5A62\u0000\u354F\u0000\u4747"+
-        "\u0000\u0000\u0000\u0000\u5B41\u0000\u3E3E\u4844"+
-        "\u0000\u0000\u0000\u0000\u0000\u5B47\u0000\u487A"+
-        "\u0000\u5B3E\u0000\u5B44\u5B43\u0000\u0000\u0000"+
-        "\u404F\u0000\u0000\u0000\u0000\u4B6D\u0000\u4E53"+
-        "\u0000\u0000\u4B67\u0000\u324C\u3B5E\u0000\u0000"+
-        "\u4F48\u5B46\u3F75\u0000\u0000\u0000\u5B45\u0000"+
-        "\u0000\u5B40\u0000\u0000\u0000\u0000\u0000\u384F"+
-        "\u0000\u0000\u0000\u5B4C\u5B4A\u0000\u324D\u5B48"+
-        "\u5B4E\u5B54\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4248\u0000\u0000\u4A41\u0000\u5B56\u0000"+
-        "\u0000\u0000\u4922\u0000\u0000\u0000\u5B55\u4770"+
-        "\u4B3F\u343B\u0000\u4077\u3D40\u0000\u0000\u0000"+
-        "\u4453\u0000\u4D2E\u0000\u0000\u5B51\u5B50\u0000"+
-        "\u0000\u0000\u5B52\u0000\u5B4F\u0000\u0000\u5B57"+
-        "\u0000\u5B4D\u0000\u0000\u5B4B\u0000\u5B53\u5B49"+
-        "\u0000\u436C\u0000\u4C78\u3C46\u3A74\u0000\u0000"+
-        "\u0000\u0000\u0000\u3A3A\u0000\u0000\u4B6F\u3341"+
-        "\u0000\u0000\u444E\u464A\u3149\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4072\u0000\u0000\u4034\u372A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B59\u0000"+
-        "\u0000\u393B\u337C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5B5B\u3374\u5B61\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5B5E\u0000\u4073\u0000\u0000\u0000"+
-        "\u334B\u3A2C\u0000\u0000\u334A\u3A4F\u0000\u0000"+
-        "\u5B5C\u3765\u374B\u456D\u0000\u0000\u5B5A\u0000"+
-        "\u3046\u0000\u0000\u0000\u0000\u5B5D\u5B5F\u0000"+
-        "\u364D\u372C\u0000\u343C\u354B\u0000\u0000\u0000"+
-        "\u0000\u5B62\u0000\u0000\u3A79\u4B71\u0000\u3B37"+
-        "\u0000\u0000\u0000\u5B63\u0000\u0000\u0000\u4930"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5B6F\u0000\u3233\u5B64"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B75\u5B65"+
-        "\u0000\u4E42\u0000\u5B6C\u0000\u475F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5B74\u0000\u5B67"+
-        "\u0000\u0000\u0000\u3034\u5B69\u0000\u0000\u393C"+
-        "\u0000\u0000\u0000\u5B6B\u0000\u5B6A\u0000\u5B66"+
-        "\u5B71\u0000\u3E3F\u0000\u0000\u0000\u546D\u3868"+
-        "\u4D7C\u0000\u0000\u0000\u0000\u5B68\u0000\u4474"+
-        "\u3323\u3A2D\u0000\u5B60\u0000\u5B70\u3361\u0000"+
-        "\u0000\u5B6E\u5B72\u0000\u456E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u347E\u0000\u5C32\u0000"+
-        "\u0000\u4C49\u5B77\u347D\u0000\u5B7E\u0000\u0000"+
-        "\u0000\u0000\u4B40\u0000\u5C21\u5C23\u0000\u5C27"+
-        "\u5B79\u0000\u432A\u0000\u0000\u0000\u0000\u456F"+
-        "\u5C2B\u5B7C\u0000\u5C28\u0000\u0000\u0000\u5C22"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3F39\u5C2C"+
-        "\u0000\u0000\u4033\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C2A\u343D\u0000\u0000\u0000\u0000\u0000"+
-        "\u4F50\u5B76\u0000\u0000\u5C26\u3058\u0000\u0000"+
-        "\u5B78\u0000\u0000\u4C3A\u5B7D\u3F22\u4447\u5B73"+
-        "\u0000\u0000\u5C25\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F7A\u5C2F\u3371\u3821\u0000\u0000\u0000"+
-        "\u0000\u5C31\u5B7A\u5C30\u0000\u5C29\u5B7B\u0000"+
-        "\u5C2D\u0000\u5C2E\u0000\u0000\u0000\u0000\u0000"+
-        "\u5C3F\u0000\u0000\u0000\u464E\u0000\u5C24\u0000"+
-        "\u0000\u5C3B\u0000\u0000\u0000\u5C3D\u0000\u4458"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D4C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4976\u5C38\u424A\u0000\u0000"+
-        "\u0000\u5C3E\u413F\u0000\u5C35\u5C42\u5C41\u0000"+
-        "\u466F\u5C40\u466A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5C44\u5C37\u0000\u3648\u5C3A\u3D5D"+
-        "\u0000\u0000\u0000\u4760\u5C3C\u364B\u0000\u5C34"+
-        "\u5C36\u5C33\u0000\u0000\u4F30\u335A\u5C39\u0000"+
-        "\u0000\u5C43\u3335\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A67\u0000\u0000\u0000\u315D\u0000"+
-        "\u0000\u5C54\u0000\u0000\u4F31\u5C57\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F3A\u5C56\u0000\u0000\u0000"+
-        "\u5C55\u0000\u0000\u0000\u0000\u0000\u0000\u5C52"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5C46\u0000"+
-        "\u0000\u5C63\u5C45\u0000\u5C58\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5C50\u0000\u0000\u5C4B\u5C48"+
-        "\u0000\u5C49\u0000\u5C51\u0000\u0000\u0000\u7422"+
-        "\u0000\u0000\u5C4E\u393D\u4448\u4164\u5C4C\u0000"+
-        "\u5C47\u0000\u0000\u5C4A\u0000\u0000\u0000\u0000"+
-        "\u4D4D\u4B6A\u0000\u0000\u0000\u5C4F\u5C59\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5C61"+
-        "\u5C5A\u0000\u0000\u5C67\u0000\u5C65\u0000\u0000"+
-        "\u0000\u0000\u5C60\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C5F\u0000\u4450\u0000\u4165\u0000\u5C5D"+
-        "\u0000\u0000\u5C5B\u0000\u0000\u5C62\u0000\u0000"+
-        "\u0000\u0000\u5C68\u4875\u5C6E\u0000\u0000\u0000"+
-        "\u0000\u0000\u5C69\u5C6C\u5C66\u0000\u0000\u4374"+
-        "\u0000\u4938\u0000\u5C5C\u0000\u0000\u5C64\u3E40"+
-        "\u0000\u4C4F\u5C78\u5C6B\u0000\u0000\u0000\u0000"+
-        "\u0000\u3822\u3223\u335F\u0000\u0000\u5C53\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3E41\u5C70\u0000"+
-        "\u5C77\u3C79\u3372\u0000\u0000\u432E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5C6D\u0000\u0000\u5C72"+
-        "\u5C76\u0000\u0000\u3636\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u354C\u5C74\u0000\u0000\u0000\u0000\u0000\u3521"+
-        "\u0000\u464B\u5C73\u0000\u0000\u0000\u5C75\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5C6F\u0000\u0000\u0000\u0000\u0000"+
-        "\u5C71\u0000\u0000\u0000\u0000\u0000\u0000\u3360"+
-        "\u4349\u0000\u0000\u0000\u5C7C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5C7A\u3869\u0000"+
-        "\u5C79\u0000\u0000\u0000\u0000\u0000\u0000\u5D21"+
-        "\u0000\u0000\u0000\u0000\u5B58\u0000\u0000\u0000"+
-        "\u5C7B\u0000\u5C7D\u5C7E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D2C\u0000\u5D28\u0000\u5B6D\u0000"+
-        "\u0000\u0000\u0000\u5D27\u0000\u0000\u0000\u0000"+
-        "\u5D26\u0000\u0000\u5D23\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C6A\u5D25\u5D24\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5D2A\u0000\u4F26\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D2D\u367B\u0000\u0000\u5D29\u5D2B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4827\u0000\u5D2E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D32\u5D2F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4D73\u5D30\u0000\u0000"+
-        "\u0000\u0000\u5C5E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D33\u0000\u0000\u0000\u5D34\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3135\u0000\u5D36"+
-        "\u3767\u3C21\u0000\u3655\u0000\u0000\u0000\u3224"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D5F\u0000\u0000\u0000\u0000\u5D38"+
-        "\u5D37\u5D3A\u353D\u0000\u0000\u3656\u343E\u0000"+
-        "\u0000\u0000\u0000\u5D3D\u0000\u0000\u0000\u5D3C"+
-        "\u0000\u5D3E\u0000\u0000\u324E\u0000\u4337\u0000"+
-        "\u5D3F\u0000\u0000\u343F\u5D41\u0000\u0000\u0000"+
-        "\u0000\u5D40\u0000\u5D42\u0000\u0000\u0000\u5D43"+
-        "\u0000\u5D44\u3B5F\u4035\u3A21\u0000\u4970\u0000"+
-        "\u0000\u4A62\u4F44\u0000\u0000\u0000\u0000\u3B75"+
-        "\u0000\u0000\u0000\u3A50\u4E72\u0000\u0000\u0000"+
-        "\u5D45\u5D46\u0000\u3B60\u0000\u0000\u0000\u5D47"+
-        "\u5D48\u0000\u0000\u5D4A\u5D49\u0000\u4B58\u0000"+
-        "\u0000\u3D5E\u3C6C\u3B44\u0000\u5D4B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5D4D\u3F23\u0000"+
-        "\u5D4C\u0000\u0000\u0000\u0000\u0000\u5D4E\u0000"+
-        "\u0000\u0000\u0000\u0000\u5D4F\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D50\u5D51\u0000\u0000\u0000\u5D52"+
-        "\u0000\u5D54\u5D53\u5D55\u3225\u434A\u0000\u5D56"+
-        "\u0000\u0000\u3B26\u334C\u5D57\u0000\u0000\u4542"+
-        "\u544C\u0000\u0000\u0000\u0000\u3523\u5D58\u0000"+
-        "\u0000\u0000\u0000\u5D59\u0000\u4A6C\u4B68\u0000"+
-        "\u0000\u0000\u4647\u5D5A\u4866\u0000\u0000\u0000"+
-        "\u487B\u0000\u0000\u4C53\u0000\u0000\u0000\u5D5B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5D5D\u5D5C\u0000\u0000\u5D5F"+
-        "\u0000\u0000\u0000\u5D5E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5D61\u0000\u0000\u0000\u0000\u0000\u0000\u3B61"+
-        "\u0000\u4C31\u0000\u5D62\u5D63\u0000\u0000\u3524"+
-        "\u0000\u0000\u0000\u5D64\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5D66\u5D65\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F65\u0000\u0000\u4939"+
-        "\u314A\u0000\u0000\u0000\u0000\u0000\u4845\u0000"+
-        "\u4475\u3D41\u3561\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4846\u0000"+
-        "\u3C2E\u0000\u0000\u0000\u0000\u5D68\u0000\u3440"+
-        "\u0000\u0000\u3178\u0000\u0000\u4672\u5D67\u393E"+
-        "\u4353\u0000\u5D69\u0000\u0000\u0000\u0000\u0000"+
-        "\u5D71\u0000\u5D6A\u0000\u0000\u0000\u0000\u0000"+
-        "\u4241\u0000\u3562\u5D72\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3768\u0000\u0000\u3525\u5D70\u0000"+
-        "\u0000\u5D6E\u5D6B\u4D60\u0000\u0000\u0000\u0000"+
-        "\u4440\u0000\u0000\u0000\u4659\u5D6C\u0000\u0000"+
-        "\u5D74\u0000\u5D73\u3723\u0000\u0000\u322D\u0000"+
-        "\u0000\u3A3B\u5D6D\u5D6F\u0000\u0000\u0000\u0000"+
-        "\u0000\u4B57\u4274\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4B77\u0000\u0000\u5D7C\u0000"+
-        "\u0000\u5D7D\u0000\u324F\u0000\u0000\u0000\u0000"+
-        "\u4A28\u4C7D\u5E21\u3C23\u3E42\u5D78\u5D7E\u3168"+
-        "\u0000\u3637\u0000\u0000\u5D75\u5D7A\u0000\u0000"+
-        "\u0000\u4074\u4771\u0000\u4867\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5D77\u0000\u4B21\u0000\u5D79"+
-        "\u0000\u5E24\u0000\u5E22\u0000\u5D7B\u0000\u0000"+
-        "\u0000\u4B22\u4748\u3563\u0000\u4525\u0000\u0000"+
-        "\u436D\u0000\u5E25\u0000\u0000\u0000\u0000\u5E23"+
-        "\u4259\u5D76\u0000\u314B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4D4E\u5E30\u0000\u0000\u0000"+
-        "\u0000\u0000\u5E2F\u0000\u0000\u0000\u0000\u4076"+
-        "\u0000\u5E2C\u0000\u4D6C\u0000\u0000\u4636\u5E26"+
-        "\u0000\u0000\u0000\u0000\u0000\u4445\u0000\u0000"+
-        "\u0000\u314C\u393F\u5E29\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3D27\u5E2E\u0000\u5E2D\u5E28\u0000"+
-        "\u5E2B\u0000\u0000\u3368\u0000\u5E2A\u4749\u0000"+
-        "\u0000\u4E2E\u0000\u0000\u3E74\u4075\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5E36\u5E34\u0000\u494D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5E31\u5E33\u0000\u313A\u0000"+
-        "\u0000\u3940\u4F32\u0000\u333D\u0000\u4962\u0000"+
-        "\u0000\u0000\u0000\u0000\u4D61\u0000\u0000\u3324"+
-        "\u3F3B\u5E35\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5E3A\u0000\u0000"+
-        "\u3E43\u0000\u0000\u0000\u4D30\u0000\u5E37\u0000"+
-        "\u0000\u0000\u0000\u5E32\u0000\u5E38\u0000\u0000"+
-        "\u0000\u4E5E\u0000\u4573\u4642\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3336"+
-        "\u0000\u0000\u3155\u0000\u0000\u5E3E\u0000\u0000"+
-        "\u5E41\u0000\u0000\u0000\u4E43\u0000\u0000\u0000"+
-        "\u4D64\u0000\u0000\u0000\u0000\u5E48\u5E42\u5E3F"+
-        "\u0000\u0000\u0000\u4E54\u5E45\u0000\u0000\u0000"+
-        "\u0000\u3D4A\u5E47\u0000\u0000\u5E4C\u0000\u0000"+
-        "\u4571\u5E4A\u0000\u0000\u0000\u0000\u5E44\u0000"+
-        "\u0000\u4338\u0000\u0000\u5E4B\u0000\u5E40\u0000"+
-        "\u5E46\u0000\u5E4D\u307C\u5E43\u0000\u5E4E\u0000"+
-        "\u0000\u3F3C\u0000\u3D5F\u0000\u4A25\u0000\u3A2E"+
-        "\u0000\u5E3B\u5E49\u453A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4036\u0000\u3369"+
-        "\u3A51\u3E44\u5E3D\u3D42\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u374C\u0000\u5E3C\u0000\u0000"+
-        "\u0000\u5E52\u3D6D\u383A\u0000\u5E61\u0000\u5E5B"+
-        "\u3574\u454F\u0000\u5E56\u5E5F\u302F\u3132\u0000"+
-        "\u0000\u3239\u0000\u5E58\u422C\u5E4F\u5E51\u3941"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5E62\u0000\u5E5D\u0000\u0000\u0000\u5E55\u0000"+
-        "\u0000\u0000\u0000\u5E5C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C2B\u0000\u0000\u5E5A\u5E5E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3850\u0000"+
-        "\u3E45\u0000\u0000\u4339\u0000\u0000\u0000\u5E54"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4D2F"+
-        "\u0000\u0000\u0000\u5E57\u0000\u0000\u5E50\u4572"+
-        "\u0000\u0000\u5E53\u0000\u0000\u0000\u5E59\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4F51\u3C3E"+
-        "\u4B7E\u0000\u5E63\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u482E\u0000\u0000\u5E6F"+
-        "\u383B\u0000\u0000\u0000\u0000\u0000\u3D60\u0000"+
-        "\u5E65\u0000\u0000\u0000\u4E2F\u3942\u0000\u5E72"+
-        "\u0000\u0000\u306E\u0000\u0000\u5E70\u0000\u0000"+
-        "\u0000\u0000\u5E64\u0000\u0000\u0000\u0000\u5E6A"+
-        "\u0000\u0000\u5E6C\u0000\u0000\u0000\u4D4F\u5E67"+
-        "\u0000\u0000\u452E\u0000\u0000\u5E69\u0000\u0000"+
-        "\u0000\u0000\u5E71\u0000\u5E6B\u4C47\u0000\u0000"+
-        "\u0000\u5E66\u0000\u3C22\u5E7E\u0000\u0000\u0000"+
-        "\u0000\u336A\u0000\u5E68\u5E6D\u5E6E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u426C\u425A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E76\u0000\u0000\u5E7C"+
-        "\u0000\u0000\u5E7A\u0000\u4529\u0000\u0000\u5F23"+
-        "\u5E77\u0000\u0000\u0000\u0000\u0000\u5E78\u5E60"+
-        "\u0000\u3579\u493A\u0000\u0000\u0000\u3C3F\u0000"+
-        "\u0000\u3977\u0000\u0000\u0000\u0000\u0000\u4F33"+
-        "\u0000\u5E74\u0000\u5F22\u3169\u4166\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4779\u0000\u3441\u4E7A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4C21\u4452\u0000\u0000\u0000"+
-        "\u0000\u5E7B\u5E7D\u0000\u0000\u0000\u0000\u0000"+
-        "\u4132\u0000\u0000\u0000\u0000\u0000\u5F21\u5E79"+
-        "\u0000\u5E73\u0000\u0000\u0000\u3443\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3769\u0000\u0000\u0000"+
-        "\u5F2F\u0000\u0000\u5F2A\u4078\u0000\u0000\u3363"+
-        "\u0000\u0000\u0000\u0000\u3D61\u0000\u5F33\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F2C\u442C\u5F29"+
-        "\u4459\u0000\u0000\u0000\u5F4C\u0000\u0000\u0000"+
-        "\u5F26\u0000\u5F25\u0000\u5F2E\u0000\u0000\u0000"+
-        "\u5F28\u5F27\u5F2D\u0000\u4021\u0000\u5F24\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5F30\u0000"+
-        "\u0000\u5F31\u0000\u0000\u0000\u0000\u0000\u3442"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F36\u0000\u5F35\u5F37\u0000\u0000\u0000"+
-        "\u0000\u0000\u5F3A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4543\u0000\u5F34\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F38\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3763\u4279\u5F32\u473B\u0000\u0000\u5F39\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5F3E\u5F3C\u0000\u0000"+
-        "\u5F3F\u0000\u0000\u5F42\u0000\u0000\u0000\u5F3B"+
-        "\u396A\u4728\u0000\u0000\u5E39\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4D74\u5F3D\u0000\u5F41\u4275"+
-        "\u0000\u5F40\u0000\u5F2B\u0000\u0000\u6F69\u0000"+
-        "\u0000\u0000\u5F45\u0000\u0000\u0000\u5F49\u0000";
-
-    private final static String innerIndex3=
-        "\u0000\u5F47\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F43\u0000\u5F44\u0000\u0000\u0000\u5F48"+
-        "\u0000\u5F46\u0000\u0000\u0000\u494E\u0000\u0000"+
-        "\u5F4E\u0000\u5F4B\u5F4A\u0000\u5F4D\u4654\u5F4F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4375\u426D"+
-        "\u0000\u0000\u0000\u0000\u4025\u0000\u0000\u0000"+
-        "\u5F50\u0000\u5F52\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5F51\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E75\u0000\u0000\u0000"+
-        "\u0000\u5F53\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4667\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5F54\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3250\u0000\u0000\u0000\u4574"+
-        "\u3325\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3564\u0000\u0000\u0000\u3C5E\u3A52\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4F27\u3F66\u0000\u0000\u0000\u316A\u0000"+
-        "\u0000\u0000\u5F56\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F55\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5F59\u433A\u5F5C\u5F57"+
-        "\u0000\u0000\u0000\u5F5B\u0000\u0000\u0000\u0000"+
-        "\u5F5A\u4540\u3059\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4E75\u0000\u0000\u5F5E\u0000\u0000\u0000\u3128"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F60\u0000\u0000\u0000\u5F5F\u0000\u5F5D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F58\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4B23\u0000\u0000\u0000\u5F62\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F61\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u316B\u0000\u0000\u0000"+
-        "\u0000\u5F64\u4A32\u0000\u5F63\u0000\u0000\u0000"+
-        "\u0000\u4C35\u0000\u0000\u0000\u0000\u3E47\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4133\u0000"+
-        "\u0000\u0000\u0000\u0000\u3E46\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4E7B\u0000\u0000\u5F6A\u0000\u4079\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F66\u5F6B\u0000"+
-        "\u0000\u316C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5F69\u0000\u4761\u5F65\u5F68\u3E48"+
-        "\u0000\u4851\u0000\u0000\u5F6C\u0000\u3C51\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u407A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5F6F\u0000\u0000\u0000"+
-        "\u5F67\u0000\u3727\u0000\u0000\u0000\u0000\u5F6D"+
-        "\u0000\u0000\u0000\u0000\u4D50\u5F70\u0000\u0000"+
-        "\u0000\u7426\u0000\u0000\u0000\u0000\u0000\u3D4F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5F71\u0000\u0000\u0000\u5F72\u0000\u0000\u0000"+
-        "\u0000\u472E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F74\u0000\u0000\u0000\u0000\u5F75\u0000"+
-        "\u0000\u0000\u0000\u4733\u0000\u0000\u0000\u0000"+
-        "\u4575\u5F77\u0000\u0000\u0000\u0000\u5F79\u0000"+
-        "\u4E55\u0000\u5F76\u0000\u5F78\u316D\u0000\u5F73"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u535B"+
-        "\u5F7A\u0000\u0000\u0000\u0000\u4167\u3B38\u5F7C"+
-        "\u0000\u0000\u0000\u0000\u5F7B\u3F24\u5259\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F7D\u0000\u0000"+
-        "\u0000\u6021\u0000\u5F6E\u5F7E\u0000\u0000\u6022"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u477A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6023\u0000\u0000"+
-        "\u6024\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6025\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6026\u0000\u445E\u0000\u6028\u6027\u0000\u0000"+
-        "\u6029\u0000\u602A\u0000\u0000\u3C5F\u4963\u0000"+
-        "\u0000\u0000\u4C6C\u602B\u602C\u4156\u3C24\u602D"+
-        "\u602E\u0000\u0000\u0000\u0000\u0000\u602F\u4A52"+
-        "\u4847\u0000\u0000\u6030\u4757\u0000\u0000\u0000"+
-        "\u0000\u0000\u442D\u0000\u0000\u0000\u0000\u0000"+
-        "\u6031\u3267\u0000\u356D\u0000\u4C46\u0000\u4C36"+
-        "\u0000\u3234\u4F34\u0000\u0000\u0000\u0000\u4B52"+
-        "\u0000\u4A2A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4037\u0000\u6032\u0000\u0000\u0000"+
-        "\u0000\u4643\u0000\u0000\u0000\u3823\u6033\u0000"+
-        "\u3A54\u6035\u6034\u0000\u0000\u0000\u0000\u6036"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6037\u0000\u0000\u0000\u6038\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u353E\u0000\u6039\u0000\u0000\u0000\u0000\u603A"+
-        "\u0000\u0000\u0000\u0000\u3824\u0000\u0000\u4848"+
-        "\u0000\u0000\u603C\u0000\u0000\u0000\u3E75\u0000"+
-        "\u0000\u603B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3638\u603D\u603F\u0000\u603E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6040\u0000"+
-        "\u3851\u0000\u6041\u0000\u0000\u0000\u0000\u3669"+
-        "\u0000\u4140\u0000\u397D\u0000\u0000\u0000\u0000"+
-        "\u6043\u6044\u6042\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3C6D\u0000\u0000\u4648\u3639\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6046"+
-        "\u432C\u6045\u0000\u0000\u4F35\u4762\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6049\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u604B\u6048"+
-        "\u0000\u0000\u0000\u4C54\u604A\u604C\u0000\u4E44"+
-        "\u0000\u0000\u0000\u0000\u0000\u6050\u0000\u0000"+
-        "\u0000\u604F\u4376\u472D\u0000\u0000\u3825\u604E"+
-        "\u0000\u0000\u0000\u0000\u604D\u0000\u4D31\u4D32"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6051\u316E"+
-        "\u0000\u0000\u0000\u0000\u3976\u3B62\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6052\u6053"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6055"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3D43\u0000\u0000\u0000\u0000"+
-        "\u6057\u0000\u6056\u0000\u0000\u0000\u0000\u0000"+
-        "\u6058\u0000\u334D\u0000\u0000\u605A\u0000\u0000"+
-        "\u6059\u0000\u605C\u605B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u383C\u0000\u0000\u4E28"+
-        "\u0000\u364C\u0000\u3226\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u366A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3461\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4E68\u605E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6060\u0000\u0000\u0000\u0000"+
-        "\u6061\u0000\u3251\u0000\u0000\u0000\u0000\u0000"+
-        "\u605D\u0000\u3B39\u0000\u0000\u4441\u605F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6064\u0000"+
-        "\u3C6E\u0000\u0000\u0000\u0000\u6062\u0000\u0000"+
-        "\u0000\u0000\u373E\u0000\u0000\u4849\u6063\u0000"+
-        "\u0000\u607E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6069\u0000\u0000\u0000\u0000\u0000\u383D\u0000"+
-        "\u0000\u0000\u0000\u3565\u0000\u6066\u4D7D\u0000"+
-        "\u0000\u4E30\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4276\u0000\u0000\u6068\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u606A\u4E56\u3657\u487C\u474A\u0000"+
-        "\u0000\u0000\u606B\u0000\u0000\u0000\u0000\u606D"+
-        "\u0000\u6070\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u606C\u0000\u0000"+
-        "\u0000\u606F\u386A\u314D\u6071\u0000\u3F70\u606E"+
-        "\u4E5C\u0000\u0000\u6074\u7424\u0000\u0000\u0000"+
-        "\u0000\u6072\u6075\u0000\u0000\u0000\u0000\u6067"+
-        "\u6073\u0000\u0000\u3A3C\u0000\u0000\u6076\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6077\u0000"+
-        "\u0000\u0000\u0000\u4D7E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6078\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6079\u0000"+
-        "\u0000\u0000\u6065\u0000\u0000\u0000\u0000\u607A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3444\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3C25\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u607B\u0000\u0000\u0000\u0000\u607C"+
-        "\u0000\u0000\u0000\u0000\u607D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u313B\u0000\u0000\u0000"+
-        "\u6121\u0000\u493B\u6122\u0000\u0000\u3424\u6123"+
-        "\u0000\u6124\u0000\u0000\u0000\u0000\u6125\u0000"+
-        "\u6127\u6128\u6126\u0000\u0000\u0000\u4953\u612A"+
-        "\u6129\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u612C\u612B\u612D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u612E\u6130\u612F\u0000"+
-        "\u0000\u3979\u0000\u6132\u0000\u6131\u0000\u0000"+
-        "\u3445\u0000\u3F53\u0000\u453C\u0000\u6133\u4038"+
-        "\u0000\u0000\u0000\u3B3A\u0000\u3179\u6134\u0000"+
-        "\u4D51\u0000\u0000\u4A63\u6135\u0000\u0000\u0000"+
-        "\u4544\u4D33\u3943\u3F3D\u0000\u0000\u0000\u434B"+
-        "\u5234\u0000\u442E\u3268\u6136\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6137\u0000\u613C\u0000"+
-        "\u0000\u613A\u6139\u5A42\u3326\u6138\u0000\u305A"+
-        "\u0000\u482A\u0000\u0000\u484A\u0000\u0000\u0000"+
-        "\u0000\u4E31\u613D\u613B\u435C\u4026\u0000\u0000"+
-        "\u482B\u0000\u492D\u0000\u613F\u4E2C\u374D\u6140"+
-        "\u0000\u613E\u4856\u6141\u0000\u6142\u0000\u0000"+
-        "\u305B\u0000\u0000\u3E76\u6147\u0000\u6144\u466D"+
-        "\u6143\u0000\u0000\u0000\u0000\u0000\u0000\u3526"+
-        "\u0000\u0000\u614A\u0000\u0000\u0000\u6145\u6146"+
-        "\u0000\u6149\u6148\u4925\u0000\u0000\u4142\u4141"+
-        "\u0000\u353F\u0000\u0000\u614B\u0000\u0000\u0000"+
-        "\u0000\u0000\u614C\u0000\u0000\u614D\u0000\u0000"+
-        "\u0000\u0000\u0000\u614F\u0000\u614E\u0000\u0000"+
-        "\u0000\u0000\u0000\u3156\u0000\u0000\u0000\u0000"+
-        "\u0000\u6157\u4868\u6151\u0000\u6153\u0000\u0000"+
-        "\u6155\u3F3E\u0000\u0000\u6156\u6154\u3C40\u0000"+
-        "\u0000\u0000\u6150\u6152\u0000\u4942\u0000\u3E49"+
-        "\u0000\u0000\u6159\u0000\u0000\u6158\u0000\u0000"+
-        "\u0000\u0000\u615A\u0000\u3C26\u3A2F\u0000\u0000"+
-        "\u4577\u615B\u0000\u444B\u0000\u0000\u615D\u0000"+
-        "\u0000\u0000\u4E21\u615C\u0000\u0000\u0000\u0000"+
-        "\u0000\u4169\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6162\u0000\u6164\u6165\u4354\u0000\u0000\u0000"+
-        "\u0000\u0000\u6163\u0000\u6160\u0000\u615E\u615F"+
-        "\u0000\u6161\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6168\u0000\u6166\u0000\u6167\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6169"+
-        "\u616B\u616C\u616D\u0000\u616E\u0000\u0000\u616A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6170\u0000\u0000\u0000\u616F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6171\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4E45\u0000\u0000\u0000\u6174\u6172"+
-        "\u6173\u0000\u0000\u0000\u3462\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C7E\u0000\u0000\u0000\u4A4A\u0000"+
-        "\u6176\u0000\u0000\u0000\u6175\u0000\u0000\u0000"+
-        "\u0000\u6177\u6178\u0000\u0000\u0000\u0000\u617C"+
-        "\u6179\u617A\u617B\u0000\u617D\u0000\u0000\u0000"+
-        "\u617E\u0000\u6221\u0000\u0000\u0000\u6222\u0000"+
-        "\u6223\u0000\u482F\u4550\u6224\u4772\u4934\u0000"+
-        "\u6225\u0000\u0000\u6226\u452A\u0000\u3327\u3944"+
-        "\u6227\u0000\u0000\u6228\u0000\u0000\u6229\u0000"+
-        "\u3B29\u0000\u0000\u622B\u0000\u0000\u622A\u0000"+
-        "\u0000\u622C\u622D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4869\u0000"+
-        "\u622E\u0000\u0000\u0000\u622F\u0000\u0000\u7369"+
-        "\u6230\u6231\u6232\u0000\u0000\u0000\u0000\u3B2E"+
-        "\u0000\u0000\u6233\u4756\u0000\u0000\u4B5F\u0000"+
-        "\u314E\u0000\u3157\u0000\u0000\u6234\u0000\u0000"+
-        "\u0000\u0000\u6236\u0000\u0000\u0000\u6235\u4570"+
-        "\u0000\u0000\u0000\u4039\u5D39\u0000\u6237\u4C41"+
-        "\u0000\u6238\u0000\u3446\u4857\u6239\u0000\u623A"+
-        "\u0000\u0000\u623B\u0000\u0000\u0000\u4C5C\u0000"+
-        "\u0000\u0000\u4C55\u0000\u443E\u0000\u0000\u0000"+
-        "\u416A\u0000\u0000\u623D\u0000\u0000\u3D62\u0000"+
-        "\u0000\u3E4A\u0000\u0000\u6240\u0000\u0000\u623F"+
-        "\u623E\u487D\u0000\u3447\u3829\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6246\u0000\u0000\u6243\u3F3F"+
-        "\u4C32\u0000\u0000\u0000\u6242\u6244\u6245\u0000"+
-        "\u0000\u6241\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6247"+
-        "\u6248\u0000\u442F\u0000\u3463\u0000\u0000\u0000"+
-        "\u4365\u0000\u0000\u0000\u0000\u0000\u0000\u6249"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u624A\u624D\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F67\u0000\u4644\u0000\u624E\u4B53\u0000"+
-        "\u624B\u0000\u0000\u624C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6251\u0000\u0000\u0000\u0000\u6250\u624F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6253\u0000\u0000\u6252\u0000"+
-        "\u0000\u6254\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6256\u0000"+
-        "\u6255\u0000\u0000\u0000\u0000\u4A4D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3D56\u4E46\u0000\u0000"+
-        "\u6257\u0000\u0000\u4637\u0000\u0000\u6258\u0000"+
-        "\u0000\u6259\u0000\u625D\u625B\u625C\u0000\u625A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u625E"+
-        "\u0000\u0000\u0000\u0000\u0000\u625F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6260"+
-        "\u0000\u0000\u6261\u4C37\u6262\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C70\u6263\u0000\u434E\u0000\u476A"+
-        "\u0000\u366B\u0000\u0000\u0000\u433B\u6264\u363A"+
-        "\u0000\u0000\u0000\u4050\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6265\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A3D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6266\u0000\u0000\u0000"+
-        "\u0000\u0000\u6267\u0000\u3826\u3A55\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6269\u0000\u0000\u0000\u0000\u4556\u3A56\u354E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4B24\u0000\u474B\u0000\u0000\u0000"+
-        "\u0000\u0000\u4557\u0000\u0000\u0000\u0000\u395C"+
-        "\u0000\u0000\u0000\u0000\u0000\u626B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3E4B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4E32\u3945\u0000\u0000\u3827"+
-        "\u0000\u0000\u4823\u0000\u626D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u626F\u0000\u0000\u0000"+
-        "\u0000\u386B\u0000\u0000\u0000\u0000\u626E\u4476"+
-        "\u0000\u0000\u0000\u0000\u6271\u3337\u626C\u0000"+
-        "\u0000\u486A\u0000\u3130\u0000\u3A6C\u0000\u4F52"+
-        "\u0000\u0000\u6270\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6272\u0000\u0000\u0000\u4A4B"+
-        "\u0000\u4059\u6274\u0000\u0000\u0000\u0000\u6275"+
-        "\u0000\u0000\u0000\u0000\u0000\u6273\u0000\u0000"+
-        "\u0000\u0000\u334E\u0000\u627B\u0000\u627A\u0000"+
-        "\u0000\u3C27\u0000\u0000\u0000\u627C\u6277\u0000"+
-        "\u0000\u0000\u627D\u6278\u0000\u0000\u0000\u0000"+
-        "\u4858\u6276\u0000\u0000\u6279\u0000\u0000\u0000"+
-        "\u0000\u0000\u6322\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6321"+
-        "\u4B61\u0000\u0000\u0000\u627E\u0000\u0000\u306B"+
-        "\u0000\u0000\u0000\u0000\u6324\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6323\u0000\u0000"+
-        "\u0000\u3E4C\u0000\u0000\u0000\u0000\u0000\u6325"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4143\u0000"+
-        "\u0000\u6327\u6326\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6328\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6268\u0000"+
-        "\u0000\u0000\u626A\u632A\u6329\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3C28\u0000\u4E69\u0000\u3C52\u0000"+
-        "\u632B\u3737\u0000\u0000\u0000\u0000\u0000\u3540"+
-        "\u3527\u3B63\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4D34\u0000\u0000\u6331\u0000\u6330\u4144\u632D"+
-        "\u0000\u0000\u632F\u0000\u0000\u3D4B\u3F40\u632E"+
-        "\u632C\u0000\u472A\u0000\u0000\u3E4D\u0000\u0000"+
-        "\u493C\u0000\u0000\u0000\u0000\u3A57\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4578"+
-        "\u0000\u0000\u6332\u0000\u0000\u0000\u0000\u6333"+
-        "\u6349\u3658\u0000\u0000\u4F3D\u4135\u0000\u0000"+
-        "\u0000\u0000\u6334\u0000\u0000\u3252\u4477\u4A21"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6335\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u357A\u6336"+
-        "\u0000\u0000\u6338\u0000\u0000\u0000\u6339\u0000"+
-        "\u4729\u0000\u0000\u633A\u0000\u0000\u0000\u0000"+
-        "\u0000\u633B\u633C\u0000\u0000\u3659\u3253\u4645"+
-        "\u3D28\u3B64\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u633D\u0000\u3D29\u0000\u0000\u0000\u0000"+
-        "\u0000\u324A\u4943\u0000\u0000\u633E\u0000\u0000"+
-        "\u486B\u0000\u0000\u0000\u0000\u0000\u0000\u4145"+
-        "\u0000\u6341\u0000\u6342\u4769\u0000\u3F41\u633F"+
-        "\u0000\u4361\u0000\u0000\u6340\u0000\u0000\u0000"+
-        "\u3E4E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u305C\u0000\u0000\u0000\u0000"+
-        "\u3529\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6343\u0000\u0000\u4478\u0000\u6344\u4047\u0000"+
-        "\u0000\u0000\u0000\u0000\u4C2D\u0000\u0000\u4923"+
-        "\u6345\u6346\u4355\u0000\u4E47\u0000\u0000\u6348"+
-        "\u6347\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3C6F\u0000"+
-        "\u0000\u634A\u3070\u0000\u0000\u0000\u0000\u634D"+
-        "\u0000\u0000\u0000\u634B\u3254\u374E\u634C\u3946"+
-        "\u3972\u0000\u4A66\u634E\u0000\u0000\u4B54\u0000"+
-        "\u0000\u6350\u0000\u0000\u0000\u4051\u314F\u323A"+
-        "\u302C\u0000\u0000\u0000\u0000\u0000\u0000\u634F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6351\u6352\u3E77\u0000\u0000\u0000\u0000"+
-        "\u0000\u6353\u0000\u334F\u0000\u0000\u0000\u0000"+
-        "\u6355\u0000\u0000\u0000\u376A\u0000\u3566\u0000"+
-        "\u0000\u6356\u3675\u0000\u0000\u6357\u0000\u407C"+
-        "\u0000\u464D\u0000\u4060\u3A75\u0000\u0000\u0000"+
-        "\u6358\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4362\u416B\u0000\u635A\u635C\u6359"+
-        "\u635B\u0000\u0000\u0000\u0000\u0000\u0000\u3722"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u635D\u3726\u0000\u0000\u0000\u3567\u4D52"+
-        "\u635F\u0000\u0000\u0000\u0000\u0000\u6360\u0000"+
-        "\u0000\u0000\u312E\u0000\u0000\u0000\u0000\u6363"+
-        "\u0000\u0000\u0000\u3376\u6362\u6361\u0000\u6365"+
-        "\u635E\u0000\u6366\u4E29\u0000\u6367\u0000\u6368"+
-        "\u0000\u0000\u5474\u636A\u0000\u6369\u0000\u0000"+
-        "\u0000\u636B\u636C\u0000\u4E35\u636D\u0000\u706F"+
-        "\u3E4F\u636E\u636F\u3D57\u0000\u4638\u6370\u0000"+
-        "\u0000\u0000\u4328\u0000\u0000\u6371\u0000\u433C"+
-        "\u6372\u0000\u0000\u0000\u0000\u0000\u3625\u0000"+
-        "\u513F\u435D\u3C33\u0000\u0000\u0000\u0000\u3448"+
-        "\u0000\u0000\u6373\u0000\u6422\u0000\u6376\u0000"+
-        "\u3568\u0000\u6375\u6424\u0000\u0000\u0000\u6374"+
-        "\u0000\u3E50\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6378\u6379\u0000\u452B\u0000\u0000\u637A\u0000"+
-        "\u335E\u0000\u0000\u0000\u0000\u3F5A\u4964\u0000"+
-        "\u637C\u0000\u0000\u0000\u4268\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6377\u0000\u637B\u637D\u0000"+
-        "\u0000\u3A7B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6426\u492E\u0000"+
-        "\u4826\u4579\u0000\u365A\u6425\u6423\u0000\u4835"+
-        "\u637E\u435E\u457B\u0000\u457A\u0000\u3A76\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6438\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6428\u0000\u642A"+
-        "\u0000\u0000\u0000\u0000\u642D\u0000\u642E\u0000"+
-        "\u642B\u642C\u0000\u0000\u6429\u6427\u0000\u0000"+
-        "\u0000\u0000\u6421\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4A4F\u3255"+
-        "\u0000\u0000\u0000\u6435\u0000\u6432\u0000\u6437"+
-        "\u0000\u0000\u6436\u0000\u4773\u4C27\u0000\u3B3B"+
-        "\u6430\u6439\u6434\u0000\u6433\u642F\u0000\u6431"+
-        "\u0000\u3449\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u433D\u0000\u0000\u407D\u0000\u0000"+
-        "\u0000\u4822\u0000\u0000\u643E\u0000\u0000\u0000"+
-        "\u4824\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4061\u643B\u0000\u0000\u484F\u0000\u643F\u4A53"+
-        "\u0000\u435B\u0000\u643A\u643C\u0000\u0000\u643D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6440\u0000\u0000"+
-        "\u3C44\u0000\u0000\u0000\u4646\u6445\u6444\u0000"+
-        "\u0000\u6441\u0000\u0000\u0000\u4F36\u0000\u0000"+
-        "\u0000\u0000\u0000\u644A\u0000\u0000\u644E\u644B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6447\u0000\u0000\u0000\u0000\u0000\u0000\u6448"+
-        "\u0000\u0000\u0000\u0000\u0000\u644D\u0000\u0000"+
-        "\u0000\u6442\u5255\u6449\u6443\u0000\u0000\u644C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6452"+
-        "\u0000\u344A\u0000\u644F\u0000\u0000\u0000\u6450"+
-        "\u0000\u0000\u6451\u6454\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6453"+
-        "\u4876\u0000\u0000\u0000\u0000\u6455\u4E7C\u4A6D"+
-        "\u645A\u0000\u0000\u6457\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6456\u4052\u0000\u6459"+
-        "\u645B\u0000\u0000\u0000\u6458\u0000\u645F\u0000"+
-        "\u645C\u0000\u0000\u0000\u0000\u0000\u0000\u645D"+
-        "\u6446\u0000\u0000\u0000\u645E\u6460\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6461\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A46\u0000\u6462\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4C62\u0000"+
-        "\u0000\u364E\u3729\u6463\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A34\u0000\u3F68\u0000\u4C30\u0000\u0000"+
-        "\u6464\u0000\u4E33\u0000\u0000\u4774\u0000\u4146"+
-        "\u4734\u0000\u0000\u3D4D\u0000\u0000\u0000\u3040"+
-        "\u0000\u6469\u6467\u0000\u6465\u3421\u0000\u3E51"+
-        "\u646A\u0000\u0000\u6468\u0000\u6466\u646E\u0000"+
-        "\u0000\u646D\u646C\u646B\u0000\u0000\u0000\u0000"+
-        "\u0000\u646F\u0000\u0000\u0000\u6470\u403A\u0000"+
-        "\u6471\u0000\u6473\u0000\u0000\u6472\u0000\u0000"+
-        "\u0000\u0000\u3852\u0000\u0000\u0000\u4138\u0000"+
-        "\u0000\u0000\u6475\u0000\u0000\u0000\u457C\u0000"+
-        "\u6474\u0000\u0000\u0000\u6476\u0000\u4A35\u416C"+
-        "\u3947\u0000\u6477\u0000\u0000\u0000\u0000\u4E48"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6479"+
-        "\u0000\u0000\u647A\u0000\u647B\u0000\u647C\u0000"+
-        "\u3B65\u0000\u647D\u374F\u0000\u0000\u356A\u0000"+
-        "\u352A\u0000\u6521\u0000\u4C73\u3948\u647E\u0000"+
-        "\u0000\u0000\u6524\u4C66\u0000\u473C\u0000\u0000"+
-        "\u4933\u0000\u0000\u0000\u3D63\u6523\u0000\u3C53"+
-        "\u3949\u3B66\u3569\u4A36\u6522\u0000\u0000\u0000"+
-        "\u4147\u4B42\u3A77\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B67\u445D\u0000\u6527\u4E5F"+
-        "\u3A59\u0000\u6528\u3F42\u0000\u652A\u0000\u0000"+
-        "\u0000\u3E52\u3A30\u0000\u0000\u0000\u0000\u6529"+
-        "\u0000\u0000\u3D2A\u383E\u4148\u6525\u652B\u0000"+
-        "\u0000\u0000\u0000\u6526\u3750\u0000\u652E\u6532"+
-        "\u376B\u0000\u0000\u0000\u0000\u0000\u652D\u0000"+
-        "\u0000\u0000\u0000\u6536\u0000\u0000\u394A\u0000"+
-        "\u0000\u4D6D\u303C\u6533\u0000\u0000\u356B\u0000"+
-        "\u6530\u0000\u0000\u0000\u0000\u0000\u6531\u0000"+
-        "\u0000\u457D\u652F\u652C\u0000\u3328\u4064\u0000"+
-        "\u0000\u3828\u0000\u0000\u0000\u6538\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6535\u0000\u0000\u0000\u0000\u0000\u6537"+
-        "\u0000\u0000\u0000\u6534\u0000\u0000\u0000\u0000"+
-        "\u0000\u3751\u4233\u6539\u416E\u0000\u0000\u6546"+
-        "\u0000\u0000\u6542\u653C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6540\u3C7A\u305D\u653B\u6543"+
-        "\u6547\u394B\u4C56\u0000\u4456\u653D\u0000\u0000"+
-        "\u6545\u0000\u653A\u433E\u0000\u653F\u303D\u4C4A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u653E"+
-        "\u0000\u0000\u365B\u486C\u0000\u0000\u0000\u416D"+
-        "\u0000\u4E50\u3D6F\u0000\u0000\u656E\u0000\u0000"+
-        "\u6548\u0000\u407E\u0000\u6544\u6549\u654B\u0000"+
-        "\u4479\u654E\u0000\u0000\u654A\u0000\u0000\u0000"+
-        "\u4A54\u344B\u0000\u0000\u4C4B\u0000\u0000\u305E"+
-        "\u0000\u0000\u654D\u0000\u4E7D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u654C\u0000\u0000\u0000\u0000"+
-        "\u0000\u316F\u0000\u0000\u466C\u654F\u0000\u0000"+
-        "\u0000\u6556\u6550\u6557\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6553\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u477B\u0000\u0000\u3C4A\u6555"+
-        "\u0000\u6552\u6558\u6551\u0000\u0000\u3D44\u0000"+
-        "\u0000\u0000\u0000\u4B25\u0000\u0000\u3D4C\u0000"+
-        "\u0000\u6554\u6560\u0000\u0000\u655C\u0000\u655F"+
-        "\u0000\u655D\u6561\u655B\u0000\u6541\u4053\u0000"+
-        "\u0000\u484B\u0000\u655E\u0000\u0000\u6559\u0000"+
-        "\u0000\u0000\u4121\u3752\u0000\u3D2B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F25\u4136\u6564\u0000"+
-        "\u0000\u6566\u6567\u0000\u0000\u6563\u6565\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u655A\u6562"+
-        "\u0000\u656A\u6569\u0000\u0000\u4B7A\u0000\u0000"+
-        "\u372B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6568\u0000\u656C\u656B\u656F\u0000\u6571"+
-        "\u0000\u0000\u3B3C\u656D\u0000\u0000\u0000\u0000"+
-        "\u6572\u6573\u0000\u0000\u6574\u0000\u657A\u453B"+
-        "\u6576\u0000\u6575\u6577\u6578\u0000\u6579\u0000"+
-        "\u0000\u0000\u0000\u657B\u657C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u344C\u0000"+
-        "\u657D\u0000\u657E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6621\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6622\u6623\u6624\u0000"+
-        "\u6625\u6626\u0000\u0000\u6628\u6627\u0000\u0000"+
-        "\u6629\u0000\u0000\u0000\u0000\u0000\u0000\u662A"+
-        "\u662B\u0000\u0000\u0000\u0000\u0000\u0000\u662E"+
-        "\u662C\u662D\u3A61\u3753\u0000\u0000\u4356\u0000"+
-        "\u4833\u0000\u3D70\u0000\u0000\u474D\u0000\u486D"+
-        "\u662F\u586D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6630\u6632\u0000\u4D65\u6631\u6634"+
-        "\u6633\u0000\u4D53\u0000\u6635\u0000\u487E\u0000"+
-        "\u0000\u0000\u0000\u0000\u6636\u0000\u0000\u0000"+
-        "\u0000\u0000\u6639\u0000\u0000\u6638\u6637\u0000"+
-        "\u0000\u0000\u0000\u663A\u3732\u0000\u0000\u0000"+
-        "\u4122\u3541\u0000\u0000\u0000\u0000\u663E\u663B"+
-        "\u0000\u0000\u663C\u0000\u0000\u0000\u663F\u0000"+
-        "\u6640\u663D\u0000\u0000\u0000\u3129\u0000\u0000"+
-        "\u0000\u3227\u0000\u0000\u0000\u6642\u6643\u0000"+
-        "\u0000\u0000\u6644\u0000\u4D62\u0000\u0000\u0000"+
-        "\u0000\u0000\u3D2C\u0000\u6646\u6645\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3F69\u6647\u0000\u0000\u0000\u0000\u6648\u0000"+
-        "\u0000\u6649\u0000\u3465\u0000\u0000\u0000\u0000"+
-        "\u344D\u0000\u0000\u664A\u0000\u0000\u0000\u0000"+
-        "\u0000\u664B\u0000\u4B5D\u4D63\u0000\u0000\u0000";
-
-    private final static String innerIndex4=
-        "\u4D54\u4F37\u0000\u394D\u664E\u3C54\u664D\u0000"+
-        "\u0000\u0000\u0000\u664F\u3C29\u0000\u0000\u0000"+
-        "\u4251\u0000\u6650\u0000\u0000\u394C\u0000\u4C57"+
-        "\u6651\u6652\u0000\u0000\u6653\u0000\u0000\u0000"+
-        "\u0000\u6654\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6655\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3C2A\u0000\u0000\u4C6D\u0000"+
-        "\u0000\u0000\u0000\u6657\u0000\u433F\u0000\u6656"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6659\u0000"+
-        "\u0000\u0000\u6658\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u665A\u0000\u0000\u0000\u403B\u0000"+
-        "\u665B\u0000\u665C\u0000\u0000\u0000\u4A39\u665D"+
-        "\u0000\u416F\u665E\u0000\u0000\u0000\u0000\u0000"+
-        "\u665F\u0000\u0000\u0000\u0000\u0000\u0000\u4E7E"+
-        "\u6662\u0000\u6661\u6660\u4430\u0000\u6663\u3F26"+
-        "\u0000\u6664\u0000\u0000\u0000\u6665\u4F38\u6666"+
-        "\u0000\u0000\u0000\u0000\u6667\u6669\u6668\u4825"+
-        "\u0000\u4679\u0000\u4F3E\u4829\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u666B\u0000\u0000\u3E53\u0000"+
-        "\u492A\u0000\u666C\u666A\u0000\u344E\u0000\u0000"+
-        "\u0000\u3854\u3B68\u0000\u0000\u486E\u0000\u0000"+
-        "\u0000\u382A\u4B43\u0000\u666F\u666D\u0000\u394E"+
-        "\u0000\u394F\u3069\u0000\u3A68\u0000\u0000\u0000"+
-        "\u0000\u0000\u4759\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u305F\u6674\u0000\u4340\u0000"+
-        "\u0000\u0000\u0000\u0000\u4758\u0000\u425B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6676\u0000"+
-        "\u0000\u6672\u6675\u6670\u0000\u6673\u4B26\u0000"+
-        "\u0000\u3855\u0000\u0000\u307D\u6671\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6678"+
-        "\u0000\u6679\u0000\u0000\u4639\u0000\u0000\u0000"+
-        "\u363B\u0000\u0000\u0000\u6726\u473D\u0000\u0000"+
-        "\u0000\u0000\u3B69\u0000\u0000\u363C\u4048\u4F46"+
-        "\u4C2E\u6677\u4054\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3553\u667A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u667C\u0000\u0000\u0000\u0000"+
-        "\u0000\u667B\u0000\u0000\u0000\u0000\u0000\u667D"+
-        "\u0000\u4326\u0000\u473E\u0000\u0000\u0000\u0000"+
-        "\u0000\u4431\u0000\u0000\u0000\u0000\u6723\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6722\u0000"+
-        "\u0000\u0000\u0000\u667E\u0000\u0000\u3F55\u0000"+
-        "\u4965\u6725\u0000\u6724\u3950\u4F53\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6735"+
-        "\u0000\u0000\u0000\u0000\u0000\u6729\u672A\u0000"+
-        "\u0000\u0000\u0000\u3C70\u0000\u0000\u6728\u0000"+
-        "\u3978\u6727\u0000\u0000\u672B\u0000\u0000\u0000"+
-        "\u4432\u4A22\u4123\u0000\u0000\u0000\u0000\u425C"+
-        "\u672F\u0000\u6730\u672C\u0000\u0000\u0000\u0000"+
-        "\u672D\u0000\u672E\u0000\u0000\u0000\u0000\u3951"+
-        "\u0000\u0000\u0000\u6736\u0000\u6732\u0000\u0000"+
-        "\u0000\u0000\u4966\u0000\u4B6C\u4928\u0000\u0000"+
-        "\u6731\u0000\u0000\u6734\u6733\u0000\u0000\u0000"+
-        "\u4B44\u6737\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6738\u0000\u0000\u4137\u0000\u6739\u0000\u0000"+
-        "\u673B\u0000\u673F\u0000\u0000\u673C\u673A\u473F"+
-        "\u673D\u0000\u673E\u0000\u0000\u0000\u3232\u0000"+
-        "\u6745\u6740\u0000\u0000\u0000\u6741\u0000\u0000"+
-        "\u0000\u6742\u0000\u4221\u0000\u0000\u0000\u0000"+
-        "\u6744\u6743\u6746\u0000\u0000\u0000\u0000\u6747"+
-        "\u6748\u0000\u0000\u3F43\u0000\u3269\u0000\u6749"+
-        "\u4E57\u0000\u3C2B\u0000\u0000\u3D2D\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B6A\u4357\u0000\u0000\u0000"+
-        "\u0000\u0000\u674A\u674B\u3131\u0000\u674C\u0000"+
-        "\u0000\u674D\u674E\u0000\u0000\u674F\u0000\u6750"+
-        "\u363D\u5A2A\u6751\u0000\u4065\u6752\u3C4B\u0000"+
-        "\u6753\u0000\u5030\u0000\u0000\u0000\u6754\u4A5E"+
-        "\u345C\u0000\u0000\u4124\u3D58\u0000\u4971\u3D2E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6755\u3952\u6756\u484C\u0000\u6764\u0000"+
-        "\u0000\u0000\u0000\u6758\u0000\u4249\u4775\u383F"+
-        "\u6757\u4125\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6759\u0000\u0000\u0000\u0000\u0000\u0000\u447A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u675B\u675A\u675D\u0000\u0000\u675C\u0000\u675E"+
-        "\u0000\u0000\u6760\u0000\u675F\u0000\u344F\u0000"+
-        "\u6761\u0000\u6762\u6763\u0000\u0000\u3A31\u4E49"+
-        "\u0000\u6765\u3F27\u0000\u0000\u0000\u3170\u6766"+
-        "\u6767\u0000\u0000\u0000\u0000\u0000\u6768\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3072\u0000\u6769\u0000\u0000"+
-        "\u0000\u0000\u676A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4967\u0000\u0000\u0000\u3C47\u0000\u676C"+
-        "\u0000\u0000\u0000\u0000\u0000\u3329\u3032\u0000"+
-        "\u0000\u0000\u0000\u676B\u676E\u474E\u0000\u3F44"+
-        "\u0000\u3256\u0000\u4B27\u0000\u0000\u0000\u0000"+
-        "\u375D\u365C\u0000\u676D\u0000\u326A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3423\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3171\u6772\u4E6A\u425D\u0000\u0000\u4944"+
-        "\u0000\u677E\u0000\u3257\u677C\u0000\u677A\u6771"+
-        "\u0000\u676F\u0000\u6770\u0000\u3C63\u366C\u4377"+
-        "\u0000\u0000\u0000\u4651\u0000\u0000\u0000\u0000"+
-        "\u0000\u3151\u0000\u6774\u6773\u0000\u0000\u0000"+
-        "\u0000\u6779\u6775\u6778\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C50\u6777\u3258\u337D\u677B\u0000"+
-        "\u0000\u677D\u0000\u0000\u0000\u0000\u3754\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6823\u682C"+
-        "\u682D\u0000\u0000\u0000\u302B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6834\u0000\u0000\u0000\u0000"+
-        "\u3071\u0000\u0000\u682B\u0000\u0000\u0000\u682A"+
-        "\u0000\u6825\u6824\u0000\u6822\u6821\u4363\u0000"+
-        "\u427B\u6827\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6826\u0000\u0000\u0000\u0000\u6829\u0000\u0000"+
-        "\u0000\u4170\u3755\u0000\u0000\u0000\u0000\u3141"+
-        "\u6828\u0000\u3953\u0000\u0000\u0000\u0000\u0000"+
-        "\u4171\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u683A\u0000\u683B\u0000\u3259"+
-        "\u0000\u0000\u0000\u322E\u6838\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u682E\u0000\u6836"+
-        "\u0000\u683D\u6837\u0000\u0000\u0000\u6835\u0000"+
-        "\u0000\u0000\u0000\u6776\u0000\u0000\u6833\u0000"+
-        "\u0000\u0000\u682F\u0000\u0000\u0000\u3450\u6831"+
-        "\u683C\u0000\u6832\u0000\u0000\u0000\u0000\u0000"+
-        "\u683E\u0000\u6830\u477C\u0000\u0000\u0000\u0000"+
-        "\u0000\u4D69\u0000\u0000\u0000\u6839\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u684F\u0000\u0000"+
-        "\u0000\u6847\u0000\u0000\u0000\u3F7B\u0000\u0000"+
-        "\u0000\u0000\u3546\u0000\u365D\u0000\u6842\u0000"+
-        "\u0000\u0000\u0000\u325B\u0000\u0000\u3E54\u0000"+
-        "\u6845\u0000\u0000\u0000\u3A5A\u0000\u0000\u4551"+
-        "\u684A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A6E\u0000\u6841\u0000\u0000\u0000\u325A"+
-        "\u3856\u4929\u684B\u0000\u683F\u0000\u0000\u6848"+
-        "\u0000\u0000\u0000\u6852\u0000\u6843\u0000\u0000"+
-        "\u0000\u0000\u0000\u6844\u463A\u0000\u0000\u6849"+
-        "\u0000\u0000\u0000\u6846\u4B28\u684C\u3060\u0000"+
-        "\u0000\u0000\u0000\u6840\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u684E\u0000\u684D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u476B\u6854\u0000\u685F\u0000\u0000\u0000"+
-        "\u0000\u337E\u0000\u0000\u0000\u6862\u0000\u0000"+
-        "\u6850\u0000\u0000\u0000\u6855\u4D6E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u685E\u0000"+
-        "\u0000\u4D55\u0000\u0000\u0000\u0000\u4E2A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4378"+
-        "\u0000\u0000\u0000\u336B\u0000\u0000\u0000\u0000"+
-        "\u0000\u4972\u6864\u4621\u0000\u0000\u3031\u0000"+
-        "\u0000\u685D\u0000\u6859\u4172\u6853\u685B\u6860"+
-        "\u0000\u472C\u0000\u0000\u0000\u302A\u0000\u6858"+
-        "\u0000\u6861\u4978\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u685C\u0000\u6857\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3E55\u0000\u0000\u0000\u0000"+
-        "\u3D2F\u0000\u0000\u0000\u3C2C\u0000\u0000\u0000"+
-        "\u0000\u4C58\u0000\u0000\u4947\u0000\u0000\u6867"+
-        "\u0000\u6870\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u685A\u0000\u0000"+
-        "\u0000\u0000\u3377\u0000\u0000\u0000\u0000\u0000"+
-        "\u3E78\u6865\u0000\u686A\u4173\u0000\u0000\u6866"+
-        "\u0000\u686D\u0000\u0000\u435F\u0000\u686E\u0000"+
-        "\u0000\u4D56\u6863\u3338\u0000\u6869\u0000\u0000"+
-        "\u686C\u4C2C\u0000\u0000\u0000\u0000\u686F\u0000"+
-        "\u0000\u6868\u686B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4B29\u0000\u4F21\u0000"+
-        "\u0000\u0000\u0000\u0000\u6873\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u687A\u0000\u0000\u6872"+
-        "\u3C43\u0000\u0000\u0000\u0000\u0000\u6851\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A4E\u0000\u4C22\u6879\u6878\u0000\u6874"+
-        "\u6875\u0000\u3136\u0000\u0000\u0000\u0000\u6877"+
-        "\u0000\u6871\u0000\u0000\u0000\u0000\u4455\u0000"+
-        "\u0000\u0000\u0000\u0000\u6876\u307E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4222\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4A43\u0000\u0000"+
-        "\u687B\u6921\u0000\u4859\u0000\u0000\u0000\u0000"+
-        "\u687E\u3E56\u3C49\u6923\u0000\u0000\u363E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6924\u0000\u4979"+
-        "\u687D\u0000\u6856\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u687C\u0000\u0000\u0000\u0000"+
-        "\u4F4F\u4622\u4973\u0000\u0000\u692B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6931"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6932\u0000"+
-        "\u6925\u0000\u0000\u0000\u4776\u0000\u0000\u692F"+
-        "\u6927\u0000\u6929\u0000\u0000\u0000\u0000\u0000"+
-        "\u6933\u6928\u0000\u0000\u692C\u0000\u0000\u3172"+
-        "\u0000\u4665\u0000\u692D\u6930\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6926\u0000\u4126\u0000"+
-        "\u692A\u3B27\u3F45\u3730\u4C74\u0000\u4C79\u3D72"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6937\u6935\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4F4E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6934\u0000\u0000\u0000\u4D75\u0000\u6936"+
-        "\u6938\u0000\u0000\u0000\u0000\u6939\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u693C\u693A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4623\u693B\u0000\u0000"+
-        "\u0000\u484D\u692E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3D73"+
-        "\u0000\u693D\u6942\u4174\u0000\u0000\u6941\u0000"+
-        "\u0000\u0000\u6922\u0000\u0000\u0000\u6943\u4149"+
-        "\u0000\u0000\u693E\u6940\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u693F\u0000\u0000\u5D31\u5D22"+
-        "\u0000\u0000\u6945\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6944\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4D76\u0000\u623C"+
-        "\u6946\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6947"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6948\u3857\u0000"+
-        "\u3554\u0000\u0000\u0000\u694A\u515D\u0000\u0000"+
-        "\u0000\u0000\u3575\u0000\u4E3A\u0000\u3673\u694B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u694C"+
-        "\u0000\u0000\u0000\u436E\u0000\u0000\u0000\u0000"+
-        "\u0000\u694D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u467A\u0000\u303A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3263\u6952\u6953\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u694E\u0000\u3B3D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u694F\u4742\u0000\u0000\u0000"+
-        "\u0000\u6950\u6951\u695B\u0000\u0000\u0000\u6955"+
-        "\u6958\u0000\u0000\u0000\u0000\u0000\u6954\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6956\u0000\u6957\u3C58"+
-        "\u0000\u6959\u0000\u4341\u0000\u3756\u3342\u0000"+
-        "\u0000\u0000\u0000\u0000\u695C\u0000\u0000\u0000"+
-        "\u0000\u333F\u0000\u6961\u0000\u0000\u695D\u6960"+
-        "\u0000\u0000\u0000\u0000\u483A\u0000\u0000\u0000"+
-        "\u0000\u695E\u0000\u0000\u695F\u4948\u485A\u6962"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u427D\u696C\u0000\u6968\u0000\u0000\u326B\u0000"+
-        "\u6966\u0000\u4B2A\u6967\u0000\u0000\u6964\u0000"+
-        "\u6965\u696A\u696D\u0000\u0000\u696B\u0000\u0000"+
-        "\u0000\u6969\u6963\u0000\u0000\u0000\u0000\u0000"+
-        "\u4358\u0000\u6974\u0000\u4C2A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6972\u0000\u0000"+
-        "\u0000\u6973\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u696E\u0000\u0000\u6970"+
-        "\u0000\u0000\u0000\u6971\u0000\u0000\u0000\u696F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4066\u0000\u4F39\u6978\u0000\u6979\u0000"+
-        "\u0000\u0000\u0000\u6A21\u0000\u3F2A\u0000\u697B"+
-        "\u0000\u697E\u0000\u0000\u0000\u0000\u0000\u6976"+
-        "\u6975\u0000\u0000\u6A22\u0000\u0000\u325C\u0000"+
-        "\u697C\u0000\u6A23\u0000\u0000\u0000\u697D\u0000"+
-        "\u0000\u0000\u0000\u0000\u697A\u0000\u4433\u0000"+
-        "\u6977\u0000\u0000\u0000\u0000\u0000\u0000\u4768"+
-        "\u0000\u0000\u6A27\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4D3B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6A26"+
-        "\u0000\u0000\u6A25\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6A2E\u0000\u0000\u0000\u6A28"+
-        "\u0000\u0000\u0000\u6A30\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D66\u6A33\u0000\u6A2A\u0000\u0000"+
-        "\u6A2B\u0000\u0000\u0000\u6A2F\u0000\u6A32\u6A31"+
-        "\u0000\u0000\u0000\u6A29\u0000\u0000\u0000\u0000"+
-        "\u6A2C\u0000\u6A3D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6A36\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6A34"+
-        "\u0000\u0000\u6A35\u0000\u0000\u0000\u6A3A\u6A3B"+
-        "\u0000\u332A\u0000\u3542\u0000\u0000\u6A39\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A24\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A38\u6A3C\u6A37"+
-        "\u0000\u6A3E\u0000\u0000\u0000\u6A40\u6A3F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6A42\u6A41\u695A\u0000\u0000\u0000\u6A46"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6A43\u0000\u0000\u0000\u0000\u6A44\u0000"+
-        "\u0000\u6A45\u0000\u6A47\u0000\u0000\u0000\u0000"+
-        "\u376C\u0000\u6A49\u0000\u6A48\u0000\u3D30\u0000"+
-        "\u0000\u0000\u0000\u0000\u3954\u5E27\u0000\u0000"+
-        "\u0000\u0000\u6A4A\u3D51\u0000\u0000\u0000\u3339"+
-        "\u0000\u6A4B\u0000\u3152\u0000\u3E57\u6A4C\u0000"+
-        "\u0000\u3955\u6A4D\u3061\u0000\u0000\u0000\u0000"+
-        "\u493D\u0000\u0000\u6A4E\u0000\u0000\u0000\u0000"+
-        "\u3F6A\u0000\u6A55\u0000\u0000\u6A52\u0000\u436F"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A53\u6A50\u365E"+
-        "\u0000\u6A4F\u6A56\u0000\u0000\u0000\u0000\u0000"+
-        "\u3736\u0000\u0000\u425E\u0000\u6A5C\u0000\u0000"+
-        "\u0000\u0000\u6A58\u0000\u0000\u0000\u4235\u6A57"+
-        "\u0000\u6A5A\u0000\u0000\u0000\u0000\u6A51\u0000"+
-        "\u0000\u0000\u6A5B\u0000\u6A5D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u486F\u0000\u0000\u6A59\u0000"+
-        "\u6A5E\u6A60\u0000\u0000\u3853\u6A54\u0000\u3041"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6A5F"+
-        "\u0000\u3A5B\u4E76\u6A61\u6A62\u4175\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4E22"+
-        "\u0000\u0000\u0000\u0000\u6A63\u4D35\u0000\u0000"+
-        "\u6A64\u6A65\u0000\u0000\u4A64\u6A66\u0000\u3A40"+
-        "\u0000\u4E23\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6A6B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6A6C\u3E58\u6A6A\u0000\u0000\u0000"+
-        "\u4D67\u6A67\u0000\u0000\u6A69\u403D\u3F7E\u0000"+
-        "\u0000\u0000\u6A68\u0000\u6A6D\u0000\u0000\u4A23"+
-        "\u0000\u0000\u6A6F\u0000\u6A6E\u0000\u0000\u0000"+
-        "\u336C\u0000\u4B2B\u6A70\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A7C\u6A72\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A73\u0000\u0000"+
-        "\u0000\u0000\u6A74\u6A75\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6A79\u0000"+
-        "\u6A7A\u0000\u0000\u6A78\u0000\u0000\u0000\u0000"+
-        "\u0000\u6A76\u0000\u6A71\u6A77\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6A7B\u7037\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3228\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6A7E\u365F"+
-        "\u6A7D\u0000\u0000\u0000\u6B22\u0000\u6B21\u0000"+
-        "\u0000\u0000\u6B24\u0000\u0000\u6B23\u0000\u6B25"+
-        "\u0000\u0000\u3D31\u0000\u6B26\u0000\u0000\u6B27"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6B28\u403E"+
-        "\u0000\u4D57\u0000\u6B29\u0000\u0000\u4A24\u4746"+
-        "\u6B2A\u0000\u6B2B\u382B\u0000\u0000\u0000\u352C"+
-        "\u0000\u0000\u0000\u6B2C\u0000\u0000\u3B6B\u4741"+
-        "\u6B2D\u0000\u3350\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6B2E\u0000\u0000\u0000\u0000\u6B30\u4D77"+
-        "\u0000\u6B2F\u3F46\u0000\u6B31\u0000\u0000\u6B32"+
-        "\u0000\u0000\u6B33\u3451\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B34\u0000\u0000\u6B35\u0000\u6B36"+
-        "\u6B37\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3351\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B38\u0000\u6B39\u6B3A\u0000\u0000"+
-        "\u0000\u0000\u0000\u3272\u0000\u0000\u3F28\u6B3B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6B3C\u0000\u0000\u0000"+
-        "\u6B3D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3840\u0000\u447B\u6B3E\u0000\u0000\u0000\u0000"+
-        "\u3757\u0000\u3F56\u0000\u6B41\u0000\u4624\u0000"+
-        "\u6B40\u0000\u0000\u3731\u0000\u0000\u6B3F\u4277"+
-        "\u352D\u0000\u0000\u6B42\u0000\u6B43\u0000\u3E59"+
-        "\u0000\u0000\u0000\u376D\u0000\u6B44\u0000\u0000"+
-        "\u0000\u0000\u4B2C\u0000\u0000\u405F\u0000\u0000"+
-        "\u0000\u3576\u0000\u4C75\u414A\u0000\u6B45\u0000"+
-        "\u0000\u0000\u3F47\u4370\u3E5A\u0000\u0000\u0000"+
-        "\u0000\u6B46\u0000\u0000\u0000\u0000\u6B49\u0000"+
-        "\u6B4A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3A3E\u4242\u6B48\u0000\u3E5B\u493E\u0000\u0000"+
-        "\u0000\u0000\u0000\u6B47\u0000\u0000\u3B6C\u0000"+
-        "\u3153\u0000\u6B4E\u3758\u0000\u0000\u3B6E\u0000"+
-        "\u0000\u3B6D\u0000\u4F4D\u6B4D\u6B4C\u4127\u0000"+
-        "\u354D\u4F43\u333A\u3E5C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6B4B\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B50\u0000\u6B51\u6B4F\u0000\u3858"+
-        "\u0000\u4D40\u0000\u0000\u3B6F\u4727\u0000\u0000"+
-        "\u0000\u6B54\u0000\u4040\u0000\u4342\u0000\u0000"+
-        "\u4D36\u0000\u6B57\u0000\u0000\u0000\u386C\u0000"+
-        "\u403F\u6B53\u0000\u6B58\u386D\u6B55\u6B56\u0000"+
-        "\u6B52\u0000\u0000\u0000\u4062\u4649\u0000\u0000"+
-        "\u432F\u0000\u325D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4870\u0000\u0000\u3543\u0000\u0000\u4434"+
-        "\u0000\u0000\u6B5B\u0000\u6B59\u0000\u0000\u434C"+
-        "\u0000\u0000\u0000\u4041\u3452\u6B5A\u0000\u3F5B"+
-        "\u0000\u0000\u4E4A\u0000\u0000\u0000\u4F40\u0000"+
-        "\u0000\u0000\u6B5C\u6B67\u4435\u0000\u6B66\u0000"+
-        "\u6B63\u6B6B\u6B64\u0000\u6B60\u0000\u447C\u6B5F"+
-        "\u0000\u0000\u0000\u6B5D\u0000\u4D21\u3B70\u0000"+
-        "\u0000\u6B61\u0000\u6B5E\u0000\u0000\u0000\u6B65"+
-        "\u3D74\u0000\u3841\u0000\u0000\u0000\u427A\u0000"+
-        "\u4B45\u315A\u3062\u0000\u4625\u0000\u0000\u6B69"+
-        "\u0000\u0000\u0000\u0000\u6B68\u0000\u4666\u0000"+
-        "\u6B6D\u0000\u0000\u0000\u6B62\u0000\u6B6C\u6B6E"+
-        "\u0000\u382C\u6B6A\u3956\u0000\u3C55\u0000\u0000"+
-        "\u6B6F\u4D58\u0000\u0000\u0000\u0000\u6B72\u0000"+
-        "\u6B75\u0000\u0000\u6B73\u4935\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6B70\u0000\u0000\u0000\u0000"+
-        "\u0000\u3660\u0000\u0000\u0000\u0000\u6B74\u0000"+
-        "\u0000\u6B76\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6B7A\u0000\u0000\u6B77\u0000\u6B79\u6B78"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6B7B\u0000"+
-        "\u3C31\u0000\u6B7D\u6B7C\u4968\u0000\u0000\u6C21"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3759\u0000"+
-        "\u0000\u0000\u0000\u6B7E\u6C22\u0000\u0000\u6C23"+
-        "\u3544\u6641\u3E79\u0000\u6C24\u0000\u0000\u386E"+
-        "\u0000\u0000\u0000\u0000\u0000\u6C25\u0000\u0000"+
-        "\u6C26\u0000\u0000\u3B3E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5A4E\u0000\u6C27\u0000\u6C28\u0000"+
-        "\u3D32\u0000\u6C29\u6C2A\u0000\u0000\u6C2B\u0000"+
-        "\u0000\u6C2C\u6C2D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u432B"+
-        "\u0000\u0000\u6C2E\u0000\u0000\u0000\u0000\u6C30"+
-        "\u0000\u6C2F\u0000\u0000\u0000\u0000\u4626\u0000"+
-        "\u6C31\u0000\u4B2D\u0000\u6C32\u0000\u6C33\u0000"+
-        "\u6C34\u0000\u0000\u0000\u0000\u6C35\u0000\u0000"+
-        "\u0000\u0000\u465A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3E5D\u6C36\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u396B\u502E\u6C37\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6C38\u493F\u6C39\u0000\u6C41\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C3A\u0000\u0000\u6C3C\u0000\u0000"+
-        "\u0000\u6C3B\u6C3D\u0000\u4B46\u6C3E\u6C3F\u0000"+
-        "\u0000\u0000\u0000\u0000\u6C40\u0000\u0000\u0000"+
-        "\u6C42\u0000\u0000\u0000\u0000\u332D\u4467\u0000"+
-        "\u4969\u3A62\u3957\u0000\u0000\u0000\u0000\u494F"+
-        "\u325F\u484E\u6C45\u3453\u4055\u6C44\u6C49\u4379"+
-        "\u4C63\u0000\u6C47\u6C48\u352E\u0000\u6C4A\u4763"+
-        "\u425F\u0000\u0000\u4871\u453D\u6C46\u0000\u4B47"+
-        "\u326C\u6C4C\u4F28\u4442\u4F45\u0000\u0000\u3B71"+
-        "\u6C4B\u0000\u4231\u0000\u0000\u6C5C\u4128\u0000"+
-        "\u0000\u4678\u0000\u4950\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C4F\u3B3F\u3B72\u0000\u3E5E\u0000"+
-        "\u4765\u0000\u382D\u6C4E\u6C4D\u0000\u496A\u0000"+
-        "\u0000\u0000\u3C41\u0000\u0000\u4552\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C51\u6C52\u3958\u6C50\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6C53\u6C54\u0000\u6C56"+
-        "\u4223\u0000\u6C55\u3466\u0000\u6C58\u0000\u6C57"+
-        "\u6C59\u0000\u0000\u6C5B\u6C5D\u0000\u6C5E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4056\u0000\u3C4F\u6C5F"+
-        "\u0000\u0000\u0000\u3352\u0000\u6C60\u0000\u0000"+
-        "\u4176\u6C61\u0000\u6C62\u496B\u0000\u0000\u352F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6C63\u0000\u0000\u0000\u4436\u0000\u0000"+
-        "\u0000\u0000\u315B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6C64\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3C71\u0000\u0000\u0000\u0000"+
-        "\u3F76\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u422D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C67\u0000\u0000\u0000\u6C66\u0000"+
-        "\u0000\u0000\u6C65\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6C6D\u6C6B\u0000\u0000\u6C68"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6C6A\u0000"+
-        "\u0000\u0000\u6C69\u6C6C\u0000\u3577\u0000\u6C70"+
-        "\u0000\u4057\u0000\u6C71\u0000\u0000\u0000\u0000"+
-        "\u3859\u0000\u6C6E\u6C6F\u0000\u0000\u0000\u4F29"+
-        "\u0000\u0000\u0000\u4437\u0000\u4129\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6C72\u0000\u0000\u6C75"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6C73\u6C74\u4D59\u0000\u0000\u0000\u0000\u4627"+
-        "\u6C78\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6C76\u6C77\u6C79"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D29\u0000\u0000\u0000\u0000\u0000"+
-        "\u6C7C\u0000\u0000\u0000\u6C7D\u6C7B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C7A\u0000\u447D\u0000\u0000\u6D21"+
-        "\u6D25\u6D22\u6C7E\u0000\u6D23\u0000\u0000\u0000"+
-        "\u6D24\u0000\u0000\u0000\u0000\u6D2B\u0000\u0000"+
-        "\u0000\u6D26\u0000\u0000\u0000\u0000\u0000\u4058"+
-        "\u6D28\u0000\u0000\u6D2A\u6D27\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D2D\u0000\u3D33\u0000\u6D2C\u0000"+
-        "\u0000\u0000\u0000\u0000\u6D2E\u0000\u0000\u0000"+
-        "\u0000\u6D2F\u0000\u0000\u6D32\u6D31\u0000\u6D30"+
-        "\u0000\u0000\u6D34\u6D33\u0000\u4C76\u0000\u0000"+
-        "\u0000\u6D36\u0000\u6D35\u6D37\u0000\u0000\u0000"+
-        "\u0000\u6D38\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6D3A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D39\u3F48\u6D3B\u0000\u0000\u366D"+
-        "\u6D3C\u6D3E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6D3F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6D40\u6D3D\u0000"+
-        "\u6D41\u0000\u3C56\u6D42\u3530\u3733\u0000\u0000"+
-        "\u0000\u0000\u382E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6D43\u0000\u0000\u0000\u4670"+
-        "\u0000\u0000\u453E\u6D44\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6D47\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C34\u0000\u0000\u6D46\u6D45\u375A\u6D48\u0000"+
-        "\u0000\u0000\u0000\u3353\u0000\u6D4A\u0000\u0000"+
-        "\u0000\u3A5C\u6D49\u0000\u6D52\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D4C\u6D4E\u4A65\u6D4B\u0000\u0000"+
-        "\u0000\u6D4D\u0000\u6D51\u6D4F\u3531\u0000\u6D50"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6D53\u0000"+
-        "\u0000\u475A\u4E58\u0000\u0000\u0000\u0000\u3D34"+
-        "\u0000\u0000\u0000\u6D54\u0000\u0000\u0000\u0000"+
-        "\u4D22\u6D56\u0000\u6D55\u0000\u0000\u6D59\u4D41"+
-        "\u0000\u0000\u6D58\u0000\u336D\u6D57\u6D5C\u0000"+
-        "\u0000\u6D5B\u0000\u0000\u6D5A\u4532\u6D5D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6D5E"+
-        "\u0000\u0000\u0000\u0000\u6D5F\u0000\u0000\u396C"+
-        "\u0000\u3725\u6D60\u6D61\u6D62\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F49\u6D63\u0000\u3C2D\u6D64"+
-        "\u0000\u0000\u0000\u6D65\u0000\u0000\u0000\u5221"+
-        "\u517E\u0000\u0000\u0000\u0000\u6D66\u6570\u6D67"+
-        "\u4324\u3F2B\u4740\u0000\u0000\u0000\u0000\u6D68"+
-        "\u0000\u0000\u4A55\u4454\u397E\u0000\u0000\u4329"+
-        "\u0000\u0000\u312A\u0000\u4B78\u3F57\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u375E\u0000"+
-        "\u0000\u3661\u0000\u0000\u4A56\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D69\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D6B\u0000\u0000\u6D6A\u3260\u0000"+
-        "\u0000\u4676\u6D6C\u4777\u0000\u4533\u0000\u6D6D"+
-        "\u3D52\u0000\u0000\u0000\u6D6F\u0000\u0000\u4C42"+
-        "\u6D7E\u6D71\u6D72\u0000\u0000\u4449\u0000\u0000";
-
-    private final static String innerIndex5=
-        "\u4260\u4177\u0000\u4628\u0000\u6D70\u3555\u0000"+
-        "\u0000\u0000\u0000\u6D79\u0000\u6D76\u6E25\u4629"+
-        "\u4360\u6D73\u0000\u447E\u4553\u6D74\u6D78\u3F60"+
-        "\u0000\u4767\u444C\u0000\u0000\u4042\u6D77\u422E"+
-        "\u4224\u6D75\u3029\u4F22\u0000\u0000\u0000\u6D7A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4261\u0000"+
-        "\u0000\u3D35\u3F4A\u0000\u0000\u6D7C\u6D7B\u0000"+
-        "\u306F\u6D7D\u0000\u0000\u492F\u0000\u6E27\u0000"+
-        "\u0000\u465B\u3F6B\u0000\u0000\u4359\u0000\u3678"+
-        "\u0000\u6E26\u4D37\u313F\u0000\u4A57\u3261\u6E21"+
-        "\u6E22\u6E23\u6E24\u463B\u4323\u3063\u6E28\u0000"+
-        "\u6E29\u7423\u0000\u0000\u423D\u0000\u6E2A\u0000"+
-        "\u3173\u414C\u0000\u382F\u0000\u4D5A\u0000\u0000"+
-        "\u6E2B\u452C\u0000\u0000\u0000\u4178\u3C57\u6E2C"+
-        "\u0000\u0000\u6E2F\u0000\u0000\u3D65\u6E2D\u412B"+
-        "\u412A\u0000\u3064\u0000\u4E4B\u6E31\u0000\u4872"+
-        "\u6E33\u6E32\u6E30\u6364\u3454\u0000\u0000\u6D6E"+
-        "\u0000\u6E35\u6E34\u0000\u0000\u0000\u0000\u6E36"+
-        "\u0000\u4D38\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4661\u0000\u0000\u4B2E\u0000"+
-        "\u6E37\u0000\u3C59\u0000\u0000\u0000\u0000\u6E38"+
-        "\u0000\u6E39\u0000\u0000\u0000\u6E3A\u0000\u0000"+
-        "\u4521\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u306A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3959\u0000\u0000\u0000\u4F3A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6E3E\u0000\u0000\u0000\u0000"+
-        "\u0000\u3734\u6E3B\u0000\u6E3C\u0000\u0000\u0000"+
-        "\u4974\u0000\u0000\u0000\u0000\u3354\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4D39\u0000\u363F"+
-        "\u0000\u0000\u0000\u0000\u0000\u4554\u0000\u0000"+
-        "\u0000\u0000\u6E3F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E40\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6E41\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4522\u0000\u0000"+
-        "\u6E43\u0000\u6E42\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4653\u6E44\u3D36\u3C60\u475B\u4371\u0000"+
-        "\u0000\u0000\u3C72\u0000\u3F6C\u0000\u6E45\u0000"+
-        "\u6E46\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3F5D\u6E47\u0000\u6E48\u0000\u0000"+
-        "\u0000\u6E49\u4D6F\u0000\u3D37\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E4B\u6E4A\u0000\u395A\u0000\u3973"+
-        "\u3B40\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E4E\u0000\u0000\u0000\u0000\u3D66"+
-        "\u0000\u6E4D\u0000\u6E4C\u0000\u4269\u0000\u0000"+
-        "\u386F\u0000\u4043\u0000\u0000\u0000\u0000\u4830"+
-        "\u0000\u0000\u0000\u0000\u3D39\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E4F\u0000\u3E5F\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E52\u6E50\u0000\u0000\u0000\u6E51"+
-        "\u0000\u0000\u0000\u0000\u6E54\u6E53\u0000\u0000"+
-        "\u3E7A\u0000\u6E55\u0000\u0000\u0000\u0000\u0000"+
-        "\u6E56\u6E57\u0000\u0000\u0000\u0000\u4850\u3A53"+
-        "\u3C61\u6E58\u0000\u6E59\u4E24\u3D45\u4C6E\u4E4C"+
-        "\u6E5A\u3662\u0000\u0000\u0000\u0000\u6E5B\u0000"+
-        "\u4523\u0000\u0000\u6E5E\u3378\u3F4B\u0000\u6E5C"+
-        "\u0000\u6E5D\u0000\u4460\u0000\u0000\u4B55\u367C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6E60\u6E61\u0000"+
-        "\u0000\u0000\u0000\u0000\u6E5F\u0000\u0000\u6E63"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u465F\u3343\u0000"+
-        "\u0000\u6E67\u0000\u0000\u6E64\u6E66\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6E62\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F4F\u0000\u0000\u6E65\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4E6B\u0000\u0000\u385A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E6F"+
-        "\u0000\u0000\u0000\u0000\u4534\u6E6A\u0000\u0000"+
-        "\u6E6D\u6E6B\u0000\u6E70\u0000\u0000\u0000\u0000"+
-        "\u6E71\u0000\u0000\u0000\u0000\u0000\u0000\u6E69"+
-        "\u0000\u0000\u6E76\u3174\u0000\u0000\u6E68\u0000"+
-        "\u0000\u0000\u482D\u0000\u6E6C\u0000\u3E60\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u395B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4B48\u0000"+
-        "\u3664\u0000\u0000\u3D46\u0000\u463C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u412D\u0000\u6E74\u0000\u6E6E\u6E73\u0000"+
-        "\u4C43\u0000\u4438\u6E75\u6E72\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u412C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E79"+
-        "\u0000\u6E78\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E77"+
-        "\u0000\u0000\u4B2F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3D7B\u0000\u0000\u0000"+
-        "\u0000\u6E7A\u4A5F\u0000\u0000\u3154\u0000\u0000"+
-        "\u0000\u0000\u4946\u4372\u0000\u0000\u0000\u0000"+
-        "\u3578\u0000\u6E7C\u0000\u395D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3B2C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E7B"+
-        "\u3F6D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3F6E\u6F21\u6F23\u0000\u0000\u0000\u0000\u0000"+
-        "\u3E7B\u0000\u6F22\u6F24\u0000\u0000\u3653\u0000"+
-        "\u4945\u0000\u0000\u3C62\u4F23\u0000\u6E7E\u3A78"+
-        "\u0000\u0000\u4F3F\u0000\u0000\u6F26\u0000\u0000"+
-        "\u0000\u0000\u6F25\u6F27\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6E7D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4669\u0000\u4555\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4457\u0000\u6F2C\u0000"+
-        "\u0000\u0000\u0000\u4343\u6F28\u0000\u0000\u0000"+
-        "\u6F29\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u372D\u0000\u6F2B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3830\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6F2A\u0000\u3E61\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3379\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6F30\u0000\u3A3F\u4179"+
-        "\u0000\u0000\u444A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u333B"+
-        "\u0000\u0000\u0000\u0000\u6F2E\u6F2F\u4443\u0000"+
-        "\u6F2D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F31\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6F37\u0000\u0000\u0000\u0000"+
-        "\u6F3A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F39\u452D\u0000\u0000\u0000\u0000\u6F32\u6F33"+
-        "\u6F36\u0000\u0000\u0000\u0000\u6F38\u0000\u0000"+
-        "\u0000\u3640\u0000\u0000\u6F3B\u6F35\u0000\u0000"+
-        "\u6F34\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6F3F\u0000\u0000\u0000\u6F40"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F41\u0000\u0000\u6F3E\u6F3D\u0000\u0000\u0000"+
-        "\u3E62\u462A\u6F3C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F45\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6F43\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6F44\u6F42\u0000"+
-        "\u4278\u0000\u6F46\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F47\u0000\u0000\u6F49\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3455\u6F48\u4C7A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6F54\u6F4A\u0000\u0000\u6F4D\u0000"+
-        "\u6F4B\u0000\u6F4C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6F4E\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F50\u0000\u0000\u0000\u0000\u6F51\u0000\u6F52"+
-        "\u0000\u0000\u0000\u0000\u6F55\u6F53\u6F56\u6F58"+
-        "\u0000\u6F57\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4439"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C67\u0000\u6F59\u412E\u0000\u0000\u0000\u6F5A"+
-        "\u0000\u4A44\u6F5B\u332B\u0000\u0000\u0000\u313C"+
-        "\u0000\u3457\u0000\u3456\u6F5C\u0000\u6F5D\u0000"+
-        "\u6F5E\u6F5F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F60\u0000\u3458\u3355\u395E\u4836\u0000\u6F62"+
-        "\u6F61\u0000\u0000\u0000\u0000\u6F63\u0000\u0000"+
-        "\u0000\u0000\u315C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F66\u0000\u6F65\u6F64\u0000\u6F67\u0000"+
-        "\u0000\u0000\u0000\u6F6A\u0000\u0000\u0000\u3047"+
-        "\u0000\u0000\u6F68\u0000\u6F6C\u6F6B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6F6E\u6F6D\u6F6F\u0000"+
-        "\u462E\u0000\u0000\u0000\u6F70\u0000\u0000\u0000"+
-        "\u0000\u6F71\u6F73\u0000\u0000\u6F72\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u496C\u0000\u0000\u0000"+
-        "\u0000\u6F74\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F75\u0000\u3A65\u0000\u0000\u0000\u6F76\u6F77"+
-        "\u0000\u0000\u4B49\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u414B\u0000\u0000\u0000\u3024"+
-        "\u424B\u0000\u6F78\u0000\u496D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6F7B\u6F79\u395F\u0000\u6F7A"+
-        "\u3842\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A45\u6F7D\u7021\u6F7E\u7022"+
-        "\u0000\u0000\u3121\u3F58\u3D7C\u3459\u7023\u0000"+
-        "\u0000\u0000\u4766\u0000\u7025\u0000\u0000\u0000"+
-        "\u3122\u0000\u7024\u4444\u0000\u4E4D\u462B\u6F7C"+
-        "\u4E26\u0000\u3831\u0000\u0000\u4D5B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3679\u4E34\u0000"+
-        "\u3728\u0000\u4262\u6721\u0000\u7026\u332C\u3F6F"+
-        "\u0000\u0000\u0000\u0000\u3356\u7028\u0000\u7029"+
-        "\u7027\u3764\u0000\u3A5D\u3E63\u0000\u0000\u0000"+
-        "\u3123\u0000\u0000\u4E59\u0000\u0000\u0000\u702B"+
-        "\u6E2E\u0000\u702A\u0000\u0000\u0000\u0000\u0000"+
-        "\u702E\u702C\u702D\u0000\u702F\u0000\u7030\u4E6C"+
-        "\u7031\u7032\u0000\u4049\u483B\u0000\u0000\u0000"+
-        "\u3F7D\u3467\u0000\u0000\u4D3A\u326D\u3D38\u385B"+
-        "\u0000\u7035\u0000\u7034\u3B73\u7036\u7033\u0000"+
-        "\u0000\u3B28\u0000\u0000\u0000\u703A\u6A2D\u0000"+
-        "\u0000\u5256\u0000\u3F77\u7038\u0000\u0000\u0000"+
-        "\u0000\u0000\u4E25\u4671\u0000\u0000\u0000\u0000"+
-        "\u312B\u0000\u4063\u3C36\u0000\u0000\u0000\u0000"+
-        "\u4A37\u0000\u3140\u0000\u0000\u0000\u4E6D\u4D6B"+
-        "\u0000\u703B\u0000\u4545\u0000\u0000\u0000\u0000"+
-        "\u3C7B\u0000\u0000\u0000\u703C\u0000\u703D\u3F4C"+
-        "\u703E\u0000\u4E6E\u0000\u0000\u7039\u7040\u7042"+
-        "\u0000\u7041\u0000\u703F\u0000\u0000\u7043\u0000"+
-        "\u0000\u7044\u0000\u0000\u417A\u0000\u3262\u0000"+
-        "\u0000\u0000\u0000\u0000\u7045\u0000\u0000\u4C38"+
-        "\u0000\u0000\u7046\u0000\u0000\u0000\u0000\u0000"+
-        "\u7047\u0000\u4F2A\u0000\u0000\u0000\u0000\u0000"+
-        "\u5B31\u7048\u0000\u0000\u0000\u7049\u704A\u0000"+
-        "\u0000\u0000\u704E\u0000\u704B\u0000\u704C\u0000"+
-        "\u704D\u704F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4044\u0000\u0000\u0000\u4C77\u0000"+
-        "\u0000\u4045\u0000\u0000\u7050\u0000\u4873\u0000"+
-        "\u7051\u7353\u4C4C\u0000\u7052\u0000\u7053\u0000"+
-        "\u7054\u3357\u0000\u7056\u0000\u3F59\u0000\u0000"+
-        "\u0000\u7057\u0000\u0000\u3724\u0000\u0000\u0000"+
-        "\u0000\u7058\u705C\u0000\u705A\u0000\u0000\u0000"+
-        "\u0000\u705B\u0000\u0000\u3373\u7059\u705D\u0000"+
-        "\u0000\u0000\u0000\u705E\u0000\u3048\u0000\u705F"+
-        "\u7060\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3E64\u0000\u0000\u0000\u7061\u0000\u0000\u0000"+
-        "\u3547\u0000\u0000\u7064\u0000\u0000\u7063\u0000"+
-        "\u7062\u0000\u0000\u6B71\u0000\u4A5C\u0000\u0000"+
-        "\u0000\u0000\u0000\u7065\u7066\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7067\u0000\u0000\u7068\u0000"+
-        "\u7069\u0000\u0000\u706A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u345A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u706B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u706C\u4723\u0000"+
-        "\u0000\u0000\u706E\u323B\u0000\u7071\u7070\u0000"+
-        "\u0000\u0000\u0000\u3124\u0000\u0000\u0000\u3641"+
-        "\u0000\u4A47\u443A\u3A22\u0000\u3960\u3D67\u0000"+
-        "\u3F5C\u0000\u0000\u0000\u7073\u0000\u0000\u7072"+
-        "\u4D42\u3468\u4852\u465C\u0000\u0000\u0000\u3F7C"+
-        "\u4E4E\u0000\u375B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u7076\u0000\u0000\u7075\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4B4B\u462C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3150\u0000\u0000\u7077"+
-        "\u7074\u0000\u0000\u4951\u4D6A\u7078\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7079\u0000"+
-        "\u0000\u0000\u0000\u707B\u426A\u335B\u335C\u707A"+
-        "\u0000\u0000\u0000\u0000\u3469\u3832\u0000\u0000"+
-        "\u346A\u0000\u0000\u453F\u0000\u0000\u4E60\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u385C"+
-        "\u0000\u0000\u0000\u707C\u0000\u0000\u0000\u707D"+
-        "\u707E\u7121\u0000\u7123\u7122\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4977\u0000\u7124\u0000\u0000\u0000\u0000\u7125"+
-        "\u0000\u7126\u0000\u0000\u0000\u0000\u7127\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7129\u7128\u0000\u712A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4874\u664C\u0000\u0000\u3F29"+
-        "\u0000\u0000\u3532\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u712B\u0000\u712C\u0000\u522C\u5D3B\u4853"+
-        "\u0000\u0000\u307B\u0000\u303B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3B74\u4B30\u3E7E\u0000"+
-        "\u0000\u0000\u0000\u712D\u0000\u4C5F\u0000\u0000"+
-        "\u0000\u712E\u4D5C\u0000\u3142\u0000\u0000\u0000"+
-        "\u3B41\u0000\u712F\u326E\u7130\u0000\u0000\u0000"+
-        "\u7131\u0000\u0000\u0000\u0000\u7133\u7134\u0000"+
-        "\u7136\u7132\u0000\u0000\u7135\u0000\u0000\u0000"+
-        "\u345B\u0000\u0000\u0000\u7137\u0000\u7138\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7139\u713A\u0000"+
-        "\u0000\u0000\u713B\u0000\u0000\u713D\u0000\u0000"+
-        "\u0000\u713C\u0000\u713F\u7142\u0000\u0000\u0000"+
-        "\u713E\u7140\u7141\u0000\u0000\u7143\u0000\u3642"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3C73\u7144"+
-        "\u7145\u3961\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7146\u0000\u0000"+
-        "\u333E\u0000\u0000\u0000\u474F\u7147\u7148\u0000"+
-        "\u0000\u0000\u0000\u435A\u466B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7149\u0000\u0000\u0000"+
-        "\u0000\u477D\u0000\u0000\u424C\u3158\u366E\u0000"+
-        "\u366F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4373\u714E\u3670\u0000\u0000\u326F\u0000\u0000"+
-        "\u714D\u0000\u0000\u714B\u0000\u714C\u0000\u714A"+
-        "\u0000\u0000\u7158\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u714F\u7150\u0000"+
-        "\u0000\u7151\u7152\u0000\u0000\u0000\u0000\u0000"+
-        "\u7154\u0000\u0000\u7153\u0000\u0000\u0000\u3D59"+
-        "\u0000\u7155\u0000\u0000\u0000\u7157\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3533\u7156"+
-        "\u0000\u0000\u417B\u3833\u0000\u0000\u0000\u0000"+
-        "\u0000\u7159\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u424D\u0000\u0000\u715A\u0000\u0000\u0000\u0000"+
-        "\u462D\u0000\u0000\u0000\u0000\u0000\u0000\u715B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7160\u0000"+
-        "\u715E\u0000\u715D\u715F\u0000\u715C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7162\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7161\u0000\u7164"+
-        "\u0000\u0000\u3643\u7163\u0000\u0000\u0000\u7165"+
-        "\u0000\u0000\u7166\u0000\u7168\u7167\u0000\u0000"+
-        "\u0000\u7169\u716B\u716A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u397C\u0000\u0000\u0000\u0000\u716C\u0000\u0000"+
-        "\u716D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u333C\u0000\u0000\u0000\u716E\u0000\u0000\u0000"+
-        "\u716F\u0000\u0000\u0000\u3F71\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7170"+
-        "\u0000\u7171\u0000\u7172\u7173\u0000\u0000\u0000"+
-        "\u3962\u0000\u0000\u0000\u0000\u0000\u7174\u7175"+
-        "\u0000\u0000\u7176\u7177\u0000\u0000\u7178\u0000"+
-        "\u0000\u0000\u4831\u717A\u0000\u4926\u717B\u7179"+
-        "\u0000\u717D\u0000\u0000\u717C\u0000\u0000\u717E"+
-        "\u0000\u0000\u0000\u7221\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7222\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7223\u0000\u7224\u0000\u0000\u0000\u0000\u7225"+
-        "\u0000\u0000\u7226\u7227\u0000\u7228\u0000\u7229"+
-        "\u722A\u722B\u722C\u0000\u0000\u0000\u722D\u722E"+
-        "\u0000\u5D35\u722F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6478\u3534\u0000\u0000\u0000"+
-        "\u0000\u3321\u3A32\u7231\u7230\u4C25\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7233\u7234\u7232"+
-        "\u0000\u7235\u0000\u0000\u4B62\u0000\u0000\u0000"+
-        "\u7236\u0000\u357B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4F25"+
-        "\u0000\u0000\u0000\u0000\u7237\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7239\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u303E\u0000"+
-        "\u0000\u723A\u4A2B\u7238\u0000\u0000\u723B\u723C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u723D"+
-        "\u723E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u723F\u0000\u4B6E\u3B2D\u0000\u3A7A\u412F\u0000"+
-        "\u0000\u0000\u0000\u0000\u7240\u0000\u0000\u0000"+
-        "\u0000\u7243\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7241\u0000\u0000\u0000\u0000\u0000\u7244\u0000"+
-        "\u0000\u3871\u7242\u0000\u0000\u0000\u0000\u7245"+
-        "\u0000\u7246\u7247\u0000\u724B\u0000\u3B2A\u0000"+
-        "\u0000\u0000\u0000\u4264\u0000\u0000\u0000\u0000"+
-        "\u0000\u724C\u7249\u7248\u724A\u0000\u0000\u0000"+
-        "\u375F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7250\u724F\u724E\u0000\u0000\u3033\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u725A\u0000\u7256\u0000"+
-        "\u7257\u7253\u7259\u0000\u7255\u3362\u0000\u0000"+
-        "\u4F4C\u0000\u7258\u7254\u7252\u7251\u0000\u0000"+
-        "\u0000\u0000\u0000\u725C\u0000\u0000\u0000\u0000"+
-        "\u0000\u725F\u0000\u0000\u725E\u725D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4949\u725B\u3073"+
-        "\u7260\u0000\u7262\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u336F\u724D\u3137\u0000\u0000\u7264\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7263\u7261"+
-        "\u432D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4B70\u0000\u0000\u0000\u0000\u4E5A"+
-        "\u0000\u0000\u7265\u0000\u0000\u0000\u0000\u0000"+
-        "\u7266\u0000\u0000\u0000\u0000\u0000\u0000\u7267"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7268\u0000"+
-        "\u7269\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u443B\u0000\u726A"+
-        "\u0000\u4837\u0000\u726F\u726B\u0000\u0000\u0000"+
-        "\u726C\u0000\u0000\u4B31\u4C44\u0000\u4650\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7270\u0000\u0000\u7271\u463E"+
-        "\u726E\u726D\u0000\u0000\u0000\u0000\u322A\u0000"+
-        "\u0000\u0000\u7279\u0000\u0000\u7278\u0000\u0000"+
-        "\u0000\u0000\u0000\u3175\u0000\u0000\u0000\u7276"+
-        "\u0000\u0000\u0000\u7275\u0000\u0000\u7273\u0000"+
-        "\u337B\u0000\u7272\u3C32\u3229\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3963\u0000\u0000\u727C\u727B"+
-        "\u0000\u727A\u0000\u0000\u7277\u0000\u727D\u0000"+
-        "\u727E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7325\u7324\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u7326\u0000\u0000\u312D\u7321\u7322\u0000"+
-        "\u3974\u4C39\u0000\u0000\u7323\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4B32\u0000\u0000\u732B"+
-        "\u0000\u0000\u7327\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u732C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7329"+
-        "\u0000\u7328\u0000\u0000\u0000\u0000\u0000\u375C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u732D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u732E\u0000\u0000\u0000"+
-        "\u0000\u732F\u0000\u732A\u0000\u0000\u0000\u7274"+
-        "\u0000\u0000\u7330\u0000\u4461\u0000\u0000\u0000"+
-        "\u7334\u0000\u7335\u7333\u0000\u0000\u0000\u0000"+
-        "\u0000\u7332\u7338\u0000\u7331\u0000\u7336\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7337"+
-        "\u0000\u0000\u0000\u733A\u0000\u0000\u0000\u0000"+
-        "\u0000\u7339\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u733C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u733D\u0000\u733E"+
-        "\u0000\u0000\u4F49\u0000\u0000\u0000\u0000\u0000"+
-        "\u733B\u426B\u3A6D\u0000\u0000\u733F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u7340\u7341\u0000\u0000\u7342\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7343\u0000\u0000"+
-        "\u3834\u7344\u0000\u0000\u0000\u7345\u0000\u3C2F"+
-        "\u0000\u7346\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7347\u0000\u0000\u7348\u7349\u0000\u0000\u0000"+
-        "\u0000\u734C\u734A\u4F3C\u0000\u734B\u0000\u4E6F"+
-        "\u0000\u0000\u0000\u0000\u0000\u734D\u0000\u4E5B"+
-        "\u0000\u0000\u0000\u0000\u0000\u734E\u477E\u0000"+
-        "\u0000\u734F\u7351\u0000\u0000\u7352\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7350\u396D\u4C4D\u4B63\u5677\u0000\u5D60\u4B7B"+
-        "\u0000\u0000\u0000\u0000\u322B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7354\u3550\u7355\u7356"+
-        "\u7357\u0000\u3975\u0000\u7358\u0000\u0000\u0000"+
-        "\u6054\u4C5B\u0000\u4263\u7359\u735B\u735A\u0000"+
-        "\u735C\u0000\u0000\u0000\u0000\u735D\u0000\u0000"+
-        "\u735E\u0000\u0000\u0000\u0000\u0000\u0000\u735F"+
-        "\u0000\u0000\u0000\u0000\u7360\u0000\u7361\u7362"+
-        "\u0000\u7363\u0000\u7364\u7365\u7366\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7367"+
-        "\u7368\u0000\u0000\u0000\u0000\u0000\u4524\u0000"+
-        "\u0000\u0000\u0000\u385D\u0000\u736A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u414D\u736B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u736C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4921\u0000\u0000\u736D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u736E\u6337\u0000\u0000\u6C5A\u706D"+
-        "\u0000\u0000\u736F\u0000\u7370\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7372"+
-        "\u7373\u7374\u4E70\u7371\u0000\u0000\u7375\u7376"+
-        "\u0000\u0000\u7378\u0000\u7377\u0000\u0000\u0000"+
-        "\u0000\u0000\u737A\u0000\u0000\u0000\u737B\u7379"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4E36\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u737C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u737D\u6354\u0000\u0000"+
-        "\u737E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex6=
-        "\u7521\u7522\u7523\u7524\u7525\u7526\u7527\u7528"+
-        "\u7529\u752A\u752B\u752C\u752D\u752E\u752F\u7530"+
-        "\u7531\u7532\u7533\u7534\u7535\u7536\u7537\u7538"+
-        "\u7539\u753A\u753B\u753C\u753D\u753E\u753F\u7540"+
-        "\u7541\u7542\u7543\u7544\u7545\u7546\u7547\u7548"+
-        "\u7549\u754A\u754B\u754C\u754D\u754E\u754F\u7550"+
-        "\u7551\u7552\u7553\u7554\u7555\u7556\u7557\u7558"+
-        "\u7559\u755A\u755B\u755C\u755D\u755E\u755F\u7560"+
-        "\u7561\u7562\u7563\u7564\u7565\u7566\u7567\u7568"+
-        "\u7569\u756A\u756B\u756C\u756D\u756E\u756F\u7570"+
-        "\u7571\u7572\u7573\u7574\u7575\u7576\u7577\u7578"+
-        "\u7579\u757A\u757B\u757C\u757D\u757E\u7621\u7622"+
-        "\u7623\u7624\u7625\u7626\u7627\u7628\u7629\u762A"+
-        "\u762B\u762C\u762D\u762E\u762F\u7630\u7631\u7632"+
-        "\u7633\u7634\u7635\u7636\u7637\u7638\u7639\u763A"+
-        "\u763B\u763C\u763D\u763E\u763F\u7640\u7641\u7642"+
-        "\u7643\u7644\u7645\u7646\u7647\u7648\u7649\u764A"+
-        "\u764B\u764C\u764D\u764E\u764F\u7650\u7651\u7652"+
-        "\u7653\u7654\u7655\u7656\u7657\u7658\u7659\u765A"+
-        "\u765B\u765C\u765D\u765E\u765F\u7660\u7661\u7662"+
-        "\u7663\u7664\u7665\u7666\u7667\u7668\u7669\u766A"+
-        "\u766B\u766C\u766D\u766E\u766F\u7670\u7671\u7672"+
-        "\u7673\u7674\u7675\u7676\u7677\u7678\u7679\u767A"+
-        "\u767B\u767C\u767D\u767E\u7721\u7722\u7723\u7724"+
-        "\u7725\u7726\u7727\u7728\u7729\u772A\u772B\u772C"+
-        "\u772D\u772E\u772F\u7730\u7731\u7732\u7733\u7734"+
-        "\u7735\u7736\u7737\u7738\u7739\u773A\u773B\u773C"+
-        "\u773D\u773E\u773F\u7740\u7741\u7742\u7743\u7744"+
-        "\u7745\u7746\u7747\u7748\u7749\u774A\u774B\u774C"+
-        "\u774D\u774E\u774F\u7750\u7751\u7752\u7753\u7754"+
-        "\u7755\u7756\u7757\u7758\u7759\u775A\u775B\u775C"+
-        "\u775D\u775E\u775F\u7760\u7761\u7762\u7763\u7764"+
-        "\u7765\u7766\u7767\u7768\u7769\u776A\u776B\u776C"+
-        "\u776D\u776E\u776F\u7770\u7771\u7772\u7773\u7774"+
-        "\u7775\u7776\u7777\u7778\u7779\u777A\u777B\u777C"+
-        "\u777D\u777E\u7821\u7822\u7823\u7824\u7825\u7826"+
-        "\u7827\u7828\u7829\u782A\u782B\u782C\u782D\u782E"+
-        "\u782F\u7830\u7831\u7832\u7833\u7834\u7835\u7836"+
-        "\u7837\u7838\u7839\u783A\u783B\u783C\u783D\u783E"+
-        "\u783F\u7840\u7841\u7842\u7843\u7844\u7845\u7846"+
-        "\u7847\u7848\u7849\u784A\u784B\u784C\u784D\u784E"+
-        "\u784F\u7850\u7851\u7852\u7853\u7854\u7855\u7856"+
-        "\u7857\u7858\u7859\u785A\u785B\u785C\u785D\u785E"+
-        "\u785F\u7860\u7861\u7862\u7863\u7864\u7865\u7866"+
-        "\u7867\u7868\u7869\u786A\u786B\u786C\u786D\u786E"+
-        "\u786F\u7870\u7871\u7872\u7873\u7874\u7875\u7876"+
-        "\u7877\u7878\u7879\u787A\u787B\u787C\u787D\u787E"+
-        "\u7921\u7922\u7923\u7924\u7925\u7926\u7927\u7928"+
-        "\u7929\u792A\u792B\u792C\u792D\u792E\u792F\u7930"+
-        "\u7931\u7932\u7933\u7934\u7935\u7936\u7937\u7938"+
-        "\u7939\u793A\u793B\u793C\u793D\u793E\u793F\u7940"+
-        "\u7941\u7942\u7943\u7944\u7945\u7946\u7947\u7948"+
-        "\u7949\u794A\u794B\u794C\u794D\u794E\u794F\u7950"+
-        "\u7951\u7952\u7953\u7954\u7955\u7956\u7957\u7958"+
-        "\u7959\u795A\u795B\u795C\u795D\u795E\u795F\u7960"+
-        "\u7961\u7962\u7963\u7964\u7965\u7966\u7967\u7968"+
-        "\u7969\u796A\u796B\u796C\u796D\u796E\u796F\u7970"+
-        "\u7971\u7972\u7973\u7974\u7975\u7976\u7977\u7978"+
-        "\u7979\u797A\u797B\u797C\u797D\u797E\u7A21\u7A22"+
-        "\u7A23\u7A24\u7A25\u7A26\u7A27\u7A28\u7A29\u7A2A"+
-        "\u7A2B\u7A2C\u7A2D\u7A2E\u7A2F\u7A30\u7A31\u7A32"+
-        "\u7A33\u7A34\u7A35\u7A36\u7A37\u7A38\u7A39\u7A3A"+
-        "\u7A3B\u7A3C\u7A3D\u7A3E\u7A3F\u7A40\u7A41\u7A42"+
-        "\u7A43\u7A44\u7A45\u7A46\u7A47\u7A48\u7A49\u7A4A"+
-        "\u7A4B\u7A4C\u7A4D\u7A4E\u7A4F\u7A50\u7A51\u7A52"+
-        "\u7A53\u7A54\u7A55\u7A56\u7A57\u7A58\u7A59\u7A5A"+
-        "\u7A5B\u7A5C\u7A5D\u7A5E\u7A5F\u7A60\u7A61\u7A62"+
-        "\u7A63\u7A64\u7A65\u7A66\u7A67\u7A68\u7A69\u7A6A"+
-        "\u7A6B\u7A6C\u7A6D\u7A6E\u7A6F\u7A70\u7A71\u7A72"+
-        "\u7A73\u7A74\u7A75\u7A76\u7A77\u7A78\u7A79\u7A7A"+
-        "\u7A7B\u7A7C\u7A7D\u7A7E\u7B21\u7B22\u7B23\u7B24"+
-        "\u7B25\u7B26\u7B27\u7B28\u7B29\u7B2A\u7B2B\u7B2C"+
-        "\u7B2D\u7B2E\u7B2F\u7B30\u7B31\u7B32\u7B33\u7B34"+
-        "\u7B35\u7B36\u7B37\u7B38\u7B39\u7B3A\u7B3B\u7B3C"+
-        "\u7B3D\u7B3E\u7B3F\u7B40\u7B41\u7B42\u7B43\u7B44"+
-        "\u7B45\u7B46\u7B47\u7B48\u7B49\u7B4A\u7B4B\u7B4C"+
-        "\u7B4D\u7B4E\u7B4F\u7B50\u7B51\u7B52\u7B53\u7B54"+
-        "\u7B55\u7B56\u7B57\u7B58\u7B59\u7B5A\u7B5B\u7B5C"+
-        "\u7B5D\u7B5E\u7B5F\u7B60\u7B61\u7B62\u7B63\u7B64"+
-        "\u7B65\u7B66\u7B67\u7B68\u7B69\u7B6A\u7B6B\u7B6C"+
-        "\u7B6D\u7B6E\u7B6F\u7B70\u7B71\u7B72\u7B73\u7B74"+
-        "\u7B75\u7B76\u7B77\u7B78\u7B79\u7B7A\u7B7B\u7B7C"+
-        "\u7B7D\u7B7E\u7C21\u7C22\u7C23\u7C24\u7C25\u7C26"+
-        "\u7C27\u7C28\u7C29\u7C2A\u7C2B\u7C2C\u7C2D\u7C2E"+
-        "\u7C2F\u7C30\u7C31\u7C32\u7C33\u7C34\u7C35\u7C36"+
-        "\u7C37\u7C38\u7C39\u7C3A\u7C3B\u7C3C\u7C3D\u7C3E"+
-        "\u7C3F\u7C40\u7C41\u7C42\u7C43\u7C44\u7C45\u7C46"+
-        "\u7C47\u7C48\u7C49\u7C4A\u7C4B\u7C4C\u7C4D\u7C4E"+
-        "\u7C4F\u7C50\u7C51\u7C52\u7C53\u7C54\u7C55\u7C56"+
-        "\u7C57\u7C58\u7C59\u7C5A\u7C5B\u7C5C\u7C5D\u7C5E"+
-        "\u7C5F\u7C60\u7C61\u7C62\u7C63\u7C64\u7C65\u7C66"+
-        "\u7C67\u7C68\u7C69\u7C6A\u7C6B\u7C6C\u7C6D\u7C6E"+
-        "\u7C6F\u7C70\u7C71\u7C72\u7C73\u7C74\u7C75\u7C76"+
-        "\u7C77\u7C78\u7C79\u7C7A\u7C7B\u7C7C\u7C7D\u7C7E"+
-        "\u7D21\u7D22\u7D23\u7D24\u7D25\u7D26\u7D27\u7D28"+
-        "\u7D29\u7D2A\u7D2B\u7D2C\u7D2D\u7D2E\u7D2F\u7D30"+
-        "\u7D31\u7D32\u7D33\u7D34\u7D35\u7D36\u7D37\u7D38"+
-        "\u7D39\u7D3A\u7D3B\u7D3C\u7D3D\u7D3E\u7D3F\u7D40"+
-        "\u7D41\u7D42\u7D43\u7D44\u7D45\u7D46\u7D47\u7D48"+
-        "\u7D49\u7D4A\u7D4B\u7D4C\u7D4D\u7D4E\u7D4F\u7D50"+
-        "\u7D51\u7D52\u7D53\u7D54\u7D55\u7D56\u7D57\u7D58"+
-        "\u7D59\u7D5A\u7D5B\u7D5C\u7D5D\u7D5E\u7D5F\u7D60"+
-        "\u7D61\u7D62\u7D63\u7D64\u7D65\u7D66\u7D67\u7D68"+
-        "\u7D69\u7D6A\u7D6B\u7D6C\u7D6D\u7D6E\u7D6F\u7D70"+
-        "\u7D71\u7D72\u7D73\u7D74\u7D75\u7D76\u7D77\u7D78"+
-        "\u7D79\u7D7A\u7D7B\u7D7C\u7D7D\u7D7E\u7E21\u7E22"+
-        "\u7E23\u7E24\u7E25\u7E26\u7E27\u7E28\u7E29\u7E2A"+
-        "\u7E2B\u7E2C\u7E2D\u7E2E\u7E2F\u7E30\u7E31\u7E32"+
-        "\u7E33\u7E34\u7E35\u7E36\u7E37\u7E38\u7E39\u7E3A"+
-        "\u7E3B\u7E3C\u7E3D\u7E3E\u7E3F\u7E40\u7E41\u7E42"+
-        "\u7E43\u7E44\u7E45\u7E46\u7E47\u7E48\u7E49\u7E4A"+
-        "\u7E4B\u7E4C\u7E4D\u7E4E\u7E4F\u7E50\u7E51\u7E52"+
-        "\u7E53\u7E54\u7E55\u7E56\u7E57\u7E58\u7E59\u7E5A"+
-        "\u7E5B\u7E5C\u7E5D\u7E5E\u7E5F\u7E60\u7E61\u7E62"+
-        "\u7E63\u7E64\u7E65\u7E66\u7E67\u7E68\u7E69\u7E6A"+
-        "\u7E6B\u7E6C\u7E6D\u7E6E\u7E6F\u7E70\u7E71\u7E72"+
-        "\u7E73\u7E74\u7E75\u7E76\u7E77\u7E78\u7E79\u7E7A"+
-        "\u7E7B\u7E7C\u7E7D\u7E7E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u212A\u0000\u2174\u2170\u2173\u2175\u0000"+
-        "\u214A\u214B\u2176\u215C\u2124\u215d\u2125\u213F"+
-        "\u2330\u2331\u2332\u2333\u2334\u2335\u2336\u2337"+
-        "\u2338\u2339\u2127\u2128\u2163\u2161\u2164\u2129"+
-        "\u2177\u2341\u2342\u2343\u2344\u2345\u2346\u2347"+
-        "\u2348\u2349\u234A\u234B\u234C\u234D\u234E\u234F"+
-        "\u2350\u2351\u2352\u2353\u2354\u2355\u2356\u2357"+
-        "\u2358\u2359\u235A\u214E\u2140\u214F\u2130\u2132"+
-        "\u212E\u2361\u2362\u2363\u2364\u2365\u2366\u2367"+
-        "\u2368\u2369\u236A\u236B\u236C\u236D\u236E\u236F"+
-        "\u2370\u2371\u2372\u2373\u2374\u2375\u2376\u2377"+
-        "\u2378\u2379\u237A\u2150\u2143\u2151\u0000\u0000"+
-        "\u0000\u2123\u2156\u2157\u2122\u2126\u2572\u2521"+
-        "\u2523\u2525\u2527\u2529\u2563\u2565\u2567\u2543"+
-        "\u213c\u2522\u2524\u2526\u2528\u252a\u252b\u252d"+
-        "\u252f\u2531\u2533\u2535\u2537\u2539\u253b\u253d"+
-        "\u253f\u2541\u2544\u2546\u2548\u254a\u254b\u254c"+
-        "\u254d\u254e\u254f\u2552\u2555\u2558\u255b\u255e"+
-        "\u255f\u2560\u2561\u2562\u2564\u2566\u2568\u2569"+
-        "\u256a\u256b\u256c\u256d\u256f\u2573\u212b\u212c"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2171\u2172\u224c\u2131\u0000\u216F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    protected final static short index1[] = {
-        1, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        11, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15,
-        16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
-        32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
-        48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
-        64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
-        80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        96, 97, 98, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100
-    };
-
-    protected final static String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4,
-        innerIndex5,
-        innerIndex6
-    };
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0208_MS932_Decoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0208_MS932_Decoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1048 +0,0 @@
-/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetEncoder;
-
-class JIS_X_0208_MS932_Decoder
-{
-    private final static String innerIndex0=
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u3000\u3001"+
-        "\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01"+
-        "\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F"+
-        "\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006"+
-        "\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225"+
-        "\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08"+
-        "\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008"+
-        "\u3009\u300A\u300B\u300C\u300D\u300E\u300F\u3010"+
-        "\u3011\uFF0B\uFF0D\u00B1\u00D7\u00F7\uFF1D\u2260"+
-        "\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640"+
-        "\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1"+
-        "\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605"+
-        "\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3"+
-        "\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191"+
-        "\u2193\u3013\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2208\u220B\u2286"+
-        "\u2287\u2282\u2283\u222A\u2229\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2227\u2228\uFFE2"+
-        "\u21D2\u21D4\u2200\u2203\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2220"+
-        "\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B"+
-        "\u221A\u223D\u221D\u2235\u222B\u222C\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u212B\u2030\u266F"+
-        "\u266D\u266A\u2020\u2021\u00B6\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\u25EF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15\uFF16"+
-        "\uFF17\uFF18\uFF19\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26"+
-        "\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E"+
-        "\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36"+
-        "\uFF37\uFF38\uFF39\uFF3A\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46"+
-        "\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E"+
-        "\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56"+
-        "\uFF57\uFF58\uFF59\uFF5A\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048"+
-        "\u3049\u304A\u304B\u304C\u304D\u304E\u304F\u3050"+
-        "\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058"+
-        "\u3059\u305A\u305B\u305C\u305D\u305E\u305F\u3060"+
-        "\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068"+
-        "\u3069\u306A\u306B\u306C\u306D\u306E\u306F\u3070"+
-        "\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078"+
-        "\u3079\u307A\u307B\u307C\u307D\u307E\u307F\u3080"+
-        "\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088"+
-        "\u3089\u308A\u308B\u308C\u308D\u308E\u308F\u3090"+
-        "\u3091\u3092\u3093\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u30A1\u30A2"+
-        "\u30A3\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA"+
-        "\u30AB\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2"+
-        "\u30B3\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA"+
-        "\u30BB\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2"+
-        "\u30C3\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA"+
-        "\u30CB\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2"+
-        "\u30D3\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA"+
-        "\u30DB\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2"+
-        "\u30E3\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA"+
-        "\u30EB\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2"+
-        "\u30F3\u30F4\u30F5\u30F6\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u0391\u0392\u0393\u0394"+
-        "\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C"+
-        "\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5"+
-        "\u03A6\u03A7\u03A8\u03A9\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u03B1\u03B2\u03B3\u03B4"+
-        "\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC"+
-        "\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C4\u03C5"+
-        "\u03C6\u03C7\u03C8\u03C9\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u0410\u0411\u0412\u0413\u0414\u0415"+
-        "\u0401\u0416\u0417\u0418\u0419\u041A\u041B\u041C"+
-        "\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424"+
-        "\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C"+
-        "\u042D\u042E\u042F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u0430\u0431\u0432\u0433\u0434\u0435"+
-        "\u0451\u0436\u0437\u0438\u0439\u043A\u043B\u043C"+
-        "\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444"+
-        "\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C"+
-        "\u044D\u044E\u044F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C"+
-        "\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B"+
-        "\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F"+
-        "\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2460\u2461"+
-        "\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469"+
-        "\u246A\u246B\u246C\u246D\u246E\u246F\u2470\u2471"+
-        "\u2472\u2473\u2160\u2161\u2162\u2163\u2164\u2165"+
-        "\u2166\u2167\u2168\u2169\uFFFD\u3349\u3314\u3322"+
-        "\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D"+
-        "\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E"+
-        "\u338E\u338F\u33C4\u33A1\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u337B\u301D\u301F\u2116"+
-        "\u33CD\u2121\u32A4\u32A5\u32A6\u32A7\u32A8\u3231"+
-        "\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B"+
-        "\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235"+
-        "\u2229\u222A\uFFFD\uFFFD\u4E9C\u5516\u5A03\u963F"+
-        "\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50"+
-        "\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893"+
-        "\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62"+
-        "\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309"+
-        "\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D"+
-        "\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF"+
-        "\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB"+
-        "\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A"+
-        "\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00"+
-        "\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141"+
-        "\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB"+
-        "\u80E4\u852D\u9662\u9670\u96A0\u97FB\u540B\u53F3"+
-        "\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA"+
-        "\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A"+
-        "\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91"+
-        "\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71"+
-        "\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8"+
-        "\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB"+
-        "\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD"+
-        "\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9"+
-        "\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F"+
-        "\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869"+
-        "\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"+
-        "\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956"+
-        "\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B"+
-        "\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069"+
-        "\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D"+
-        "\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6"+
-        "\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B"+
-        "\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304"+
-        "\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6"+
-        "\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B"+
-        "\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB"+
-        "\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A"+
-        "\u6094\u6062\u61D0\u6212\u62D0\u6539\u9B41\u6666"+
-        "\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9"+
-        "\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3"+
-        "\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72"+
-        "\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE"+
-        "\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C"+
-        "\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B"+
-        "\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D"+
-        "\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D"+
-        "\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1"+
-        "\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A"+
-        "\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B"+
-        "\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6"+
-        "\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB"+
-        "\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79"+
-        "\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853"+
-        "\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0"+
-        "\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36"+
-        "\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084"+
-        "\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218"+
-        "\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9"+
-        "\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E"+
-        "\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90"+
-        "\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F"+
-        "\u68CB\u68C4\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F"+
-        "\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4"+
-        "\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D"+
-        "\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0"+
-        "\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA"+
-        "\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827"+
-        "\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18"+
-        "\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025"+
-        "\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76"+
-        "\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB"+
-        "\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31"+
-        "\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC";
-
-    private final static String innerIndex1=
-        "\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354"+
-        "\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A"+
-        "\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2"+
-        "\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1"+
-        "\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D"+
-        "\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4"+
-        "\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981"+
-        "\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39"+
-        "\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A"+
-        "\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2"+
-        "\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047"+
-        "\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\u6398\u7A9F"+
-        "\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817"+
-        "\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4"+
-        "\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211"+
-        "\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84"+
-        "\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F"+
-        "\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B"+
-        "\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD"+
-        "\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483"+
-        "\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74"+
-        "\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065"+
-        "\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA"+
-        "\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC"+
-        "\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19"+
-        "\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78"+
-        "\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384"+
-        "\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B"+
-        "\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27"+
-        "\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1"+
-        "\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867"+
-        "\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F"+
-        "\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E"+
-        "\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF"+
-        "\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A"+
-        "\u53E3\u5411\u540E\u5589\u5751\u57A2\u597D\u5B54"+
-        "\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A"+
-        "\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B"+
-        "\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F"+
-        "\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F"+
-        "\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF"+
-        "\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B"+
-        "\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4"+
-        "\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7"+
-        "\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B"+
-        "\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344"+
-        "\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"+
-        "\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068"+
-        "\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A"+
-        "\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6"+
-        "\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF"+
-        "\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9"+
-        "\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73"+
-        "\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E"+
-        "\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750"+
-        "\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4"+
-        "\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B"+
-        "\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F"+
-        "\u685C\u9BAD\u7B39\u5319\u518A\u5237\u5BDF\u62F6"+
-        "\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6"+
-        "\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2"+
-        "\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523"+
-        "\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC"+
-        "\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8"+
-        "\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50"+
-        "\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C"+
-        "\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345"+
-        "\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3"+
-        "\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC"+
-        "\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57"+
-        "\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E"+
-        "\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494"+
-        "\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8"+
-        "\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4"+
-        "\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0"+
-        "\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199"+
-        "\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005"+
-        "\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A"+
-        "\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2"+
-        "\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A"+
-        "\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112"+
-        "\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA"+
-        "\u53CE\u5468\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE"+
-        "\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F"+
-        "\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B"+
-        "\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93"+
-        "\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283"+
-        "\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E"+
-        "\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC"+
-        "\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89"+
-        "\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187"+
-        "\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6"+
-        "\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9"+
-        "\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"+
-        "\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617"+
-        "\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A"+
-        "\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C"+
-        "\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F"+
-        "\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167"+
-        "\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11"+
-        "\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3"+
-        "\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266"+
-        "\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57"+
-        "\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5"+
-        "\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8"+
-        "\u8B72\u91B8\u9320\u5631\u57F4\u98FE\u62ED\u690D"+
-        "\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755"+
-        "\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD"+
-        "\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B"+
-        "\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33"+
-        "\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032"+
-        "\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B"+
-        "\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25"+
-        "\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782"+
-        "\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870"+
-        "\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07"+
-        "\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919"+
-        "\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16"+
-        "\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81"+
-        "\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816"+
-        "\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0"+
-        "\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752"+
-        "\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A"+
-        "\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A"+
-        "\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5"+
-        "\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76"+
-        "\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02"+
-        "\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9"+
-        "\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F"+
-        "\u7BAD\u7DDA\u7E4A\u7FA8\u817A\u821B\u8239\u85A6"+
-        "\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583"+
-        "\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55"+
-        "\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD"+
-        "\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97"+
-        "\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7"+
-        "\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D"+
-        "\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F"+
-        "\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15"+
-        "\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C"+
-        "\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70"+
-        "\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"+
-        "\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373"+
-        "\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E"+
-        "\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58"+
-        "\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A"+
-        "\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1"+
-        "\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE"+
-        "\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF"+
-        "\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000"+
-        "\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C"+
-        "\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85"+
-        "\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438"+
-        "\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\u53E9\u4F46"+
-        "\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA"+
-        "\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606"+
-        "\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD"+
-        "\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95"+
-        "\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5"+
-        "\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A"+
-        "\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3"+
-        "\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92"+
-        "\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD"+
-        "\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3"+
-        "\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01"+
-        "\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14"+
-        "\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E"+
-        "\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF"+
-        "\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5"+
-        "\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673"+
-        "\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A"+
-        "\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB"+
-        "\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C"+
-        "\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C"+
-        "\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95"+
-        "\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF"+
-        "\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6"+
-        "\u8E44\u9013\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458"+
-        "\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA"+
-        "\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B"+
-        "\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2"+
-        "\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E"+
-        "\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C"+
-        "\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825"+
-        "\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A"+
-        "\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95"+
-        "\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC"+
-        "\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53"+
-        "\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230";
-
-    private final static String innerIndex2=
-        "\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003"+
-        "\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5"+
-        "\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5"+
-        "\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97"+
-        "\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC"+
-        "\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6"+
-        "\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566"+
-        "\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948"+
-        "\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A"+
-        "\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF"+
-        "\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1"+
-        "\u8089\u8679\u5EFF\u65E5\u4E73\u5165\u5982\u5C3F"+
-        "\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962"+
-        "\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A"+
-        "\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9"+
-        "\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4"+
-        "\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436"+
-        "\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD"+
-        "\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29"+
-        "\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD"+
-        "\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7"+
-        "\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D"+
-        "\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206"+
-        "\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8"+
-        "\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B"+
-        "\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C"+
-        "\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34"+
-        "\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F"+
-        "\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C"+
-        "\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D"+
-        "\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351"+
-        "\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB"+
-        "\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB"+
-        "\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB"+
-        "\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435"+
-        "\u7709\u7F8E\u9F3B\u67CA\u7A17\u5339\u758B\u9AED"+
-        "\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46"+
-        "\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5"+
-        "\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55"+
-        "\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2"+
-        "\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015"+
-        "\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0"+
-        "\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276"+
-        "\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A"+
-        "\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE"+
-        "\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953"+
-        "\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"+
-        "\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8"+
-        "\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4"+
-        "\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587"+
-        "\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A"+
-        "\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB"+
-        "\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F"+
-        "\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF"+
-        "\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703"+
-        "\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893"+
-        "\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8"+
-        "\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29"+
-        "\u5E96\u62B1\u6367\u653E\u65B9\u670B\u6CD5\u6CE1"+
-        "\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702"+
-        "\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C"+
-        "\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8"+
-        "\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21"+
-        "\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420"+
-        "\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267"+
-        "\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C"+
-        "\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54"+
-        "\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9"+
-        "\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6"+
-        "\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D"+
-        "\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A"+
-        "\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1"+
-        "\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922"+
-        "\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18"+
-        "\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4"+
-        "\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762"+
-        "\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B"+
-        "\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE"+
-        "\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F"+
-        "\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A"+
-        "\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC"+
-        "\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108"+
-        "\u6CB9\u7652\u8AED\u8F38\u552F\u4F51\u512A\u52C7"+
-        "\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA"+
-        "\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98"+
-        "\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59"+
-        "\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9"+
-        "\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B"+
-        "\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9"+
-        "\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291"+
-        "\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA"+
-        "\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D"+
-        "\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D"+
-        "\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"+
-        "\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387"+
-        "\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409"+
-        "\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E"+
-        "\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE"+
-        "\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7"+
-        "\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1"+
-        "\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A"+
-        "\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E"+
-        "\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2"+
-        "\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62"+
-        "\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B"+
-        "\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\u84EE\u9023"+
-        "\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732"+
-        "\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A"+
-        "\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE"+
-        "\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C"+
-        "\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99"+
-        "\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897"+
-        "\u8155\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u5F0C\u4E10\u4E15\u4E2A"+
-        "\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82"+
-        "\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F"+
-        "\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4"+
-        "\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09"+
-        "\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88"+
-        "\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86"+
-        "\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1"+
-        "\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A"+
-        "\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE"+
-        "\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050"+
-        "\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085"+
-        "\u50B4\u50B2\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE"+
-        "\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101"+
-        "\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137"+
-        "\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162"+
-        "\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C"+
-        "\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6"+
-        "\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0"+
-        "\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9"+
-        "\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E"+
-        "\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B"+
-        "\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F"+
-        "\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"+
-        "\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7"+
-        "\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8"+
-        "\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315"+
-        "\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346"+
-        "\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E"+
-        "\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5"+
-        "\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC"+
-        "\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440"+
-        "\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E"+
-        "\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492"+
-        "\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2"+
-        "\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\u54AB\u54C2"+
-        "\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514"+
-        "\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563"+
-        "\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533"+
-        "\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E"+
-        "\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8"+
-        "\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614"+
-        "\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650"+
-        "\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F"+
-        "\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F"+
-        "\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3"+
-        "\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9"+
-        "\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713"+
-        "\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E"+
-        "\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F"+
-        "\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3"+
-        "\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B"+
-        "\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0"+
-        "\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA"+
-        "\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7"+
-        "\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA"+
-        "\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B"+
-        "\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2"+
-        "\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967"+
-        "\u596C\u5969\u5978\u5981\u599D\u4F5E\u4FAB\u59A3"+
-        "\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25"+
-        "\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49"+
-        "\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB"+
-        "\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA"+
-        "\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36"+
-        "\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B"+
-        "\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A"+
-        "\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4"+
-        "\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0"+
-        "\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20"+
-        "\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53";
-
-    private final static String innerIndex3=
-        "\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79"+
-        "\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC"+
-        "\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA"+
-        "\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F"+
-        "\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C"+
-        "\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84"+
-        "\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7"+
-        "\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB"+
-        "\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36"+
-        "\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F"+
-        "\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F"+
-        "\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\u5ED6\u5EE3"+
-        "\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC"+
-        "\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09"+
-        "\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38"+
-        "\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57"+
-        "\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F"+
-        "\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0"+
-        "\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1"+
-        "\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029"+
-        "\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A"+
-        "\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D"+
-        "\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081"+
-        "\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097"+
-        "\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4"+
-        "\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106"+
-        "\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB"+
-        "\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A"+
-        "\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173"+
-        "\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165"+
-        "\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187"+
-        "\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC"+
-        "\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB"+
-        "\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF"+
-        "\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C"+
-        "\u6214\u621B\u621E\u6221\u622A\u622E\u6230\u6232"+
-        "\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268"+
-        "\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4"+
-        "\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6"+
-        "\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B"+
-        "\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF"+
-        "\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E"+
-        "\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5"+
-        "\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9"+
-        "\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426"+
-        "\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476"+
-        "\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"+
-        "\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1"+
-        "\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C"+
-        "\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C"+
-        "\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536"+
-        "\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E"+
-        "\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F"+
-        "\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2"+
-        "\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603"+
-        "\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644"+
-        "\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F"+
-        "\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698"+
-        "\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\u66C4\u66B8"+
-        "\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5"+
-        "\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E"+
-        "\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760"+
-        "\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A"+
-        "\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4"+
-        "\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2"+
-        "\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846"+
-        "\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859"+
-        "\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D"+
-        "\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA"+
-        "\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922"+
-        "\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936"+
-        "\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF"+
-        "\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977"+
-        "\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974"+
-        "\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A"+
-        "\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE"+
-        "\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991"+
-        "\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B"+
-        "\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E"+
-        "\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13"+
-        "\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59"+
-        "\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84"+
-        "\u6AA2\u6AA3\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8"+
-        "\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA"+
-        "\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F"+
-        "\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49"+
-        "\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79"+
-        "\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E"+
-        "\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7"+
-        "\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3"+
-        "\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23"+
-        "\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81"+
-        "\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1"+
-        "\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"+
-        "\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36"+
-        "\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C"+
-        "\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95"+
-        "\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6"+
-        "\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5"+
-        "\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E"+
-        "\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B"+
-        "\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF"+
-        "\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3"+
-        "\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5"+
-        "\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE"+
-        "\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\u6F3E\u6F13"+
-        "\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B"+
-        "\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2"+
-        "\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA"+
-        "\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB"+
-        "\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B"+
-        "\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032"+
-        "\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8"+
-        "\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD"+
-        "\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C"+
-        "\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC"+
-        "\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0"+
-        "\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210"+
-        "\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C"+
-        "\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282"+
-        "\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2"+
-        "\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1"+
-        "\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D"+
-        "\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8"+
-        "\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A"+
-        "\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE"+
-        "\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455"+
-        "\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463"+
-        "\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF"+
-        "\u74D4\u73F1\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2"+
-        "\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C"+
-        "\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C"+
-        "\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569"+
-        "\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587"+
-        "\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5"+
-        "\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC"+
-        "\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE"+
-        "\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B"+
-        "\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624"+
-        "\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658"+
-        "\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"+
-        "\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B"+
-        "\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8"+
-        "\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1"+
-        "\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704"+
-        "\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738"+
-        "\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E"+
-        "\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6"+
-        "\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7"+
-        "\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926"+
-        "\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A"+
-        "\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB"+
-        "\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\u78E7\u78DA"+
-        "\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B"+
-        "\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A"+
-        "\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3"+
-        "\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3"+
-        "\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31"+
-        "\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62"+
-        "\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95"+
-        "\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4"+
-        "\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3"+
-        "\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0"+
-        "\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E"+
-        "\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B"+
-        "\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71"+
-        "\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A"+
-        "\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC"+
-        "\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6"+
-        "\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17"+
-        "\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B"+
-        "\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58"+
-        "\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90"+
-        "\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2"+
-        "\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8"+
-        "\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6"+
-        "\u7CFA\u7D06\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B"+
-        "\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E"+
-        "\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B"+
-        "\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7"+
-        "\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F"+
-        "\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1"+
-        "\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09"+
-        "\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43"+
-        "\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59"+
-        "\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5"+
-        "\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90"+
-        "\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A";
-
-    private final static String innerIndex4=
-        "\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54"+
-        "\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82"+
-        "\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D"+
-        "\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8"+
-        "\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6"+
-        "\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012"+
-        "\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A"+
-        "\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073"+
-        "\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086"+
-        "\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB"+
-        "\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF"+
-        "\u80F1\u811B\u8129\u8123\u812F\u814B\u968B\u8146"+
-        "\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166"+
-        "\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195"+
-        "\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE"+
-        "\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1"+
-        "\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA"+
-        "\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D"+
-        "\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259"+
-        "\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A"+
-        "\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292"+
-        "\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2"+
-        "\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE"+
-        "\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332"+
-        "\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317"+
-        "\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323"+
-        "\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0"+
-        "\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403"+
-        "\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D"+
-        "\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A"+
-        "\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482"+
-        "\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462"+
-        "\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0"+
-        "\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517"+
-        "\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563"+
-        "\u8558\u8548\u8541\u8602\u854B\u8555\u8580\u85A4"+
-        "\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA"+
-        "\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF"+
-        "\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A"+
-        "\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630"+
-        "\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693"+
-        "\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4"+
-        "\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9"+
-        "\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700"+
-        "\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734"+
-        "\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F"+
-        "\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"+
-        "\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF"+
-        "\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3"+
-        "\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D"+
-        "\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815"+
-        "\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844"+
-        "\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E"+
-        "\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892"+
-        "\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1"+
-        "\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902"+
-        "\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913"+
-        "\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B"+
-        "\u8936\u8938\u894C\u891D\u8960\u895E\u8966\u8964"+
-        "\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988"+
-        "\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF"+
-        "\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD"+
-        "\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B"+
-        "\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48"+
-        "\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8"+
-        "\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD"+
-        "\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14"+
-        "\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A"+
-        "\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26"+
-        "\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49"+
-        "\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74"+
-        "\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99"+
-        "\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50"+
-        "\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85"+
-        "\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD"+
-        "\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1"+
-        "\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05"+
-        "\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD"+
-        "\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99"+
-        "\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB"+
-        "\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09"+
-        "\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30"+
-        "\u8E34\u8E4A\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59"+
-        "\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C"+
-        "\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91"+
-        "\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1"+
-        "\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB"+
-        "\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13"+
-        "\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39"+
-        "\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57"+
-        "\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD"+
-        "\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087"+
-        "\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D"+
-        "\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"+
-        "\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056"+
-        "\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082"+
-        "\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF"+
-        "\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112"+
-        "\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165"+
-        "\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB"+
-        "\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9"+
-        "\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5"+
-        "\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E"+
-        "\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B"+
-        "\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9"+
-        "\u92B7\u92E9\u930F\u92FA\u9344\u932E\u9319\u9322"+
-        "\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C"+
-        "\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6"+
-        "\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8"+
-        "\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436"+
-        "\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B"+
-        "\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477"+
-        "\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587"+
-        "\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7"+
-        "\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3"+
-        "\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5"+
-        "\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F"+
-        "\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672"+
-        "\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1"+
-        "\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB"+
-        "\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704"+
-        "\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719"+
-        "\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746"+
-        "\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768"+
-        "\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A"+
-        "\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3"+
-        "\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED"+
-        "\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838"+
-        "\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B"+
-        "\u986F\u9870\u9871\u9874\u9873\u98AA\u98AF\u98B1"+
-        "\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909"+
-        "\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920"+
-        "\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950"+
-        "\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5"+
-        "\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1"+
-        "\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F"+
-        "\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40"+
-        "\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62"+
-        "\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC"+
-        "\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2"+
-        "\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"+
-        "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25"+
-        "\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44"+
-        "\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93"+
-        "\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4"+
-        "\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3"+
-        "\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0"+
-        "\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12"+
-        "\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30"+
-        "\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76"+
-        "\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03"+
-        "\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15"+
-        "\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\u9D5D\u9D5E"+
-        "\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB"+
-        "\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1"+
-        "\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3"+
-        "\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E"+
-        "\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92"+
-        "\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD"+
-        "\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE"+
-        "\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7"+
-        "\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15"+
-        "\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F"+
-        "\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72"+
-        "\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464"+
-        "\u51DC\u7199\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u7E8A\u891C\u9348\u9288\u84DC\u4FC9"+
-        "\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1"+
-        "\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A"+
-        "\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070"+
-        "\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE"+
-        "\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307"+
-        "\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A"+
-        "\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7"+
-        "\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D"+
-        "\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC"+
-        "\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42"+
-        "\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7";
-
-    private final static String innerIndex5=
-        "\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2"+
-        "\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460"+
-        "\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E"+
-        "\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699"+
-        "\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB"+
-        "\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14"+
-        "\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2"+
-        "\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04"+
-        "\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC"+
-        "\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5"+
-        "\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C"+
-        "\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324"+
-        "\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407"+
-        "\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F"+
-        "\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17"+
-        "\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18"+
-        "\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C"+
-        "\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6"+
-        "\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7"+
-        "\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0"+
-        "\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7"+
-        "\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4"+
-        "\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE"+
-        "\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE"+
-        "\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C"+
-        "\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278"+
-        "\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3"+
-        "\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302"+
-        "\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445"+
-        "\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B"+
-        "\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A"+
-        "\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75"+
-        "\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D"+
-        "\u9E19\u9ED1\uFFFD\uFFFD\u2170\u2171\u2172\u2173"+
-        "\u2174\u2175\u2176\u2177\u2178\u2179\uFFE2\uFFE4"+
-        "\uFF07\uFF02";
-
-    protected final static short index1[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 9, 0, 0,
-        10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
-        26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
-        42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-        58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
-        74, 75, 76, 77, 78, 0, 0, 0, 0, 79, 80, 81, 82, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-
-    protected final static String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4,
-        innerIndex5
-    };
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0208_MS932_Encoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0208_MS932_Encoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3244 +0,0 @@
-/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetEncoder;
-
-class JIS_X_0208_MS932_Encoder
-{
-    private final static String innerIndex0=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u2178"+
-        "\u212F\u0000\u0000\u2263\u0000\u0000\u0000\u2131"+
-        "\u216B\u215E\u0000\u0000\u212D\u264c\u2279\u2126"+
-        "\u2124\u0000\u0000\u2264\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u215F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u2160"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2621\u2622\u2623\u2624\u2625\u2626\u2627"+
-        "\u2628\u2629\u262A\u262B\u262C\u262D\u262E\u262F"+
-        "\u2630\u2631\u0000\u2632\u2633\u2634\u2635\u2636"+
-        "\u2637\u2638\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2641\u2642\u2643\u2644\u2645\u2646\u2647"+
-        "\u2648\u2649\u264A\u264B\u264C\u264D\u264E\u264F"+
-        "\u2650\u2651\u0000\u2652\u2653\u2654\u2655\u2656"+
-        "\u2657\u2658\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2727\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2721\u2722\u2723\u2724\u2725\u2726\u2728\u2729"+
-        "\u272A\u272B\u272C\u272D\u272E\u272F\u2730\u2731"+
-        "\u2732\u2733\u2734\u2735\u2736\u2737\u2738\u2739"+
-        "\u273A\u273B\u273C\u273D\u273E\u273F\u2740\u2741"+
-        "\u2751\u2752\u2753\u2754\u2755\u2756\u2758\u2759"+
-        "\u275A\u275B\u275C\u275D\u275E\u275F\u2760\u2761"+
-        "\u2762\u2763\u2764\u2765\u2766\u2767\u2768\u2769"+
-        "\u276A\u276B\u276C\u276D\u276E\u276F\u2770\u2771"+
-        "\u0000\u2757\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u213E\u0000\u0000\u0000\u0000\u213D\u0000\u0000"+
-        "\u2146\u2147\u0000\u0000\u2148\u2149\u0000\u0000"+
-        "\u2277\u2278\u0000\u0000\u0000\u2145\u2144\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2273\u0000\u216C\u216D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2228\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u216E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2D62\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D64\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2272\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2D35\u2D36\u2D37\u2D38\u2D39\u2D3A\u2D3B\u2D3C"+
-        "\u2D3D\u2D3E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7C71\u7C72\u7C73\u7C74\u7C75\u7C76\u7C77\u7C78"+
-        "\u7C79\u7C7A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u222B\u222C\u222A\u222D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u224D\u0000\u224E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u224F\u0000\u225F\u2250\u0000\u0000\u0000\u2260"+
-        "\u223A\u0000\u0000\u223B\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D74\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2D75\u0000\u0000\u2267\u2167\u2D78"+
-        "\u225C\u0000\u0000\u0000\u0000\u2142\u0000\u224A"+
-        "\u224B\u2241\u2240\u2D72\u226A\u0000\u2D73\u0000"+
-        "\u0000\u0000\u0000\u0000\u2168\u2268\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2266\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2262\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2162\u2261\u0000\u0000\u0000\u0000\u2165\u2166"+
-        "\u0000\u0000\u2263\u2264\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u223E\u223F\u0000\u0000\u223C\u223D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2D76\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u2D79"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u225E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2D21\u2D22\u2D23\u2D24\u2D25\u2D26\u2D27\u2D28"+
-        "\u2D29\u2D2A\u2D2B\u2D2C\u2D2D\u2D2E\u2D2F\u2D30"+
-        "\u2D31\u2D32\u2D33\u2D34\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2821\u282C\u2822\u282D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2823\u0000\u0000\u282E"+
-        "\u2824\u0000\u0000\u282F\u2826\u0000\u0000\u2831"+
-        "\u2825\u0000\u0000\u2830\u2827\u283C\u0000\u0000"+
-        "\u2837\u0000\u0000\u2832\u2829\u283E\u0000\u0000"+
-        "\u2839\u0000\u0000\u2834\u2828\u0000\u0000\u2838"+
-        "\u283D\u0000\u0000\u2833\u282A\u0000\u0000\u283A"+
-        "\u283F\u0000\u0000\u2835\u282B\u0000\u0000\u283B"+
-        "\u0000\u0000\u2840\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2836\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2223\u2222\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2225\u2224\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2227\u2226\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2221\u217E"+
-        "\u0000\u0000\u0000\u217B\u0000\u0000\u217D\u217C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u227E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u217A\u2179\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u216A\u0000\u2169\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2276\u0000\u0000\u2275\u0000\u2274"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2121\u2122\u2123\u2137\u0000\u2139\u213A\u213B"+
-        "\u2152\u2153\u2154\u2155\u2156\u2157\u2158\u2159"+
-        "\u215A\u215B\u2229\u222E\u214C\u214D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2D60\u0000\u2D61"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2421\u2422\u2423\u2424\u2425\u2426\u2427"+
-        "\u2428\u2429\u242A\u242B\u242C\u242D\u242E\u242F"+
-        "\u2430\u2431\u2432\u2433\u2434\u2435\u2436\u2437"+
-        "\u2438\u2439\u243A\u243B\u243C\u243D\u243E\u243F"+
-        "\u2440\u2441\u2442\u2443\u2444\u2445\u2446\u2447"+
-        "\u2448\u2449\u244A\u244B\u244C\u244D\u244E\u244F"+
-        "\u2450\u2451\u2452\u2453\u2454\u2455\u2456\u2457"+
-        "\u2458\u2459\u245A\u245B\u245C\u245D\u245E\u245F"+
-        "\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467"+
-        "\u2468\u2469\u246A\u246B\u246C\u246D\u246E\u246F"+
-        "\u2470\u2471\u2472\u2473\u2574\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u212B\u212C\u2135\u2136\u0000"+
-        "\u0000\u2521\u2522\u2523\u2524\u2525\u2526\u2527"+
-        "\u2528\u2529\u252A\u252B\u252C\u252D\u252E\u252F"+
-        "\u2530\u2531\u2532\u2533\u2534\u2535\u2536\u2537"+
-        "\u2538\u2539\u253A\u253B\u253C\u253D\u253E\u253F"+
-        "\u2540\u2541\u2542\u2543\u2544\u2545\u2546\u2547"+
-        "\u2548\u2549\u254A\u254B\u254C\u254D\u254E\u254F"+
-        "\u2550\u2551\u2552\u2553\u2554\u2555\u2556\u2557"+
-        "\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F"+
-        "\u2560\u2561\u2562\u2563\u2564\u2565\u2566\u2567"+
-        "\u2568\u2569\u256A\u256B\u256C\u256D\u256E\u256F"+
-        "\u2570\u2571\u2572\u2573\u2574\u2575\u2576\u0000"+
-        "\u0000\u0000\u0000\u2126\u213C\u2133\u2134\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D6A\u2D6B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D6C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2D65\u2D66\u2D67\u2D68"+
-        "\u2D69\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2D46\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2D4A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2D41\u0000\u0000\u0000"+
-        "\u2D44\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2D42\u2D4C\u0000\u0000\u2D4B\u2D45"+
-        "\u0000\u0000\u0000\u2D4D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2D47\u0000"+
-        "\u0000\u0000\u0000\u2D4F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D40\u2D4E\u0000\u0000\u2D43\u0000\u0000"+
-        "\u0000\u2D48\u0000\u0000\u0000\u0000\u0000\u2D49"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2D5F\u2D6F\u2D6E\u2D6D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2D53\u2D54"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2D50\u2D51\u2D52\u0000"+
-        "\u0000\u2D56\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2D55\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2D63\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u306C\u437A\u0000\u3C37\u0000\u0000\u0000\u4B7C"+
-        "\u3E66\u3B30\u3E65\u323C\u0000\u4954\u4D3F\u0000"+
-        "\u5022\u312F\u0000\u0000\u336E\u5023\u4024\u5242"+
-        "\u3556\u4A3A\u0000\u0000\u0000\u0000\u3E67\u0000"+
-        "\u0000\u4E3E\u0000\u0000\u0000\u0000\u4A42\u0000"+
-        "\u792D\u0000\u5024\u0000\u0000\u4366\u0000\u0000"+
-        "\u0000\u5025\u367A\u0000\u0000\u0000\u5026\u0000"+
-        "\u345D\u4330\u0000\u3C67\u5027\u0000\u0000\u5028"+
-        "\u0000\u0000\u5029\u4735\u0000\u3557\u0000\u0000"+
-        "\u0000\u0000\u0000\u4737\u0000\u4663\u3843\u4B33"+
-        "\u0000\u0000\u0000\u0000\u0000\u6949\u502A\u3E68"+
-        "\u502B\u3235\u0000\u0000\u0000\u3665\u3870\u4C69"+
-        "\u0000\u0000\u5626\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4D70\u0000\u467D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3425\u0000"+
-        "\u3535\u0000\u502C\u0000\u0000\u502D\u4E3B\u0000"+
-        "\u4D3D\u4168\u502F\u3B76\u4673\u0000\u5032\u0000"+
-        "\u0000\u313E\u385F\u0000\u385E\u3066\u0000\u0000"+
-        "\u4F4B\u4F4A\u0000\u3A33\u3021\u0000\u5033\u5034"+
-        "\u5035\u4B34\u5036\u0000\u3872\u3067\u4B72\u0000"+
-        "\u357C\u0000\u0000\u357D\u357E\u4462\u4E3C\u0000"+
-        "\u5037\u0000\u0000\u5038\u0000\u0000\u5039\u0000"+
-        "\u0000\u0000\u3F4D\u0000\u0000\u0000\u0000\u0000"+
-        "\u3D3A\u3F4E\u503E\u0000\u503C\u0000\u503D\u3558"+
-        "\u0000\u0000\u3A23\u3270\u0000\u503B\u503A\u4A29"+
-        "\u0000\u0000\u0000\u0000\u3B46\u3B45\u423E\u503F"+
-        "\u4955\u4067\u0000\u0000\u0000\u2138\u5040\u5042"+
-        "\u0000\u792E\u0000\u4265\u4E61\u304A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5041\u323E\u0000"+
-        "\u3644\u0000\u4367\u0000\u0000\u0000\u376F\u5043"+
-        "\u0000\u0000\u0000\u4724\u792F\u0000\u0000\u0000"+
-        "\u7930\u346B\u0000\u7931\u0000\u0000\u0000\u0000"+
-        "\u0000\u5044\u304B\u0000\u0000\u3860\u346C\u497A"+
-        "\u4832\u3559\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3271\u0000\u5067\u4541\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u476C"+
-        "\u5046\u0000\u0000\u0000\u483C\u0000\u4E62\u0000"+
-        "\u3F2D\u7932\u3B47\u0000\u3B77\u3240\u0000\u0000"+
-        "\u0000\u0000\u0000\u4451\u0000\u0000\u4322\u504A"+
-        "\u0000\u0000\u0000\u0000\u0000\u304C\u4463\u3D3B"+
-        "\u3A34\u4D24\u0000\u424E\u0000\u323F\u7933\u5049"+
-        "\u0000\u4D3E\u5045\u5047\u3A6E\u5048\u5524\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5050\u0000\u0000\u0000\u0000\u0000\u5053"+
-        "\u5051\u0000\u0000\u3242\u0000\u4A3B\u504B\u0000"+
-        "\u0000\u0000\u0000\u504F\u3873\u0000\u0000\u3B48"+
-        "\u0000\u0000\u0000\u3426\u0000\u0000\u5054\u0000"+
-        "\u504C\u0000\u7935\u4E63\u0000\u3B78\u0000\u504D"+
-        "\u0000\u5052\u7934\u0000\u7937\u0000\u5055\u0000"+
-        "\u504E\u0000\u7936\u3621\u0000\u304D\u0000\u0000"+
-        "\u3622\u3241\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5525\u0000\u4B79\u496E\u3874"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F2F\u4E37\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4A58"+
-        "\u0000\u0000\u3738\u4225\u3264\u0000\u0000\u0000"+
-        "\u0000\u7926\u3D53\u0000\u0000\u7938\u5059\u0000"+
-        "\u505E\u505C\u0000\u0000\u5057\u0000\u0000\u422F"+
-        "\u505A\u0000\u505D\u505B\u0000\u4A5D\u0000\u5058"+
-        "\u0000\u3F2E\u0000\u4B73\u505F\u5060\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3D24\u506D"+
-        "\u0000\u0000\u0000\u4750\u0000\u4936\u5068\u0000"+
-        "\u4A70\u0000\u3236\u0000\u0000\u0000\u506C\u793B";
-
-    private final static String innerIndex1=
-        "\u0000\u0000\u0000\u0000\u0000\u5066\u506F\u0000"+
-        "\u0000\u4152\u0000\u3844\u0000\u475C\u0000\u6047"+
-        "\u0000\u506E\u455D\u0000\u5063\u0000\u3876\u0000"+
-        "\u0000\u3875\u5061\u0000\u0000\u0000\u793C\u3C5A"+
-        "\u0000\u5069\u793A\u4A6F\u434D\u5065\u3771\u0000"+
-        "\u5062\u506A\u5064\u4E51\u506B\u4F41\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3666\u0000"+
-        "\u0000\u3770\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7939\u0000\u793F\u5070\u0000\u0000\u793D\u5071"+
-        "\u5075\u304E\u0000\u0000\u0000\u0000\u0000\u4A50"+
-        "\u5074\u0000\u0000\u0000\u0000\u5073\u5077\u0000"+
-        "\u0000\u0000\u5076\u0000\u4464\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3772\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5078\u0000\u0000\u0000"+
-        "\u793E\u0000\u3C45\u0000\u4226\u4465\u3676\u0000"+
-        "\u5079\u0000\u0000\u0000\u0000\u3536\u0000\u0000"+
-        "\u507A\u0000\u0000\u0000\u0000\u507C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4B35\u0000\u0000"+
-        "\u0000\u3766\u0000\u0000\u7940\u0000\u0000\u0000"+
-        "\u3B31\u4877\u507B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3A45\u4D43\u0000\u0000"+
-        "\u0000\u0000\u507E\u5123\u507D\u3A44\u0000\u3D7D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3739\u0000"+
-        "\u0000\u0000\u5124\u0000\u0000\u364F\u0000\u0000"+
-        "\u0000\u5121\u5122\u0000\u0000\u462F\u0000\u417C"+
-        "\u0000\u3623\u0000\u0000\u0000\u4B4D\u5125\u0000"+
-        "\u7942\u0000\u4E3D\u0000\u0000\u0000\u5126\u0000"+
-        "\u0000\u0000\u0000\u5129\u0000\u5127\u0000\u414E"+
-        "\u0000\u0000\u0000\u0000\u0000\u5128\u512A\u0000"+
-        "\u0000\u0000\u0000\u0000\u7941\u512C\u0000\u0000"+
-        "\u0000\u512B\u0000\u4A48\u0000\u0000\u0000\u0000"+
-        "\u3537\u512E\u512F\u0000\u322F\u0000\u0000\u0000"+
-        "\u0000\u512D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3C74\u0000\u5132\u5131\u5130\u0000"+
-        "\u5056\u0000\u5133\u0000\u0000\u0000\u0000\u3D7E"+
-        "\u0000\u5134\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D25\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C59\u0000\u0000\u0000\u0000\u5136"+
-        "\u0000\u0000\u5135\u5138\u5137\u0000\u0000\u5139"+
-        "\u513A\u3074\u0000\u3835\u373B\u3D3C\u437B\u3624"+
-        "\u4068\u3877\u7943\u396E\u513C\u4C48\u4546\u0000"+
-        "\u3B79\u0000\u513B\u0000\u513D\u0000\u0000\u0000"+
-        "\u0000\u0000\u455E\u0000\u3375\u0000\u0000\u0000"+
-        "\u0000\u0000\u513E\u0000\u7944\u467E\u0000\u0000"+
-        "\u4134\u5140\u5141\u482C\u3878\u4F3B\u5142\u0000"+
-        "\u0000\u3626\u0000\u0000\u0000\u4A3C\u4236\u3671"+
-        "\u4535\u0000\u0000\u0000\u3773\u0000\u0000\u0000"+
-        "\u5143\u0000\u5144\u0000\u0000\u4662\u315F\u0000"+
-        "\u0000\u5147\u3A7D\u0000\u5146\u3A46\u0000\u5148"+
-        "\u666E\u5149\u4B41\u514A\u0000\u514B\u514C\u3E69"+
-        "\u0000\u3C4C\u0000\u0000\u0000\u7945\u0000\u0000"+
-        "\u3427\u0000\u514F\u0000\u514D\u4C3D\u514E\u0000"+
-        "\u495A\u5150\u5151\u5152\u455F\u0000\u0000\u0000"+
-        "\u5156\u5154\u5155\u5153\u3A63\u5157\u4C6A\u4E64"+
-        "\u0000\u0000\u0000\u0000\u0000\u5158\u7946\u0000"+
-        "\u0000\u0000\u0000\u0000\u4028\u5159\u3D5A\u0000"+
-        "\u0000\u515A\u0000\u437C\u4E3F\u4560\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5245\u0000"+
-        "\u0000\u0000\u0000\u515B\u7425\u3645\u0000\u0000"+
-        "\u515C\u4B5E\u0000\u0000\u0000\u0000\u3D68\u427C"+
-        "\u0000\u515E\u4664\u0000\u7947\u515F\u0000\u0000"+
-        "\u5160\u332E\u0000\u0000\u0000\u5161\u3627\u0000"+
-        "\u464C\u317A\u3D50\u0000\u0000\u4821\u5162\u0000"+
-        "\u4561\u0000\u0000\u3F4F\u5163\u0000\u4A2C\u405A"+
-        "\u3422\u0000\u3429\u5164\u0000\u0000\u5166\u0000"+
-        "\u0000\u373A\u0000\u0000\u5165\u7948\u0000\u4E73"+
-        "\u0000\u0000\u0000\u0000\u0000\u3D69\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u483D\u4A4C\u0000\u5167"+
-        "\u0000\u4D78\u5168\u0000\u0000\u0000\u5169\u0000"+
-        "\u457E\u0000\u0000\u516A\u0000\u0000\u4029\u3A7E"+
-        "\u3774\u516B\u3B49\u396F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4466\u516D\u0000\u0000\u4227"+
-        "\u0000\u0000\u3A6F\u516E\u516F\u4130\u0000\u516C"+
-        "\u0000\u0000\u0000\u0000\u5171\u0000\u4B36\u0000"+
-        "\u0000\u0000\u0000\u3964\u0000\u0000\u5170\u0000"+
-        "\u0000\u0000\u0000\u3775\u3A5E\u476D\u0000\u0000"+
-        "\u0000\u5174\u5172\u0000\u0000\u0000\u0000\u497B"+
-        "\u3E6A\u517B\u3364\u5175\u5173\u414F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5177\u0000\u5176"+
-        "\u0000\u0000\u0000\u3344\u0000\u0000\u0000\u3760"+
-        "\u517C\u4E2D\u0000\u0000\u0000\u5178\u0000\u0000"+
-        "\u0000\u517D\u517A\u0000\u5179\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4E4F\u7949\u0000\u0000\u3879"+
-        "\u3243\u0000\u0000\u4E74\u0000\u0000\u794A\u0000"+
-        "\u0000\u3D75\u4558\u3965\u5222\u5223\u0000\u7B3C"+
-        "\u0000\u4E65\u0000\u0000\u4F2B\u5225\u0000\u0000"+
-        "\u0000\u387A\u0000\u0000\u5224\u0000\u332F\u0000"+
-        "\u794B\u5226\u0000\u4B56\u0000\u443C\u0000\u4D26"+
-        "\u0000\u4A59\u0000\u0000\u0000\u5227\u0000\u0000"+
-        "\u0000\u0000\u7055\u0000\u0000\u4630\u0000\u5228"+
-        "\u342A\u4C33\u0000\u794C\u0000\u3E21\u5229\u4A67"+
-        "\u522D\u0000\u402A\u522A\u3650\u0000\u522B\u342B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u372E\u522E\u0000\u522F\u0000\u0000"+
-        "\u5230\u5231\u3C5B\u0000\u0000\u0000\u387B\u4C5E"+
-        "\u794D\u4C68\u4677\u0000\u0000\u4A71\u5232\u794E"+
-        "\u5233\u0000\u0000\u0000\u0000\u5235\u0000\u5237"+
-        "\u5236\u0000\u0000\u0000\u0000\u5238\u323D\u4B4C"+
-        "\u0000\u3A7C\u5239\u0000\u0000\u4159\u0000\u0000"+
-        "\u3E22\u3629\u0000\u523A\u794F\u0000\u0000\u0000"+
-        "\u0000\u0000\u485B\u0000\u0000\u0000\u0000\u523B"+
-        "\u0000\u523C\u0000\u523D\u0000\u0000\u0000\u0000"+
-        "\u523E\u4924\u3668\u3065\u0000\u0000\u0000\u463F"+
-        "\u523F\u3D3D\u0000\u4069\u0000\u5241\u5240\u3E23"+
-        "\u3861\u5243\u483E\u0000\u0000\u5244\u0000\u0000"+
-        "\u0000\u485C\u4234\u426E\u3628\u0000\u0000\u466E"+
-        "\u4331\u0000\u476E\u0000\u4B4E\u0000\u5246\u0000"+
-        "\u406A\u0000\u0000\u0000\u0000\u0000\u3735\u0000"+
-        "\u0000\u5247\u0000\u0000\u0000\u0000\u5248\u312C"+
-        "\u3075\u346D\u7950\u4228\u3551\u4D71\u0000\u524B"+
-        "\u3237\u0000\u0000\u524A\u0000\u0000\u0000\u362A"+
-        "\u0000\u0000\u524C\u0000\u4C71\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7951\u0000\u0000\u524D\u0000"+
-        "\u4E52\u0000\u387C\u0000\u0000\u0000\u0000\u3836"+
-        "\u524E\u0000\u0000\u0000\u0000\u5250\u524F\u0000"+
-        "\u3F5F\u3139\u0000\u0000\u0000\u315E\u5251\u0000"+
-        "\u5252\u0000\u7952\u3837\u0000\u0000\u5253\u0000"+
-        "\u0000\u0000\u0000\u356E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B32\u5254\u0000\u0000\u0000\u0000"+
-        "\u4B74\u3A35\u355A\u4D27\u4150\u483F\u3C7D\u0000"+
-        "\u0000\u0000\u0000\u0000\u3D47\u0000\u3C68\u3C75"+
-        "\u0000\u3D76\u0000\u4840\u0000\u7953\u0000\u5257"+
-        "\u0000\u3143\u4151\u387D\u3845\u3667\u0000\u0000"+
-        "\u525B\u4321\u427E\u362B\u3E24\u525C\u525A\u3244"+
-        "\u4266\u3C38\u3B4B\u3126\u0000\u0000\u3370\u3966"+
-        "\u3B4A\u0000\u525D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u525E\u0000\u3549\u3346\u0000\u0000\u0000"+
-        "\u3967\u3548\u445F\u3125\u4631\u4C3E\u3921\u4D79"+
-        "\u4547\u387E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u372F\u0000\u5267\u0000\u3663"+
-        "\u4B4A\u0000\u0000\u0000\u0000\u0000\u485D\u0000"+
-        "\u0000\u5266\u0000\u345E\u5261\u5262\u5264\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5265\u0000"+
-        "\u355B\u3F61\u0000\u4A2D\u5263\u525F\u3863\u0000"+
-        "\u5260\u0000\u4F24\u0000\u0000\u0000\u4A72\u0000"+
-        "\u4468\u3862\u3970\u0000\u0000\u0000\u5268\u0000"+
-        "\u0000\u465D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u526C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C7E\u0000\u3C76\u0000\u0000\u0000\u0000\u0000"+
-        "\u526F\u526D\u0000\u4C23\u0000\u526A\u5273\u526E"+
-        "\u0000\u0000\u0000\u5271\u3846\u4C3F\u0000\u0000"+
-        "\u5272\u0000\u0000\u0000\u5274\u0000\u5276\u0000"+
-        "\u0000\u0000\u7956\u3A70\u4F42\u0000\u526B\u5269"+
-        "\u5275\u0000\u5270\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7955\u0000\u0000\u0000"+
-        "\u0000\u0000\u5278\u0000\u5323\u527A\u0000\u0000"+
-        "\u527E\u7957\u0000\u5321\u527B\u0000\u0000\u533E"+
-        "\u0000\u0000\u3A69\u3331\u0000\u0000\u0000\u0000"+
-        "\u5279\u0000\u0000\u0000\u5325\u3076\u5324\u0000"+
-        "\u3025\u494A\u5322\u0000\u527C\u0000\u0000\u5277"+
-        "\u527D\u3A48\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5326\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3077\u532F\u0000\u0000\u5327\u5328\u0000"+
-        "\u3E25\u4B69\u0000\u0000\u0000\u532D\u532C\u0000"+
-        "\u0000\u0000\u452F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u532E\u0000\u0000\u532B\u0000\u7958"+
-        "\u0000\u0000\u0000\u0000\u3134\u0000\u3A36\u3F30"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5329"+
-        "\u4562\u0000\u0000\u0000\u532A\u0000\u3022\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5334\u4D23"+
-        "\u0000\u3E27\u0000\u533A\u0000\u0000\u0000\u0000"+
-        "\u5339\u5330\u0000\u0000\u0000\u0000\u4243\u0000"+
-        "\u5331\u0000\u0000\u0000\u426F\u5336\u3E26\u0000"+
-        "\u0000\u0000\u0000\u0000\u5333\u0000\u0000\u4C64"+
-        "\u0000\u0000\u0000\u373C\u0000\u0000\u5337\u5338"+
-        "\u0000\u0000\u0000\u0000\u5335\u533B\u0000\u0000"+
-        "\u0000\u0000\u0000\u5332\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5341\u5346\u0000\u5342\u0000"+
-        "\u533D\u0000\u0000\u5347\u4131\u0000\u7959\u5349"+
-        "\u0000\u3922\u533F\u437D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5343\u533C\u342D\u0000\u346E\u3365\u5344\u5340"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3776"+
-        "\u534A\u5348\u4153\u354A\u362C\u0000\u5345\u0000"+
-        "\u3674\u0000\u0000\u0000\u0000\u0000\u3144\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u534E\u534C\u0000\u5427"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5351\u0000\u0000\u0000"+
-        "\u0000\u0000\u534B\u0000\u534F\u0000\u0000\u534D"+
-        "\u0000\u0000\u0000\u3B4C\u5350\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5353"+
-        "\u0000\u5358\u0000\u0000\u0000\u5356\u5355\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4332\u0000"+
-        "\u0000\u3245\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5352\u0000\u5354\u3E28"+
-        "\u3133\u0000\u0000\u5357\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u325E\u0000\u0000\u0000\u0000\u0000\u5362"+
-        "\u0000\u3E7C\u535E\u0000\u535C\u0000\u535D\u0000"+
-        "\u535F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u313D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4139\u0000\u5359\u0000"+
-        "\u535A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u337A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5361\u0000\u0000\u0000"+
-        "\u346F\u0000\u5364\u5360\u5363\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4A2E\u0000\u0000\u0000"+
-        "\u4655\u0000\u4838\u0000\u0000\u0000\u0000\u0000"+
-        "\u5366\u0000\u0000\u0000\u0000\u0000\u5365\u3345"+
-        "\u0000\u0000\u5367\u0000\u0000\u0000\u0000\u536A"+
-        "\u0000\u0000\u0000\u0000\u5369\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5368\u0000\u4739\u0000\u0000\u536B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u536C\u0000"+
-        "\u0000\u0000\u0000\u0000\u536E\u0000\u536D\u0000"+
-        "\u0000\u0000\u0000\u0000\u5370\u0000\u0000\u0000"+
-        "\u5373\u5371\u536F\u5372\u0000\u0000\u0000\u0000"+
-        "\u5374\u0000\u0000\u0000\u0000\u0000\u5375\u0000"+
-        "\u0000\u5376\u0000\u5377\u0000\u0000\u0000\u5378"+
-        "\u5145\u0000\u3C7C\u3B4D\u0000\u0000\u3273\u0000"+
-        "\u3078\u0000\u0000\u4344\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5379\u0000"+
-        "\u3A24\u0000\u304F\u3F5E\u0000\u0000\u0000\u0000"+
-        "\u0000\u537A\u3847\u0000\u0000\u3971\u0000\u537C"+
-        "\u537B\u0000\u0000\u4A60\u537D\u0000\u0000\u0000"+
-        "\u5421\u537E\u0000\u5422\u0000\u5423\u0000\u3777"+
-        "\u0000\u0000\u3160\u5424\u0000\u0000\u5426\u0000"+
-        "\u5425\u0000\u0000\u0000\u5428\u0000\u0000\u455A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5429\u3035"+
-        "\u3A5F\u0000\u0000\u0000\u0000\u373D\u0000\u0000"+
-        "\u434F\u0000\u0000\u0000\u0000\u0000\u0000\u542A"+
-        "\u542B\u0000\u0000\u542D\u0000\u0000\u0000\u0000"+
-        "\u542E\u0000\u3A64\u0000\u0000\u0000\u0000\u3651"+
-        "\u0000\u0000\u4B37\u0000\u0000\u0000\u542C\u542F"+
-        "\u3A41\u3923\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u795A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5433\u0000\u0000\u3A25\u795B\u4333\u0000"+
-        "\u0000\u5430\u445A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5434"+
-        "\u0000\u0000\u3F62\u0000\u0000\u0000\u0000\u0000"+
-        "\u5432\u5435\u0000\u373F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5436\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5437\u0000\u3924\u3340\u5439\u0000\u0000\u0000"+
-        "\u0000\u0000\u543A\u0000\u795C\u0000\u0000\u0000"+
-        "\u543B\u0000\u0000\u5438\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5431\u0000\u0000\u543C\u0000\u0000\u543D\u795E"+
-        "\u795D\u0000\u0000\u4B64\u0000\u0000\u3E6B\u0000"+
-        "\u0000\u0000\u543F\u5440\u543E\u0000\u5442\u0000"+
-        "\u0000\u0000\u0000\u0000\u4738\u0000\u0000\u3068"+
-        "\u4956\u0000\u0000\u5443\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3E7D\u0000\u0000\u3C39"+
-        "\u0000\u475D\u3470\u0000\u3A6B\u0000\u0000\u0000"+
-        "\u4B59\u0000\u4632\u0000\u0000\u3778\u424F\u0000"+
-        "\u0000\u0000\u5441\u5444\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4244\u0000\u0000"+
-        "\u0000\u5445\u0000\u0000\u0000\u5446\u0000\u0000"+
-        "\u0000\u5448\u0000\u0000\u4469\u0000\u0000\u0000"+
-        "\u0000\u0000\u342E\u0000\u0000\u0000\u0000\u7421"+
-        "\u3161\u4A73\u0000\u0000\u3E6C\u4548\u0000\u0000"+
-        "\u0000\u0000\u3A66\u0000\u0000\u544E\u0000\u0000"+
-        "\u4A3D\u4E5D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3274\u544A\u0000\u0000\u0000\u0000"+
-        "\u0000\u413A\u544D\u0000\u4563\u0000\u0000\u4549"+
-        "\u4564\u4839\u444D\u0000\u0000\u0000\u3A49\u0000"+
-        "\u0000\u0000\u5449\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3176\u0000\u4536\u0000\u0000\u0000\u0000"+
-        "\u544B\u0000\u5447\u0000\u0000\u3F50\u0000\u0000"+
-        "\u0000\u544F\u0000\u0000\u0000\u0000\u3D4E\u0000"+
-        "\u0000\u0000\u0000\u362D\u0000\u5450\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A68\u0000\u0000\u0000\u417D"+
-        "\u0000\u0000\u0000\u0000\u4446\u0000\u7961\u5452"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4B4F\u0000\u0000\u5453\u0000\u0000\u5458\u0000"+
-        "\u0000\u0000\u7962\u4A2F\u0000\u0000\u0000\u0000"+
-        "\u5457\u5451\u5454\u5456\u0000\u0000\u3A26\u0000"+
-        "\u0000\u4A49\u0000\u0000\u0000\u5459\u0000\u4345"+
-        "\u0000\u0000\u3275\u0000\u3E6D\u0000\u0000\u0000"+
-        "\u0000\u545B\u0000\u545A\u0000\u3968\u0000\u545C"+
-        "\u545E\u545D\u0000\u0000\u5460\u0000\u5455\u5462"+
-        "\u0000\u0000\u0000\u0000\u5461\u545F\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B4E\u3F51\u0000\u4154\u5463"+
-        "\u403C\u306D\u4764\u0000\u0000\u0000\u0000\u445B"+
-        "\u0000\u5465\u5464\u5466\u5467\u5468\u0000\u0000"+
-        "\u0000\u0000\u5469\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A51\u546A\u7963\u0000\u0000\u0000\u3246"+
-        "\u546B\u0000\u0000\u0000\u0000\u4D3C\u3330\u0000"+
-        "\u5249\u3D48\u423F\u546C\u4C6B\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C34\u0000\u0000\u546E\u0000\u4267"+
-        "\u0000\u4537\u4240\u4957\u546F\u5470\u317B\u0000"+
-        "\u0000\u3C3A\u5471\u0000\u0000\u0000\u0000\u3050"+
-        "\u5472\u0000\u0000\u0000\u0000\u0000\u5473\u0000"+
-        "\u0000\u0000\u0000\u0000\u3162\u0000\u0000\u3471"+
-        "\u4660\u4A74\u0000\u0000\u0000\u0000\u5477\u4155"+
-        "\u5476\u3740\u0000\u7964\u4B5B\u5475\u0000\u4565"+
-        "\u5479\u0000\u5478\u7965\u0000\u7966\u0000\u0000"+
-        "\u547B\u0000\u547A\u7967\u0000\u317C\u0000\u547C"+
-        "\u3E29\u547E\u4325\u0000\u547D\u0000\u4A33\u0000"+
-        "\u0000\u0000\u0000\u3D77\u455B\u0000\u0000\u0000"+
-        "\u5521\u0000\u0000\u0000\u0000\u3925\u0000\u0000"+
-        "\u0000\u5522\u4721\u485E\u4C51\u0000\u0000\u0000"+
-        "\u0000\u0000\u4725\u0000\u0000\u552B\u0000\u0000"+
-        "\u0000\u0000\u0000\u3538\u0000\u0000\u4D45\u0000"+
-        "\u0000\u4C2F\u0000\u562C\u0000\u5523\u0000\u0000"+
-        "\u0000\u0000\u0000\u5526\u7968\u4245\u0000\u0000"+
-        "\u4B38\u0000\u0000\u0000\u454A\u0000\u0000\u0000"+
-        "\u0000\u0000\u5527\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4B65\u7969\u3A4A\u0000\u0000\u3E2A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5528\u0000"+
-        "\u0000\u3B50\u0000\u3B4F\u0000\u0000\u0000\u0000"+
-        "\u3039\u3848\u0000\u402B\u3051\u0000\u0000\u0000"+
-        "\u0000\u552C\u552D\u0000\u552A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3138\u342F\u0000"+
-        "\u5529\u0000\u4C45\u4931\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3028\u0000"+
-        "\u0000\u0000\u0000\u3079\u0000\u0000\u0000\u3B51"+
-        "\u0000\u3052\u0000\u3023\u0000\u0000\u0000\u0000"+
-        "\u0000\u5532\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5530\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C3C\u0000\u5533\u0000\u5531\u0000\u0000\u552F"+
-        "\u3F31\u0000\u0000\u0000\u0000\u552E\u0000\u0000"+
-        "\u0000\u4A5A\u0000\u0000\u0000\u0000\u0000\u3864"+
-        "\u0000\u0000\u0000\u0000\u0000\u5537\u5538\u0000"+
-        "\u0000\u0000\u0000\u0000\u3E2B\u0000\u0000\u0000"+
-        "\u5534\u4F2C\u0000\u0000\u0000\u0000\u474C\u0000"+
-        "\u0000\u5536\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A27\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5539\u0000\u0000\u0000\u4958\u0000"+
-        "\u0000\u0000\u553A\u0000\u5535\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4C3B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u475E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u553B\u4932\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u553C\u5540\u553D\u0000"+
-        "\u0000\u3247\u553F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3C3B\u0000\u553E\u3779\u0000\u0000\u0000"+
-        "\u554C\u0000\u0000\u0000\u0000\u0000\u5545\u5542"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4364\u0000\u5541\u0000\u0000\u5543\u0000"+
-        "\u0000\u5544\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5546\u5547\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3472\u0000\u5549\u5548\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u554A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3E6E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u554D\u0000\u445C\u0000\u0000\u0000"+
-        "\u3145\u0000\u554B\u0000\u0000\u0000\u554E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u554F\u0000"+
-        "\u5552\u0000\u0000\u5550\u0000\u5551\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3B52\u5553\u0000\u0000\u3926\u5554\u796A\u3B7A"+
-        "\u4238\u0000\u5555\u5556\u3B5A\u3927\u0000\u4C52"+
-        "\u0000\u0000\u0000\u3528\u3849\u5557\u3358\u0000"+
-        "\u0000\u5558\u0000\u4239\u0000\u0000\u0000\u0000"+
-        "\u5559\u5623\u0000\u555A\u0000\u555B\u0000\u0000"+
-        "\u555C\u0000\u555E\u0000\u0000\u0000\u0000\u0000"+
-        "\u555F\u0000\u0000\u5560\u0000\u4270\u0000\u3127"+
-        "\u3C69\u3042\u0000\u4157\u3430\u3C35\u0000\u3928"+
-        "\u0000\u0000\u0000\u0000\u0000\u4566\u0000\u3D21"+
-        "\u3431\u4368\u446A\u3038\u3539\u4A75\u0000\u3C42"+
-        "\u0000\u0000\u3552\u406B\u3C3C\u4D28\u5561\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u355C\u0000"+
-        "\u3A4B\u0000\u0000\u3332\u3163\u3E2C\u3248\u0000"+
-        "\u5562\u4D46\u0000\u0000\u0000\u0000\u0000\u3D49"+
-        "\u796B\u0000\u3C64\u5563\u3473\u4652\u4C29\u5564"+
-        "\u0000\u5565\u0000\u0000\u4959\u0000\u0000\u0000"+
-        "\u5567\u0000\u3428\u3677\u5566\u0000\u0000\u0000"+
-        "\u796D\u0000\u0000\u3432\u0000\u3F32\u556B\u3B21"+
-        "\u0000\u3249\u556A\u0000\u5568\u556C\u5569\u472B"+
-        "\u5C4D\u3F33\u0000\u556D\u796E\u0000\u4E40\u0000"+
-        "\u556E\u0000\u0000\u5570\u0000\u437E\u556F\u0000"+
-        "\u4023\u0000\u3B7B\u0000\u0000\u0000\u4250\u3C77"+
-        "\u0000\u4975\u406C\u0000\u3C4D\u5571\u3E2D\u5572"+
-        "\u5573\u3053\u423A\u3F52\u0000\u5574\u4633\u3E2E"+
-        "\u0000\u3E2F\u0000\u5575\u0000\u0000\u406D\u0000"+
-        "\u0000\u0000\u3E30\u0000\u0000\u0000\u796F\u0000"+
-        "\u5576\u0000\u5577\u0000\u4C60\u0000\u0000\u0000"+
-        "\u5578\u0000\u0000\u0000\u0000\u3646\u0000\u0000"+
-        "\u0000\u3D22\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5579\u557A\u3C5C\u3F2C\u4674\u3F54\u4878\u4722"+
-        "\u3649\u557B\u0000\u0000\u0000\u356F\u557C\u0000"+
-        "\u367E\u0000\u464F\u3230\u0000\u3B53\u557D\u5622"+
-        "\u5621\u367D\u0000\u557E\u0000\u4538\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4230\u0000"+
-        "\u454B\u3C48\u0000\u0000\u4158\u4D7A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5624\u0000\u5625\u4656"+
-        "\u0000\u3B33\u0000\u0000\u0000\u0000\u5627\u0000"+
-        "\u0000\u5628\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5629\u0000\u0000\u0000"+
-        "\u3474\u562A\u0000\u0000\u562B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u322C\u0000\u0000\u0000\u0000\u7970\u0000"+
-        "\u413B\u3464\u0000\u562D\u4C28\u0000\u0000\u0000"+
-        "\u0000\u4252\u0000\u3359\u0000\u0000\u562F\u5631"+
-        "\u345F\u0000\u7971\u562E\u5630\u0000\u5633\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5632\u0000\u5634"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5635\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u463D\u362E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3265\u5636\u563B\u0000\u0000\u5639\u0000\u4A77"+
-        "\u4A76\u0000\u0000\u0000\u0000\u7972\u4567\u0000"+
-        "\u0000\u0000\u5638\u3D54\u0000\u5637\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3F72"+
-        "\u0000\u0000\u0000\u563C\u0000\u0000\u3A6A\u0000"+
-        "\u0000\u5642\u0000\u0000\u5643\u563D\u3333\u563E"+
-        "\u5647\u5646\u5645\u5641\u0000\u0000\u0000\u5640"+
-        "\u0000\u0000\u5644\u0000\u0000\u0000\u0000\u7973"+
-        "\u0000\u4A78\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u7976\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u564B\u5648\u0000\u564A\u0000"+
-        "\u4D72\u0000\u5649\u7974\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u563F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F73\u0000\u0000\u564C\u7977\u0000\u3A37"+
-        "\u0000\u0000\u0000\u564D\u0000\u0000\u564E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5651\u0000\u5650\u0000\u0000\u564F"+
-        "\u0000\u0000\u0000\u4568\u563A\u0000\u0000\u0000"+
-        "\u5657\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5653\u0000\u0000"+
-        "\u0000\u0000\u5652\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5654\u0000\u5655\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5658"+
-        "\u7978\u7979\u4E66\u0000\u5659\u5656\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u565A\u0000\u0000\u3460\u565B\u0000\u0000"+
-        "\u797A\u0000\u565D\u565C\u0000\u0000\u565E\u0000"+
-        "\u0000\u0000\u0000\u565F\u0000\u406E\u3D23\u0000"+
-        "\u0000\u3D64\u0000\u4163\u0000\u3929\u3A38\u392A"+
-        "\u3570\u0000\u0000\u5660\u0000\u0000\u3A39\u0000"+
-        "\u0000\u384A\u5661\u4C26\u4743\u5662\u0000\u392B"+
-        "\u0000\u0000\u0000\u342C\u0000\u4327\u3652\u0000"+
-        "\u0000\u0000\u3B54\u495B\u0000\u0000\u4841\u0000"+
-        "\u0000\u0000\u0000\u5663\u3475\u0000\u0000\u0000"+
-        "\u0000\u5666\u0000\u0000\u0000\u0000\u4421\u0000"+
-        "\u0000\u5665\u5664\u5667\u0000\u446B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F63\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B55\u0000\u404A\u0000\u4253"+
-        "\u3522\u0000\u0000\u4422\u0000\u0000\u5668\u5669"+
-        "\u3E6F\u0000\u0000\u0000\u0000\u4B39\u0000\u0000"+
-        "\u566C\u0000\u0000\u566B\u566A\u497D\u0000\u5673"+
-        "\u0000\u0000\u0000\u0000\u4B5A\u0000\u566D\u0000"+
-        "\u0000\u0000\u0000\u0000\u566F\u4B6B\u0000\u566E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5670"+
-        "\u0000\u4828\u5671\u4A3E\u5672\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3433\u4A3F\u472F\u5674\u5675\u0000"+
-        "\u392C\u3434\u5676\u3838\u4D44\u4D29\u3476\u5678"+
-        "\u0000\u4423\u0000\u392D\u3E31\u0000\u0000\u485F"+
-        "\u0000\u0000\u3E32\u0000\u0000\u0000\u0000\u3D78"+
-        "\u0000\u0000\u0000\u0000\u0000\u446C\u4A79\u4539"+
-        "\u0000\u0000\u392E\u0000\u495C\u0000\u0000\u0000"+
-        "\u5679\u0000\u0000\u0000\u0000\u0000\u4559\u3A42"+
-        "\u0000\u0000\u0000\u384B\u0000\u446D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3043\u3D6E\u392F"+
-        "\u4D47\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u567A\u567B\u4751\u0000\u0000\u0000\u0000"+
-        "\u567C\u4E77\u4F2D\u0000\u0000\u0000\u0000\u567E"+
-        "\u567D\u0000\u0000\u3347\u0000\u0000\u5721\u0000"+
-        "\u0000\u0000\u5724\u5725\u0000\u5723\u0000\u4940"+
-        "\u3E33\u5727\u5726\u5722\u0000\u0000\u0000\u0000"+
-        "\u5728\u5729\u0000\u0000\u572A\u0000\u0000\u0000"+
-        "\u572D\u572B\u0000\u572C\u572E\u0000\u3164\u446E"+
-        "\u572F\u0000\u377A\u3276\u4736\u0000\u5730\u467B"+
-        "\u0000\u4A5B\u0000\u5731\u4F2E\u0000\u0000\u0000"+
-        "\u0000\u5732\u4A40\u5735\u5021\u5031\u0000\u3C30"+
-        "\u4675\u5736\u0000\u355D\u4424\u307A\u5737\u4A26"+
-        "\u3930\u0000\u0000\u4350\u0000\u0000\u0000\u446F"+
-        "\u0000\u797B\u0000\u0000\u0000\u4C6F\u3839\u384C"+
-        "\u0000\u5738\u0000\u0000\u0000\u5739\u0000\u573F"+
-        "\u0000\u3C65\u0000\u0000\u797C\u4425\u0000\u362F"+
-        "\u573A\u0000\u0000\u0000\u492B\u0000\u4346\u0000"+
-        "\u0000\u573B\u0000\u0000\u0000\u792C\u0000\u0000"+
-        "\u573C\u0000\u3630\u0000\u573D\u0000\u573E\u0000"+
-        "\u0000\u5740\u0000\u4576\u0000\u0000\u5741\u5742"+
-        "\u0000\u5743\u0000\u0000\u5734\u5733\u0000\u0000"+
-        "\u0000\u5744\u3741\u0000\u0000\u0000\u4927\u797D"+
-        "\u0000\u3A4C\u4937\u4426\u494B\u5745\u0000\u0000"+
-        "\u3E34\u3146\u0000\u5746\u0000\u0000\u0000\u5747"+
-        "\u0000\u4C72\u0000\u0000\u4860\u0000\u0000\u574A"+
-        "\u317D\u402C\u5749\u5748\u3742\u4254\u0000\u574E"+
-        "\u574C\u0000\u574B\u4E27\u3865\u0000\u0000\u0000"+
-        "\u3D79\u574D\u454C\u3D3E\u0000\u0000\u0000\u4640"+
-        "\u5751\u5750\u0000\u0000\u0000\u0000\u574F\u0000"+
-        "\u5752\u3866\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5753\u497C\u3D5B\u0000\u0000\u5754\u4879\u0000"+
-        "\u0000\u0000\u0000\u4641\u4427\u0000\u0000\u797E"+
-        "\u0000\u4530\u0000\u0000\u5755\u352B\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F34\u0000\u492C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3477\u4726\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5756\u3B56"+
-        "\u4B3A\u4B3B\u0000\u0000\u317E\u575B\u7A21\u0000"+
-        "\u4369\u0000\u0000\u0000\u5758\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3277\u0000\u0000\u0000\u0000"+
-        "\u582D\u575A\u0000\u0000\u0000\u4730\u0000\u0000"+
-        "\u5759\u0000\u0000\u5757\u0000\u397A\u0000\u575D";
-
-    private final static String innerIndex2=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5763\u5769"+
-        "\u5761\u0000\u455C\u0000\u0000\u5766\u495D\u0000"+
-        "\u0000\u5760\u0000\u5765\u4E67\u3B57\u0000\u0000"+
-        "\u4255\u575E\u0000\u0000\u0000\u355E\u5768\u402D"+
-        "\u3165\u5762\u3278\u5767\u0000\u0000\u0000\u3631"+
-        "\u0000\u5764\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u576A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u576C\u5776\u5774\u0000\u0000\u5771\u0000"+
-        "\u0000\u0000\u5770\u4E78\u0000\u5772\u0000\u0000"+
-        "\u3632\u0000\u3931\u0000\u0000\u3D7A\u0000\u0000"+
-        "\u0000\u5779\u576B\u0000\u0000\u7A22\u0000\u576F"+
-        "\u575F\u0000\u327A\u5773\u5775\u4351\u0000\u0000"+
-        "\u3A28\u3238\u576D\u5778\u5777\u3633\u0000\u4229"+
-        "\u3366\u0000\u0000\u0000\u0000\u3743\u0000\u576E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u577A\u0000\u577D\u5821\u7A23\u0000\u0000"+
-        "\u0000\u3C3D\u7A24\u5827\u4470\u577B\u0000\u0000"+
-        "\u0000\u0000\u5825\u0000\u3279\u0000\u5823\u5824"+
-        "\u0000\u0000\u577E\u5822\u0000\u0000\u0000\u3867"+
-        "\u4D2A\u0000\u0000\u3435\u0000\u0000\u3159\u5826"+
-        "\u0000\u473A\u302D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4861\u575C\u582C\u5830\u4C65\u0000"+
-        "\u5829\u0000\u0000\u0000\u4569\u582E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3E70\u582F\u4657"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4F47\u0000\u582B\u0000\u7A26\u0000\u0000"+
-        "\u5831\u0000\u397B\u0000\u404B\u0000\u7A25\u3054"+
-        "\u582A\u5828\u0000\u415A\u0000\u0000\u0000\u577C"+
-        "\u3B34\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4246\u583D\u7A28\u415B\u5838\u0000\u5835\u5836"+
-        "\u0000\u3C66\u5839\u583C\u0000\u0000\u0000\u0000"+
-        "\u5837\u3D25\u0000\u583A\u0000\u0000\u5834\u0000"+
-        "\u4C7C\u4C7B\u0000\u0000\u0000\u583E\u583F\u3055"+
-        "\u0000\u7A29\u0000\u0000\u0000\u5833\u0000\u0000"+
-        "\u0000\u0000\u3672\u3026\u0000\u0000\u0000\u3436"+
-        "\u7A27\u583B\u0000\u0000\u0000\u0000\u0000\u5843"+
-        "\u5842\u0000\u0000\u0000\u5847\u0000\u0000\u0000"+
-        "\u7A2B\u0000\u0000\u0000\u5848\u0000\u0000\u7A2A"+
-        "\u0000\u0000\u0000\u0000\u5846\u5849\u5841\u5845"+
-        "\u0000\u0000\u584A\u0000\u584B\u0000\u0000\u5840"+
-        "\u3B7C\u0000\u5844\u4256\u3932\u5832\u3F35\u0000"+
-        "\u0000\u0000\u0000\u5858\u0000\u4A69\u0000\u0000"+
-        "\u584E\u584F\u5850\u0000\u0000\u5857\u0000\u5856"+
-        "\u0000\u0000\u4B7D\u3437\u0000\u5854\u0000\u3745"+
-        "\u3334\u0000\u0000\u5851\u0000\u0000\u4E38\u5853"+
-        "\u3056\u5855\u0000\u584C\u5852\u5859\u3744\u584D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4D5D\u0000"+
-        "\u0000\u0000\u4D2B\u0000\u0000\u0000\u0000\u585C"+
-        "\u0000\u0000\u5860\u0000\u0000\u0000\u417E\u0000"+
-        "\u4E79\u5861\u0000\u0000\u585E\u0000\u585B\u0000"+
-        "\u7A2C\u585A\u585F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4A30\u0000\u0000\u4634"+
-        "\u0000\u3746\u0000\u5862\u585D\u0000\u5863\u0000"+
-        "\u0000\u0000\u377B\u0000\u0000\u0000\u3231\u0000"+
-        "\u0000\u0000\u586B\u0000\u0000\u0000\u3438\u0000"+
-        "\u0000\u0000\u0000\u5869\u0000\u0000\u586A\u3A29"+
-        "\u5868\u5866\u5865\u586C\u5864\u586E\u0000\u0000"+
-        "\u327B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5870\u0000\u0000\u586F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4428\u0000\u5873\u0000\u5871\u5867"+
-        "\u377C\u0000\u5872\u0000\u5876\u5875\u5877\u5874"+
-        "\u5878\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5879\u587A\u4A6A\u0000\u587C\u587B\u3D3F\u0000"+
-        "\u402E\u3266\u327C\u7A2D\u587D\u0000\u303F\u0000"+
-        "\u0000\u0000\u404C\u587E\u0000\u6C43\u5921\u3761"+
-        "\u0000\u5922\u0000\u0000\u0000\u0000\u406F\u0000"+
-        "\u0000\u0000\u5923\u0000\u0000\u0000\u5924\u353A"+
-        "\u5925\u0000\u5926\u5927\u4257\u0000\u0000\u0000"+
-        "\u384D\u0000\u0000\u4C61\u0000\u0000\u0000\u4B3C"+
-        "\u3D6A\u5928\u0000\u0000\u0000\u0000\u0000\u4070"+
-        "\u6E3D\u4862\u0000\u3C6A\u0000\u3A4D\u5929\u0000"+
-        "\u0000\u0000\u0000\u4247\u0000\u4A27\u0000\u0000"+
-        "\u4271\u0000\u0000\u592C\u0000\u0000\u592A\u0000"+
-        "\u592D\u0000\u0000\u592B\u0000\u0000\u0000\u0000"+
-        "\u592E\u0000\u0000\u0000\u0000\u0000\u4A31\u0000"+
-        "\u0000\u3037\u0000\u0000\u0000\u0000\u495E\u0000"+
-        "\u0000\u4863\u0000\u0000\u592F\u0000\u5932\u3E35"+
-        "\u353B\u0000\u5930\u5937\u3E36\u0000\u0000\u0000"+
-        "\u0000\u5931\u4744\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4D5E\u5933\u5934\u5938\u456A\u5935\u3933"+
-        "\u405E\u0000\u0000\u5946\u4834\u0000\u4272\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7A2E\u0000"+
-        "\u0000\u0000\u0000\u4864\u5A2D\u0000\u0000\u0000"+
-        "\u0000\u4A7A\u0000\u0000\u0000\u4471\u0000\u0000"+
-        "\u0000\u4B75\u0000\u593B\u3221\u436A\u0000\u0000"+
-        "\u0000\u0000\u5944\u0000\u0000\u4334\u593E\u5945"+
-        "\u5940\u5947\u5943\u0000\u5942\u476F\u0000\u593C"+
-        "\u327D\u593A\u3571\u4273\u5936\u0000\u0000\u5939"+
-        "\u3934\u405B\u0000\u3E37\u5941\u4752\u0000\u0000"+
-        "\u3572\u3348\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3367\u3F21\u5949\u594E"+
-        "\u0000\u594A\u0000\u377D\u0000\u594F\u3B22\u3969"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3D26\u593D"+
-        "\u0000\u3B7D\u594C\u0000\u0000\u0000\u0000\u3B58"+
-        "\u594D\u3044\u0000\u0000\u5948\u0000\u0000\u0000"+
-        "\u0000\u4429\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3573\u0000\u0000\u0000\u0000\u0000\u3634"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u594B"+
-        "\u3027\u0000\u0000\u3A43\u0000\u0000\u0000\u3F36"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4472\u0000\u0000\u4854\u5951\u415E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u422A\u0000\u0000\u3B2B\u5952\u0000\u5954"+
-        "\u5950\u0000\u0000\u0000\u0000\u4A61\u0000\u443D"+
-        "\u0000\u0000\u0000\u0000\u415C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4A7B"+
-        "\u3C4E\u5960\u0000\u595F\u0000\u0000\u3F78\u0000"+
-        "\u0000\u0000\u377E\u0000\u0000\u0000\u5959\u3E39"+
-        "\u0000\u0000\u4668\u4731\u0000\u0000\u0000\u0000"+
-        "\u5957\u0000\u0000\u415D\u0000\u0000\u0000\u0000"+
-        "\u3C78\u595C\u0000\u0000\u3E38\u0000\u5956\u595B"+
-        "\u0000\u0000\u4753\u0000\u0000\u0000\u5955\u0000"+
-        "\u3721\u0000\u0000\u335D\u0000\u0000\u0000\u595D"+
-        "\u4E2B\u3A4E\u4335\u595A\u0000\u405C\u0000\u3935"+
-        "\u3F64\u3166\u413C\u5958\u3545\u0000\u0000\u0000"+
-        "\u0000\u0000\u3747\u0000\u444F\u595E\u0000\u0000"+
-        "\u0000\u0000\u0000\u415F\u0000\u0000\u5961\u0000"+
-        "\u5963\u0000\u0000\u4237\u5969\u0000\u5964\u0000"+
-        "\u0000\u5966\u0000\u0000\u0000\u0000\u0000\u4941"+
-        "\u4473\u0000\u5967\u0000\u0000\u0000\u4D2C\u0000"+
-        "\u0000\u0000\u4D48\u3439\u0000\u0000\u0000\u0000"+
-        "\u0000\u302E\u0000\u5965\u0000\u0000\u0000\u0000"+
-        "\u0000\u5962\u0000\u0000\u0000\u0000\u3478\u0000"+
-        "\u0000\u0000\u0000\u0000\u3167\u7A2F\u5968\u0000"+
-        "\u0000\u0000\u4D49\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u596C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u423B\u0000\u5973"+
-        "\u0000\u0000\u0000\u596D\u0000\u0000\u596A\u5971"+
-        "\u0000\u0000\u0000\u0000\u5953\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u596E\u0000"+
-        "\u5972\u0000\u0000\u0000\u4842\u456B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u596B\u0000\u596F\u0000"+
-        "\u0000\u0000\u3748\u0000\u0000\u0000\u3A71\u0000"+
-        "\u0000\u0000\u405D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5977\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4526\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7A30\u0000\u0000\u0000\u0000\u0000\u0000\u5974"+
-        "\u0000\u4B60\u0000\u0000\u0000\u0000\u0000\u5975"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5976\u0000"+
-        "\u4C4E\u0000\u4022\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3762\u0000\u0000\u0000\u0000"+
-        "\u597D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B35\u597A\u0000\u5979\u0000\u0000"+
-        "\u0000\u0000\u4732\u0000\u0000\u7A31\u4635\u0000"+
-        "\u0000\u0000\u0000\u0000\u4531\u597B\u0000\u0000"+
-        "\u0000\u597C\u0000\u496F\u0000\u4745\u3B23\u0000"+
-        "\u4071\u0000\u4B50\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3349\u0000\u5A25\u597E\u0000\u0000\u0000"+
-        "\u0000\u4D4A\u5A27\u0000\u0000\u5A23\u0000\u5A24"+
-        "\u0000\u0000\u0000\u0000\u0000\u4160\u7A32\u0000"+
-        "\u0000\u0000\u5A22\u0000\u593F\u0000\u0000\u0000"+
-        "\u5A26\u0000\u5A21\u0000\u0000\u0000\u0000\u0000"+
-        "\u5A2B\u5A2C\u4527\u5A2E\u0000\u0000\u3B24\u5A29"+
-        "\u0000\u0000\u0000\u0000\u353C\u0000\u0000\u5A2F"+
-        "\u0000\u5A28\u5A33\u0000\u5A32\u0000\u5A31\u0000"+
-        "\u0000\u0000\u5A34\u0000\u0000\u5A36\u3E71\u0000"+
-        "\u5A35\u0000\u0000\u0000\u0000\u5A39\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5A37\u0000\u0000\u0000\u5A38\u5970\u0000\u0000"+
-        "\u0000\u0000\u0000\u5A3B\u5A3A\u0000\u0000\u0000"+
-        "\u0000\u0000\u5978\u5A3C\u5A30\u0000\u0000\u3B59"+
-        "\u0000\u0000\u0000\u0000\u5A3D\u5A3E\u5A40\u5A3F"+
-        "\u5A41\u327E\u0000\u3936\u0000\u0000\u4A7C\u402F"+
-        "\u0000\u0000\u0000\u0000\u0000\u384E\u0000\u0000"+
-        "\u5A43\u0000\u0000\u0000\u0000\u5A46\u7A33\u4952"+
-        "\u0000\u355F\u0000\u0000\u0000\u5A45\u5A44\u4754"+
-        "\u5A47\u3635\u0000\u0000\u0000\u5A49\u5A48\u0000"+
-        "\u0000\u0000\u343A\u3B36\u0000\u0000\u4658\u0000"+
-        "\u0000\u0000\u0000\u0000\u3749\u0000\u0000\u0000"+
-        "\u3F74\u0000\u5A4A\u0000\u4030\u4528\u0000\u495F"+
-        "\u5A4B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5A4C\u5A4D\u0000\u0000\u0000\u4A38"+
-        "\u555D\u4046\u0000\u0000\u494C\u0000\u3A58\u0000"+
-        "\u4865\u4843\u0000\u0000\u0000\u0000\u0000\u454D"+
-        "\u0000\u4E41\u0000\u5A4F\u3C50\u0000\u0000\u5A50"+
-        "\u0000\u3036\u0000\u0000\u3654\u404D\u0000\u4960"+
-        "\u0000\u0000\u0000\u5A51\u3B42\u4347\u0000\u3B5B"+
-        "\u3F37\u0000\u0000\u0000\u0000\u0000\u0000\u5A52"+
-        "\u0000\u4A7D\u0000\u0000\u3177\u3B5C\u0000\u0000"+
-        "\u0000\u5A55\u0000\u5A53\u5A56\u4E39\u5A54\u0000"+
-        "\u0000\u0000\u0000\u407B\u5A57\u0000\u0000\u4232"+
-        "\u0000\u0000\u5A58\u0000\u0000\u0000\u0000\u347A"+
-        "\u0000\u5A5A\u0000\u5A59\u0000\u0000\u0000\u0000"+
-        "\u5A5B\u5A5C\u347B\u0000\u0000\u467C\u4336\u356C"+
-        "\u3B5D\u4161\u0000\u0000\u3D5C\u3030\u0000\u0000"+
-        "\u0000\u5A5D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3222\u5A61\u0000\u0000\u0000\u0000"+
-        "\u7A34\u0000\u3937\u5A60\u0000\u0000\u3A2B\u3E3A"+
-        "\u0000\u7A37\u5A5F\u0000\u3E3B\u0000\u4C40\u3A2A"+
-        "\u0000\u0000\u0000\u3057\u404E\u7A35\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5A66\u0000\u7A39\u4031"+
-        "\u3147\u0000\u0000\u0000\u7A3A\u3D55\u0000\u4B66"+
-        "\u3A72\u0000\u0000\u0000\u0000\u3E3C\u7A38\u4027"+
-        "\u0000\u7928\u0000\u0000\u5A65\u5A63\u5A64\u0000"+
-        "\u0000\u0000\u0000\u7A36\u436B\u0000\u0000\u5B26"+
-        "\u0000\u5A6A\u3B7E\u3938\u5A68\u0000\u0000\u0000"+
-        "\u0000\u5A69\u0000\u3F38\u0000\u0000\u0000\u5A67"+
-        "\u0000\u0000\u3B2F\u0000\u0000\u0000\u0000\u7A3C"+
-        "\u0000\u7A3D\u0000\u0000\u0000\u5A6C\u5A6B\u5A70"+
-        "\u0000\u0000\u5A71\u0000\u5A6D\u7A3B\u3322\u5A6E"+
-        "\u5A6F\u4855\u0000\u0000\u0000\u0000\u4961\u374A"+
-        "\u5A72\u0000\u0000\u7A3F\u4032\u0000\u3E3D\u0000"+
-        "\u0000\u0000\u4352\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3647\u0000\u5A73\u5A77\u0000\u0000\u324B"+
-        "\u5A74\u5A76\u0000\u0000\u0000\u0000\u5A75\u0000"+
-        "\u0000\u3D6B\u0000\u0000\u0000\u0000\u4348\u3045"+
-        "\u5A78\u7A40\u0000\u0000\u0000\u5A79\u0000\u0000"+
-        "\u7A41\u0000\u442A\u0000\u0000\u0000\u4E71\u0000"+
-        "\u0000\u0000\u0000\u3B43\u0000\u0000\u4A6B\u0000"+
-        "\u0000\u0000\u7A42\u0000\u4B3D\u0000\u0000\u0000"+
-        "\u5B22\u5A7B\u0000\u0000\u5A7E\u0000\u5A7D\u7A43"+
-        "\u0000\u5A7A\u0000\u0000\u5B21\u0000\u0000\u465E"+
-        "\u0000\u5A7C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B23\u0000"+
-        "\u0000\u3D6C\u5B24\u0000\u4D4B\u4778\u0000\u0000"+
-        "\u5B25\u0000\u0000\u0000\u0000\u0000\u5B27\u0000"+
-        "\u0000\u5B28\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5B29\u0000\u364A\u3148\u3939\u5B2A\u0000\u5B2B"+
-        "\u3D71\u4162\u7A44\u792B\u5258\u413E\u413D\u4258"+
-        "\u3A47\u0000\u0000\u5072\u0000\u0000\u0000\u0000"+
-        "\u376E\u4D2D\u0000\u4A7E\u0000\u497E\u7A45\u5B2C"+
-        "\u0000\u0000\u0000\u0000\u3A73\u443F\u5B2D\u4F2F"+
-        "\u0000\u0000\u0000\u4B3E\u0000\u442B\u5B2E\u347C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B2F\u5B30"+
-        "\u4C5A\u0000\u4C24\u4B76\u4B5C\u3B25\u5B32\u0000"+
-        "\u0000\u3C6B\u0000\u0000\u4B51\u0000\u5B34\u5B37"+
-        "\u5B36\u0000\u3479\u0000\u0000\u3560\u0000\u5B33"+
-        "\u0000\u5B35\u0000\u0000\u0000\u0000\u5B38\u0000"+
-        "\u0000\u3F79\u0000\u0000\u0000\u0000\u4D7B\u3049"+
-        "\u3A60\u423C\u0000\u3C5D\u0000\u0000\u3E73\u0000"+
-        "\u0000\u5B3B\u0000\u0000\u454E\u0000\u5B39\u422B"+
-        "\u5B3A\u3E72\u4C5D\u5B3C\u5B3D\u4D68\u7A47\u0000"+
-        "\u0000\u0000\u5B42\u0000\u0000\u393A\u0000\u4755"+
-        "\u5B3F\u456C\u5A5E\u5A62\u0000\u354F\u0000\u4747"+
-        "\u0000\u0000\u0000\u0000\u5B41\u0000\u3E3E\u4844"+
-        "\u0000\u0000\u0000\u0000\u0000\u5B47\u0000\u487A"+
-        "\u0000\u5B3E\u0000\u5B44\u5B43\u0000\u0000\u0000"+
-        "\u404F\u0000\u0000\u0000\u0000\u4B6D\u0000\u4E53"+
-        "\u0000\u0000\u4B67\u0000\u324C\u3B5E\u0000\u0000"+
-        "\u4F48\u5B46\u3F75\u0000\u0000\u0000\u5B45\u0000"+
-        "\u0000\u5B40\u0000\u0000\u0000\u0000\u0000\u384F"+
-        "\u0000\u0000\u0000\u5B4C\u5B4A\u0000\u324D\u5B48"+
-        "\u5B4E\u5B54\u0000\u7A48\u0000\u0000\u0000\u0000"+
-        "\u7A4A\u4248\u0000\u0000\u4A41\u0000\u5B56\u0000"+
-        "\u0000\u0000\u4922\u0000\u0000\u0000\u5B55\u4770"+
-        "\u4B3F\u343B\u0000\u4077\u3D40\u0000\u0000\u0000"+
-        "\u4453\u0000\u4D2E\u0000\u0000\u5B51\u5B50\u0000"+
-        "\u0000\u0000\u5B52\u0000\u5B4F\u0000\u0000\u5B57"+
-        "\u0000\u5B4D\u0000\u0000\u5B4B\u0000\u5B53\u5B49"+
-        "\u0000\u436C\u0000\u4C78\u3C46\u3A74\u0000\u0000"+
-        "\u0000\u0000\u0000\u3A3A\u0000\u0000\u4B6F\u3341"+
-        "\u0000\u7A4B\u444E\u464A\u3149\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4072\u0000\u0000\u4034\u372A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B59\u0000"+
-        "\u0000\u393B\u337C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5B5B\u3374\u5B61\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5B5E\u0000\u4073\u0000\u0000\u0000"+
-        "\u334B\u3A2C\u0000\u0000\u334A\u3A4F\u0000\u0000"+
-        "\u5B5C\u3765\u374B\u456D\u7A4C\u0000\u5B5A\u0000"+
-        "\u3046\u0000\u0000\u0000\u0000\u5B5D\u5B5F\u0000"+
-        "\u364D\u372C\u7A49\u343C\u354B\u0000\u0000\u0000"+
-        "\u0000\u5B62\u0000\u0000\u3A79\u4B71\u0000\u3B37"+
-        "\u0000\u0000\u0000\u5B63\u0000\u0000\u0000\u4930"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5B6F\u0000\u3233\u5B64"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B75\u5B65"+
-        "\u0000\u4E42\u0000\u5B6C\u0000\u475F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5B74\u0000\u5B67"+
-        "\u0000\u0000\u0000\u3034\u5B69\u0000\u0000\u393C"+
-        "\u0000\u0000\u0000\u5B6B\u0000\u5B6A\u0000\u5B66"+
-        "\u5B71\u0000\u3E3F\u0000\u0000\u0000\u546D\u3868"+
-        "\u4D7C\u0000\u0000\u0000\u0000\u5B68\u0000\u4474"+
-        "\u3323\u3A2D\u0000\u5B60\u0000\u5B70\u3361\u0000"+
-        "\u0000\u5B6E\u5B72\u0000\u456E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u347E\u0000\u5C32\u0000"+
-        "\u7929\u4C49\u5B77\u347D\u0000\u5B7E\u0000\u7A4D"+
-        "\u0000\u0000\u4B40\u0000\u5C21\u5C23\u0000\u5C27"+
-        "\u5B79\u0000\u432A\u0000\u0000\u0000\u0000\u456F"+
-        "\u5C2B\u5B7C\u0000\u5C28\u0000\u0000\u0000\u5C22"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3F39\u5C2C"+
-        "\u0000\u0000\u4033\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C2A\u343D\u0000\u0000\u0000\u0000\u0000"+
-        "\u4F50\u5B76\u0000\u0000\u5C26\u3058\u0000\u0000"+
-        "\u5B78\u0000\u0000\u4C3A\u5B7D\u3F22\u4447\u5B73"+
-        "\u0000\u0000\u5C25\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F7A\u5C2F\u3371\u3821\u0000\u0000\u0000"+
-        "\u0000\u5C31\u5B7A\u5C30\u0000\u5C29\u5B7B\u0000"+
-        "\u5C2D\u0000\u5C2E\u0000\u0000\u0000\u0000\u0000"+
-        "\u5C3F\u0000\u0000\u0000\u464E\u0000\u5C24\u0000"+
-        "\u0000\u5C3B\u0000\u0000\u0000\u5C3D\u0000\u4458"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D4C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4976\u5C38\u424A\u0000\u0000"+
-        "\u0000\u5C3E\u413F\u0000\u5C35\u5C42\u5C41\u0000"+
-        "\u466F\u5C40\u466A\u0000\u0000\u0000\u0000\u0000"+
-        "\u7A4F\u0000\u5C44\u5C37\u0000\u3648\u5C3A\u3D5D"+
-        "\u0000\u0000\u0000\u4760\u5C3C\u364B\u0000\u5C34"+
-        "\u5C36\u5C33\u0000\u0000\u4F30\u335A\u5C39\u0000"+
-        "\u0000\u5C43\u3335\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A67\u0000\u0000\u0000\u315D\u0000"+
-        "\u0000\u5C54\u0000\u0000\u4F31\u5C57\u0000\u0000"+
-        "\u7A51\u0000\u0000\u3F3A\u5C56\u0000\u0000\u0000"+
-        "\u5C55\u0000\u0000\u0000\u0000\u0000\u0000\u5C52"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5C46\u0000"+
-        "\u0000\u5C63\u5C45\u0000\u5C58\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5C50\u0000\u0000\u5C4B\u5C48"+
-        "\u0000\u5C49\u0000\u5C51\u0000\u0000\u0000\u7422"+
-        "\u0000\u0000\u5C4E\u393D\u4448\u4164\u5C4C\u0000"+
-        "\u5C47\u0000\u0000\u5C4A\u0000\u0000\u0000\u0000"+
-        "\u4D4D\u4B6A\u0000\u0000\u0000\u5C4F\u5C59\u0000"+
-        "\u0000\u0000\u7A52\u0000\u0000\u0000\u0000\u5C61"+
-        "\u5C5A\u0000\u0000\u5C67\u0000\u5C65\u0000\u0000"+
-        "\u0000\u0000\u5C60\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C5F\u0000\u4450\u0000\u4165\u0000\u5C5D"+
-        "\u0000\u0000\u5C5B\u0000\u0000\u5C62\u0000\u0000"+
-        "\u0000\u0000\u5C68\u4875\u5C6E\u0000\u0000\u0000"+
-        "\u0000\u0000\u5C69\u5C6C\u5C66\u0000\u0000\u4374"+
-        "\u0000\u4938\u0000\u5C5C\u0000\u0000\u5C64\u3E40"+
-        "\u0000\u4C4F\u5C78\u5C6B\u0000\u0000\u0000\u0000"+
-        "\u0000\u3822\u3223\u335F\u0000\u0000\u5C53\u0000"+
-        "\u7A53\u0000\u0000\u0000\u0000\u3E41\u5C70\u0000"+
-        "\u5C77\u3C79\u3372\u0000\u0000\u432E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5C6D\u0000\u7A55\u5C72"+
-        "\u5C76\u0000\u0000\u3636\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u354C\u5C74\u0000\u0000\u0000\u0000\u0000\u3521"+
-        "\u0000\u464B\u5C73\u0000\u0000\u0000\u5C75\u0000"+
-        "\u0000\u0000\u0000\u7A54\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5C6F\u7A56\u0000\u0000\u0000\u0000"+
-        "\u5C71\u0000\u0000\u0000\u0000\u0000\u7A57\u3360"+
-        "\u4349\u0000\u0000\u0000\u5C7C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5C7A\u3869\u0000"+
-        "\u5C79\u0000\u0000\u0000\u0000\u0000\u0000\u5D21"+
-        "\u0000\u0000\u0000\u0000\u5B58\u0000\u0000\u0000"+
-        "\u5C7B\u0000\u5C7D\u5C7E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D2C\u0000\u5D28\u0000\u5B6D\u0000"+
-        "\u0000\u0000\u0000\u5D27\u0000\u0000\u0000\u0000"+
-        "\u5D26\u0000\u0000\u5D23\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C6A\u5D25\u5D24\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5D2A\u0000\u4F26\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D2D\u367B\u0000\u0000\u5D29\u5D2B"+
-        "\u0000\u0000\u7A58\u0000\u7A59\u0000\u0000\u0000"+
-        "\u4827\u0000\u5D2E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D32\u5D2F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4D73\u5D30\u0000\u0000"+
-        "\u0000\u0000\u5C5E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D33\u0000\u0000\u0000\u5D34\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3135\u0000\u5D36"+
-        "\u3767\u3C21\u0000\u3655\u0000\u0000\u0000\u3224"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D5F\u0000\u0000\u0000\u0000\u5D38"+
-        "\u5D37\u5D3A\u353D\u0000\u0000\u3656\u343E\u0000"+
-        "\u0000\u0000\u0000\u5D3D\u0000\u0000\u0000\u5D3C"+
-        "\u0000\u5D3E\u0000\u0000\u324E\u0000\u4337\u0000"+
-        "\u5D3F\u0000\u0000\u343F\u5D41\u0000\u0000\u0000"+
-        "\u0000\u5D40\u0000\u5D42\u0000\u0000\u0000\u5D43"+
-        "\u0000\u5D44\u3B5F\u4035\u3A21\u0000\u4970\u0000"+
-        "\u0000\u4A62\u4F44\u0000\u0000\u0000\u0000\u3B75"+
-        "\u0000\u0000\u0000\u3A50\u4E72\u0000\u0000\u0000"+
-        "\u5D45\u5D46\u0000\u3B60\u0000\u0000\u0000\u5D47"+
-        "\u5D48\u0000\u0000\u5D4A\u5D49\u0000\u4B58\u0000"+
-        "\u0000\u3D5E\u3C6C\u3B44\u0000\u5D4B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5D4D\u3F23\u0000"+
-        "\u5D4C\u0000\u0000\u0000\u0000\u0000\u5D4E\u0000"+
-        "\u0000\u0000\u0000\u0000\u5D4F\u0000\u0000\u0000"+
-        "\u0000\u0000\u5D50\u5D51\u0000\u0000\u0000\u5D52"+
-        "\u0000\u5D54\u5D53\u5D55\u3225\u434A\u0000\u5D56"+
-        "\u0000\u0000\u3B26\u334C\u5D57\u0000\u0000\u4542"+
-        "\u544C\u0000\u0000\u0000\u0000\u3523\u5D58\u0000"+
-        "\u0000\u0000\u0000\u5D59\u0000\u4A6C\u4B68\u0000"+
-        "\u0000\u0000\u4647\u5D5A\u4866\u0000\u7A5A\u0000"+
-        "\u487B\u0000\u0000\u4C53\u0000\u0000\u0000\u5D5B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5D5D\u5D5C\u0000\u0000\u5D5F"+
-        "\u0000\u0000\u0000\u5D5E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5D61\u0000\u0000\u0000\u0000\u0000\u0000\u3B61"+
-        "\u0000\u4C31\u0000\u5D62\u5D63\u0000\u0000\u3524"+
-        "\u0000\u0000\u0000\u5D64\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5D66\u5D65\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F65\u0000\u0000\u4939"+
-        "\u314A\u0000\u0000\u0000\u0000\u0000\u4845\u7A5B"+
-        "\u4475\u3D41\u3561\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4846\u0000"+
-        "\u3C2E\u0000\u0000\u0000\u0000\u5D68\u0000\u3440"+
-        "\u0000\u0000\u3178\u0000\u7A5C\u4672\u5D67\u393E"+
-        "\u4353\u0000\u5D69\u0000\u0000\u0000\u0000\u0000"+
-        "\u5D71\u0000\u5D6A\u0000\u0000\u0000\u0000\u7A5E"+
-        "\u4241\u0000\u3562\u5D72\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3768\u0000\u0000\u3525\u5D70\u0000"+
-        "\u0000\u5D6E\u5D6B\u4D60\u0000\u0000\u7A5D\u0000"+
-        "\u4440\u0000\u0000\u0000\u4659\u5D6C\u0000\u0000"+
-        "\u5D74\u0000\u5D73\u3723\u0000\u0000\u322D\u0000"+
-        "\u0000\u3A3B\u5D6D\u5D6F\u0000\u0000\u0000\u0000"+
-        "\u0000\u4B57\u4274\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4B77\u0000\u0000\u5D7C\u0000"+
-        "\u0000\u5D7D\u0000\u324F\u0000\u0000\u0000\u0000"+
-        "\u4A28\u4C7D\u5E21\u3C23\u3E42\u5D78\u5D7E\u3168"+
-        "\u0000\u3637\u0000\u0000\u5D75\u5D7A\u0000\u0000"+
-        "\u0000\u4074\u4771\u0000\u4867\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5D77\u0000\u4B21\u0000\u5D79"+
-        "\u0000\u5E24\u7A5F\u5E22\u0000\u5D7B\u0000\u0000"+
-        "\u0000\u4B22\u4748\u3563\u0000\u4525\u0000\u0000"+
-        "\u436D\u0000\u5E25\u0000\u0000\u0000\u0000\u5E23"+
-        "\u4259\u5D76\u0000\u314B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7A60\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4D4E\u5E30\u0000\u0000\u0000"+
-        "\u0000\u0000\u5E2F\u0000\u0000\u0000\u0000\u4076"+
-        "\u0000\u5E2C\u0000\u4D6C\u0000\u0000\u4636\u5E26"+
-        "\u0000\u0000\u0000\u0000\u0000\u4445\u0000\u0000"+
-        "\u0000\u314C\u393F\u5E29\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3D27\u5E2E\u0000\u5E2D\u5E28\u0000"+
-        "\u5E2B\u0000\u0000\u3368\u0000\u5E2A\u4749\u0000"+
-        "\u0000\u4E2E\u0000\u0000\u3E74\u4075\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5E36\u5E34\u0000\u494D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5E31\u5E33\u0000\u313A\u0000"+
-        "\u0000\u3940\u4F32\u0000\u333D\u0000\u4962\u7A62"+
-        "\u0000\u0000\u0000\u0000\u4D61\u0000\u0000\u3324"+
-        "\u3F3B\u5E35\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5E3A\u0000\u7A61"+
-        "\u3E43\u0000\u0000\u0000\u4D30\u0000\u5E37\u0000"+
-        "\u0000\u0000\u0000\u5E32\u0000\u5E38\u7A63\u0000"+
-        "\u0000\u4E5E\u0000\u4573\u4642\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7A64\u0000\u0000\u3336"+
-        "\u0000\u0000\u3155\u0000\u0000\u5E3E\u0000\u0000"+
-        "\u5E41\u0000\u0000\u0000\u4E43\u0000\u0000\u0000"+
-        "\u4D64\u0000\u0000\u0000\u0000\u5E48\u5E42\u5E3F"+
-        "\u0000\u0000\u0000\u4E54\u5E45\u0000\u0000\u7A65"+
-        "\u0000\u3D4A\u5E47\u0000\u0000\u5E4C\u0000\u0000"+
-        "\u4571\u5E4A\u0000\u0000\u0000\u0000\u5E44\u0000"+
-        "\u0000\u4338\u0000\u0000\u5E4B\u0000\u5E40\u0000"+
-        "\u5E46\u0000\u5E4D\u307C\u5E43\u0000\u5E4E\u0000"+
-        "\u0000\u3F3C\u7A67\u3D5F\u0000\u4A25\u0000\u3A2E"+
-        "\u7A66\u5E3B\u5E49\u453A\u7A68\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4036\u0000\u3369"+
-        "\u3A51\u3E44\u5E3D\u3D42\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u374C\u0000\u5E3C\u0000\u0000"+
-        "\u0000\u5E52\u3D6D\u383A\u0000\u5E61\u0000\u5E5B"+
-        "\u3574\u454F\u0000\u5E56\u5E5F\u302F\u3132\u7A6B"+
-        "\u0000\u3239\u0000\u5E58\u422C\u5E4F\u5E51\u3941"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5E62\u7A69\u5E5D\u0000\u7A6C\u0000\u5E55\u0000"+
-        "\u0000\u0000\u0000\u5E5C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C2B\u0000\u0000\u5E5A\u5E5E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3850\u0000"+
-        "\u3E45\u0000\u0000\u4339\u7A6A\u0000\u0000\u5E54"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4D2F"+
-        "\u0000\u0000\u0000\u5E57\u0000\u0000\u5E50\u4572"+
-        "\u0000\u0000\u5E53\u0000\u0000\u0000\u5E59\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4F51\u3C3E"+
-        "\u4B7E\u0000\u5E63\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u482E\u0000\u0000\u5E6F"+
-        "\u383B\u0000\u0000\u0000\u0000\u0000\u3D60\u0000"+
-        "\u5E65\u0000\u0000\u0000\u4E2F\u3942\u0000\u5E72"+
-        "\u0000\u0000\u306E\u0000\u0000\u5E70\u0000\u0000"+
-        "\u0000\u0000\u5E64\u0000\u0000\u0000\u0000\u5E6A"+
-        "\u0000\u0000\u5E6C\u0000\u0000\u0000\u4D4F\u5E67"+
-        "\u0000\u0000\u452E\u0000\u0000\u5E69\u0000\u7A6D"+
-        "\u0000\u0000\u5E71\u0000\u5E6B\u4C47\u0000\u0000"+
-        "\u0000\u5E66\u0000\u3C22\u5E7E\u0000\u0000\u0000"+
-        "\u0000\u336A\u0000\u5E68\u5E6D\u5E6E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u426C\u425A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E76\u0000\u0000\u5E7C"+
-        "\u0000\u0000\u5E7A\u0000\u4529\u0000\u0000\u5F23"+
-        "\u5E77\u0000\u0000\u0000\u0000\u0000\u5E78\u5E60"+
-        "\u0000\u3579\u493A\u0000\u0000\u0000\u3C3F\u0000"+
-        "\u0000\u3977\u0000\u0000\u0000\u0000\u0000\u4F33"+
-        "\u0000\u5E74\u0000\u5F22\u3169\u4166\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4779\u0000\u3441\u4E7A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4C21\u4452\u0000\u0000\u0000"+
-        "\u0000\u5E7B\u5E7D\u0000\u0000\u0000\u0000\u0000"+
-        "\u4132\u0000\u0000\u0000\u0000\u0000\u5F21\u5E79"+
-        "\u0000\u5E73\u0000\u0000\u0000\u3443\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3769\u0000\u0000\u0000"+
-        "\u5F2F\u0000\u0000\u5F2A\u4078\u0000\u0000\u3363"+
-        "\u0000\u0000\u0000\u0000\u3D61\u0000\u5F33\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F2C\u442C\u5F29"+
-        "\u4459\u0000\u0000\u0000\u5F4C\u0000\u0000\u0000"+
-        "\u5F26\u0000\u5F25\u0000\u5F2E\u0000\u0000\u0000"+
-        "\u5F28\u5F27\u5F2D\u0000\u4021\u0000\u5F24\u0000"+
-        "\u7A6E\u0000\u0000\u0000\u0000\u0000\u5F30\u0000"+
-        "\u0000\u5F31\u0000\u0000\u0000\u0000\u0000\u3442"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F36\u0000\u5F35\u5F37\u0000\u0000\u0000"+
-        "\u0000\u0000\u5F3A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4543\u0000\u5F34\u0000\u7A6F\u0000\u0000"+
-        "\u0000\u5F38\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3763\u4279\u5F32\u473B\u0000\u0000\u5F39\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5F3E\u5F3C\u0000\u0000"+
-        "\u5F3F\u0000\u0000\u5F42\u0000\u0000\u0000\u5F3B"+
-        "\u396A\u4728\u0000\u0000\u5E39\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4D74\u5F3D\u0000\u5F41\u4275"+
-        "\u0000\u5F40\u0000\u5F2B\u0000\u7A70\u6F69\u0000"+
-        "\u0000\u0000\u5F45\u0000\u0000\u0000\u5F49\u0000";
-
-    private final static String innerIndex3=
-        "\u0000\u5F47\u0000\u0000\u0000\u7A71\u0000\u7A72"+
-        "\u0000\u5F43\u0000\u5F44\u0000\u0000\u0000\u5F48"+
-        "\u0000\u5F46\u0000\u0000\u0000\u494E\u0000\u0000"+
-        "\u5F4E\u0000\u5F4B\u5F4A\u0000\u5F4D\u4654\u5F4F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4375\u426D"+
-        "\u7A73\u0000\u0000\u0000\u4025\u0000\u0000\u0000"+
-        "\u5F50\u0000\u5F52\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5F51\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E75\u0000\u0000\u0000"+
-        "\u0000\u5F53\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4667\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5F54\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3250\u0000\u0000\u0000\u4574"+
-        "\u3325\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3564\u0000\u0000\u0000\u3C5E\u3A52\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7A74\u0000\u0000"+
-        "\u0000\u4F27\u3F66\u0000\u0000\u0000\u316A\u0000"+
-        "\u0000\u0000\u5F56\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F55\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7A75\u5F59\u433A\u5F5C\u5F57"+
-        "\u0000\u0000\u0000\u5F5B\u0000\u0000\u0000\u0000"+
-        "\u5F5A\u4540\u3059\u7927\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4E75\u0000\u0000\u5F5E\u0000\u0000\u0000\u3128"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F60\u0000\u0000\u0000\u5F5F\u0000\u5F5D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F58\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4B23\u0000\u0000\u0000\u5F62\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7A77\u0000\u0000\u0000"+
-        "\u0000\u5F61\u0000\u0000\u0000\u0000\u0000\u7A76"+
-        "\u0000\u0000\u0000\u0000\u316B\u0000\u0000\u0000"+
-        "\u0000\u5F64\u4A32\u0000\u5F63\u0000\u0000\u0000"+
-        "\u0000\u4C35\u0000\u0000\u0000\u0000\u3E47\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4133\u0000"+
-        "\u0000\u0000\u0000\u0000\u3E46\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7A79\u7A7A"+
-        "\u0000\u4E7B\u0000\u0000\u5F6A\u0000\u4079\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F66\u5F6B\u0000"+
-        "\u0000\u316C\u0000\u0000\u7A78\u0000\u0000\u0000"+
-        "\u0000\u0000\u5F69\u0000\u4761\u5F65\u5F68\u3E48"+
-        "\u0000\u4851\u0000\u0000\u5F6C\u0000\u3C51\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u407A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5F6F\u0000\u0000\u0000"+
-        "\u5F67\u0000\u3727\u0000\u0000\u0000\u0000\u5F6D"+
-        "\u0000\u0000\u0000\u0000\u4D50\u5F70\u0000\u0000"+
-        "\u0000\u7426\u0000\u0000\u0000\u0000\u0000\u3D4F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5F71\u0000\u0000\u0000\u5F72\u0000\u0000\u0000"+
-        "\u0000\u472E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F74\u0000\u0000\u0000\u0000\u5F75\u0000"+
-        "\u0000\u7A7C\u0000\u4733\u0000\u0000\u0000\u0000"+
-        "\u4575\u5F77\u0000\u0000\u0000\u0000\u5F79\u0000"+
-        "\u4E55\u0000\u5F76\u0000\u5F78\u316D\u0000\u5F73"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u535B"+
-        "\u5F7A\u0000\u0000\u0000\u0000\u4167\u3B38\u5F7C"+
-        "\u0000\u0000\u0000\u0000\u5F7B\u3F24\u5259\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F7D\u0000\u0000"+
-        "\u0000\u6021\u0000\u5F6E\u5F7E\u0000\u7A7D\u6022"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u477A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6023\u0000\u0000"+
-        "\u6024\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6025\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6026\u0000\u445E\u0000\u6028\u6027\u0000\u0000"+
-        "\u6029\u0000\u602A\u0000\u0000\u3C5F\u4963\u0000"+
-        "\u0000\u0000\u4C6C\u602B\u602C\u4156\u3C24\u602D"+
-        "\u602E\u0000\u0000\u0000\u0000\u0000\u602F\u4A52"+
-        "\u4847\u0000\u0000\u6030\u4757\u0000\u0000\u0000"+
-        "\u0000\u0000\u442D\u0000\u0000\u0000\u0000\u0000"+
-        "\u6031\u3267\u0000\u356D\u0000\u4C46\u0000\u4C36"+
-        "\u0000\u3234\u4F34\u0000\u0000\u0000\u0000\u4B52"+
-        "\u0000\u4A2A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4037\u0000\u6032\u0000\u0000\u0000"+
-        "\u0000\u4643\u0000\u0000\u0000\u3823\u6033\u0000"+
-        "\u3A54\u6035\u6034\u0000\u0000\u0000\u0000\u6036"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6037\u0000\u0000\u0000\u6038\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u353E\u0000\u6039\u0000\u0000\u0000\u0000\u603A"+
-        "\u0000\u0000\u0000\u0000\u3824\u0000\u0000\u4848"+
-        "\u0000\u7A7E\u603C\u0000\u0000\u0000\u3E75\u0000"+
-        "\u0000\u603B\u0000\u0000\u0000\u0000\u7B21\u0000"+
-        "\u0000\u0000\u3638\u603D\u603F\u0000\u603E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6040\u0000"+
-        "\u3851\u0000\u6041\u0000\u0000\u0000\u0000\u3669"+
-        "\u0000\u4140\u0000\u397D\u0000\u0000\u0000\u0000"+
-        "\u6043\u6044\u6042\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3C6D\u0000\u0000\u4648\u3639\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6046"+
-        "\u432C\u6045\u0000\u0000\u4F35\u4762\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6049\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u604B\u6048"+
-        "\u0000\u0000\u0000\u4C54\u604A\u604C\u0000\u4E44"+
-        "\u0000\u0000\u0000\u0000\u7B22\u6050\u0000\u0000"+
-        "\u0000\u604F\u4376\u472D\u0000\u0000\u3825\u604E"+
-        "\u0000\u0000\u0000\u0000\u604D\u0000\u4D31\u4D32"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6051\u316E"+
-        "\u0000\u0000\u0000\u0000\u3976\u3B62\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6052\u6053"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6055"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3D43\u0000\u0000\u0000\u0000"+
-        "\u6057\u0000\u6056\u0000\u0000\u0000\u0000\u0000"+
-        "\u6058\u0000\u334D\u0000\u0000\u605A\u0000\u7B24"+
-        "\u6059\u0000\u605C\u605B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u383C\u0000\u0000\u4E28"+
-        "\u0000\u364C\u0000\u3226\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u366A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3461\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4E68\u605E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6060\u0000\u7B25\u0000\u0000"+
-        "\u6061\u0000\u3251\u0000\u0000\u0000\u0000\u0000"+
-        "\u605D\u7B26\u3B39\u0000\u0000\u4441\u605F\u0000"+
-        "\u0000\u0000\u7B29\u0000\u0000\u0000\u7B27\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6064\u0000"+
-        "\u3C6E\u0000\u0000\u7B28\u0000\u6062\u0000\u0000"+
-        "\u0000\u0000\u373E\u0000\u0000\u4849\u6063\u0000"+
-        "\u0000\u607E\u0000\u0000\u0000\u7B2B\u0000\u0000"+
-        "\u6069\u0000\u0000\u0000\u0000\u0000\u383D\u0000"+
-        "\u0000\u0000\u0000\u3565\u0000\u6066\u4D7D\u7B2A"+
-        "\u0000\u4E30\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4276\u0000\u0000\u6068\u7B2C\u0000"+
-        "\u0000\u7B2E\u7B2D\u0000\u0000\u0000\u7B2F\u0000"+
-        "\u0000\u0000\u606A\u4E56\u3657\u487C\u474A\u0000"+
-        "\u0000\u0000\u606B\u0000\u0000\u0000\u0000\u606D"+
-        "\u0000\u6070\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u606C\u0000\u0000"+
-        "\u0000\u606F\u386A\u314D\u6071\u0000\u3F70\u606E"+
-        "\u4E5C\u0000\u7B30\u6074\u7424\u0000\u0000\u0000"+
-        "\u0000\u6072\u6075\u0000\u0000\u0000\u0000\u6067"+
-        "\u6073\u0000\u0000\u3A3C\u0000\u0000\u6076\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6077\u0000"+
-        "\u0000\u0000\u0000\u4D7E\u0000\u0000\u0000\u0000"+
-        "\u0000\u7B31\u0000\u6078\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6079\u7B32"+
-        "\u0000\u0000\u6065\u0000\u0000\u0000\u0000\u607A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3444\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3C25\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u607B\u0000\u0000\u0000\u0000\u607C"+
-        "\u0000\u0000\u0000\u0000\u607D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u313B\u0000\u0000\u0000"+
-        "\u6121\u0000\u493B\u6122\u0000\u0000\u3424\u6123"+
-        "\u0000\u6124\u0000\u0000\u0000\u0000\u6125\u0000"+
-        "\u6127\u6128\u6126\u0000\u0000\u0000\u4953\u612A"+
-        "\u6129\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u7B33\u0000\u612C\u612B\u612D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u612E\u6130\u612F\u0000"+
-        "\u0000\u3979\u0000\u6132\u0000\u6131\u0000\u0000"+
-        "\u3445\u0000\u3F53\u0000\u453C\u0000\u6133\u4038"+
-        "\u0000\u0000\u0000\u3B3A\u0000\u3179\u6134\u0000"+
-        "\u4D51\u0000\u0000\u4A63\u6135\u0000\u0000\u796C"+
-        "\u4544\u4D33\u3943\u3F3D\u0000\u0000\u0000\u434B"+
-        "\u5234\u0000\u442E\u3268\u6136\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6137\u0000\u613C\u0000"+
-        "\u0000\u613A\u6139\u5A42\u3326\u6138\u0000\u305A"+
-        "\u0000\u482A\u0000\u0000\u484A\u0000\u0000\u0000"+
-        "\u0000\u4E31\u613D\u613B\u435C\u4026\u0000\u0000"+
-        "\u482B\u0000\u492D\u0000\u613F\u4E2C\u374D\u6140"+
-        "\u0000\u613E\u4856\u6141\u0000\u6142\u0000\u7B34"+
-        "\u305B\u0000\u0000\u3E76\u6147\u0000\u6144\u466D"+
-        "\u6143\u0000\u0000\u0000\u0000\u0000\u0000\u3526"+
-        "\u0000\u0000\u614A\u0000\u0000\u0000\u6145\u6146"+
-        "\u0000\u6149\u6148\u4925\u0000\u0000\u4142\u4141"+
-        "\u0000\u353F\u0000\u0000\u614B\u0000\u0000\u0000"+
-        "\u0000\u0000\u614C\u0000\u0000\u614D\u0000\u0000"+
-        "\u0000\u0000\u0000\u614F\u0000\u614E\u0000\u0000"+
-        "\u0000\u0000\u0000\u3156\u0000\u0000\u0000\u0000"+
-        "\u0000\u6157\u4868\u6151\u0000\u6153\u0000\u0000"+
-        "\u6155\u3F3E\u0000\u0000\u6156\u6154\u3C40\u0000"+
-        "\u0000\u0000\u6150\u6152\u0000\u4942\u0000\u3E49"+
-        "\u0000\u0000\u6159\u0000\u0000\u6158\u0000\u0000"+
-        "\u0000\u0000\u615A\u0000\u3C26\u3A2F\u0000\u0000"+
-        "\u4577\u615B\u0000\u444B\u0000\u0000\u615D\u0000"+
-        "\u0000\u0000\u4E21\u615C\u0000\u0000\u0000\u0000"+
-        "\u0000\u4169\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6162\u0000\u6164\u6165\u4354\u0000\u0000\u0000"+
-        "\u0000\u0000\u6163\u0000\u6160\u0000\u615E\u615F"+
-        "\u0000\u6161\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6168\u0000\u6166\u0000\u6167\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6169"+
-        "\u616B\u616C\u616D\u0000\u616E\u0000\u0000\u616A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6170\u0000\u0000\u0000\u616F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6171\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4E45\u0000\u0000\u0000\u6174\u6172"+
-        "\u6173\u0000\u0000\u0000\u3462\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C7E\u0000\u0000\u0000\u4A4A\u0000"+
-        "\u6176\u0000\u0000\u0000\u6175\u0000\u0000\u0000"+
-        "\u0000\u6177\u6178\u0000\u0000\u0000\u0000\u617C"+
-        "\u6179\u617A\u617B\u0000\u617D\u0000\u0000\u0000"+
-        "\u617E\u0000\u6221\u0000\u0000\u0000\u6222\u0000"+
-        "\u6223\u0000\u482F\u4550\u6224\u4772\u4934\u0000"+
-        "\u6225\u0000\u7B35\u6226\u452A\u0000\u3327\u3944"+
-        "\u6227\u0000\u0000\u6228\u0000\u0000\u6229\u0000"+
-        "\u3B29\u0000\u0000\u622B\u0000\u0000\u622A\u0000"+
-        "\u0000\u622C\u622D\u7B38\u7B36\u0000\u7B37\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7B39\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4869\u0000"+
-        "\u622E\u0000\u0000\u0000\u622F\u0000\u0000\u7369"+
-        "\u6230\u6231\u6232\u0000\u0000\u0000\u0000\u3B2E"+
-        "\u0000\u0000\u6233\u4756\u0000\u0000\u4B5F\u0000"+
-        "\u314E\u0000\u3157\u0000\u0000\u6234\u0000\u0000"+
-        "\u0000\u0000\u6236\u0000\u0000\u0000\u6235\u4570"+
-        "\u0000\u0000\u0000\u4039\u5D39\u0000\u6237\u4C41"+
-        "\u0000\u6238\u0000\u3446\u4857\u6239\u0000\u623A"+
-        "\u0000\u0000\u623B\u0000\u0000\u0000\u4C5C\u0000"+
-        "\u0000\u0000\u4C55\u0000\u443E\u0000\u0000\u0000"+
-        "\u416A\u0000\u0000\u623D\u0000\u0000\u3D62\u0000"+
-        "\u0000\u3E4A\u0000\u0000\u6240\u0000\u0000\u623F"+
-        "\u623E\u487D\u0000\u3447\u3829\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6246\u0000\u0000\u6243\u3F3F"+
-        "\u4C32\u0000\u0000\u0000\u6242\u6244\u6245\u0000"+
-        "\u0000\u6241\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6247"+
-        "\u6248\u0000\u442F\u0000\u3463\u0000\u0000\u0000"+
-        "\u4365\u0000\u0000\u0000\u0000\u0000\u7B3B\u6249"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u624A\u624D\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F67\u0000\u4644\u0000\u624E\u4B53\u0000"+
-        "\u624B\u0000\u0000\u624C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6251\u0000\u0000\u0000\u0000\u6250\u624F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6253\u0000\u0000\u6252\u0000"+
-        "\u0000\u6254\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6256\u0000"+
-        "\u6255\u0000\u0000\u0000\u0000\u4A4D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3D56\u4E46\u0000\u0000"+
-        "\u6257\u0000\u0000\u4637\u0000\u0000\u6258\u0000"+
-        "\u0000\u6259\u0000\u625D\u625B\u625C\u0000\u625A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u625E"+
-        "\u0000\u0000\u0000\u0000\u0000\u625F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6260"+
-        "\u0000\u0000\u6261\u4C37\u6262\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C70\u6263\u0000\u434E\u0000\u476A"+
-        "\u0000\u366B\u0000\u0000\u0000\u433B\u6264\u363A"+
-        "\u0000\u0000\u0000\u4050\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6265\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A3D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6266\u0000\u0000\u0000"+
-        "\u0000\u0000\u6267\u0000\u3826\u3A55\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6269\u7B3D\u0000\u0000\u0000\u4556\u3A56\u354E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4B24\u0000\u474B\u0000\u0000\u0000"+
-        "\u0000\u0000\u4557\u0000\u0000\u0000\u0000\u395C"+
-        "\u0000\u0000\u0000\u0000\u0000\u626B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7B3E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3E4B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7B3F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4E32\u3945\u0000\u0000\u3827"+
-        "\u0000\u0000\u4823\u0000\u626D\u0000\u0000\u0000"+
-        "\u0000\u0000\u7B40\u0000\u626F\u0000\u0000\u0000"+
-        "\u0000\u386B\u0000\u0000\u0000\u0000\u626E\u4476"+
-        "\u0000\u0000\u0000\u0000\u6271\u3337\u626C\u0000"+
-        "\u0000\u486A\u0000\u3130\u0000\u3A6C\u0000\u4F52"+
-        "\u0000\u0000\u6270\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6272\u0000\u0000\u0000\u4A4B"+
-        "\u0000\u4059\u6274\u0000\u0000\u0000\u0000\u6275"+
-        "\u0000\u0000\u0000\u0000\u0000\u6273\u0000\u0000"+
-        "\u0000\u0000\u334E\u0000\u627B\u0000\u627A\u0000"+
-        "\u0000\u3C27\u0000\u0000\u0000\u627C\u6277\u0000"+
-        "\u0000\u0000\u627D\u6278\u0000\u0000\u0000\u0000"+
-        "\u4858\u6276\u0000\u0000\u6279\u0000\u0000\u0000"+
-        "\u0000\u0000\u6322\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6321"+
-        "\u4B61\u0000\u0000\u0000\u627E\u0000\u0000\u306B"+
-        "\u0000\u0000\u0000\u0000\u6324\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6323\u0000\u0000"+
-        "\u0000\u3E4C\u0000\u0000\u0000\u0000\u0000\u6325"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4143\u0000"+
-        "\u0000\u6327\u6326\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6328\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6268\u0000"+
-        "\u0000\u0000\u626A\u632A\u6329\u0000\u0000\u0000"+
-        "\u7B41\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3C28\u0000\u4E69\u0000\u3C52\u0000"+
-        "\u632B\u3737\u0000\u0000\u0000\u0000\u0000\u3540"+
-        "\u3527\u3B63\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4D34\u0000\u0000\u6331\u0000\u6330\u4144\u632D"+
-        "\u0000\u0000\u632F\u0000\u0000\u3D4B\u3F40\u632E"+
-        "\u632C\u0000\u472A\u0000\u0000\u3E4D\u0000\u0000"+
-        "\u493C\u0000\u0000\u0000\u0000\u3A57\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4578"+
-        "\u0000\u0000\u6332\u0000\u0000\u0000\u0000\u6333"+
-        "\u6349\u3658\u0000\u0000\u4F3D\u4135\u0000\u0000"+
-        "\u0000\u0000\u6334\u0000\u0000\u3252\u4477\u4A21"+
-        "\u0000\u0000\u0000\u0000\u7B45\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7B47\u0000\u6335\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u357A\u6336"+
-        "\u0000\u0000\u6338\u0000\u0000\u0000\u6339\u0000"+
-        "\u4729\u0000\u0000\u633A\u0000\u0000\u0000\u0000"+
-        "\u0000\u633B\u633C\u0000\u0000\u3659\u3253\u4645"+
-        "\u3D28\u3B64\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u633D\u0000\u3D29\u0000\u0000\u0000\u0000"+
-        "\u0000\u324A\u4943\u0000\u0000\u633E\u0000\u0000"+
-        "\u486B\u0000\u0000\u0000\u0000\u0000\u0000\u4145"+
-        "\u0000\u6341\u0000\u6342\u4769\u0000\u3F41\u633F"+
-        "\u0000\u4361\u0000\u0000\u6340\u0000\u0000\u0000"+
-        "\u3E4E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u305C\u0000\u0000\u0000\u0000"+
-        "\u3529\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6343\u0000\u0000\u4478\u0000\u6344\u4047\u0000"+
-        "\u0000\u0000\u0000\u0000\u4C2D\u0000\u0000\u4923"+
-        "\u6345\u6346\u4355\u0000\u4E47\u0000\u0000\u6348"+
-        "\u6347\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3C6F\u0000"+
-        "\u0000\u634A\u3070\u0000\u0000\u0000\u0000\u634D"+
-        "\u0000\u0000\u0000\u634B\u3254\u374E\u634C\u3946"+
-        "\u3972\u0000\u4A66\u634E\u0000\u0000\u4B54\u0000"+
-        "\u0000\u6350\u0000\u0000\u0000\u4051\u314F\u323A"+
-        "\u302C\u0000\u0000\u0000\u0000\u0000\u0000\u634F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6351\u6352\u3E77\u0000\u0000\u0000\u0000"+
-        "\u0000\u6353\u0000\u334F\u0000\u0000\u0000\u0000"+
-        "\u6355\u0000\u0000\u0000\u376A\u0000\u3566\u0000"+
-        "\u0000\u6356\u3675\u0000\u0000\u6357\u0000\u407C"+
-        "\u0000\u464D\u0000\u4060\u3A75\u0000\u0000\u0000"+
-        "\u6358\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4362\u416B\u0000\u635A\u635C\u6359"+
-        "\u635B\u0000\u0000\u0000\u0000\u0000\u0000\u3722"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u635D\u3726\u0000\u0000\u0000\u3567\u4D52"+
-        "\u635F\u0000\u0000\u0000\u0000\u0000\u6360\u0000"+
-        "\u0000\u0000\u312E\u0000\u0000\u0000\u0000\u6363"+
-        "\u0000\u0000\u0000\u3376\u6362\u6361\u0000\u6365"+
-        "\u635E\u0000\u6366\u4E29\u0000\u6367\u0000\u6368"+
-        "\u0000\u7B48\u5474\u636A\u0000\u6369\u0000\u0000"+
-        "\u0000\u636B\u636C\u0000\u4E35\u636D\u0000\u706F"+
-        "\u3E4F\u636E\u636F\u3D57\u0000\u4638\u6370\u7B49"+
-        "\u0000\u0000\u4328\u7B4B\u0000\u6371\u0000\u433C"+
-        "\u6372\u0000\u0000\u0000\u0000\u0000\u3625\u0000"+
-        "\u513F\u435D\u3C33\u0000\u0000\u0000\u0000\u3448"+
-        "\u0000\u0000\u6373\u0000\u6422\u0000\u6376\u0000"+
-        "\u3568\u0000\u6375\u6424\u0000\u0000\u0000\u6374"+
-        "\u0000\u3E50\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6378\u6379\u0000\u452B\u0000\u0000\u637A\u0000"+
-        "\u335E\u0000\u0000\u0000\u0000\u3F5A\u4964\u0000"+
-        "\u637C\u0000\u0000\u0000\u4268\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6377\u0000\u637B\u637D\u0000"+
-        "\u0000\u3A7B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6426\u492E\u0000"+
-        "\u4826\u4579\u0000\u365A\u6425\u6423\u0000\u4835"+
-        "\u637E\u435E\u457B\u0000\u457A\u0000\u3A76\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6438\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6428\u0000\u642A"+
-        "\u0000\u0000\u0000\u0000\u642D\u0000\u642E\u0000"+
-        "\u642B\u642C\u0000\u0000\u6429\u6427\u0000\u0000"+
-        "\u0000\u0000\u6421\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4A4F\u3255"+
-        "\u0000\u0000\u0000\u6435\u0000\u6432\u0000\u6437"+
-        "\u0000\u0000\u6436\u0000\u4773\u4C27\u0000\u3B3B"+
-        "\u6430\u6439\u6434\u0000\u6433\u642F\u7B4C\u6431"+
-        "\u0000\u3449\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u433D\u0000\u0000\u407D\u0000\u0000"+
-        "\u0000\u4822\u0000\u0000\u643E\u0000\u0000\u0000"+
-        "\u4824\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4061\u643B\u0000\u0000\u484F\u0000\u643F\u4A53"+
-        "\u0000\u435B\u0000\u643A\u643C\u0000\u0000\u643D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6440\u0000\u0000"+
-        "\u3C44\u0000\u0000\u0000\u4646\u6445\u6444\u0000"+
-        "\u0000\u6441\u0000\u0000\u0000\u4F36\u0000\u0000"+
-        "\u0000\u0000\u0000\u644A\u0000\u0000\u644E\u644B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6447\u0000\u0000\u0000\u0000\u0000\u0000\u6448"+
-        "\u0000\u0000\u0000\u0000\u0000\u644D\u0000\u0000"+
-        "\u0000\u6442\u5255\u6449\u6443\u0000\u0000\u644C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6452"+
-        "\u0000\u344A\u0000\u644F\u0000\u0000\u0000\u6450"+
-        "\u0000\u0000\u6451\u6454\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6453"+
-        "\u4876\u0000\u0000\u0000\u0000\u6455\u4E7C\u4A6D"+
-        "\u645A\u0000\u0000\u6457\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6456\u4052\u0000\u6459"+
-        "\u645B\u0000\u0000\u0000\u6458\u0000\u645F\u0000"+
-        "\u645C\u0000\u0000\u0000\u0000\u0000\u0000\u645D"+
-        "\u6446\u0000\u0000\u0000\u645E\u6460\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6461\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A46\u0000\u6462\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4C62\u0000"+
-        "\u0000\u364E\u3729\u6463\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A34\u0000\u3F68\u0000\u4C30\u0000\u0000"+
-        "\u6464\u0000\u4E33\u0000\u0000\u4774\u0000\u4146"+
-        "\u4734\u0000\u0000\u3D4D\u0000\u0000\u0000\u3040"+
-        "\u0000\u6469\u6467\u0000\u6465\u3421\u0000\u3E51"+
-        "\u646A\u0000\u0000\u6468\u0000\u6466\u646E\u0000"+
-        "\u0000\u646D\u646C\u646B\u0000\u0000\u0000\u0000"+
-        "\u0000\u646F\u0000\u0000\u0000\u6470\u403A\u0000"+
-        "\u6471\u0000\u6473\u0000\u0000\u6472\u0000\u0000"+
-        "\u0000\u0000\u3852\u0000\u0000\u0000\u4138\u0000"+
-        "\u0000\u0000\u6475\u0000\u0000\u0000\u457C\u0000"+
-        "\u6474\u0000\u0000\u0000\u6476\u0000\u4A35\u416C"+
-        "\u3947\u0000\u6477\u0000\u0000\u0000\u0000\u4E48"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6479"+
-        "\u0000\u0000\u647A\u0000\u647B\u0000\u647C\u0000"+
-        "\u3B65\u0000\u647D\u374F\u0000\u0000\u356A\u0000"+
-        "\u352A\u0000\u6521\u0000\u4C73\u3948\u647E\u0000"+
-        "\u0000\u0000\u6524\u4C66\u0000\u473C\u0000\u0000"+
-        "\u4933\u0000\u0000\u0000\u3D63\u6523\u0000\u3C53"+
-        "\u3949\u3B66\u3569\u4A36\u6522\u0000\u0000\u0000"+
-        "\u4147\u4B42\u3A77\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B67\u445D\u0000\u6527\u4E5F"+
-        "\u3A59\u0000\u6528\u3F42\u0000\u652A\u0000\u0000"+
-        "\u0000\u3E52\u3A30\u0000\u0000\u0000\u0000\u6529"+
-        "\u0000\u0000\u3D2A\u383E\u4148\u6525\u652B\u0000"+
-        "\u7B4E\u0000\u0000\u6526\u3750\u0000\u652E\u6532"+
-        "\u376B\u0000\u0000\u0000\u0000\u0000\u652D\u0000"+
-        "\u0000\u0000\u0000\u6536\u7B4F\u0000\u394A\u0000"+
-        "\u0000\u4D6D\u303C\u6533\u0000\u0000\u356B\u0000"+
-        "\u6530\u0000\u0000\u0000\u0000\u0000\u6531\u0000"+
-        "\u0000\u457D\u652F\u652C\u0000\u3328\u4064\u0000"+
-        "\u0000\u3828\u0000\u0000\u0000\u6538\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6535\u0000\u0000\u0000\u0000\u0000\u6537"+
-        "\u0000\u0000\u0000\u6534\u0000\u0000\u0000\u0000"+
-        "\u0000\u3751\u4233\u6539\u416E\u0000\u0000\u6546"+
-        "\u7B51\u0000\u6542\u653C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6540\u3C7A\u305D\u653B\u6543"+
-        "\u6547\u394B\u4C56\u0000\u4456\u653D\u0000\u7B50"+
-        "\u6545\u0000\u653A\u433E\u0000\u653F\u303D\u4C4A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u653E"+
-        "\u0000\u0000\u365B\u486C\u0000\u0000\u0000\u416D"+
-        "\u0000\u4E50\u3D6F\u0000\u0000\u656E\u7B52\u0000"+
-        "\u6548\u0000\u407E\u0000\u6544\u6549\u654B\u0000"+
-        "\u4479\u654E\u0000\u0000\u654A\u0000\u0000\u0000"+
-        "\u4A54\u344B\u0000\u0000\u4C4B\u0000\u0000\u305E"+
-        "\u0000\u0000\u654D\u0000\u4E7D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u654C\u0000\u0000\u0000\u0000"+
-        "\u0000\u316F\u0000\u0000\u466C\u654F\u0000\u0000"+
-        "\u0000\u6556\u6550\u6557\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6553\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u477B\u0000\u0000\u3C4A\u6555"+
-        "\u0000\u6552\u6558\u6551\u0000\u0000\u3D44\u0000"+
-        "\u0000\u0000\u0000\u4B25\u0000\u0000\u3D4C\u0000"+
-        "\u0000\u6554\u6560\u0000\u0000\u655C\u0000\u655F"+
-        "\u0000\u655D\u6561\u655B\u0000\u6541\u4053\u0000"+
-        "\u0000\u484B\u0000\u655E\u0000\u0000\u6559\u0000"+
-        "\u0000\u0000\u4121\u3752\u0000\u3D2B\u0000\u0000"+
-        "\u0000\u0000\u7B53\u0000\u3F25\u4136\u6564\u0000"+
-        "\u0000\u6566\u6567\u0000\u0000\u6563\u6565\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u655A\u6562"+
-        "\u0000\u656A\u6569\u0000\u0000\u4B7A\u0000\u0000"+
-        "\u372B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6568\u0000\u656C\u656B\u656F\u0000\u6571"+
-        "\u0000\u0000\u3B3C\u656D\u0000\u0000\u0000\u0000"+
-        "\u6572\u6573\u7921\u0000\u6574\u0000\u657A\u453B"+
-        "\u6576\u0000\u6575\u6577\u6578\u0000\u6579\u0000"+
-        "\u0000\u0000\u0000\u657B\u657C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u344C\u0000"+
-        "\u657D\u0000\u657E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6621\u0000\u7B54"+
-        "\u0000\u0000\u0000\u0000\u6622\u6623\u6624\u0000"+
-        "\u6625\u6626\u0000\u0000\u6628\u6627\u0000\u0000"+
-        "\u6629\u0000\u0000\u0000\u0000\u0000\u0000\u662A"+
-        "\u662B\u0000\u0000\u0000\u0000\u0000\u0000\u662E"+
-        "\u662C\u662D\u3A61\u3753\u0000\u0000\u4356\u0000"+
-        "\u4833\u0000\u3D70\u0000\u0000\u474D\u0000\u486D"+
-        "\u662F\u586D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6630\u6632\u0000\u4D65\u6631\u6634"+
-        "\u6633\u0000\u4D53\u0000\u6635\u0000\u487E\u0000"+
-        "\u0000\u0000\u0000\u0000\u6636\u0000\u0000\u0000"+
-        "\u0000\u0000\u6639\u0000\u0000\u6638\u6637\u0000"+
-        "\u0000\u7B55\u0000\u663A\u3732\u0000\u0000\u0000"+
-        "\u4122\u3541\u0000\u0000\u0000\u0000\u663E\u663B"+
-        "\u0000\u0000\u663C\u0000\u0000\u0000\u663F\u0000"+
-        "\u6640\u663D\u0000\u0000\u0000\u3129\u0000\u0000"+
-        "\u0000\u3227\u0000\u0000\u0000\u6642\u6643\u0000"+
-        "\u0000\u0000\u6644\u0000\u4D62\u0000\u0000\u0000"+
-        "\u0000\u0000\u3D2C\u0000\u6646\u6645\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3F69\u6647\u0000\u0000\u0000\u0000\u6648\u0000"+
-        "\u0000\u6649\u0000\u3465\u0000\u0000\u0000\u0000"+
-        "\u344D\u0000\u0000\u664A\u0000\u0000\u0000\u0000"+
-        "\u0000\u664B\u0000\u4B5D\u4D63\u0000\u0000\u0000";
-
-    private final static String innerIndex4=
-        "\u4D54\u4F37\u0000\u394D\u664E\u3C54\u664D\u0000"+
-        "\u0000\u0000\u0000\u664F\u3C29\u0000\u0000\u0000"+
-        "\u4251\u0000\u6650\u0000\u0000\u394C\u0000\u4C57"+
-        "\u6651\u6652\u0000\u0000\u6653\u0000\u0000\u0000"+
-        "\u0000\u6654\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6655\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3C2A\u0000\u0000\u4C6D\u0000"+
-        "\u0000\u0000\u0000\u6657\u0000\u433F\u0000\u6656"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6659\u0000"+
-        "\u0000\u0000\u6658\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u665A\u0000\u0000\u0000\u403B\u0000"+
-        "\u665B\u0000\u665C\u0000\u0000\u0000\u4A39\u665D"+
-        "\u0000\u416F\u665E\u0000\u0000\u0000\u0000\u0000"+
-        "\u665F\u0000\u0000\u0000\u0000\u0000\u0000\u4E7E"+
-        "\u6662\u0000\u6661\u6660\u4430\u0000\u6663\u3F26"+
-        "\u0000\u6664\u0000\u0000\u0000\u6665\u4F38\u6666"+
-        "\u0000\u0000\u0000\u0000\u6667\u6669\u6668\u4825"+
-        "\u0000\u4679\u0000\u4F3E\u4829\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u666B\u0000\u0000\u3E53\u0000"+
-        "\u492A\u0000\u666C\u666A\u0000\u344E\u0000\u0000"+
-        "\u0000\u3854\u3B68\u0000\u0000\u486E\u0000\u0000"+
-        "\u0000\u382A\u4B43\u0000\u666F\u666D\u0000\u394E"+
-        "\u0000\u394F\u3069\u0000\u3A68\u0000\u0000\u0000"+
-        "\u0000\u0000\u4759\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u305F\u6674\u0000\u4340\u0000"+
-        "\u0000\u0000\u0000\u0000\u4758\u0000\u425B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6676\u0000"+
-        "\u0000\u6672\u6675\u6670\u0000\u6673\u4B26\u0000"+
-        "\u0000\u3855\u0000\u0000\u307D\u6671\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6678"+
-        "\u0000\u6679\u0000\u0000\u4639\u0000\u0000\u0000"+
-        "\u363B\u0000\u0000\u0000\u6726\u473D\u0000\u0000"+
-        "\u0000\u0000\u3B69\u0000\u0000\u363C\u4048\u4F46"+
-        "\u4C2E\u6677\u4054\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3553\u667A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u667C\u0000\u0000\u0000\u0000"+
-        "\u0000\u667B\u0000\u0000\u0000\u0000\u0000\u667D"+
-        "\u0000\u4326\u0000\u473E\u0000\u0000\u0000\u0000"+
-        "\u0000\u4431\u0000\u0000\u0000\u0000\u6723\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6722\u0000"+
-        "\u0000\u0000\u0000\u667E\u0000\u0000\u3F55\u0000"+
-        "\u4965\u6725\u0000\u6724\u3950\u4F53\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6735"+
-        "\u0000\u0000\u0000\u0000\u0000\u6729\u672A\u0000"+
-        "\u0000\u0000\u0000\u3C70\u0000\u0000\u6728\u0000"+
-        "\u3978\u6727\u0000\u0000\u672B\u0000\u0000\u0000"+
-        "\u4432\u4A22\u4123\u0000\u0000\u0000\u0000\u425C"+
-        "\u672F\u0000\u6730\u672C\u0000\u0000\u0000\u0000"+
-        "\u672D\u0000\u672E\u0000\u0000\u0000\u0000\u3951"+
-        "\u0000\u0000\u0000\u6736\u0000\u6732\u0000\u0000"+
-        "\u0000\u0000\u4966\u0000\u4B6C\u4928\u0000\u0000"+
-        "\u6731\u0000\u0000\u6734\u6733\u0000\u0000\u0000"+
-        "\u4B44\u6737\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6738\u0000\u0000\u4137\u0000\u6739\u0000\u0000"+
-        "\u673B\u0000\u673F\u0000\u0000\u673C\u673A\u473F"+
-        "\u673D\u0000\u673E\u0000\u0000\u0000\u3232\u0000"+
-        "\u6745\u6740\u0000\u0000\u0000\u6741\u0000\u0000"+
-        "\u0000\u6742\u0000\u4221\u0000\u0000\u0000\u0000"+
-        "\u6744\u6743\u6746\u0000\u0000\u0000\u0000\u6747"+
-        "\u6748\u0000\u0000\u3F43\u0000\u3269\u0000\u6749"+
-        "\u4E57\u0000\u3C2B\u0000\u0000\u3D2D\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B6A\u4357\u0000\u0000\u0000"+
-        "\u0000\u0000\u674A\u674B\u3131\u0000\u674C\u0000"+
-        "\u0000\u674D\u674E\u0000\u0000\u674F\u0000\u6750"+
-        "\u363D\u5A2A\u6751\u0000\u4065\u6752\u3C4B\u0000"+
-        "\u6753\u0000\u5030\u0000\u0000\u0000\u6754\u4A5E"+
-        "\u345C\u0000\u0000\u4124\u3D58\u0000\u4971\u3D2E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6755\u3952\u6756\u484C\u0000\u6764\u0000"+
-        "\u0000\u0000\u0000\u6758\u0000\u4249\u4775\u383F"+
-        "\u6757\u4125\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6759\u0000\u0000\u0000\u0000\u0000\u0000\u447A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u675B\u675A\u675D\u0000\u0000\u675C\u0000\u675E"+
-        "\u0000\u0000\u6760\u0000\u675F\u0000\u344F\u0000"+
-        "\u6761\u0000\u6762\u6763\u0000\u0000\u3A31\u4E49"+
-        "\u0000\u6765\u3F27\u0000\u0000\u0000\u3170\u6766"+
-        "\u6767\u0000\u0000\u0000\u0000\u0000\u6768\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3072\u0000\u6769\u0000\u0000"+
-        "\u0000\u0000\u676A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4967\u0000\u0000\u0000\u3C47\u0000\u676C"+
-        "\u0000\u0000\u0000\u0000\u0000\u3329\u3032\u0000"+
-        "\u0000\u0000\u0000\u676B\u676E\u474E\u0000\u3F44"+
-        "\u0000\u3256\u0000\u4B27\u0000\u0000\u0000\u0000"+
-        "\u375D\u365C\u0000\u676D\u0000\u326A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3423\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3171\u6772\u4E6A\u425D\u0000\u0000\u4944"+
-        "\u0000\u677E\u0000\u3257\u677C\u0000\u677A\u6771"+
-        "\u0000\u676F\u0000\u6770\u0000\u3C63\u366C\u4377"+
-        "\u0000\u0000\u0000\u4651\u0000\u0000\u0000\u0000"+
-        "\u0000\u3151\u0000\u6774\u6773\u0000\u0000\u0000"+
-        "\u0000\u6779\u6775\u6778\u0000\u0000\u0000\u0000"+
-        "\u0000\u7B57\u4C50\u6777\u3258\u337D\u677B\u0000"+
-        "\u0000\u677D\u0000\u0000\u0000\u0000\u3754\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6823\u682C"+
-        "\u682D\u0000\u0000\u0000\u302B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6834\u0000\u0000\u0000\u0000"+
-        "\u3071\u0000\u0000\u682B\u0000\u0000\u0000\u682A"+
-        "\u0000\u6825\u6824\u0000\u6822\u6821\u4363\u0000"+
-        "\u427B\u6827\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6826\u0000\u0000\u0000\u0000\u6829\u0000\u0000"+
-        "\u0000\u4170\u3755\u0000\u0000\u0000\u0000\u3141"+
-        "\u6828\u0000\u3953\u0000\u0000\u0000\u0000\u0000"+
-        "\u4171\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u7B58\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u683A\u0000\u683B\u0000\u3259"+
-        "\u0000\u0000\u0000\u322E\u6838\u0000\u0000\u7B59"+
-        "\u0000\u0000\u0000\u0000\u0000\u682E\u0000\u6836"+
-        "\u0000\u683D\u6837\u0000\u0000\u0000\u6835\u0000"+
-        "\u0000\u0000\u0000\u6776\u0000\u0000\u6833\u0000"+
-        "\u0000\u0000\u682F\u0000\u0000\u0000\u3450\u6831"+
-        "\u683C\u0000\u6832\u0000\u0000\u0000\u0000\u0000"+
-        "\u683E\u0000\u6830\u477C\u0000\u0000\u0000\u0000"+
-        "\u0000\u4D69\u0000\u0000\u0000\u6839\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u684F\u0000\u0000"+
-        "\u0000\u6847\u0000\u0000\u0000\u3F7B\u0000\u7B5A"+
-        "\u0000\u0000\u3546\u0000\u365D\u0000\u6842\u0000"+
-        "\u0000\u0000\u0000\u325B\u0000\u0000\u3E54\u0000"+
-        "\u6845\u0000\u0000\u0000\u3A5A\u0000\u0000\u4551"+
-        "\u684A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A6E\u0000\u6841\u0000\u0000\u0000\u325A"+
-        "\u3856\u4929\u684B\u0000\u683F\u0000\u7B5B\u6848"+
-        "\u0000\u0000\u0000\u6852\u0000\u6843\u0000\u0000"+
-        "\u0000\u0000\u0000\u6844\u463A\u0000\u0000\u6849"+
-        "\u0000\u0000\u0000\u6846\u4B28\u684C\u3060\u0000"+
-        "\u0000\u0000\u0000\u6840\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u684E\u0000\u684D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u476B\u6854\u0000\u685F\u0000\u0000\u0000"+
-        "\u0000\u337E\u0000\u0000\u0000\u6862\u0000\u0000"+
-        "\u6850\u0000\u0000\u0000\u6855\u4D6E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u685E\u0000"+
-        "\u7B5C\u4D55\u0000\u0000\u0000\u0000\u4E2A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4378"+
-        "\u0000\u0000\u0000\u336B\u0000\u0000\u0000\u0000"+
-        "\u0000\u4972\u6864\u4621\u0000\u0000\u3031\u0000"+
-        "\u0000\u685D\u0000\u6859\u4172\u6853\u685B\u6860"+
-        "\u0000\u472C\u0000\u0000\u0000\u302A\u0000\u6858"+
-        "\u0000\u6861\u4978\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u685C\u0000\u6857\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3E55\u0000\u0000\u0000\u0000"+
-        "\u3D2F\u0000\u0000\u0000\u3C2C\u0000\u0000\u0000"+
-        "\u0000\u4C58\u0000\u0000\u4947\u0000\u0000\u6867"+
-        "\u0000\u6870\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u685A\u0000\u0000"+
-        "\u0000\u0000\u3377\u0000\u7B5D\u0000\u0000\u0000"+
-        "\u3E78\u6865\u0000\u686A\u4173\u0000\u0000\u6866"+
-        "\u0000\u686D\u0000\u0000\u435F\u0000\u686E\u0000"+
-        "\u0000\u4D56\u6863\u3338\u0000\u6869\u0000\u0000"+
-        "\u686C\u4C2C\u0000\u0000\u0000\u0000\u686F\u0000"+
-        "\u0000\u6868\u686B\u0000\u7925\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4B29\u0000\u4F21\u0000"+
-        "\u0000\u0000\u0000\u0000\u6873\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u687A\u0000\u0000\u6872"+
-        "\u3C43\u0000\u0000\u0000\u0000\u0000\u6851\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A4E\u0000\u4C22\u6879\u6878\u0000\u6874"+
-        "\u6875\u0000\u3136\u0000\u0000\u0000\u0000\u6877"+
-        "\u0000\u6871\u0000\u0000\u0000\u0000\u4455\u0000"+
-        "\u0000\u0000\u0000\u0000\u6876\u307E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4222\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4A43\u0000\u0000"+
-        "\u687B\u6921\u0000\u4859\u0000\u0000\u0000\u0000"+
-        "\u687E\u3E56\u3C49\u6923\u0000\u0000\u363E\u0000"+
-        "\u0000\u0000\u0000\u7B5E\u0000\u6924\u0000\u4979"+
-        "\u687D\u7B5F\u6856\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u687C\u0000\u0000\u0000\u0000"+
-        "\u4F4F\u4622\u4973\u7B60\u0000\u692B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6931"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6932\u0000"+
-        "\u6925\u0000\u0000\u0000\u4776\u0000\u0000\u692F"+
-        "\u6927\u0000\u6929\u0000\u0000\u0000\u0000\u0000"+
-        "\u6933\u6928\u0000\u0000\u692C\u0000\u0000\u3172"+
-        "\u0000\u4665\u0000\u692D\u6930\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6926\u0000\u4126\u0000"+
-        "\u692A\u3B27\u3F45\u3730\u4C74\u0000\u4C79\u3D72"+
-        "\u7B62\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6937\u6935\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4F4E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6934\u0000\u0000\u0000\u4D75\u0000\u6936"+
-        "\u6938\u0000\u0000\u0000\u0000\u6939\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u693C\u693A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4623\u693B\u0000\u0000"+
-        "\u0000\u484D\u692E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3D73"+
-        "\u0000\u693D\u6942\u4174\u0000\u0000\u6941\u0000"+
-        "\u0000\u0000\u6922\u0000\u0000\u0000\u6943\u4149"+
-        "\u0000\u0000\u693E\u6940\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u693F\u0000\u0000\u5D31\u5D22"+
-        "\u0000\u0000\u6945\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6944\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4D76\u0000\u623C"+
-        "\u6946\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6947"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6948\u3857\u0000"+
-        "\u3554\u0000\u0000\u0000\u694A\u515D\u0000\u0000"+
-        "\u0000\u0000\u3575\u0000\u4E3A\u0000\u3673\u694B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u694C"+
-        "\u0000\u0000\u0000\u436E\u0000\u0000\u0000\u0000"+
-        "\u0000\u694D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u467A\u0000\u303A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3263\u6952\u6953\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u694E\u0000\u3B3D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u694F\u4742\u0000\u0000\u0000"+
-        "\u0000\u6950\u6951\u695B\u0000\u0000\u0000\u6955"+
-        "\u6958\u0000\u0000\u0000\u0000\u0000\u6954\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6956\u0000\u6957\u3C58"+
-        "\u0000\u6959\u0000\u4341\u0000\u3756\u3342\u0000"+
-        "\u0000\u0000\u0000\u0000\u695C\u0000\u0000\u0000"+
-        "\u0000\u333F\u0000\u6961\u0000\u0000\u695D\u6960"+
-        "\u0000\u0000\u0000\u0000\u483A\u0000\u0000\u0000"+
-        "\u0000\u695E\u0000\u0000\u695F\u4948\u485A\u6962"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u427D\u696C\u0000\u6968\u0000\u0000\u326B\u0000"+
-        "\u6966\u0000\u4B2A\u6967\u0000\u0000\u6964\u0000"+
-        "\u6965\u696A\u696D\u0000\u0000\u696B\u0000\u0000"+
-        "\u0000\u6969\u6963\u0000\u0000\u0000\u0000\u0000"+
-        "\u4358\u0000\u6974\u0000\u4C2A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6972\u0000\u0000"+
-        "\u0000\u6973\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u696E\u0000\u0000\u6970"+
-        "\u0000\u0000\u0000\u6971\u0000\u0000\u0000\u696F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4066\u0000\u4F39\u6978\u0000\u6979\u0000"+
-        "\u0000\u0000\u0000\u6A21\u0000\u3F2A\u0000\u697B"+
-        "\u0000\u697E\u0000\u0000\u0000\u0000\u0000\u6976"+
-        "\u6975\u0000\u0000\u6A22\u0000\u0000\u325C\u0000"+
-        "\u697C\u0000\u6A23\u0000\u0000\u0000\u697D\u0000"+
-        "\u0000\u0000\u0000\u0000\u697A\u0000\u4433\u0000"+
-        "\u6977\u0000\u0000\u0000\u0000\u0000\u0000\u4768"+
-        "\u0000\u0000\u6A27\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4D3B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6A26"+
-        "\u0000\u0000\u6A25\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6A2E\u0000\u0000\u0000\u6A28"+
-        "\u0000\u0000\u0000\u6A30\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D66\u6A33\u0000\u6A2A\u0000\u0000"+
-        "\u6A2B\u0000\u0000\u0000\u6A2F\u0000\u6A32\u6A31"+
-        "\u0000\u0000\u0000\u6A29\u0000\u0000\u0000\u0000"+
-        "\u6A2C\u0000\u6A3D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6A36\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6A34"+
-        "\u0000\u0000\u6A35\u0000\u0000\u0000\u6A3A\u6A3B"+
-        "\u0000\u332A\u0000\u3542\u0000\u0000\u6A39\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A24\u0000\u7B65"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A38\u6A3C\u6A37"+
-        "\u0000\u6A3E\u0000\u0000\u0000\u6A40\u6A3F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6A42\u6A41\u695A\u0000\u0000\u0000\u6A46"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6A43\u0000\u0000\u0000\u0000\u6A44\u0000"+
-        "\u0000\u6A45\u0000\u6A47\u0000\u0000\u0000\u0000"+
-        "\u376C\u0000\u6A49\u0000\u6A48\u0000\u3D30\u0000"+
-        "\u0000\u0000\u0000\u0000\u3954\u5E27\u0000\u0000"+
-        "\u0000\u0000\u6A4A\u3D51\u0000\u0000\u0000\u3339"+
-        "\u0000\u6A4B\u0000\u3152\u0000\u3E57\u6A4C\u0000"+
-        "\u0000\u3955\u6A4D\u3061\u0000\u0000\u0000\u0000"+
-        "\u493D\u0000\u0000\u6A4E\u0000\u0000\u0000\u0000"+
-        "\u3F6A\u0000\u6A55\u0000\u0000\u6A52\u0000\u436F"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A53\u6A50\u365E"+
-        "\u0000\u6A4F\u6A56\u0000\u0000\u0000\u0000\u0000"+
-        "\u3736\u0000\u0000\u425E\u0000\u6A5C\u0000\u0000"+
-        "\u0000\u0000\u6A58\u0000\u0000\u0000\u4235\u6A57"+
-        "\u0000\u6A5A\u0000\u0000\u0000\u0000\u6A51\u0000"+
-        "\u0000\u0000\u6A5B\u0000\u6A5D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u486F\u0000\u0000\u6A59\u0000"+
-        "\u6A5E\u6A60\u0000\u0000\u3853\u6A54\u0000\u3041"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6A5F"+
-        "\u0000\u3A5B\u4E76\u6A61\u6A62\u4175\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4E22"+
-        "\u0000\u0000\u0000\u0000\u6A63\u4D35\u0000\u0000"+
-        "\u6A64\u6A65\u0000\u0000\u4A64\u6A66\u0000\u3A40"+
-        "\u0000\u4E23\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6A6B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6A6C\u3E58\u6A6A\u7B66\u0000\u0000"+
-        "\u4D67\u6A67\u0000\u0000\u6A69\u403D\u3F7E\u0000"+
-        "\u0000\u0000\u6A68\u0000\u6A6D\u0000\u0000\u4A23"+
-        "\u0000\u0000\u6A6F\u0000\u6A6E\u0000\u0000\u0000"+
-        "\u336C\u0000\u4B2B\u6A70\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7922\u6A7C\u6A72\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A73\u0000\u0000"+
-        "\u0000\u0000\u6A74\u6A75\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6A79\u0000"+
-        "\u6A7A\u0000\u0000\u6A78\u0000\u0000\u0000\u0000"+
-        "\u0000\u6A76\u0000\u6A71\u6A77\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6A7B\u7037\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3228\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6A7E\u365F"+
-        "\u6A7D\u0000\u0000\u0000\u6B22\u0000\u6B21\u0000"+
-        "\u0000\u0000\u6B24\u0000\u0000\u6B23\u0000\u6B25"+
-        "\u0000\u0000\u3D31\u0000\u6B26\u0000\u0000\u6B27"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6B28\u403E"+
-        "\u0000\u4D57\u0000\u6B29\u0000\u0000\u4A24\u4746"+
-        "\u6B2A\u0000\u6B2B\u382B\u0000\u0000\u0000\u352C"+
-        "\u0000\u0000\u0000\u6B2C\u0000\u0000\u3B6B\u4741"+
-        "\u6B2D\u0000\u3350\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6B2E\u0000\u0000\u0000\u0000\u6B30\u4D77"+
-        "\u0000\u6B2F\u3F46\u0000\u6B31\u0000\u0000\u6B32"+
-        "\u0000\u0000\u6B33\u3451\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B34\u0000\u0000\u6B35\u0000\u6B36"+
-        "\u6B37\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3351\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B38\u0000\u6B39\u6B3A\u0000\u0000"+
-        "\u0000\u0000\u0000\u3272\u0000\u0000\u3F28\u6B3B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6B3C\u0000\u0000\u0000"+
-        "\u6B3D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3840\u0000\u447B\u6B3E\u0000\u0000\u0000\u0000"+
-        "\u3757\u0000\u3F56\u0000\u6B41\u0000\u4624\u0000"+
-        "\u6B40\u0000\u7B67\u3731\u0000\u0000\u6B3F\u4277"+
-        "\u352D\u0000\u0000\u6B42\u0000\u6B43\u0000\u3E59"+
-        "\u0000\u0000\u0000\u376D\u0000\u6B44\u0000\u0000"+
-        "\u0000\u0000\u4B2C\u0000\u0000\u405F\u0000\u0000"+
-        "\u0000\u3576\u0000\u4C75\u414A\u0000\u6B45\u7B68"+
-        "\u0000\u0000\u3F47\u4370\u3E5A\u0000\u0000\u0000"+
-        "\u0000\u6B46\u0000\u0000\u0000\u0000\u6B49\u0000"+
-        "\u6B4A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3A3E\u4242\u6B48\u0000\u3E5B\u493E\u0000\u0000"+
-        "\u0000\u0000\u0000\u6B47\u0000\u0000\u3B6C\u0000"+
-        "\u3153\u0000\u6B4E\u3758\u0000\u0000\u3B6E\u0000"+
-        "\u0000\u3B6D\u0000\u4F4D\u6B4D\u6B4C\u4127\u0000"+
-        "\u354D\u4F43\u333A\u3E5C\u0000\u0000\u0000\u0000"+
-        "\u0000\u7B69\u0000\u0000\u6B4B\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B50\u0000\u6B51\u6B4F\u0000\u3858"+
-        "\u0000\u4D40\u0000\u0000\u3B6F\u4727\u0000\u0000"+
-        "\u0000\u6B54\u0000\u4040\u0000\u4342\u0000\u0000"+
-        "\u4D36\u0000\u6B57\u0000\u0000\u0000\u386C\u0000"+
-        "\u403F\u6B53\u0000\u6B58\u386D\u6B55\u6B56\u7B6A"+
-        "\u6B52\u0000\u0000\u0000\u4062\u4649\u0000\u0000"+
-        "\u432F\u0000\u325D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4870\u0000\u0000\u3543\u0000\u7B6B\u4434"+
-        "\u0000\u0000\u6B5B\u0000\u6B59\u0000\u0000\u434C"+
-        "\u0000\u0000\u0000\u4041\u3452\u6B5A\u0000\u3F5B"+
-        "\u0000\u0000\u4E4A\u0000\u0000\u0000\u4F40\u0000"+
-        "\u0000\u0000\u6B5C\u6B67\u4435\u0000\u6B66\u7B6C"+
-        "\u6B63\u6B6B\u6B64\u0000\u6B60\u0000\u447C\u6B5F"+
-        "\u0000\u0000\u0000\u6B5D\u0000\u4D21\u3B70\u0000"+
-        "\u0000\u6B61\u0000\u6B5E\u0000\u0000\u7B6E\u6B65"+
-        "\u3D74\u0000\u3841\u0000\u0000\u0000\u427A\u0000"+
-        "\u4B45\u315A\u3062\u0000\u4625\u0000\u0000\u6B69"+
-        "\u0000\u0000\u0000\u0000\u6B68\u0000\u4666\u0000"+
-        "\u6B6D\u0000\u0000\u0000\u6B62\u0000\u6B6C\u6B6E"+
-        "\u0000\u382C\u6B6A\u3956\u0000\u3C55\u0000\u0000"+
-        "\u6B6F\u4D58\u0000\u0000\u0000\u0000\u6B72\u0000"+
-        "\u6B75\u0000\u0000\u6B73\u4935\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6B70\u0000\u0000\u0000\u0000"+
-        "\u0000\u3660\u0000\u0000\u0000\u0000\u6B74\u0000"+
-        "\u0000\u6B76\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6B7A\u0000\u0000\u6B77\u0000\u6B79\u6B78"+
-        "\u0000\u0000\u0000\u7B6F\u0000\u0000\u6B7B\u0000"+
-        "\u3C31\u0000\u6B7D\u6B7C\u4968\u0000\u0000\u6C21"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3759\u0000"+
-        "\u0000\u0000\u0000\u6B7E\u6C22\u0000\u0000\u6C23"+
-        "\u3544\u6641\u3E79\u0000\u6C24\u0000\u0000\u386E"+
-        "\u0000\u0000\u0000\u0000\u0000\u6C25\u0000\u7B70"+
-        "\u6C26\u0000\u0000\u3B3E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5A4E\u0000\u6C27\u0000\u6C28\u0000"+
-        "\u3D32\u0000\u6C29\u6C2A\u0000\u0000\u6C2B\u0000"+
-        "\u0000\u6C2C\u6C2D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u432B"+
-        "\u0000\u0000\u6C2E\u0000\u0000\u0000\u0000\u6C30"+
-        "\u0000\u6C2F\u0000\u0000\u0000\u0000\u4626\u0000"+
-        "\u6C31\u0000\u4B2D\u0000\u6C32\u0000\u6C33\u0000"+
-        "\u6C34\u0000\u0000\u0000\u0000\u6C35\u0000\u0000"+
-        "\u0000\u0000\u465A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3E5D\u6C36\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u396B\u502E\u6C37\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6C38\u493F\u6C39\u0000\u6C41\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C3A\u0000\u0000\u6C3C\u0000\u0000"+
-        "\u0000\u6C3B\u6C3D\u0000\u4B46\u6C3E\u6C3F\u0000"+
-        "\u0000\u0000\u0000\u0000\u6C40\u0000\u0000\u0000"+
-        "\u6C42\u0000\u0000\u0000\u0000\u332D\u4467\u0000"+
-        "\u4969\u3A62\u3957\u0000\u0000\u0000\u0000\u494F"+
-        "\u325F\u484E\u6C45\u3453\u4055\u6C44\u6C49\u4379"+
-        "\u4C63\u0000\u6C47\u6C48\u352E\u0000\u6C4A\u4763"+
-        "\u425F\u0000\u0000\u4871\u453D\u6C46\u0000\u4B47"+
-        "\u326C\u6C4C\u4F28\u4442\u4F45\u0000\u0000\u3B71"+
-        "\u6C4B\u0000\u4231\u0000\u0000\u6C5C\u4128\u0000"+
-        "\u0000\u4678\u0000\u4950\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C4F\u3B3F\u3B72\u0000\u3E5E\u0000"+
-        "\u4765\u0000\u382D\u6C4E\u6C4D\u0000\u496A\u0000"+
-        "\u0000\u0000\u3C41\u0000\u0000\u4552\u0000\u0000"+
-        "\u7B71\u0000\u0000\u0000\u7B72\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C51\u6C52\u3958\u6C50\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6C53\u6C54\u0000\u6C56"+
-        "\u4223\u0000\u6C55\u3466\u0000\u6C58\u0000\u6C57"+
-        "\u6C59\u0000\u7B73\u6C5B\u6C5D\u0000\u6C5E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4056\u0000\u3C4F\u6C5F"+
-        "\u0000\u0000\u0000\u3352\u0000\u6C60\u0000\u0000"+
-        "\u4176\u6C61\u0000\u6C62\u496B\u0000\u7B74\u352F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6C63\u0000\u0000\u0000\u4436\u0000\u0000"+
-        "\u0000\u0000\u315B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6C64\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3C71\u0000\u0000\u0000\u0000"+
-        "\u3F76\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u422D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C67\u0000\u0000\u0000\u6C66\u0000"+
-        "\u0000\u0000\u6C65\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6C6D\u6C6B\u0000\u0000\u6C68"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6C6A\u0000"+
-        "\u0000\u0000\u6C69\u6C6C\u0000\u3577\u0000\u6C70"+
-        "\u0000\u4057\u0000\u6C71\u0000\u0000\u0000\u0000"+
-        "\u3859\u0000\u6C6E\u6C6F\u0000\u0000\u0000\u4F29"+
-        "\u0000\u0000\u0000\u4437\u0000\u4129\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6C72\u0000\u0000\u6C75"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6C73\u6C74\u4D59\u0000\u0000\u0000\u0000\u4627"+
-        "\u6C78\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6C76\u6C77\u6C79"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D29\u0000\u0000\u0000\u0000\u0000"+
-        "\u6C7C\u0000\u0000\u0000\u6C7D\u6C7B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C7A\u0000\u447D\u0000\u0000\u6D21"+
-        "\u6D25\u6D22\u6C7E\u0000\u6D23\u0000\u0000\u0000"+
-        "\u6D24\u0000\u0000\u0000\u0000\u6D2B\u0000\u0000"+
-        "\u0000\u6D26\u0000\u0000\u0000\u0000\u0000\u4058"+
-        "\u6D28\u0000\u0000\u6D2A\u6D27\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D2D\u0000\u3D33\u0000\u6D2C\u0000"+
-        "\u0000\u0000\u0000\u0000\u6D2E\u0000\u0000\u0000"+
-        "\u0000\u6D2F\u0000\u0000\u6D32\u6D31\u0000\u6D30"+
-        "\u0000\u0000\u6D34\u6D33\u0000\u4C76\u0000\u0000"+
-        "\u0000\u6D36\u0000\u6D35\u6D37\u0000\u0000\u0000"+
-        "\u0000\u6D38\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6D3A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D39\u3F48\u6D3B\u0000\u0000\u366D"+
-        "\u6D3C\u6D3E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6D3F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6D40\u6D3D\u0000"+
-        "\u6D41\u0000\u3C56\u6D42\u3530\u3733\u0000\u7B76"+
-        "\u0000\u0000\u382E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6D43\u0000\u0000\u0000\u4670"+
-        "\u0000\u0000\u453E\u6D44\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6D47\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C34\u0000\u0000\u6D46\u6D45\u375A\u6D48\u0000"+
-        "\u0000\u0000\u0000\u3353\u0000\u6D4A\u0000\u0000"+
-        "\u0000\u3A5C\u6D49\u0000\u6D52\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D4C\u6D4E\u4A65\u6D4B\u0000\u0000"+
-        "\u0000\u6D4D\u0000\u6D51\u6D4F\u3531\u0000\u6D50"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6D53\u0000"+
-        "\u0000\u475A\u4E58\u0000\u0000\u0000\u0000\u3D34"+
-        "\u0000\u0000\u0000\u6D54\u0000\u0000\u0000\u0000"+
-        "\u4D22\u6D56\u0000\u6D55\u0000\u0000\u6D59\u4D41"+
-        "\u0000\u0000\u6D58\u0000\u336D\u6D57\u6D5C\u0000"+
-        "\u0000\u6D5B\u0000\u0000\u6D5A\u4532\u6D5D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6D5E"+
-        "\u0000\u0000\u0000\u0000\u6D5F\u0000\u0000\u396C"+
-        "\u0000\u3725\u6D60\u6D61\u6D62\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F49\u6D63\u0000\u3C2D\u6D64"+
-        "\u0000\u0000\u0000\u6D65\u0000\u0000\u0000\u5221"+
-        "\u517E\u0000\u0000\u0000\u0000\u6D66\u6570\u6D67"+
-        "\u4324\u3F2B\u4740\u0000\u0000\u0000\u0000\u6D68"+
-        "\u0000\u0000\u4A55\u4454\u397E\u0000\u0000\u4329"+
-        "\u0000\u0000\u312A\u0000\u4B78\u3F57\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u375E\u0000"+
-        "\u0000\u3661\u0000\u0000\u4A56\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D69\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6D6B\u0000\u0000\u6D6A\u3260\u0000"+
-        "\u0000\u4676\u6D6C\u4777\u0000\u4533\u0000\u6D6D"+
-        "\u3D52\u0000\u0000\u0000\u6D6F\u0000\u0000\u4C42"+
-        "\u6D7E\u6D71\u6D72\u0000\u0000\u4449\u0000\u0000";
-
-    private final static String innerIndex5=
-        "\u4260\u4177\u0000\u4628\u0000\u6D70\u3555\u0000"+
-        "\u0000\u0000\u0000\u6D79\u0000\u6D76\u6E25\u4629"+
-        "\u4360\u6D73\u0000\u447E\u4553\u6D74\u6D78\u3F60"+
-        "\u0000\u4767\u444C\u0000\u0000\u4042\u6D77\u422E"+
-        "\u4224\u6D75\u3029\u4F22\u0000\u0000\u0000\u6D7A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4261\u0000"+
-        "\u0000\u3D35\u3F4A\u0000\u0000\u6D7C\u6D7B\u0000"+
-        "\u306F\u6D7D\u0000\u0000\u492F\u0000\u6E27\u0000"+
-        "\u0000\u465B\u3F6B\u0000\u0000\u4359\u0000\u3678"+
-        "\u0000\u6E26\u4D37\u313F\u0000\u4A57\u3261\u6E21"+
-        "\u6E22\u6E23\u6E24\u463B\u4323\u3063\u6E28\u0000"+
-        "\u6E29\u7423\u0000\u0000\u423D\u0000\u6E2A\u0000"+
-        "\u3173\u414C\u0000\u382F\u0000\u4D5A\u0000\u7B79"+
-        "\u6E2B\u452C\u0000\u0000\u0000\u4178\u3C57\u6E2C"+
-        "\u0000\u0000\u6E2F\u0000\u0000\u3D65\u6E2D\u412B"+
-        "\u412A\u0000\u3064\u0000\u4E4B\u6E31\u0000\u4872"+
-        "\u6E33\u6E32\u6E30\u6364\u3454\u0000\u0000\u6D6E"+
-        "\u0000\u6E35\u6E34\u0000\u0000\u0000\u0000\u6E36"+
-        "\u0000\u4D38\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4661\u0000\u0000\u4B2E\u0000"+
-        "\u6E37\u0000\u3C59\u0000\u0000\u0000\u0000\u6E38"+
-        "\u0000\u6E39\u0000\u0000\u0000\u6E3A\u0000\u0000"+
-        "\u4521\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u306A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3959\u0000\u0000\u0000\u4F3A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6E3E\u0000\u0000\u7B7A\u0000"+
-        "\u0000\u3734\u6E3B\u0000\u6E3C\u0000\u0000\u0000"+
-        "\u4974\u0000\u0000\u0000\u0000\u3354\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4D39\u0000\u363F"+
-        "\u0000\u0000\u0000\u0000\u0000\u4554\u0000\u0000"+
-        "\u0000\u0000\u6E3F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E40\u0000\u0000\u7B7C\u0000\u0000"+
-        "\u0000\u6E41\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7B7D"+
-        "\u0000\u0000\u0000\u0000\u0000\u4522\u0000\u0000"+
-        "\u6E43\u0000\u6E42\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4653\u6E44\u3D36\u3C60\u475B\u4371\u0000"+
-        "\u0000\u0000\u3C72\u0000\u3F6C\u0000\u6E45\u0000"+
-        "\u6E46\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3F5D\u6E47\u0000\u6E48\u0000\u0000"+
-        "\u0000\u6E49\u4D6F\u0000\u3D37\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E4B\u6E4A\u0000\u395A\u0000\u3973"+
-        "\u3B40\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E4E\u0000\u0000\u0000\u0000\u3D66"+
-        "\u0000\u6E4D\u0000\u6E4C\u0000\u4269\u0000\u0000"+
-        "\u386F\u0000\u4043\u0000\u0000\u0000\u0000\u4830"+
-        "\u0000\u0000\u0000\u0000\u3D39\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E4F\u0000\u3E5F\u0000\u0000\u0000"+
-        "\u0000\u0000\u6E52\u6E50\u0000\u0000\u0000\u6E51"+
-        "\u0000\u0000\u0000\u0000\u6E54\u6E53\u0000\u0000"+
-        "\u3E7A\u0000\u6E55\u0000\u0000\u0000\u0000\u0000"+
-        "\u6E56\u6E57\u0000\u0000\u0000\u0000\u4850\u3A53"+
-        "\u3C61\u6E58\u0000\u6E59\u4E24\u3D45\u4C6E\u4E4C"+
-        "\u6E5A\u3662\u0000\u0000\u0000\u0000\u6E5B\u7C21"+
-        "\u4523\u0000\u7B7E\u6E5E\u3378\u3F4B\u7C22\u6E5C"+
-        "\u0000\u6E5D\u0000\u4460\u7C25\u7C26\u4B55\u367C"+
-        "\u0000\u0000\u0000\u0000\u0000\u7C23\u7C24\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6E60\u6E61\u0000"+
-        "\u0000\u0000\u0000\u0000\u6E5F\u0000\u0000\u6E63"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7C27\u0000"+
-        "\u0000\u0000\u7C29\u0000\u0000\u465F\u3343\u0000"+
-        "\u7C28\u6E67\u0000\u0000\u6E64\u6E66\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6E62\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F4F\u0000\u0000\u6E65\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4E6B\u0000\u0000\u385A"+
-        "\u0000\u7C30\u7C2A\u0000\u7C2C\u0000\u0000\u6E6F"+
-        "\u7C2B\u0000\u0000\u0000\u4534\u6E6A\u0000\u0000"+
-        "\u6E6D\u6E6B\u0000\u6E70\u0000\u0000\u7C2D\u0000"+
-        "\u6E71\u7C2F\u0000\u0000\u0000\u0000\u0000\u6E69"+
-        "\u0000\u7C2E\u6E76\u3174\u0000\u0000\u6E68\u0000"+
-        "\u0000\u0000\u482D\u0000\u6E6C\u0000\u3E60\u7C31"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u395B\u0000\u0000\u0000\u0000\u0000\u7C33"+
-        "\u7C34\u0000\u0000\u0000\u0000\u0000\u4B48\u0000"+
-        "\u3664\u0000\u0000\u3D46\u0000\u463C\u0000\u0000"+
-        "\u7924\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u412D\u0000\u6E74\u0000\u6E6E\u6E73\u0000"+
-        "\u4C43\u0000\u4438\u6E75\u6E72\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7C32"+
-        "\u0000\u0000\u0000\u0000\u0000\u412C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E79"+
-        "\u0000\u6E78\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E77"+
-        "\u7C38\u0000\u4B2F\u7C3C\u0000\u7C3A\u0000\u7C36"+
-        "\u0000\u7C37\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7C3B\u0000\u0000\u0000\u3D7B\u0000\u0000\u7C35"+
-        "\u0000\u6E7A\u4A5F\u0000\u0000\u3154\u0000\u0000"+
-        "\u0000\u0000\u4946\u4372\u0000\u0000\u0000\u0000"+
-        "\u3578\u792A\u6E7C\u7C3F\u395D\u0000\u0000\u7C42"+
-        "\u0000\u0000\u7C44\u0000\u0000\u0000\u3B2C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E7B"+
-        "\u3F6D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3F6E\u6F21\u6F23\u0000\u0000\u7C43\u7C41\u0000"+
-        "\u3E7B\u7C3E\u6F22\u6F24\u0000\u7C3D\u3653\u0000"+
-        "\u4945\u0000\u0000\u3C62\u4F23\u0000\u6E7E\u3A78"+
-        "\u0000\u0000\u4F3F\u0000\u0000\u6F26\u0000\u0000"+
-        "\u0000\u0000\u6F25\u6F27\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6E7D\u0000\u0000\u0000"+
-        "\u7923\u0000\u0000\u4669\u0000\u4555\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4457\u0000\u6F2C\u7C46"+
-        "\u0000\u0000\u0000\u4343\u6F28\u0000\u0000\u0000"+
-        "\u6F29\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u372D\u0000\u6F2B\u0000"+
-        "\u7C45\u0000\u0000\u0000\u0000\u3830\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6F2A\u0000\u3E61\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3379\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6F30\u0000\u3A3F\u4179"+
-        "\u0000\u0000\u444A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7C47\u0000\u0000\u333B"+
-        "\u0000\u0000\u0000\u0000\u6F2E\u6F2F\u4443\u0000"+
-        "\u6F2D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F31\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6F37\u0000\u0000\u7C48\u0000"+
-        "\u6F3A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F39\u452D\u0000\u0000\u0000\u0000\u6F32\u6F33"+
-        "\u6F36\u0000\u0000\u0000\u0000\u6F38\u7C49\u0000"+
-        "\u0000\u3640\u0000\u0000\u6F3B\u6F35\u0000\u0000"+
-        "\u6F34\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7C4A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6F3F\u0000\u0000\u0000\u6F40"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F41\u0000\u0000\u6F3E\u6F3D\u0000\u0000\u0000"+
-        "\u3E62\u462A\u6F3C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F45\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6F43\u0000\u0000\u0000\u0000"+
-        "\u0000\u7C4B\u0000\u0000\u0000\u6F44\u6F42\u0000"+
-        "\u4278\u0000\u6F46\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F47\u0000\u0000\u6F49\u7C4C\u0000\u0000"+
-        "\u7C4D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3455\u6F48\u4C7A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6F54\u6F4A\u0000\u0000\u6F4D\u0000"+
-        "\u6F4B\u0000\u6F4C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6F4E\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F50\u0000\u0000\u0000\u0000\u6F51\u0000\u6F52"+
-        "\u0000\u0000\u0000\u0000\u6F55\u6F53\u6F56\u6F58"+
-        "\u0000\u6F57\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4439"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C67\u0000\u6F59\u412E\u0000\u0000\u0000\u6F5A"+
-        "\u0000\u4A44\u6F5B\u332B\u0000\u0000\u0000\u313C"+
-        "\u0000\u3457\u7C4E\u3456\u6F5C\u0000\u6F5D\u0000"+
-        "\u6F5E\u6F5F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F60\u0000\u3458\u3355\u395E\u4836\u0000\u6F62"+
-        "\u6F61\u0000\u0000\u0000\u0000\u6F63\u0000\u0000"+
-        "\u0000\u0000\u315C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6F66\u0000\u6F65\u6F64\u0000\u6F67\u0000"+
-        "\u0000\u0000\u0000\u6F6A\u0000\u0000\u0000\u3047"+
-        "\u0000\u0000\u6F68\u0000\u6F6C\u6F6B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6F6E\u6F6D\u6F6F\u0000"+
-        "\u462E\u0000\u0000\u0000\u6F70\u0000\u0000\u0000"+
-        "\u0000\u6F71\u6F73\u0000\u0000\u6F72\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u496C\u0000\u0000\u0000"+
-        "\u0000\u6F74\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6F75\u0000\u3A65\u0000\u0000\u0000\u6F76\u6F77"+
-        "\u0000\u0000\u4B49\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u414B\u0000\u0000\u0000\u3024"+
-        "\u424B\u0000\u6F78\u0000\u496D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6F7B\u6F79\u395F\u0000\u6F7A"+
-        "\u3842\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A45\u6F7D\u7021\u6F7E\u7022"+
-        "\u0000\u0000\u3121\u3F58\u3D7C\u3459\u7023\u0000"+
-        "\u0000\u0000\u4766\u0000\u7025\u0000\u0000\u0000"+
-        "\u3122\u0000\u7024\u4444\u0000\u4E4D\u462B\u6F7C"+
-        "\u4E26\u0000\u3831\u0000\u0000\u4D5B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3679\u4E34\u0000"+
-        "\u3728\u0000\u4262\u6721\u0000\u7026\u332C\u3F6F"+
-        "\u0000\u0000\u0000\u0000\u3356\u7028\u0000\u7029"+
-        "\u7027\u3764\u0000\u3A5D\u3E63\u7C51\u0000\u0000"+
-        "\u3123\u0000\u0000\u4E59\u0000\u0000\u0000\u702B"+
-        "\u6E2E\u0000\u702A\u0000\u0000\u0000\u0000\u7C52"+
-        "\u702E\u702C\u702D\u0000\u702F\u0000\u7030\u4E6C"+
-        "\u7031\u7032\u0000\u4049\u483B\u0000\u0000\u0000"+
-        "\u3F7D\u3467\u0000\u0000\u4D3A\u326D\u3D38\u385B"+
-        "\u0000\u7035\u0000\u7034\u3B73\u7036\u7033\u0000"+
-        "\u0000\u3B28\u0000\u0000\u0000\u703A\u6A2D\u0000"+
-        "\u0000\u5256\u0000\u3F77\u7038\u0000\u0000\u0000"+
-        "\u0000\u0000\u4E25\u4671\u0000\u0000\u0000\u0000"+
-        "\u312B\u0000\u4063\u3C36\u0000\u0000\u0000\u0000"+
-        "\u4A37\u0000\u3140\u0000\u0000\u0000\u4E6D\u4D6B"+
-        "\u0000\u703B\u0000\u4545\u0000\u0000\u0000\u0000"+
-        "\u3C7B\u0000\u0000\u0000\u703C\u0000\u703D\u3F4C"+
-        "\u703E\u0000\u4E6E\u0000\u0000\u7039\u7040\u7042"+
-        "\u0000\u7041\u0000\u703F\u0000\u0000\u7043\u0000"+
-        "\u0000\u7044\u0000\u0000\u417A\u0000\u3262\u0000"+
-        "\u0000\u0000\u0000\u0000\u7045\u0000\u0000\u4C38"+
-        "\u0000\u0000\u7046\u0000\u0000\u0000\u0000\u0000"+
-        "\u7047\u0000\u4F2A\u7C53\u0000\u0000\u0000\u0000"+
-        "\u5B31\u7048\u0000\u7C54\u0000\u7049\u704A\u0000"+
-        "\u0000\u0000\u704E\u7C55\u704B\u0000\u704C\u0000"+
-        "\u704D\u704F\u0000\u0000\u0000\u7C56\u0000\u7C57"+
-        "\u0000\u7C58\u4044\u0000\u0000\u7C59\u4C77\u0000"+
-        "\u0000\u4045\u0000\u0000\u7050\u0000\u4873\u0000"+
-        "\u7051\u7353\u4C4C\u0000\u7052\u0000\u7053\u0000"+
-        "\u7054\u3357\u0000\u7056\u0000\u3F59\u0000\u0000"+
-        "\u0000\u7057\u0000\u0000\u3724\u0000\u0000\u0000"+
-        "\u0000\u7058\u705C\u0000\u705A\u0000\u0000\u0000"+
-        "\u0000\u705B\u0000\u0000\u3373\u7059\u705D\u0000"+
-        "\u0000\u0000\u0000\u705E\u0000\u3048\u0000\u705F"+
-        "\u7060\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3E64\u0000\u0000\u0000\u7061\u0000\u0000\u0000"+
-        "\u3547\u0000\u0000\u7064\u0000\u0000\u7063\u0000"+
-        "\u7062\u0000\u0000\u6B71\u0000\u4A5C\u0000\u0000"+
-        "\u0000\u0000\u0000\u7065\u7066\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7067\u0000\u0000\u7068\u0000"+
-        "\u7069\u0000\u0000\u706A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u345A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u706B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u706C\u4723\u0000"+
-        "\u0000\u0000\u706E\u323B\u0000\u7071\u7070\u0000"+
-        "\u0000\u0000\u0000\u3124\u0000\u0000\u0000\u3641"+
-        "\u0000\u4A47\u443A\u3A22\u0000\u3960\u3D67\u0000"+
-        "\u3F5C\u0000\u0000\u0000\u7073\u0000\u0000\u7072"+
-        "\u4D42\u3468\u4852\u465C\u0000\u0000\u0000\u3F7C"+
-        "\u4E4E\u0000\u375B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u7076\u0000\u0000\u7075\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4B4B\u462C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3150\u0000\u0000\u7077"+
-        "\u7074\u0000\u0000\u4951\u4D6A\u7078\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7079\u0000"+
-        "\u0000\u0000\u0000\u707B\u426A\u335B\u335C\u707A"+
-        "\u0000\u0000\u0000\u0000\u3469\u3832\u0000\u7C5A"+
-        "\u346A\u0000\u0000\u453F\u0000\u0000\u4E60\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7C5B\u0000\u385C"+
-        "\u0000\u0000\u0000\u707C\u0000\u0000\u0000\u707D"+
-        "\u707E\u7121\u0000\u7123\u7122\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4977\u0000\u7124\u0000\u0000\u0000\u0000\u7125"+
-        "\u0000\u7126\u0000\u0000\u0000\u0000\u7127\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7129\u7128\u0000\u712A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4874\u664C\u0000\u0000\u3F29"+
-        "\u0000\u0000\u3532\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u712B\u0000\u712C\u0000\u522C\u5D3B\u4853"+
-        "\u0000\u0000\u307B\u0000\u303B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3B74\u4B30\u3E7E\u0000"+
-        "\u0000\u0000\u0000\u712D\u0000\u4C5F\u0000\u0000"+
-        "\u0000\u712E\u4D5C\u0000\u3142\u0000\u0000\u0000"+
-        "\u3B41\u0000\u712F\u326E\u7130\u0000\u0000\u0000"+
-        "\u7131\u0000\u0000\u0000\u0000\u7133\u7134\u0000"+
-        "\u7136\u7132\u0000\u0000\u7135\u0000\u0000\u7C5E"+
-        "\u345B\u0000\u0000\u0000\u7137\u0000\u7138\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7139\u713A\u0000"+
-        "\u0000\u0000\u713B\u0000\u0000\u713D\u0000\u0000"+
-        "\u0000\u713C\u0000\u713F\u7142\u0000\u0000\u0000"+
-        "\u713E\u7140\u7141\u0000\u0000\u7143\u0000\u3642"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3C73\u7144"+
-        "\u7145\u3961\u0000\u0000\u0000\u0000\u7C60\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7146\u0000\u0000"+
-        "\u333E\u0000\u0000\u0000\u474F\u7147\u7148\u0000"+
-        "\u0000\u0000\u0000\u435A\u466B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7149\u0000\u0000\u0000"+
-        "\u0000\u477D\u0000\u0000\u424C\u3158\u366E\u0000"+
-        "\u366F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4373\u714E\u3670\u0000\u0000\u326F\u0000\u0000"+
-        "\u714D\u0000\u0000\u714B\u0000\u714C\u0000\u714A"+
-        "\u0000\u0000\u7158\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u714F\u7150\u0000"+
-        "\u0000\u7151\u7152\u0000\u0000\u0000\u0000\u0000"+
-        "\u7154\u0000\u0000\u7153\u0000\u0000\u0000\u3D59"+
-        "\u0000\u7155\u0000\u0000\u0000\u7157\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3533\u7156"+
-        "\u0000\u0000\u417B\u3833\u0000\u0000\u0000\u0000"+
-        "\u0000\u7159\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u424D\u0000\u0000\u715A\u0000\u0000\u0000\u0000"+
-        "\u462D\u0000\u0000\u0000\u0000\u0000\u0000\u715B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7160\u0000"+
-        "\u715E\u0000\u715D\u715F\u0000\u715C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7162\u7C61\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7161\u0000\u7164"+
-        "\u0000\u0000\u3643\u7163\u0000\u0000\u0000\u7165"+
-        "\u0000\u0000\u7166\u0000\u7168\u7167\u0000\u0000"+
-        "\u0000\u7169\u716B\u716A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u397C\u0000\u0000\u0000\u0000\u716C\u0000\u0000"+
-        "\u716D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u333C\u0000\u0000\u0000\u716E\u0000\u0000\u0000"+
-        "\u716F\u0000\u0000\u0000\u3F71\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7170"+
-        "\u0000\u7171\u0000\u7172\u7173\u0000\u0000\u0000"+
-        "\u3962\u7C62\u0000\u0000\u7C63\u0000\u7174\u7175"+
-        "\u0000\u0000\u7176\u7177\u0000\u0000\u7178\u0000"+
-        "\u0000\u0000\u4831\u717A\u0000\u4926\u717B\u7179"+
-        "\u0000\u717D\u0000\u0000\u717C\u0000\u0000\u717E"+
-        "\u0000\u0000\u0000\u7221\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7222\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7223\u0000\u7224\u0000\u0000\u0000\u0000\u7225"+
-        "\u0000\u0000\u7226\u7227\u0000\u7228\u0000\u7229"+
-        "\u722A\u722B\u722C\u0000\u0000\u0000\u722D\u722E"+
-        "\u0000\u5D35\u722F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6478\u3534\u0000\u0000\u0000"+
-        "\u0000\u3321\u3A32\u7231\u7230\u4C25\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7233\u7234\u7232"+
-        "\u0000\u7235\u0000\u0000\u4B62\u0000\u0000\u0000"+
-        "\u7236\u0000\u357B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4F25"+
-        "\u0000\u0000\u7C65\u0000\u7237\u7C64\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7239\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u303E\u7C66"+
-        "\u0000\u723A\u4A2B\u7238\u0000\u0000\u723B\u723C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u723D"+
-        "\u723E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u723F\u0000\u4B6E\u3B2D\u0000\u3A7A\u412F\u0000"+
-        "\u0000\u7C67\u0000\u0000\u7240\u0000\u0000\u0000"+
-        "\u0000\u7243\u0000\u7C68\u0000\u0000\u0000\u0000"+
-        "\u7241\u0000\u0000\u0000\u0000\u0000\u7244\u0000"+
-        "\u0000\u3871\u7242\u0000\u0000\u0000\u0000\u7245"+
-        "\u0000\u7246\u7247\u0000\u724B\u0000\u3B2A\u0000"+
-        "\u0000\u0000\u0000\u4264\u0000\u0000\u0000\u0000"+
-        "\u0000\u724C\u7249\u7248\u724A\u0000\u0000\u0000"+
-        "\u375F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7250\u724F\u724E\u0000\u0000\u3033\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7C69\u0000\u0000\u0000\u725A\u0000\u7256\u0000"+
-        "\u7257\u7253\u7259\u0000\u7255\u3362\u0000\u0000"+
-        "\u4F4C\u0000\u7258\u7254\u7252\u7251\u0000\u0000"+
-        "\u0000\u0000\u0000\u725C\u0000\u0000\u0000\u0000"+
-        "\u0000\u725F\u0000\u0000\u725E\u725D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4949\u725B\u3073"+
-        "\u7260\u0000\u7262\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u336F\u724D\u3137\u0000\u0000\u7264\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7263\u7261"+
-        "\u432D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4B70\u0000\u0000\u0000\u0000\u4E5A"+
-        "\u0000\u0000\u7265\u0000\u0000\u0000\u0000\u0000"+
-        "\u7266\u0000\u0000\u0000\u0000\u0000\u0000\u7267"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7268\u0000"+
-        "\u7269\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u443B\u0000\u726A"+
-        "\u0000\u4837\u0000\u726F\u726B\u0000\u0000\u0000"+
-        "\u726C\u0000\u0000\u4B31\u4C44\u0000\u4650\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7270\u0000\u0000\u7271\u463E"+
-        "\u726E\u726D\u0000\u0000\u0000\u0000\u322A\u0000"+
-        "\u0000\u0000\u7279\u0000\u0000\u7278\u0000\u0000"+
-        "\u0000\u0000\u0000\u3175\u0000\u0000\u0000\u7276"+
-        "\u0000\u0000\u0000\u7275\u0000\u0000\u7273\u0000"+
-        "\u337B\u0000\u7272\u3C32\u3229\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3963\u0000\u0000\u727C\u727B"+
-        "\u0000\u727A\u0000\u0000\u7277\u0000\u727D\u0000"+
-        "\u727E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7325\u7324\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u7326\u0000\u0000\u312D\u7321\u7322\u0000"+
-        "\u3974\u4C39\u0000\u0000\u7323\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7C6B\u4B32\u0000\u0000\u732B"+
-        "\u7C6A\u0000\u7327\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u732C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7329"+
-        "\u0000\u7328\u0000\u0000\u0000\u0000\u0000\u375C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u732D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u732E\u0000\u0000\u0000"+
-        "\u0000\u732F\u0000\u732A\u0000\u0000\u0000\u7274"+
-        "\u0000\u0000\u7330\u0000\u4461\u0000\u0000\u0000"+
-        "\u7334\u0000\u7335\u7333\u0000\u0000\u0000\u0000"+
-        "\u0000\u7332\u7338\u0000\u7331\u0000\u7336\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7337"+
-        "\u0000\u0000\u0000\u733A\u0000\u0000\u0000\u0000"+
-        "\u0000\u7339\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u733C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u733D\u0000\u733E"+
-        "\u0000\u0000\u4F49\u0000\u0000\u0000\u0000\u0000"+
-        "\u733B\u426B\u3A6D\u0000\u0000\u733F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u7C6D\u7340\u7341\u0000\u0000\u7342\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u7343\u0000\u0000"+
-        "\u3834\u7344\u0000\u0000\u0000\u7345\u0000\u3C2F"+
-        "\u0000\u7346\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7347\u0000\u0000\u7348\u7349\u0000\u0000\u0000"+
-        "\u0000\u734C\u734A\u4F3C\u0000\u734B\u0000\u4E6F"+
-        "\u0000\u0000\u0000\u0000\u0000\u734D\u0000\u4E5B"+
-        "\u0000\u0000\u0000\u0000\u0000\u734E\u477E\u0000"+
-        "\u0000\u734F\u7351\u0000\u0000\u7352\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7350\u396D\u4C4D\u4B63\u5677\u0000\u5D60\u4B7B"+
-        "\u0000\u0000\u0000\u0000\u322B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7354\u3550\u7355\u7356"+
-        "\u7357\u7C6E\u3975\u0000\u7358\u0000\u0000\u0000"+
-        "\u6054\u4C5B\u0000\u4263\u7359\u735B\u735A\u0000"+
-        "\u735C\u0000\u0000\u0000\u0000\u735D\u0000\u0000"+
-        "\u735E\u0000\u0000\u0000\u0000\u0000\u0000\u735F"+
-        "\u0000\u0000\u0000\u0000\u7360\u0000\u7361\u7362"+
-        "\u0000\u7363\u0000\u7364\u7365\u7366\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7367"+
-        "\u7368\u0000\u0000\u0000\u0000\u0000\u4524\u0000"+
-        "\u0000\u0000\u0000\u385D\u0000\u736A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u414D\u736B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u736C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4921\u0000\u0000\u736D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u736E\u6337\u0000\u0000\u6C5A\u706D"+
-        "\u0000\u0000\u736F\u0000\u7370\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7372"+
-        "\u7373\u7374\u4E70\u7371\u0000\u0000\u7375\u7376"+
-        "\u0000\u0000\u7378\u0000\u7377\u0000\u0000\u0000"+
-        "\u0000\u0000\u737A\u0000\u0000\u0000\u737B\u7379"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4E36\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u737C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u737D\u6354\u0000\u0000"+
-        "\u737E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex6=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u7A46\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7C4F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7954\u795F"+
-        "\u7960\u7975\u7A3E\u7A4E\u7A50\u7A7B\u7B23\u7B3A"+
-        "\u7B42\u7B43\u7B44\u7B46\u7B4A\u7B4D\u7B56\u7B61"+
-        "\u7B63\u7B64\u7B6D\u7B75\u7B77\u7B78\u7B7B\u7C39"+
-        "\u7C40\u7C50\u7C5C\u7C5D\u7C5F\u7C6C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u212A\u7C7E\u2174\u2170\u2173\u2175\u7C7D"+
-        "\u214A\u214B\u2176\u215C\u2124\u215D\u2125\u213F"+
-        "\u2330\u2331\u2332\u2333\u2334\u2335\u2336\u2337"+
-        "\u2338\u2339\u2127\u2128\u2163\u2161\u2164\u2129"+
-        "\u2177\u2341\u2342\u2343\u2344\u2345\u2346\u2347"+
-        "\u2348\u2349\u234A\u234B\u234C\u234D\u234E\u234F"+
-        "\u2350\u2351\u2352\u2353\u2354\u2355\u2356\u2357"+
-        "\u2358\u2359\u235A\u214E\u2140\u214F\u2130\u2132"+
-        "\u212E\u2361\u2362\u2363\u2364\u2365\u2366\u2367"+
-        "\u2368\u2369\u236A\u236B\u236C\u236D\u236E\u236F"+
-        "\u2370\u2371\u2372\u2373\u2374\u2375\u2376\u2377"+
-        "\u2378\u2379\u237A\u2150\u2143\u2151\u2141\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2171\u2172\u7C7B\u2131\u7C7C\u216F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    protected final static short index1[] = {
-        1, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        11, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15,
-        16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
-        32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
-        48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
-        64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
-        80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, 0, 0, 0, 0, 98
-    };
-
-    protected final static String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4,
-        innerIndex5,
-        innerIndex6
-    };
-
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0208_Solaris_Decoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0208_Solaris_Decoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-
-public class JIS_X_0208_Solaris_Decoder extends DoubleByteDecoder
-{
-
-    public JIS_X_0208_Solaris_Decoder(Charset cs) {
-        super(cs,
-              index1,
-              index2,
-              0x21,
-              0x7E);
-    }
-    private final static String innerIndex0=
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2460\u2461"+
-        "\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469"+
-        "\u246A\u246B\u246C\u246D\u246E\u246F\u2470\u2471"+
-        "\u2472\u2473\u2160\u2161\u2162\u2163\u2164\u2165"+
-        "\u2166\u2167\u2168\u2169\uFFFD\u3349\u3314\u3322"+
-        "\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D"+
-        "\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E"+
-        "\u338E\u338F\u33C4\u33A1\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u337B\u301D\u301F\u2116"+
-        "\u33CD\u2121\u32A4\u32A5\u32A6\u32A7\u32A8\u3231"+
-        "\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B"+
-        "\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235"+
-        "\u2229\u222A\uFFFD\uFFFD\u7E8A\u891C\u9348\u9288"+
-        "\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45"+
-        "\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92"+
-        "\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E"+
-        "\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164"+
-        "\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB"+
-        "\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E"+
-        "\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC"+
-        "\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953"+
-        "\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F"+
-        "\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53"+
-        "\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34"+
-        "\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5"+
-        "\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6"+
-        "\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B"+
-        "\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12"+
-        "\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929"+
-        "\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13"+
-        "\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73"+
-        "\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F"+
-        "\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8"+
-        "\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88"+
-        "\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F"+
-        "\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"+
-        "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3"+
-        "\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462"+
-        "\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B"+
-        "\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A"+
-        "\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1"+
-        "\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7"+
-        "\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362"+
-        "\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B"+
-        "\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37"+
-        "\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F"+
-        "\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25"+
-        "\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE"+
-        "\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A"+
-        "\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7"+
-        "\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5"+
-        "\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF"+
-        "\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8"+
-        "\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF"+
-        "\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857"+
-        "\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"+
-        "\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70"+
-        "\u9D6B\uFA2D\u9E19\u9ED1\uFFFD\uFFFD\u2170\u2171"+
-        "\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179"+
-        "\u3052\u00A6\uFF07\uFF02\u2170\u2171\u2172\u2173"+
-        "\u2174\u2175\u2176\u2177\u2178\u2179\u2160\u2161"+
-        "\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169"+
-        "\u3052\u00A6\uFF07\uFF02\u3231\u2116\u2121\u306E"+
-        "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631"+
-        "\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00"+
-        "\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD"+
-        "\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094"+
-        "\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215"+
-        "\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372"+
-        "\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF"+
-        "\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10"+
-        "\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4"+
-        "\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6"+
-        "\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8"+
-        "\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D"+
-        "\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137"+
-        "\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE"+
-        "\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624"+
-        "\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2"+
-        "\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0"+
-        "\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2"+
-        "\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6"+
-        "\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"+
-        "\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C"+
-        "\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007"+
-        "\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147"+
-        "\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377"+
-        "\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426"+
-        "\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F"+
-        "\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF"+
-        "\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A"+
-        "\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E"+
-        "\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47"+
-        "\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448"+
-        "\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21"+
-        "\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF"+
-        "\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76"+
-        "\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115"+
-        "\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5"+
-        "\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259"+
-        "\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7"+
-        "\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321"+
-        "\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357"+
-        "\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592"+
-        "\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D"+
-        "\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927"+
-        "\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F"+
-        "\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD";
-
-    private static final short index1[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-
-    private final static String index2[] = {
-        innerIndex0
-    };
-
-    protected char convSingleByte(int b) {
-        return REPLACE_CHAR;
-    }
-
-
-    static short[] getIndex1() {
-       return index1;
-    }
-
-    static String[] getIndex2() {
-       return index2;
-    }
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0208_Solaris_Encoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0208_Solaris_Encoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2728 +0,0 @@
-/*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetEncoder;
-
-public class JIS_X_0208_Solaris_Encoder extends DoubleByteEncoder
-{
-    private static byte[] repl = { (byte)0x21, (byte)0x29 };
-
-    public JIS_X_0208_Solaris_Encoder(Charset cs) {
-        super(cs,
-              index1,
-              index2 ,
-              repl
-             );
-    }
-
-    protected int encodeSingle(char inputChar) {
-        return -1;
-    }
-
-    private final static String innerIndex0=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9336\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2D62\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D64\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2D35\u2D36\u2D37\u2D38\u2D39\u2D3A\u2D3B\u2D3C"+
-        "\u2D3D\u2D3E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9321\u9322\u9323\u9324\u9325\u9326\u9327\u9328"+
-        "\u9329\u932A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D74\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2D75\u0000\u0000\u0000\u0000\u2D78"+
-        "\u2D77\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D7B\u2D7C\u2D72\u0000\u0000\u2D73\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2D7A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2D70\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D71\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2D76\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u2D79"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2D21\u2D22\u2D23\u2D24\u2D25\u2D26\u2D27\u2D28"+
-        "\u2D29\u2D2A\u2D2B\u2D2C\u2D2D\u2D2E\u2D2F\u2D30"+
-        "\u2D31\u2D32\u2D33\u2D34\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2D60\u0000\u2D61"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9335\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u933C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D6A\u2D6B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D6C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2D65\u2D66\u2D67\u2D68"+
-        "\u2D69\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2D46\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2D4A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2D41\u0000\u0000\u0000"+
-        "\u2D44\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2D42\u2D4C\u0000\u0000\u2D4B\u2D45"+
-        "\u0000\u0000\u0000\u2D4D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2D47\u0000"+
-        "\u0000\u0000\u0000\u2D4F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2D40\u2D4E\u0000\u0000\u2D43\u0000\u0000"+
-        "\u0000\u2D48\u0000\u0000\u0000\u0000\u0000\u2D49"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u2D5F\u2D6F\u2D6E\u2D6D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2D53\u2D54"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2D50\u2D51\u2D52\u0000"+
-        "\u0000\u2D56\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2D55\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2D63\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9349\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u934A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u934B\u0000\u0000\u0000"+
-        "\u934C\u0000\u0000\u934D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u934E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u934F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9351\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9350\u0000\u9353\u0000\u0000\u0000"+
-        "\u0000\u0000\u9352\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9342\u0000\u0000\u0000\u9354\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9357"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9358\u0000"+
-        "\u0000\u0000\u9356\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9355\u0000\u935B\u0000\u0000\u0000\u9359\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u935A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u935C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u935E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u935D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u935F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9360\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9361\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9362\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9363\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9364\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9365\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9366\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9558"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9367\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9368\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9369\u0000\u0000\u0000\u0000\u0000\u0000\u936A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u936B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u936C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u936D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u936E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u936F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9372\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9371\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9373\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9374"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9375\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex1=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9376\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9377\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9378\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u937A"+
-        "\u9379\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u937D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u937E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9421\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9422\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9423\u0000\u9424\u0000\u0000"+
-        "\u0000\u0000\u0000\u9425\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9426\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9427\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9428\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9429\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u942B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u942C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u942D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u942E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u942F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9430\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9431"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9434\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9432\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9435\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9436\u9437\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9438\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9439\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u943A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9348\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u943B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u943C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u943D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u943E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u943F\u0000\u0000"+
-        "\u0000\u0000\u9440\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9442\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9441\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9444\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9445\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9443\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9447\u0000\u0000\u0000\u0000\u0000\u0000\u9446"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9448\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9449\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u944A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u944B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u944C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u944D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u944E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u944F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9450\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9453\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9451\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9455\u0000"+
-        "\u0000\u0000\u0000\u0000\u9456\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9454\u0000"+
-        "\u0000\u9344\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9452\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9458"+
-        "\u0000\u9459\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9457\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u945B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u945C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u945D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u945E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u945F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9460\u9347\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9461\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9463\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9464\u0000\u0000\u0000\u0000"+
-        "\u9466\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9467\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9468\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9465\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9345\u0000\u0000\u0000\u0000\u0000\u0000\u9469"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex2=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u946B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u946D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u946E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u946F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9471\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9470\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9472\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9473\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9474\u0000\u9475\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9476\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9477"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9478\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u947A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9479\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u947B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u947C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u947E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u947D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9521\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9522\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9523"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9525\u0000\u0000\u0000\u0000\u0000"+
-        "\u9524\u0000\u0000\u0000\u9526\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9529"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9527\u0000\u0000\u952A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9528\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u952B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u952C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u952D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u952E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u952F\u0000\u9530"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9531\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9532\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9533\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9343\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9535\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9534"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9537\u9538"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9536\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u953A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u953B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u953C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u953D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u953E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9540"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9541\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9542\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9545\u0000\u0000\u0000\u9543\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9544\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9547\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9546"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9548\u0000"+
-        "\u0000\u954A\u9549\u0000\u0000\u0000\u954B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u954C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u954D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u954E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u954F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u942A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9550"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9551\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9554\u9552\u0000\u9553\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9555\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9557\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9559\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u955A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u955B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u955C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex3=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u955D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9561\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9563\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9564\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9565"+
-        "\u0000\u0000\u0000\u9567\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9568\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u956A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u956B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u956D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u956C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u956E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u956F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u933D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9570"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9571\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9573\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9574\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9575"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9576"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9577\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9578\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9579\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9341\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u957A\u0000\u0000\u0000\u0000"+
-        "\u0000\u957B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u957C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u957E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9623"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9624\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u933E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9625\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9626"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9627\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9628"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9629\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u962A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u962C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u962D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u962E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u962F\u0000\u0000\u0000\u9630\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9631\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9632\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9634"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex4=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9637"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9638\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u963A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u963B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u963D"+
-        "\u0000\u0000\u963C\u0000\u0000\u0000\u963E\u0000"+
-        "\u0000\u0000\u0000\u0000\u9641\u9642\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u963F\u9640\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9643\u0000"+
-        "\u0000\u0000\u9645\u0000\u0000\u0000\u0000\u0000"+
-        "\u9644\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u964C\u9646\u0000\u9648\u0000\u0000\u0000"+
-        "\u9647\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9649\u0000"+
-        "\u0000\u964B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u964A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u964D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u964F"+
-        "\u9650\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9340\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u964E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9654\u0000\u0000\u9658\u0000\u9656\u0000\u9652"+
-        "\u0000\u9653\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9657\u0000\u0000\u0000\u0000\u0000\u0000\u9651"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9346\u0000\u965B\u0000\u0000\u0000\u965E"+
-        "\u0000\u0000\u9660\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u965F\u965D\u0000"+
-        "\u0000\u965A\u0000\u0000\u0000\u9659\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u933F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9662"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9661\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u9663\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9664\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9665\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9666\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9667\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9668\u0000\u0000"+
-        "\u9669\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u966A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u966D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u966E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u966F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9670\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9671\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9672\u0000\u9673"+
-        "\u0000\u9674\u0000\u0000\u0000\u9675\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9676"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u9677\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u967A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u967C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u967D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u967E\u0000\u0000\u9721\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9723\u0000\u0000\u9722\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9724"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9725\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9726\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u9727\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u9729\u0000\u0000\u0000\u0000"+
-        "\u9728\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u972B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u972C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u9462\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u966B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex5=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u9370\u937B"+
-        "\u937C\u9433\u945A\u946A\u946C\u9539\u953F\u9556"+
-        "\u955E\u955F\u9560\u9562\u9566\u9569\u9572\u957D"+
-        "\u9621\u9622\u962B\u9633\u9635\u9636\u9639\u9655"+
-        "\u965C\u966C\u9678\u9679\u967B\u972A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u9338\u0000\u0000\u0000\u0000\u9337"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-        1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 2, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        5, 0, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9,
-        10, 11, 12, 13, 14, 15, 0, 16, 17, 18, 0, 19, 20, 21, 0, 22,
-        23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
-        39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 0, 51, 52, 53,
-        0, 0, 0, 54, 55, 56, 0, 0, 57, 58, 59, 60, 61, 62, 63, 0,
-        64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 80, 0, 0, 0, 0, 81
-    };
-
-    private final static String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4,
-        innerIndex5
-    };
-
-    /**
-     * These accessors are temporarily supplied while sun.io
-     * converters co-exist with the sun.nio.cs.{ext} charset coders
-     * These facilitate sharing of conversion tables between the
-     * two co-existing implementations. When sun.io converters
-     * are made extinct these will be unncessary and should be removed
-     */
-    public static short[] getIndex1() {
-       return index1;
-    }
-
-    public static String[] getIndex2() {
-       return index2;
-    }
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0212.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0212.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-
-public class JIS_X_0212
-    extends Charset
-{
-
-    public JIS_X_0212() {
-        super("JIS_X0212-1990", ExtendedCharsets.aliasesFor("JIS_X0212-1990"));
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof JIS_X_0212);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new JIS_X_0212_Encoder(this);
-    }
-
-    private static class Decoder extends JIS_X_0212_Decoder {
-        protected char decodeSingle(int b) {
-            return DoubleByteDecoder.REPLACE_CHAR;
-        }
-
-        public Decoder(Charset cs) {
-            super(cs);
-        }
-    }
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0212_Decoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0212_Decoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,896 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-
-public class JIS_X_0212_Decoder extends DoubleByteDecoder
-{
-    public JIS_X_0212_Decoder(Charset cs) {
-        super(cs,
-              index1,
-              index2,
-              0x21,
-              0x7E);
-    }
-
-    private final static String innerIndex0=
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u02D8\u02C7\u00B8\u02D9"+
-        "\u02DD\u00AF\u02DB\u02DA\uFF5E\u0384\u0385\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A1"+
-        "\u00A6\u00BF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u00BA\u00AA\u00A9\u00AE\u2122\u00A4\u2116\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u0386\u0388\u0389\u038A"+
-        "\u03AA\uFFFD\u038C\uFFFD\u038E\u03AB\uFFFD\u038F"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u03AC\u03AD\u03AE\u03AF"+
-        "\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u0402\u0403\u0404\u0405\u0406"+
-        "\u0407\u0408\u0409\u040A\u040B\u040C\u040E\u040F"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u0452\u0453\u0454\u0455\u0456"+
-        "\u0457\u0458\u0459\u045A\u045B\u045C\u045E\u045F"+
-        "\u00C6\u0110\uFFFD\u0126\uFFFD\u0132\uFFFD\u0141"+
-        "\u013F\uFFFD\u014A\u00D8\u0152\uFFFD\u0166\u00DE"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0142"+
-        "\u0140\u0149\u014B\u00F8\u0153\u00DF\u0167\u00FE"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00C1\u00C0"+
-        "\u00C4\u00C2\u0102\u01CD\u0100\u0104\u00C5\u00C3"+
-        "\u0106\u0108\u010C\u00C7\u010A\u010E\u00C9\u00C8"+
-        "\u00CB\u00CA\u011A\u0116\u0112\u0118\uFFFD\u011C"+
-        "\u011E\u0122\u0120\u0124\u00CD\u00CC\u00CF\u00CE"+
-        "\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139"+
-        "\u013D\u013B\u0143\u0147\u0145\u00D1\u00D3\u00D2"+
-        "\u00D6\u00D4\u01D1\u0150\u014C\u00D5\u0154\u0158"+
-        "\u0156\u015A\u015C\u0160\u015E\u0164\u0162\u00DA"+
-        "\u00D9\u00DC\u00DB\u016C\u01D3\u0170\u016A\u0172"+
-        "\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\u00DD"+
-        "\u0178\u0176\u0179\u017D\u017B\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u00E1\u00E0\u00E4\u00E2"+
-        "\u0103\u01CE\u0101\u0105\u00E5\u00E3\u0107\u0109"+
-        "\u010D\u00E7\u010B\u010F\u00E9\u00E8\u00EB\u00EA"+
-        "\u011B\u0117\u0113\u0119\u01F5\u011D\u011F\uFFFD"+
-        "\u0121\u0125\u00ED\u00EC\u00EF\u00EE\u01D0\uFFFD"+
-        "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C"+
-        "\u0144\u0148\u0146\u00F1\u00F3\u00F2\u00F6\u00F4"+
-        "\u01D2\u0151\u014D\u00F5\u0155\u0159\u0157\u015B"+
-        "\u015D\u0161\u015F\u0165\u0163\u00FA\u00F9\u00FC"+
-        "\u00FB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169"+
-        "\u01D8\u01DC\u01DA\u01D6\u0175\u00FD\u00FF\u0177"+
-        "\u017A\u017E\u017C\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F"+
-        "\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35"+
-        "\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63"+
-        "\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96"+
-        "\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB"+
-        "\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5"+
-        "\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B"+
-        "\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31"+
-        "\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40"+
-        "\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56"+
-        "\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77"+
-        "\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"+
-        "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93"+
-        "\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7"+
-        "\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5"+
-        "\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2"+
-        "\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF"+
-        "\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010"+
-        "\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022"+
-        "\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041"+
-        "\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052"+
-        "\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066"+
-        "\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083"+
-        "\u5084\u5086\u508A\u508E\u508F\u5090\u5092\u5093"+
-        "\u5094\u5096\u509B\u509C\u509E\u509F\u50A0\u50A1"+
-        "\u50A2\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0"+
-        "\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4"+
-        "\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8"+
-        "\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106"+
-        "\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110"+
-        "\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127"+
-        "\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135"+
-        "\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157"+
-        "\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B"+
-        "\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA"+
-        "\u51BC\u51BE\u51BF\u51C2\u51C8\u51CF\u51D1\u51D2"+
-        "\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2"+
-        "\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213"+
-        "\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235"+
-        "\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C"+
-        "\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279"+
-        "\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296"+
-        "\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7"+
-        "\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD"+
-        "\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4"+
-        "\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA"+
-        "\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303"+
-        "\u530A\u530B\u530C\u5311\u5313\u5318\u531B\u531C"+
-        "\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C"+
-        "\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342"+
-        "\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C"+
-        "\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E"+
-        "\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB"+
-        "\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD"+
-        "\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD"+
-        "\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A"+
-        "\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435"+
-        "\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464"+
-        "\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"+
-        "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495"+
-        "\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA"+
-        "\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF"+
-        "\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF"+
-        "\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508"+
-        "\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532"+
-        "\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549"+
-        "\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E"+
-        "\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586"+
-        "\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597"+
-        "\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6"+
-        "\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2\u55D3\u55D7"+
-        "\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605"+
-        "\u5608\u560A\u560D\u560E\u560F\u5610\u5611\u5612"+
-        "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B"+
-        "\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646"+
-        "\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661"+
-        "\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672"+
-        "\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699"+
-        "\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9"+
-        "\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5"+
-        "\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9"+
-        "\u56DC\u56DD\u56DF\u56E1\u56E4\u56E5\u56E6\u56E7"+
-        "\u56E8\u56F1\u56EB\u56ED\u56F6\u56F7\u5701\u5702"+
-        "\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D"+
-        "\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C"+
-        "\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745"+
-        "\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768"+
-        "\u576B\u576D\u576E\u576F\u5770\u5771\u5773\u5774"+
-        "\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781"+
-        "\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D"+
-        "\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC"+
-        "\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD"+
-        "\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5"+
-        "\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808"+
-        "\u5809\u57E1\u580C\u580D\u581B\u581E\u581F\u5820"+
-        "\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C"+
-        "\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867"+
-        "\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888"+
-        "\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896"+
-        "\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2"+
-        "\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2"+
-        "\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3"+
-        "\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641"+
-        "\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933"+
-        "\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959"+
-        "\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D";
-
-    private final static String innerIndex1=
-        "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B"+
-        "\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7"+
-        "\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC"+
-        "\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD"+
-        "\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1"+
-        "\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E"+
-        "\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A"+
-        "\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50"+
-        "\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A"+
-        "\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C"+
-        "\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2"+
-        "\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF\u5AC4\u5AC6"+
-        "\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE"+
-        "\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34"+
-        "\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41"+
-        "\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F"+
-        "\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A"+
-        "\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9"+
-        "\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC"+
-        "\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6\u5BD7\u5BD8\u5BD9"+
-        "\u5BDA\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17"+
-        "\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E"+
-        "\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62"+
-        "\u5C63\u5C67\u5C68\u5C69\u5C6D\u5C70\u5C74\u5C75"+
-        "\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F"+
-        "\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA"+
-        "\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD"+
-        "\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D"+
-        "\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34"+
-        "\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55"+
-        "\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64"+
-        "\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81"+
-        "\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99"+
-        "\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8"+
-        "\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9"+
-        "\u5DE0\u5DE4\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D"+
-        "\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28"+
-        "\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56"+
-        "\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A\u5E6B\u5E6C"+
-        "\u5E6D\u5E6E\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4"+
-        "\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE"+
-        "\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4"+
-        "\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07"+
-        "\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23"+
-        "\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36"+
-        "\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D"+
-        "\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"+
-        "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E"+
-        "\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7"+
-        "\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4"+
-        "\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0\u5FD1\u5FD2\u5FD3"+
-        "\u5FD4\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC"+
-        "\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC"+
-        "\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A"+
-        "\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048"+
-        "\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061"+
-        "\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A"+
-        "\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2"+
-        "\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7\u60BB\u60BE"+
-        "\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF"+
-        "\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5"+
-        "\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A"+
-        "\u610C\u6110\u6111\u6112\u6113\u6114\u6116\u6117"+
-        "\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131"+
-        "\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149"+
-        "\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F"+
-        "\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193"+
-        "\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8"+
-        "\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2"+
-        "\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1"+
-        "\u61E2\u61E7\u61E9\u61E5\u61EC\u61ED\u61EF\u6201"+
-        "\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222"+
-        "\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243"+
-        "\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256"+
-        "\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D"+
-        "\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6"+
-        "\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6"+
-        "\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304"+
-        "\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329"+
-        "\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342"+
-        "\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353"+
-        "\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371"+
-        "\u6374\u6375\u6378\u637C\u637D\u637F\u6382\u6384"+
-        "\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E"+
-        "\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5"+
-        "\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0"+
-        "\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9"+
-        "\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420"+
-        "\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435"+
-        "\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454"+
-        "\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463"+
-        "\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F"+
-        "\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1"+
-        "\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"+
-        "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1"+
-        "\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0"+
-        "\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509"+
-        "\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E"+
-        "\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C"+
-        "\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F"+
-        "\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A"+
-        "\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE"+
-        "\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE"+
-        "\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4"+
-        "\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609"+
-        "\u660D\u6611\u6612\u6615\u6616\u661D\u661E\u6621"+
-        "\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C"+
-        "\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645"+
-        "\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659"+
-        "\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C"+
-        "\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B"+
-        "\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699"+
-        "\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1"+
-        "\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8"+
-        "\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB"+
-        "\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719"+
-        "\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748"+
-        "\u674C\u6754\u6755\u675D\u6766\u676C\u676E\u6774"+
-        "\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793"+
-        "\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5"+
-        "\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5"+
-        "\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6"+
-        "\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D"+
-        "\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831"+
-        "\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855"+
-        "\u6857\u6858\u685B\u686B\u686E\u686F\u6870\u6871"+
-        "\u6872\u6875\u6879\u687A\u687B\u687C\u6882\u6884"+
-        "\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3"+
-        "\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8"+
-        "\u68CC\u68CF\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC"+
-        "\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0"+
-        "\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909"+
-        "\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933"+
-        "\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957"+
-        "\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C"+
-        "\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D"+
-        "\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB"+
-        "\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8"+
-        "\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1"+
-        "\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11"+
-        "\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"+
-        "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49"+
-        "\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B"+
-        "\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83"+
-        "\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E"+
-        "\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD"+
-        "\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4"+
-        "\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0"+
-        "\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07"+
-        "\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24"+
-        "\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F"+
-        "\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60"+
-        "\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D\u6B7E\u6B82"+
-        "\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8"+
-        "\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD"+
-        "\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1"+
-        "\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF"+
-        "\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12"+
-        "\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33"+
-        "\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D"+
-        "\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D"+
-        "\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86"+
-        "\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F"+
-        "\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0"+
-        "\u6CD1\u6CD2\u6CD4\u6CD6\u6CDA\u6CDC\u6CE0\u6CE7"+
-        "\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07"+
-        "\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27"+
-        "\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F"+
-        "\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70"+
-        "\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97"+
-        "\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF"+
-        "\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD"+
-        "\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4"+
-        "\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32"+
-        "\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49"+
-        "\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C"+
-        "\u6E5D\u6E5E\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D"+
-        "\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1"+
-        "\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8"+
-        "\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9"+
-        "\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16"+
-        "\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30"+
-        "\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52"+
-        "\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62"+
-        "\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B"+
-        "\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A"+
-        "\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF"+
-        "\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA";
-
-    private final static String innerIndex2=
-        "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC"+
-        "\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020"+
-        "\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044"+
-        "\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E"+
-        "\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E"+
-        "\u7081\u7085\u7086\u7094\u7095\u7096\u7097\u7098"+
-        "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA"+
-        "\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4"+
-        "\u70FA\u7103\u7104\u7105\u7106\u7107\u710B\u710C"+
-        "\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131"+
-        "\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150"+
-        "\u7152\u7157\u715A\u715C\u715E\u7160\u7168\u7179"+
-        "\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0"+
-        "\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0"+
-        "\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA"+
-        "\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213"+
-        "\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234"+
-        "\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F"+
-        "\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260"+
-        "\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278"+
-        "\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293"+
-        "\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1"+
-        "\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5"+
-        "\u72F3\u72F4\u72FA\u72FB\u72FE\u7302\u7304\u7305"+
-        "\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E"+
-        "\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335"+
-        "\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356"+
-        "\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369"+
-        "\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C"+
-        "\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393"+
-        "\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2"+
-        "\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9"+
-        "\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC"+
-        "\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3"+
-        "\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA"+
-        "\u73FB\u73FD\u73FF\u7400\u7401\u7404\u7407\u740A"+
-        "\u7411\u741A\u741B\u7424\u7426\u7428\u7429\u742A"+
-        "\u742B\u742C\u742D\u742E\u742F\u7430\u7431\u7439"+
-        "\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451"+
-        "\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B"+
-        "\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486"+
-        "\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499"+
-        "\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8"+
-        "\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5"+
-        "\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3"+
-        "\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA"+
-        "\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"+
-        "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529"+
-        "\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540"+
-        "\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E"+
-        "\u755F\u7561\u756F\u7571\u7579\u757A\u757B\u757C"+
-        "\u757D\u757E\u7581\u7585\u7590\u7592\u7593\u7595"+
-        "\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0"+
-        "\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC"+
-        "\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF"+
-        "\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608"+
-        "\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619"+
-        "\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629"+
-        "\u762D\u7632\u7633\u7635\u7638\u7639\u763A\u763C"+
-        "\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B"+
-        "\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F"+
-        "\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B"+
-        "\u769C\u769D\u769F\u76A0\u76A2\u76A3\u76A4\u76A5"+
-        "\u76A6\u76A7\u76A8\u76AA\u76AD\u76BD\u76C1\u76C5"+
-        "\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6"+
-        "\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700"+
-        "\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719"+
-        "\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734"+
-        "\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746"+
-        "\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C"+
-        "\u775E\u775F\u7760\u7762\u7764\u7767\u776A\u776C"+
-        "\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784"+
-        "\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2"+
-        "\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3"+
-        "\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0"+
-        "\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8"+
-        "\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D"+
-        "\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837"+
-        "\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C"+
-        "\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E"+
-        "\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D"+
-        "\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1"+
-        "\u78B2\u78B3\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9"+
-        "\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB"+
-        "\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900"+
-        "\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910"+
-        "\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929"+
-        "\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944"+
-        "\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958"+
-        "\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B"+
-        "\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995"+
-        "\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB"+
-        "\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7"+
-        "\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"+
-        "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8"+
-        "\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11"+
-        "\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F"+
-        "\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45"+
-        "\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D"+
-        "\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78"+
-        "\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90"+
-        "\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5"+
-        "\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1"+
-        "\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB"+
-        "\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29"+
-        "\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30\u7B31\u7B34"+
-        "\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60"+
-        "\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73"+
-        "\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B"+
-        "\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5"+
-        "\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8"+
-        "\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8"+
-        "\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC"+
-        "\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B"+
-        "\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26"+
-        "\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A"+
-        "\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59\u7C5A"+
-        "\u7C5B\u7C5C\u7C5D\u7C5E\u7C61\u7C63\u7C67\u7C69"+
-        "\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86"+
-        "\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6"+
-        "\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8"+
-        "\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9"+
-        "\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07"+
-        "\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D"+
-        "\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D"+
-        "\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53"+
-        "\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A"+
-        "\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83"+
-        "\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96"+
-        "\u7D97\u7D9D\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6"+
-        "\u7DB7\u7DB9\u7DC2\u7DC3\u7DC4\u7DC5\u7DC6\u7DCC"+
-        "\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6"+
-        "\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA"+
-        "\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20"+
-        "\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F"+
-        "\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F"+
-        "\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78"+
-        "\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95"+
-        "\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E"+
-        "\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B"+
-        "\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"+
-        "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F"+
-        "\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6"+
-        "\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8"+
-        "\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC"+
-        "\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007"+
-        "\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014"+
-        "\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C"+
-        "\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C"+
-        "\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071"+
-        "\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7"+
-        "\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4"+
-        "\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE\u80F0\u80F2"+
-        "\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116"+
-        "\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C"+
-        "\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C"+
-        "\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D"+
-        "\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B"+
-        "\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2"+
-        "\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF"+
-        "\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB"+
-        "\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9"+
-        "\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219"+
-        "\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A"+
-        "\u8243\u8244\u8245\u8246\u824B\u824E\u824F\u8251"+
-        "\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B"+
-        "\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289"+
-        "\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B"+
-        "\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA"+
-        "\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE"+
-        "\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4"+
-        "\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE"+
-        "\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B"+
-        "\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E"+
-        "\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343"+
-        "\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357"+
-        "\u8370\u8378\u837D\u837F\u8380\u8382\u8384\u8386"+
-        "\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C"+
-        "\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0"+
-        "\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353"+
-        "\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406"+
-        "\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439"+
-        "\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452"+
-        "\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465"+
-        "\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C"+
-        "\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6"+
-        "\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD"+
-        "\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3";
-
-    private final static String innerIndex3=
-        "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7"+
-        "\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C"+
-        "\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525"+
-        "\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F"+
-        "\u8546\u854F\u8550\u8551\u8552\u8553\u8556\u8559"+
-        "\u855C\u855D\u855E\u855F\u8560\u8561\u8562\u8564"+
-        "\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581"+
-        "\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598"+
-        "\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6"+
-        "\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7"+
-        "\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0"+
-        "\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC\u85FF\u8600"+
-        "\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618"+
-        "\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638"+
-        "\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653"+
-        "\u8656\u8657\u8658\u8659\u865D\u8660\u8661\u8662"+
-        "\u8663\u8664\u8669\u866C\u866F\u8675\u8676\u8677"+
-        "\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1"+
-        "\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5"+
-        "\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5"+
-        "\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3"+
-        "\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705"+
-        "\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719"+
-        "\u871E\u871F\u8721\u8723\u8728\u872E\u872F\u8731"+
-        "\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743"+
-        "\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F"+
-        "\u8771\u8772\u877B\u8783\u8784\u8785\u8786\u8787"+
-        "\u8788\u8789\u878B\u878C\u8790\u8793\u8795\u8797"+
-        "\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD"+
-        "\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9"+
-        "\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF"+
-        "\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3"+
-        "\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A"+
-        "\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A"+
-        "\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830"+
-        "\u8832\u8835\u883A\u883C\u8841\u8843\u8845\u8848"+
-        "\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858"+
-        "\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879"+
-        "\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0"+
-        "\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA\u88CB"+
-        "\u88CC\u88CD\u88CE\u88D1\u88D2\u88D3\u88DB\u88DE"+
-        "\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906"+
-        "\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A"+
-        "\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932"+
-        "\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946"+
-        "\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961"+
-        "\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"+
-        "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995"+
-        "\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5"+
-        "\u89B6\u89B7\u89BC\u89D4\u89D5\u89D6\u89D7\u89D8"+
-        "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9"+
-        "\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12"+
-        "\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B"+
-        "\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43"+
-        "\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57"+
-        "\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76"+
-        "\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83"+
-        "\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99"+
-        "\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3\u8AB6\u8AB7"+
-        "\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1"+
-        "\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0"+
-        "\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B"+
-        "\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37"+
-        "\u8B3C\u8B42\u8B43\u8B44\u8B45\u8B46\u8B48\u8B52"+
-        "\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76"+
-        "\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B"+
-        "\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38"+
-        "\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F"+
-        "\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59"+
-        "\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75"+
-        "\u8C76\u8C7B\u8C7E\u8C86\u8C87\u8C8B\u8C90\u8C92"+
-        "\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5"+
-        "\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD"+
-        "\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7"+
-        "\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17"+
-        "\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84"+
-        "\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0"+
-        "\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9"+
-        "\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE"+
-        "\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7"+
-        "\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01"+
-        "\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20"+
-        "\u8E21\u8E22\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36"+
-        "\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D"+
-        "\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61"+
-        "\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79"+
-        "\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95"+
-        "\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD"+
-        "\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3"+
-        "\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE"+
-        "\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02"+
-        "\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E"+
-        "\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D"+
-        "\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"+
-        "\u8F43\u8F47\u8F4F\u8F51\u8F52\u8F53\u8F54\u8F55"+
-        "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4"+
-        "\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1"+
-        "\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5"+
-        "\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6"+
-        "\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B"+
-        "\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034"+
-        "\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062"+
-        "\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088"+
-        "\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099"+
-        "\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3"+
-        "\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3\u90C4\u90C5"+
-        "\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD"+
-        "\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4"+
-        "\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D"+
-        "\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E"+
-        "\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F"+
-        "\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D"+
-        "\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A"+
-        "\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A"+
-        "\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191"+
-        "\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8"+
-        "\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6"+
-        "\u91BB\u91BC\u91BD\u91BF\u91C2\u91C3\u91C5\u91D3"+
-        "\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9"+
-        "\u91EA\u91EC\u91ED\u91EE\u91EF\u91F0\u91F1\u91F7"+
-        "\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206"+
-        "\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216"+
-        "\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228"+
-        "\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239"+
-        "\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247"+
-        "\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C"+
-        "\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E"+
-        "\u926F\u9270\u9275\u9276\u9277\u9278\u9279\u927B"+
-        "\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E"+
-        "\u9292\u9297\u9299\u929F\u92A0\u92A4\u92A5\u92A7"+
-        "\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB"+
-        "\u92BC\u92BD\u92BF\u92C0\u92C1\u92C2\u92C3\u92C5"+
-        "\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0"+
-        "\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF"+
-        "\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE"+
-        "\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D"+
-        "\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321"+
-        "\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336"+
-        "\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355"+
-        "\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369"+
-        "\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"+
-        "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A"+
-        "\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E"+
-        "\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5"+
-        "\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7"+
-        "\u93C9\u93CA\u93CB\u93CC\u93CD\u93D3\u93D9\u93DC"+
-        "\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8"+
-        "\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409"+
-        "\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E"+
-        "\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D"+
-        "\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C"+
-        "\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F"+
-        "\u9471\u9472\u9484\u9483\u9578\u9579\u957E\u9584"+
-        "\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1"+
-        "\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD"+
-        "\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2"+
-        "\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4"+
-        "\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C"+
-        "\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D"+
-        "\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E"+
-        "\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683"+
-        "\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4"+
-        "\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA"+
-        "\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9"+
-        "\u96EF\u96F1\u96FA\u9702\u9703\u9705\u9709\u971A"+
-        "\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733"+
-        "\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758"+
-        "\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776"+
-        "\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795"+
-        "\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC"+
-        "\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA"+
-        "\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9"+
-        "\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7"+
-        "\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4"+
-        "\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A"+
-        "\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820"+
-        "\u9823\u9826\u982B\u982E\u982F\u9830\u9832\u9833"+
-        "\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852"+
-        "\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865"+
-        "\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4"+
-        "\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8"+
-        "\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3"+
-        "\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917"+
-        "\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B"+
-        "\u9931\u9932\u9933\u9934\u9935\u9939\u993A\u993B"+
-        "\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E"+
-        "\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960"+
-        "\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5";
-
-    private final static String innerIndex4=
-        "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4"+
-        "\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC"+
-        "\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03"+
-        "\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20"+
-        "\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35"+
-        "\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C"+
-        "\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE"+
-        "\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE"+
-        "\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2"+
-        "\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5"+
-        "\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA"+
-        "\u9AFD\u9AFF\u9B00\u9B01\u9B02\u9B03\u9B04\u9B05"+
-        "\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12"+
-        "\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D"+
-        "\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48"+
-        "\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61"+
-        "\u9B63\u9B65\u9B66\u9B68\u9B6A\u9B6B\u9B6C\u9B6D"+
-        "\u9B6E\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80"+
-        "\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D"+
-        "\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7"+
-        "\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB"+
-        "\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0"+
-        "\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB"+
-        "\u9BEF\u9BF3\u9BF7\u9BF8\u9BF9\u9BFA\u9BFD\u9BFF"+
-        "\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19"+
-        "\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26\u9C27\u9C28"+
-        "\u9C29\u9C2A\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41"+
-        "\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50"+
-        "\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F"+
-        "\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70"+
-        "\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9"+
-        "\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E"+
-        "\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45"+
-        "\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F"+
-        "\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76"+
-        "\u9D77\u9D7B\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A"+
-        "\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98"+
-        "\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC"+
-        "\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6"+
-        "\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9"+
-        "\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02"+
-        "\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19"+
-        "\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83"+
-        "\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B"+
-        "\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3"+
-        "\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4"+
-        "\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"+
-        "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11"+
-        "\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F"+
-        "\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34"+
-        "\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43"+
-        "\u9F44\u9F45\u9F46\u9F47\u9F53\u9F55\u9F56\u9F57"+
-        "\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D\u9F6E"+
-        "\u9F6F\u9F70\u9F71\u9F73\u9F75\u9F7A\u9F7D\u9F8F"+
-        "\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1"+
-        "\u9FA2\u9FA3\u9FA5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD";
-
-    private final static short index1[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 1, 0, 0, 0, 2, 3, 0, 4, 5, 6, 0, 0, 0, 0,
-        7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
-        23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
-        39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
-        55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-
-    private final static String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4
-    };
-
-    protected char convSingleByte(int b) {
-        return REPLACE_CHAR;
-    }
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0212_Encoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0212_Encoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2981 +0,0 @@
-/*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetEncoder;
-
-public class JIS_X_0212_Encoder extends DoubleByteEncoder
-{
-    /*
-     * default replacement defined merely for pseudo
-     * charset x-JIS-X-0208 to instantiate with a
-     * decodeable replacement byte sequence
-     * JIS X 0212(1990) 0x2244 maps to INVERTED QUESTION MARK
-     * Compound converters, CES (character encoding schemes)
-     * based upon JIS X 0212-1990 will most likely redefine
-     * their own replacement chars or use 0x3f
-     * (ASCII
-     */
-
-    private static byte[] repl = { (byte)0x22, (byte)0x44 };
-
-    public JIS_X_0212_Encoder(Charset cs) {
-        super(cs,
-              index1,
-              index2 ,
-              repl
-             );
-    }
-
-    protected int encodeSingle(char inputChar) {
-        return -1;
-    }
-
-    private final static String innerIndex0=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2242\u0000\u0000\u2270\u0000\u2243\u0000"+
-        "\u0000\u226D\u226C\u0000\u0000\u0000\u226E\u2234"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2231\u0000\u226B\u0000\u0000\u0000\u0000\u2244"+
-        "\u2A22\u2A21\u2A24\u2A2A\u2A23\u2A29\u2921\u2A2E"+
-        "\u2A32\u2A31\u2A34\u2A33\u2A40\u2A3F\u2A42\u2A41"+
-        "\u0000\u2A50\u2A52\u2A51\u2A54\u2A58\u2A53\u0000"+
-        "\u292C\u2A63\u2A62\u2A65\u2A64\u2A72\u2930\u294E"+
-        "\u2B22\u2B21\u2B24\u2B2A\u2B23\u2B29\u2941\u2B2E"+
-        "\u2B32\u2B31\u2B34\u2B33\u2B40\u2B3F\u2B42\u2B41"+
-        "\u2943\u2B50\u2B52\u2B51\u2B54\u2B58\u2B53\u0000"+
-        "\u294C\u2B63\u2B62\u2B65\u2B64\u2B72\u2950\u2B73"+
-        "\u2A27\u2B27\u2A25\u2B25\u2A28\u2B28\u2A2B\u2B2B"+
-        "\u2A2C\u2B2C\u2A2F\u2B2F\u2A2D\u2B2D\u2A30\u2B30"+
-        "\u2922\u2942\u2A37\u2B37\u0000\u0000\u2A36\u2B36"+
-        "\u2A38\u2B38\u2A35\u2B35\u2A3A\u2B3A\u2A3B\u2B3B"+
-        "\u2A3D\u2B3D\u2A3C\u0000\u2A3E\u2B3E\u2924\u2944"+
-        "\u2A47\u2B47\u2A45\u2B45\u0000\u0000\u2A46\u2B46"+
-        "\u2A44\u2945\u2926\u2946\u2A48\u2B48\u2A49\u2B49"+
-        "\u2947\u2A4A\u2B4A\u2A4C\u2B4C\u2A4B\u2B4B\u2929"+
-        "\u2949\u2928\u2948\u2A4D\u2B4D\u2A4F\u2B4F\u2A4E"+
-        "\u2B4E\u294A\u292B\u294B\u2A57\u2B57\u0000\u0000"+
-        "\u2A56\u2B56\u292D\u294D\u2A59\u2B59\u2A5B\u2B5B"+
-        "\u2A5A\u2B5A\u2A5C\u2B5C\u2A5D\u2B5D\u2A5F\u2B5F"+
-        "\u2A5E\u2B5E\u2A61\u2B61\u2A60\u2B60\u292F\u294F"+
-        "\u2A6C\u2B6C\u2A69\u2B69\u2A66\u2B66\u2A6B\u2B6B"+
-        "\u2A68\u2B68\u2A6A\u2B6A\u2A71\u2B71\u2A74\u2B74"+
-        "\u2A73\u2A75\u2B75\u2A77\u2B77\u2A76\u2B76\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2A26\u2B26\u2A43"+
-        "\u2B43\u2A55\u2B55\u2A67\u2B67\u2A70\u2B70\u2A6D"+
-        "\u2B6D\u2A6F\u2B6F\u2A6E\u2B6E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2B39\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u2230"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u222F\u2232\u2236\u2235\u0000\u2233\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2238\u2239\u2661\u0000"+
-        "\u2662\u2663\u2664\u0000\u2667\u0000\u2669\u266C"+
-        "\u2676\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2665\u266A\u2671\u2672\u2673\u2674"+
-        "\u267B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2678\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2675\u267A\u2677\u2679\u267C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2742\u2743\u2744\u2745\u2746\u2747"+
-        "\u2748\u2749\u274A\u274B\u274C\u0000\u274D\u274E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2772\u2773\u2774\u2775\u2776\u2777"+
-        "\u2778\u2779\u277A\u277B\u277C\u0000\u277D\u277E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2271\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u226F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3021\u0000\u3022\u3023\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3024\u0000\u0000\u0000"+
-        "\u0000\u0000\u3025\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3026"+
-        "\u0000\u0000\u0000\u3027\u3028\u0000\u0000\u0000"+
-        "\u3029\u0000\u0000\u302A\u0000\u0000\u302B\u302C"+
-        "\u302D\u0000\u0000\u0000\u0000\u302E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u302F\u3030\u0000\u0000\u3031\u0000\u0000\u3032"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3033\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3034\u0000\u3035\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3036\u0000\u0000\u0000\u0000"+
-        "\u3037\u3038\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3039\u303A\u0000\u0000"+
-        "\u0000\u303B\u0000\u0000\u0000\u0000\u0000\u303C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u303D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u303E\u303F"+
-        "\u0000\u0000\u0000\u0000\u0000\u3040\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3041"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3042\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3043\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3044\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3045\u3046\u0000\u0000\u0000\u0000"+
-        "\u3047\u3048\u3049\u0000\u0000\u0000\u0000\u0000"+
-        "\u304A\u0000\u0000\u0000\u0000\u0000\u0000\u304B"+
-        "\u0000\u304C\u0000\u304D\u0000\u304E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u304F\u3050\u3051"+
-        "\u3052\u0000\u3053\u3054\u0000\u0000\u0000\u0000"+
-        "\u3055\u0000\u0000\u3056\u3057\u0000\u0000\u0000"+
-        "\u0000\u0000\u3058\u0000\u0000\u3059\u305A\u305B"+
-        "\u0000\u305C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u305D\u0000"+
-        "\u0000\u305E\u0000\u3060\u0000\u3061\u0000\u3062"+
-        "\u0000\u3063\u0000\u3064\u0000\u0000\u3065\u0000"+
-        "\u3066\u0000\u3067\u0000\u0000\u0000\u0000\u0000"+
-        "\u3068\u3069\u0000\u306A\u306B\u0000\u0000\u0000"+
-        "\u0000\u0000\u306C\u0000\u306D\u0000\u306E\u0000"+
-        "\u306F\u0000\u0000\u0000\u0000\u0000\u0000\u3070"+
-        "\u305F\u0000\u0000\u3071\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3072\u0000\u3073\u0000\u3074\u0000"+
-        "\u0000\u3075\u0000\u0000\u0000\u0000\u0000\u3076"+
-        "\u3077\u3078\u3079\u0000\u0000\u307A\u307B\u0000"+
-        "\u0000\u307C\u307D\u0000\u307E\u3121\u0000\u0000"+
-        "\u0000\u3122\u3123\u0000\u3124\u0000\u3125\u0000"+
-        "\u3126\u0000\u3127\u3128\u3129\u0000\u0000\u312A"+
-        "\u0000\u312B\u312C\u0000\u0000\u0000\u312D\u312E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u312F\u0000\u0000\u0000\u0000\u3130"+
-        "\u0000\u3131\u0000\u3132\u3133\u3134\u3135\u0000"+
-        "\u3136\u3137\u0000\u0000\u0000\u3138\u3139\u0000"+
-        "\u313A\u313B\u0000\u313C\u313D\u313E\u0000\u313F"+
-        "\u0000\u0000\u3140\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3141\u0000\u0000\u0000"+
-        "\u3142\u0000\u3143\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3144\u0000\u3145\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3146\u3147\u0000\u3148"+
-        "\u3149\u314A\u0000\u0000\u314B\u0000\u0000\u314C"+
-        "\u0000\u0000\u314D\u0000\u314E\u0000\u314F\u0000"+
-        "\u3150\u0000\u0000\u3151\u0000\u0000\u0000\u3152"+
-        "\u3153\u0000\u0000\u3154\u3155\u3156\u3157\u0000"+
-        "\u0000\u0000\u3158\u0000\u0000\u0000\u0000\u3159"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u315A\u0000"+
-        "\u315B\u0000\u315C\u315D\u0000\u315E\u0000\u0000"+
-        "\u0000\u0000\u0000\u3176\u0000\u0000\u0000\u0000"+
-        "\u315F\u3160\u3161\u0000\u0000\u3162\u3163\u0000"+
-        "\u0000\u0000\u3164\u0000\u3165\u0000\u3166\u0000"+
-        "\u0000\u3167\u3168\u3169\u0000\u0000\u0000\u316A"+
-        "\u0000\u316B\u0000\u0000\u0000\u0000\u0000\u316C"+
-        "\u316D\u0000\u316E\u316F\u0000\u0000\u3170\u3171"+
-        "\u0000\u0000\u3172\u0000\u0000\u3173\u0000\u0000"+
-        "\u3174\u3175\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3177\u0000\u3178\u3179\u0000\u317A\u0000"+
-        "\u0000\u0000\u317B\u0000\u0000\u0000\u317C\u317D"+
-        "\u317E\u0000\u3221\u3222\u3223\u0000\u3224\u0000"+
-        "\u0000\u0000\u0000\u3225\u3226\u0000\u3227\u3228"+
-        "\u3229\u322A\u322B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u322C\u0000\u0000\u0000\u0000\u322D"+
-        "\u322E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u322F\u3230\u0000\u0000\u3231\u0000\u0000"+
-        "\u3232\u0000\u0000\u3233\u3234\u0000\u0000\u3235"+
-        "\u0000\u0000\u0000\u0000\u3236\u0000\u3237\u0000"+
-        "\u3238\u0000\u0000\u3239\u323A\u0000\u0000\u0000"+
-        "\u323B\u0000\u0000\u0000\u323C\u323D\u0000\u323E"+
-        "\u0000\u0000\u323F\u0000\u3240\u0000\u3241\u0000"+
-        "\u3242\u3243\u0000\u0000\u0000\u0000\u0000\u3244"+
-        "\u0000\u3245\u3251\u0000\u0000\u0000\u3246\u0000"+
-        "\u0000\u0000\u3247\u0000\u0000\u0000\u3248\u0000"+
-        "\u0000\u0000\u0000\u3249\u0000\u0000\u324A\u324B"+
-        "\u324C\u0000\u0000\u324D\u324E\u324F\u3250\u0000"+
-        "\u3252\u0000\u0000\u0000\u0000\u0000\u0000\u3253"+
-        "\u0000\u3254\u0000\u3255\u3256\u3257\u3258\u0000"+
-        "\u0000\u0000\u0000\u3259\u0000\u0000\u0000\u325A"+
-        "\u325B\u0000\u0000\u0000\u325C\u325D\u0000\u325E"+
-        "\u0000\u325F\u0000\u3260\u3261\u3262\u0000\u0000"+
-        "\u3263\u3264\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3265\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3266\u0000\u0000\u0000\u0000\u3267"+
-        "\u0000\u0000\u0000\u3268\u0000\u3269\u0000\u326A"+
-        "\u326B\u0000\u0000\u0000\u0000\u0000\u0000\u326C"+
-        "\u0000\u0000\u0000\u0000\u326D\u0000\u326E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u326F\u0000"+
-        "\u0000\u0000\u0000\u3270\u3271\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3272\u0000\u0000\u3273\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3274\u0000\u0000\u0000\u0000\u3275\u0000\u0000"+
-        "\u0000\u3276\u0000\u3277\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3278\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3279\u0000\u327A\u0000\u327B\u0000\u327C\u327D"+
-        "\u0000\u0000\u327E\u0000\u0000\u0000\u0000\u0000"+
-        "\u3321\u0000\u0000\u0000\u0000\u0000\u0000\u3322"+
-        "\u0000\u3323\u3324\u3325\u0000\u3326\u0000\u0000"+
-        "\u3327\u0000\u0000\u0000\u0000\u0000\u3328\u0000"+
-        "\u0000\u0000\u3329\u0000\u0000\u332A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u332B\u0000"+
-        "\u0000\u0000\u332C\u332D\u332E\u0000\u0000\u332F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3330\u3331\u0000\u0000\u3332\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3333\u3334\u0000\u3335\u3336\u0000"+
-        "\u3337\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3338\u0000\u0000\u0000\u0000\u0000"+
-        "\u3339\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u333A\u333B\u0000\u0000\u333C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u333D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u333E\u0000\u0000"+
-        "\u0000\u333F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3340\u0000\u3341"+
-        "\u3342\u0000\u3343\u0000\u3344\u0000\u0000\u3345"+
-        "\u3346\u3347\u0000\u0000\u0000\u0000\u3348\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3349\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u334A"+
-        "\u334B\u334C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u334D\u0000\u334E\u0000\u0000\u334F\u0000\u0000"+
-        "\u0000\u0000\u3350\u0000\u3351\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3352\u0000\u3353\u3354\u3355"+
-        "\u3356\u0000\u3357\u0000\u3358\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3359\u335A\u335B\u335C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u335D"+
-        "\u335E\u0000\u0000\u0000\u0000\u0000\u335F\u3360"+
-        "\u3361\u0000\u3362\u3363\u0000\u3364\u0000\u0000"+
-        "\u3365\u0000\u0000\u0000\u3366\u0000\u3367\u0000"+
-        "\u3368\u0000\u0000\u0000\u3369\u0000\u0000\u336A"+
-        "\u0000\u336B\u0000\u0000\u336C\u0000\u336D\u0000"+
-        "\u0000\u0000\u0000\u336E\u336F\u0000\u0000\u0000"+
-        "\u0000\u3370\u0000\u0000\u0000\u3371\u0000\u0000"+
-        "\u3372\u3373\u3374\u0000\u3375\u0000\u0000\u0000"+
-        "\u3376\u3377\u0000\u0000\u3378\u0000\u3379\u337A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u337B\u0000\u0000\u337C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u337D\u337E\u3421\u0000\u0000\u0000"+
-        "\u0000\u3422\u0000\u3423\u0000\u0000\u0000\u0000"+
-        "\u3424\u0000\u0000\u3425\u3426\u0000\u3427\u3428"+
-        "\u0000\u0000\u0000\u0000\u0000\u3429\u0000\u342A"+
-        "\u342B\u342C\u0000\u342D\u342E\u342F\u0000\u0000"+
-        "\u3430\u0000\u3431\u0000\u0000\u3432\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3433\u3434\u3435\u0000"+
-        "\u0000\u0000\u3436\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3438\u3437\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3439\u0000\u343A\u0000\u0000\u0000\u0000"+
-        "\u0000\u343B\u0000\u343C\u0000\u343D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u343E\u343F\u0000\u0000"+
-        "\u0000\u0000\u3440\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3441\u0000\u0000\u0000\u0000\u3442\u0000"+
-        "\u0000\u0000\u0000\u3443\u0000\u0000\u0000\u3444"+
-        "\u3445\u0000\u0000\u0000\u0000\u0000\u3446\u0000"+
-        "\u0000\u0000\u0000\u3447\u3448\u0000\u0000\u0000"+
-        "\u0000\u3449\u0000\u0000\u0000\u344A\u0000\u0000"+
-        "\u0000\u344B\u0000\u0000\u344C\u0000\u0000\u0000"+
-        "\u0000\u0000\u344D\u344E\u0000\u0000\u0000\u344F"+
-        "\u0000\u0000\u3450\u0000\u3451\u3452\u0000\u3453"+
-        "\u3454\u0000\u3455\u0000\u0000\u3456\u0000\u0000"+
-        "\u3457\u0000\u0000\u0000\u0000\u3458\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3459"+
-        "\u0000\u0000\u345A\u345B\u0000\u345C\u0000\u0000"+
-        "\u0000\u0000\u345D\u0000\u0000\u345E\u345F\u0000"+
-        "\u3460\u0000\u0000\u0000\u0000\u0000\u3461\u3462"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3463\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3464\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3465\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3466\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3467\u0000\u0000\u0000\u0000\u0000\u3468"+
-        "\u3469\u0000\u346A\u0000\u0000\u0000\u0000\u346B"+
-        "\u0000\u346C\u0000\u0000\u346D\u346E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u346F\u3470\u0000\u0000\u3471"+
-        "\u0000\u0000\u0000\u0000\u0000\u3472\u0000\u3473"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3474\u0000"+
-        "\u0000\u0000\u3475\u0000\u3476\u0000\u3477\u3478"+
-        "\u0000\u3479\u0000\u347A\u0000\u347B\u347C\u0000"+
-        "\u0000\u0000\u0000\u0000\u347D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u347E"+
-        "\u0000\u3521\u0000\u3522\u0000\u3523\u0000\u0000"+
-        "\u3524\u3525\u0000\u0000\u0000\u3526\u0000\u0000"+
-        "\u0000\u3527\u0000\u0000\u0000\u3528\u3529\u0000"+
-        "\u0000\u0000\u0000\u0000\u352A\u0000\u0000\u352B"+
-        "\u0000\u352C\u0000\u0000\u0000\u0000\u352D\u352E"+
-        "\u0000\u352F\u3530\u0000\u0000\u3531\u3532\u0000"+
-        "\u0000\u3533\u0000\u0000\u0000\u0000\u0000\u3534"+
-        "\u0000\u3535\u3536\u3537\u0000\u0000\u0000\u3538"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3539\u0000"+
-        "\u0000\u0000\u353A\u0000\u0000\u353B\u353C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u353D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u353E\u0000\u353F\u0000\u0000\u3540"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3541\u0000"+
-        "\u0000\u0000\u0000\u0000\u3542\u0000\u3543\u3544"+
-        "\u3545\u3546\u0000\u0000\u0000\u3547\u0000\u0000"+
-        "\u3548\u3549\u0000\u0000\u354A\u354B\u354C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u354D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u354E\u354F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3550\u0000\u0000\u3551\u3552\u0000"+
-        "\u0000\u0000\u0000\u3553\u3554\u3555\u0000\u0000"+
-        "\u0000\u3556\u0000\u0000\u0000\u0000\u0000\u3557"+
-        "\u0000\u3558\u3559\u0000\u0000\u355A\u0000\u0000"+
-        "\u355B\u355C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u355D\u0000\u355E\u355F\u0000\u0000\u3560\u0000"+
-        "\u3561\u3562\u0000\u0000\u3563\u0000\u3564\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3565"+
-        "\u0000\u3566\u3567\u0000\u0000\u0000\u3568\u0000"+
-        "\u3569\u0000\u0000\u0000\u0000\u0000\u356A\u356B"+
-        "\u0000\u356C\u356D\u356E\u356F\u0000\u0000\u3570"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3571\u3572\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3573\u0000\u0000"+
-        "\u0000\u0000\u3574\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3575"+
-        "\u0000\u3576\u0000\u3577\u0000\u0000\u3578\u0000"+
-        "\u0000\u3579\u0000\u357A\u357B\u0000\u357C\u0000"+
-        "\u0000\u357D\u357E\u3621\u0000\u0000\u0000\u3622"+
-        "\u3623\u0000\u0000\u3624\u0000\u0000\u3625\u0000"+
-        "\u0000\u0000\u3626\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3627\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3628\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3629"+
-        "\u0000\u0000\u0000\u0000\u0000\u362A\u0000\u0000"+
-        "\u362B\u0000\u362C\u0000\u0000\u362D\u362E\u362F"+
-        "\u3630\u3631\u3632\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3633\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3634\u0000\u0000\u0000"+
-        "\u3635\u0000\u0000\u3636\u0000\u3637\u0000\u3638"+
-        "\u0000\u3639\u0000\u363A\u363B\u363C\u0000\u363D"+
-        "\u363E\u363F\u0000\u3640\u3641\u0000\u3642\u0000"+
-        "\u0000\u3643\u0000\u3644\u0000\u3645\u0000\u3646"+
-        "\u0000\u0000\u0000\u0000\u3647\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3648\u0000"+
-        "\u3649\u364A\u364B\u364C\u0000\u0000\u364D\u0000"+
-        "\u0000\u364E\u0000\u0000\u0000\u364F\u0000\u3650"+
-        "\u0000\u3651\u3652\u0000\u0000\u3653\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3654\u3655\u0000\u0000"+
-        "\u3656\u0000\u0000\u3657\u3658\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3659\u0000\u0000"+
-        "\u0000\u365A\u365B\u0000\u0000\u365C\u365D\u365E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u365F\u3660"+
-        "\u3661\u3662\u0000\u3663\u3664\u3665\u0000\u0000"+
-        "\u0000\u3666\u0000\u3667\u0000\u0000\u0000\u3668"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3669\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u366A\u0000\u0000"+
-        "\u0000\u366B\u366C\u366D\u3670\u3671\u0000\u366E"+
-        "\u366F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3672\u0000\u0000\u3673\u3674\u0000\u3675"+
-        "\u0000\u3676\u0000\u0000\u3677\u3678\u3679\u367A"+
-        "\u367B\u0000\u0000\u367D\u0000\u367E\u0000\u0000"+
-        "\u0000\u367C\u0000\u0000\u0000\u0000\u3721\u3722"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex1=
-        "\u0000\u3723\u3724\u0000\u0000\u0000\u0000\u3725"+
-        "\u0000\u0000\u3726\u0000\u3727\u0000\u0000\u0000"+
-        "\u0000\u3728\u0000\u0000\u0000\u3729\u0000\u0000"+
-        "\u0000\u0000\u372A\u372B\u0000\u372C\u0000\u0000"+
-        "\u372D\u0000\u372E\u372F\u3730\u3731\u0000\u0000"+
-        "\u0000\u3732\u3733\u0000\u3734\u0000\u3735\u3736"+
-        "\u0000\u0000\u0000\u3737\u3738\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3739\u373A\u373B"+
-        "\u0000\u0000\u0000\u0000\u0000\u373C\u373D\u0000"+
-        "\u0000\u0000\u0000\u0000\u373E\u373F\u0000\u0000"+
-        "\u0000\u0000\u3740\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3741\u0000\u0000\u3742\u0000\u3743"+
-        "\u3744\u0000\u0000\u3745\u0000\u3746\u3747\u3748"+
-        "\u3749\u374A\u0000\u374B\u374C\u374D\u0000\u374E"+
-        "\u0000\u374F\u3750\u3751\u3752\u0000\u3753\u0000"+
-        "\u0000\u3754\u0000\u3755\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3756\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3757\u3760\u0000\u3758"+
-        "\u0000\u3759\u375A\u0000\u375B\u375C\u375D\u375E"+
-        "\u0000\u375F\u0000\u0000\u0000\u0000\u0000\u3761"+
-        "\u3762\u3763\u0000\u0000\u3764\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3765\u0000\u0000\u0000\u0000\u3766\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3767"+
-        "\u3768\u0000\u0000\u0000\u3769\u0000\u0000\u376A"+
-        "\u0000\u0000\u0000\u0000\u0000\u376B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u376C\u376D\u0000"+
-        "\u0000\u377E\u0000\u0000\u376E\u0000\u376F\u3770"+
-        "\u0000\u3771\u0000\u0000\u0000\u3772\u0000\u0000"+
-        "\u3773\u0000\u0000\u0000\u0000\u3774\u3775\u0000"+
-        "\u3776\u0000\u0000\u0000\u0000\u3777\u3778\u3779"+
-        "\u0000\u0000\u0000\u377A\u377B\u0000\u0000\u0000"+
-        "\u377C\u377D\u0000\u0000\u3821\u3822\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3823\u0000\u0000\u3824\u3825"+
-        "\u3826\u0000\u0000\u0000\u0000\u0000\u3827\u3828"+
-        "\u0000\u0000\u0000\u0000\u0000\u3829\u0000\u0000"+
-        "\u0000\u0000\u382A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u382B\u0000\u0000\u0000\u0000\u0000\u382C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u382D\u0000\u0000\u382E\u382F\u0000\u3830"+
-        "\u3831\u0000\u0000\u0000\u0000\u3832\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3833"+
-        "\u0000\u3834\u0000\u0000\u3835\u0000\u0000\u3836"+
-        "\u3837\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3838\u0000\u0000\u0000\u3839\u0000\u0000\u383A"+
-        "\u383B\u383C\u0000\u0000\u0000\u0000\u0000\u383D"+
-        "\u383E\u383F\u3840\u0000\u3841\u3842\u0000\u3843"+
-        "\u3844\u0000\u0000\u0000\u3845\u0000\u3846\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3847\u0000\u0000"+
-        "\u3848\u3849\u384A\u0000\u0000\u0000\u384B\u0000"+
-        "\u0000\u384C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u384D\u384E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3850\u0000\u0000\u0000"+
-        "\u0000\u0000\u3851\u0000\u384F\u0000\u0000\u0000"+
-        "\u3852\u0000\u0000\u0000\u0000\u3853\u3854\u0000"+
-        "\u3855\u0000\u3856\u0000\u3857\u0000\u3858\u0000"+
-        "\u0000\u0000\u3859\u0000\u0000\u385A\u0000\u0000"+
-        "\u0000\u385B\u385C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u385D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u385E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u385F\u3860\u0000"+
-        "\u0000\u0000\u0000\u3861\u3862\u0000\u0000\u0000"+
-        "\u0000\u0000\u3863\u3864\u3865\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3867\u0000\u0000"+
-        "\u0000\u3868\u0000\u3869\u386A\u0000\u0000\u0000"+
-        "\u386B\u0000\u0000\u0000\u0000\u0000\u0000\u386C"+
-        "\u386D\u0000\u0000\u386E\u0000\u386F\u3870\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3871"+
-        "\u0000\u0000\u0000\u3872\u0000\u0000\u3873\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3874\u3875\u0000\u0000\u0000\u0000"+
-        "\u0000\u3876\u0000\u3877\u0000\u3878\u3879\u387A"+
-        "\u0000\u387B\u0000\u387C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u387D\u0000\u387E\u0000\u3921"+
-        "\u0000\u0000\u3922\u0000\u0000\u3923\u3924\u0000"+
-        "\u0000\u3925\u0000\u3926\u3927\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3928\u3929\u0000\u392A\u0000"+
-        "\u0000\u0000\u392B\u0000\u0000\u392C\u0000\u392D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u392E"+
-        "\u0000\u0000\u0000\u0000\u392F\u0000\u0000\u3930"+
-        "\u0000\u0000\u0000\u0000\u0000\u3931\u3932\u3933"+
-        "\u3934\u0000\u0000\u3935\u0000\u0000\u0000\u3936"+
-        "\u0000\u0000\u3937\u0000\u3938\u0000\u0000\u0000"+
-        "\u0000\u3939\u0000\u393A\u393B\u0000\u0000\u0000"+
-        "\u393C\u0000\u393D\u0000\u0000\u393E\u0000\u0000"+
-        "\u0000\u0000\u393F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3940\u3941\u3942"+
-        "\u0000\u0000\u0000\u3943\u3944\u0000\u0000\u3945"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3946\u3947"+
-        "\u0000\u3948\u3949\u0000\u394A\u0000\u0000\u394B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u394C\u0000\u0000\u0000\u394D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u394E\u394F\u3950\u0000"+
-        "\u0000\u0000\u3951\u3952\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3953\u0000"+
-        "\u0000\u0000\u0000\u3954\u3955\u0000\u0000\u3956"+
-        "\u3957\u0000\u3958\u0000\u0000\u3959\u0000\u0000"+
-        "\u395A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u395B\u395C\u0000\u395D"+
-        "\u395E\u0000\u0000\u0000\u395F\u0000\u0000\u0000"+
-        "\u3960\u0000\u0000\u0000\u0000\u3961\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3962\u0000"+
-        "\u0000\u0000\u0000\u3963\u0000\u3964\u0000\u3965"+
-        "\u0000\u0000\u0000\u0000\u0000\u3966\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3967"+
-        "\u0000\u0000\u3968\u3969\u0000\u0000\u396A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u396B\u0000\u0000\u0000\u0000"+
-        "\u396C\u0000\u0000\u396D\u0000\u0000\u396E\u0000"+
-        "\u0000\u396F\u0000\u0000\u3970\u0000\u3971\u3972"+
-        "\u3973\u0000\u3974\u0000\u0000\u0000\u0000\u3975"+
-        "\u0000\u0000\u0000\u0000\u3976\u0000\u0000\u0000"+
-        "\u0000\u3977\u3978\u3979\u0000\u397A\u0000\u0000"+
-        "\u397B\u0000\u397C\u397D\u0000\u0000\u0000\u397E"+
-        "\u0000\u0000\u0000\u0000\u3A21\u0000\u3A22\u0000"+
-        "\u3A23\u0000\u0000\u0000\u0000\u0000\u0000\u3A24"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A25\u0000\u3A26\u0000\u0000\u0000"+
-        "\u3A27\u0000\u0000\u0000\u0000\u3A28\u0000\u0000"+
-        "\u0000\u0000\u3A29\u0000\u0000\u0000\u3A2A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3A2B\u3A2C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3A2D\u0000\u0000"+
-        "\u3A2E\u3A2F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3A30\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3A31"+
-        "\u0000\u3A33\u0000\u3A34\u0000\u3A35\u0000\u0000"+
-        "\u0000\u3A36\u0000\u0000\u0000\u3A37\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3A38\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3A32\u0000\u0000\u0000"+
-        "\u3A39\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3A3A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3A3B\u3A3C\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A3D\u0000\u0000\u0000\u3A3E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3A3F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3A40\u0000\u0000\u0000\u0000\u0000\u3A41\u3A42"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3A43\u3A44\u3A45\u3A46"+
-        "\u0000\u3A47\u0000\u0000\u3A48\u0000\u3A49\u0000"+
-        "\u0000\u0000\u3A4A\u0000\u0000\u0000\u3A4B\u0000"+
-        "\u3A4C\u3A4D\u0000\u3A4E\u3A4F\u0000\u3A50\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3A51\u3A52\u0000\u0000\u3A53\u3A54\u0000\u3A55"+
-        "\u0000\u3A56\u3A57\u0000\u0000\u0000\u0000\u3A58"+
-        "\u0000\u0000\u3A59\u0000\u3A5A\u0000\u0000\u0000"+
-        "\u3A5B\u3A5C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3A5D\u0000\u3A5E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3A5F\u3A60"+
-        "\u3A61\u3A62\u3A63\u0000\u0000\u0000\u0000\u0000"+
-        "\u3A64\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3A65"+
-        "\u0000\u3A66\u0000\u0000\u3A67\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3A68\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3A69\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3A6A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3A6B\u3A6C"+
-        "\u0000\u0000\u0000\u3A6D\u0000\u0000\u3A6E\u0000"+
-        "\u0000\u3A6F\u0000\u3A70\u3A71\u0000\u3A72\u0000"+
-        "\u3A73\u0000\u3A74\u0000\u0000\u3A75\u3A76\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3A77\u3A78\u0000\u3A79\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A7A\u3A7B\u0000\u0000\u0000\u3A7C"+
-        "\u3A7D\u3A7E\u0000\u0000\u0000\u3B21\u0000\u0000"+
-        "\u3B22\u0000\u0000\u0000\u3B23\u3B24\u0000\u0000"+
-        "\u0000\u0000\u3B25\u3B26\u3B27\u3B28\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3B29"+
-        "\u3B2A\u0000\u3B2B\u0000\u0000\u0000\u0000\u3B2C"+
-        "\u0000\u0000\u3B2D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3B2E\u0000\u3B2F"+
-        "\u3B30\u0000\u3B31\u3B32\u0000\u0000\u3B33\u0000"+
-        "\u0000\u0000\u3B34\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B35\u0000\u3B36\u3B37\u0000\u0000"+
-        "\u0000\u0000\u3B38\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3B39\u0000\u3B3A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B3B\u0000\u0000\u0000\u0000\u3B3D"+
-        "\u0000\u0000\u0000\u0000\u0000\u3B3C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3B3E\u0000"+
-        "\u0000\u3B3F\u3B40\u0000\u3B41\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3B42\u0000\u0000\u0000\u0000\u3B43\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3B44\u0000\u0000"+
-        "\u0000\u0000\u3B45\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B47\u3B48\u0000\u3B49\u3B4A"+
-        "\u0000\u0000\u0000\u3B46\u0000\u0000\u0000\u0000"+
-        "\u0000\u3B4B\u0000\u0000\u3B4C\u0000\u0000\u0000"+
-        "\u0000\u3B4D\u0000\u0000\u0000\u3B4E\u0000\u3B4F"+
-        "\u0000\u0000\u3B50\u3B51\u0000\u0000\u3B52\u0000"+
-        "\u3B53\u0000\u3B57\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3B55\u0000\u0000\u0000\u3B54\u0000\u0000"+
-        "\u0000\u3B56\u0000\u0000\u0000\u0000\u0000\u3B58"+
-        "\u3B59\u3B5A\u3B5B\u0000\u3B5C\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B5D\u0000\u0000\u3B5E\u0000\u0000"+
-        "\u3B5F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3B60\u3B61\u0000\u0000\u0000\u3B62\u3B63"+
-        "\u0000\u3B64\u0000\u3B65\u0000\u0000\u0000\u0000"+
-        "\u3B66\u0000\u3B67\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B68\u3B69\u3B6A\u3B6B\u0000\u0000"+
-        "\u0000\u3B6C\u0000\u3B6D\u0000\u0000\u0000\u3B6E"+
-        "\u3B6F\u0000\u0000\u0000\u0000\u0000\u0000\u3B70"+
-        "\u0000\u0000\u0000\u3B71\u0000\u0000\u0000\u0000"+
-        "\u3B72\u0000\u6674\u0000\u3B73\u0000\u0000\u0000"+
-        "\u3B74\u3B75\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B76\u0000\u0000\u0000\u3B77"+
-        "\u0000\u0000\u0000\u3B78\u0000\u0000\u3B7A\u0000"+
-        "\u3B79\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3B7B\u3B7C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3B7D\u0000\u0000\u0000\u3B7E\u0000\u0000\u0000"+
-        "\u0000\u3C21\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C22\u3C23\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C24\u0000\u0000\u0000\u0000\u0000\u0000\u3C25"+
-        "\u0000\u0000\u0000\u0000\u0000\u3C26\u0000\u0000"+
-        "\u0000\u0000\u3C27\u0000\u3C28\u3C29\u0000\u0000"+
-        "\u3C2A\u0000\u0000\u0000\u0000\u0000\u0000\u3C2B"+
-        "\u3C2C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C2E\u0000\u0000\u0000\u0000\u0000\u3C2D\u0000"+
-        "\u0000\u0000\u3C2F\u0000\u0000\u3C30\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3C31\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3C34\u0000\u3C32\u0000\u0000\u0000\u0000"+
-        "\u3C33\u3C35\u0000\u0000\u0000\u0000\u3C36\u0000"+
-        "\u3C37\u0000\u0000\u3C38\u3C39\u0000\u3C3A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C3B\u0000\u3C3C\u3C3D\u3C3E\u3C3F\u3C40\u0000"+
-        "\u3C41\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C42\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3C43\u0000\u0000\u3C44\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3C45\u0000\u3C46\u3C47\u0000\u0000"+
-        "\u3C48\u0000\u3C49\u0000\u3C4A\u0000\u0000\u0000"+
-        "\u0000\u3C4B\u0000\u3C4C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3C4D\u3C4E\u3C4F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3C50\u0000"+
-        "\u0000\u0000\u0000\u3C52\u3C51\u0000\u3C53\u0000"+
-        "\u0000\u3C54\u3C55\u0000\u3C56\u3C57\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3C58\u0000\u3C59\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3C5A\u0000\u0000"+
-        "\u0000\u0000\u0000\u3C5B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3C5C\u0000\u0000\u0000\u3C5D\u3C5E"+
-        "\u3C5F\u0000\u0000\u0000\u0000\u0000\u3C60\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3C61\u0000\u0000\u3C62\u3C63\u0000\u0000"+
-        "\u0000\u3C64\u3C65\u3C66\u3C67\u0000\u0000\u0000"+
-        "\u3C68\u0000\u0000\u3C69\u3C6A\u0000\u3C6B\u0000"+
-        "\u3C6C\u0000\u0000\u0000\u3C6D\u0000\u3C6E\u0000"+
-        "\u0000\u0000\u0000\u3C6F\u0000\u3C70\u0000\u3C71"+
-        "\u3C72\u0000\u0000\u0000\u3C73\u3C74\u0000\u3C75"+
-        "\u0000\u0000\u0000\u0000\u0000\u3C76\u0000\u0000"+
-        "\u3C77\u0000\u0000\u0000\u3C78\u0000\u0000\u0000"+
-        "\u3C79\u0000\u0000\u3C7A\u0000\u0000\u0000\u0000"+
-        "\u3C7B\u0000\u0000\u3C7C\u3C7D\u0000\u0000\u3C7E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3D21"+
-        "\u0000\u0000\u3D22\u0000\u3D23\u3D24\u0000\u0000"+
-        "\u3D25\u0000\u3D26\u0000\u0000\u3D27\u3D28\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3D29\u0000\u0000\u0000\u3D2A\u0000\u3D2B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3D2C\u0000"+
-        "\u0000\u0000\u0000\u0000\u3D2D\u3D2E\u0000\u0000"+
-        "\u0000\u0000\u3D2F\u0000\u3D32\u0000\u0000\u3D30"+
-        "\u0000\u0000\u0000\u3D31\u3D33\u0000\u0000\u3D34"+
-        "\u3D35\u3D36\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3D37\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3D38\u0000\u0000\u3D39"+
-        "\u3D3A\u3D3B\u0000\u3D3C\u0000\u0000\u0000\u0000"+
-        "\u3D3D\u3D3E\u3D3F\u3D40\u3D41\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3D42\u0000"+
-        "\u0000\u3D43\u3D44\u0000\u0000\u0000\u0000\u0000"+
-        "\u3D45\u3D46\u3D47\u0000\u3D48\u3D49\u3D4A\u3D4B"+
-        "\u0000\u0000\u3D4C\u3D4D\u0000\u0000\u3D4E\u0000"+
-        "\u0000\u0000\u3D4F\u0000\u3D50\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3D51"+
-        "\u0000\u0000\u3D52\u0000\u0000\u3D53\u0000\u0000"+
-        "\u0000\u0000\u0000\u3D54\u3D55\u0000\u0000\u3D56"+
-        "\u3D57\u0000\u3D58\u0000\u0000\u0000\u0000\u3D59"+
-        "\u0000\u0000\u0000\u0000\u3D5A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3D5B\u0000\u0000"+
-        "\u0000\u0000\u0000\u3D5C\u0000\u3D5D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3D5E\u0000\u0000\u0000\u0000\u0000\u0000\u3D5F"+
-        "\u3D60\u3D61\u0000\u0000\u3D62\u0000\u0000\u0000"+
-        "\u0000\u3D63\u0000\u0000\u3D64\u0000\u3D65\u3D66"+
-        "\u0000\u0000\u0000\u0000\u0000\u3D67\u0000\u0000"+
-        "\u0000\u3D68\u0000\u0000\u0000\u0000\u0000\u3D69"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3D6A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3D6B\u3D6C"+
-        "\u0000\u0000\u3D6D\u0000\u0000\u0000\u3D6E\u0000"+
-        "\u3D6F\u0000\u3D70\u0000\u0000\u0000\u3D71\u0000"+
-        "\u0000\u3D72\u0000\u3D73\u0000\u3D74\u0000\u0000"+
-        "\u3D75\u0000\u0000\u0000\u0000\u3D76\u3D77\u0000"+
-        "\u0000\u0000\u3D78\u0000\u3D79\u3D7A\u0000\u0000"+
-        "\u3D7B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3D7C\u3D7D\u0000\u0000\u0000\u0000\u0000\u3D7E"+
-        "\u0000\u0000\u0000\u3E21\u0000\u0000\u3E22\u0000"+
-        "\u0000\u0000\u3E23\u0000\u3E24\u0000\u0000\u0000"+
-        "\u3E25\u3E26\u3E27\u3E28\u0000\u0000\u3E29\u3E2A"+
-        "\u0000\u0000\u0000\u0000\u3E2B\u3E2C\u0000\u0000"+
-        "\u0000\u3E2D\u0000\u3E2E\u0000\u3E2F\u3E30\u0000"+
-        "\u0000\u0000\u3E31\u0000\u0000\u3E32\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3E33\u0000\u0000\u3E34\u0000\u0000"+
-        "\u3E35\u0000\u0000\u0000\u3E36\u3E37\u0000\u0000"+
-        "\u0000\u0000\u3E38\u0000\u0000\u0000\u0000\u3E39"+
-        "\u0000\u0000\u3E3A\u0000\u3E3B\u0000\u0000\u0000"+
-        "\u3E3C\u3E3D\u3E3E\u3E3F\u3E40\u0000\u3E41\u3E42"+
-        "\u0000\u3E43\u0000\u0000\u3E44\u0000\u3E45\u0000"+
-        "\u0000\u0000\u3E46\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3E47\u3E48\u0000\u0000\u0000\u0000"+
-        "\u3E49\u3E4A\u0000\u0000\u0000\u3E4B\u3E4C\u3E4D"+
-        "\u0000\u3E4E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3E4F\u0000\u0000\u0000\u3E50\u3E51\u0000"+
-        "\u0000\u3E52\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3E53\u0000"+
-        "\u3E54\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3E55\u0000\u0000\u0000"+
-        "\u0000\u0000\u3E56\u0000\u0000\u0000\u0000\u0000"+
-        "\u3E57\u0000\u0000\u3E58\u3E59\u0000\u0000\u3E5A"+
-        "\u3E5B\u3E5C\u0000\u3E5D\u3E5E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3E5F\u0000\u3E60\u0000\u0000"+
-        "\u0000\u0000\u3E61\u3E62\u0000\u0000\u0000\u3E63"+
-        "\u3E64\u0000\u0000\u0000\u3E65\u3E66\u0000\u3E67"+
-        "\u3E68\u0000\u0000\u0000\u0000\u3E69\u0000\u0000"+
-        "\u3E6A\u0000\u3E6B\u0000\u0000\u3E6C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3E6D\u3E6E\u0000\u0000\u3E6F\u0000\u0000\u0000"+
-        "\u3E70\u3E71\u3E72\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3E73\u3E74"+
-        "\u0000\u0000\u0000\u0000\u0000\u3E75\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3E76\u3E77\u3E78\u3E79"+
-        "\u0000\u3E7A\u3E7B\u0000\u0000\u3E7E\u0000\u3E7C"+
-        "\u0000\u3E7D\u0000\u0000\u3F21\u3F22\u0000\u3F23"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F24\u0000\u3F25\u3F26\u0000\u0000\u3F27"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F28\u0000\u3F29\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F2A\u0000\u0000\u0000"+
-        "\u3F2B\u0000\u3F2C\u3F2D\u0000\u0000\u0000\u3F2E"+
-        "\u0000\u3F2F\u0000\u3F30\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F31\u0000\u0000\u0000\u3F32\u0000\u0000"+
-        "\u0000\u0000\u3F33\u3F34\u3F35\u0000\u3F36\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F37\u0000\u0000\u0000"+
-        "\u3F38\u3F39\u3F3A\u0000\u3F3B\u0000\u3F3C\u0000"+
-        "\u0000\u0000\u3F3D\u0000\u3F3E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F3F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F40\u0000\u3F41"+
-        "\u0000\u0000\u0000\u3F42\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3F43\u0000\u0000\u3F44\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F45\u3F46\u3F47"+
-        "\u3F48\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3F49\u0000"+
-        "\u3F4A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F4B\u0000\u0000\u3F4C\u3F4D"+
-        "\u0000\u0000\u3F4E\u0000\u0000\u0000\u3F4F\u3F50"+
-        "\u0000\u0000\u0000\u0000\u3F51\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3F52\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F53\u3F54\u0000"+
-        "\u0000\u0000\u3F55\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3F56\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3F57\u0000\u3F58\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F59\u3F5A\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F5B\u3F5C\u0000\u0000\u0000"+
-        "\u0000\u0000\u3F5D\u3F5E\u0000\u3F5F\u0000\u0000"+
-        "\u3F60\u0000\u0000\u3F61\u0000\u0000\u3F62\u0000"+
-        "\u3F63\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F64\u3F65\u0000\u0000\u3F66\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F67\u3F68\u0000"+
-        "\u0000\u3F69\u0000\u0000\u3F6A\u0000\u0000\u0000"+
-        "\u0000\u3F6B\u3F6C\u3F6D\u3F6E\u0000\u3F6F\u0000"+
-        "\u0000\u0000\u3F70\u3F71\u0000\u0000\u3F72\u0000"+
-        "\u0000\u0000\u3F73\u3F74\u3F75\u0000\u0000\u0000"+
-        "\u3F76\u0000\u0000\u3F77\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F78\u3F79\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F7A\u3F7B\u0000\u0000"+
-        "\u0000\u3F7C\u0000\u0000\u3F7D\u3F7E\u0000\u0000"+
-        "\u4021\u0000\u0000\u0000\u4022\u4023\u0000\u4024"+
-        "\u0000\u0000\u4025\u0000\u4026\u0000\u0000\u4027"+
-        "\u0000\u0000\u4028\u0000\u0000\u0000\u0000\u0000"+
-        "\u4029\u0000\u0000\u0000\u402A\u402B\u0000\u0000"+
-        "\u0000\u402C\u402D\u0000\u0000\u0000\u402E\u0000"+
-        "\u0000\u0000\u0000\u0000\u402F\u0000\u4030\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4031\u4032\u4033"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4034\u0000\u0000"+
-        "\u0000\u4035\u0000\u0000\u0000\u4036\u0000\u0000"+
-        "\u4037\u0000\u0000\u0000\u0000\u0000\u4038\u0000"+
-        "\u0000\u4039\u0000\u403A\u403B\u403C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u403D\u0000\u0000\u0000"+
-        "\u403E\u0000\u0000\u0000\u0000\u403F\u0000\u0000"+
-        "\u0000\u0000\u4040\u0000\u4041\u0000\u0000\u0000"+
-        "\u0000\u0000\u4042\u4043\u0000\u4044\u0000\u0000"+
-        "\u4045\u4046\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4047\u4048\u0000\u0000\u0000\u0000\u0000"+
-        "\u4049\u0000\u404A\u0000\u404B\u0000\u0000\u0000"+
-        "\u404C\u0000\u0000\u0000\u0000\u0000\u404D\u0000"+
-        "\u404E\u0000\u404F\u0000\u4050\u4051\u0000\u0000"+
-        "\u0000\u4052\u4053\u0000\u0000\u0000\u0000\u4054"+
-        "\u4055\u0000\u0000\u0000\u0000\u4056\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4057\u0000\u4058"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4059\u0000\u0000\u0000\u405A"+
-        "\u0000\u405B\u405C\u405D\u405E\u0000\u0000\u0000"+
-        "\u0000\u0000\u405F\u4060\u4061\u4062\u0000\u4063"+
-        "\u4064\u4065\u0000\u4066\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4067\u0000\u0000"+
-        "\u0000\u0000\u0000\u4068\u4069\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u406A\u0000\u406B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u406C\u0000\u406D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u406E"+
-        "\u406F\u4070\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4071\u4072\u0000\u4073\u0000\u4074\u0000\u4075"+
-        "\u0000\u4076\u0000\u4077\u0000\u0000\u4078\u0000"+
-        "\u4079\u0000\u0000\u0000\u407A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u407B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u407C\u407D\u407E"+
-        "\u0000\u0000\u0000\u0000\u4121\u0000\u0000\u0000"+
-        "\u0000\u4122\u4123\u4124\u4125\u0000\u4126\u0000"+
-        "\u4127\u4128\u0000\u0000\u0000\u4129\u0000\u412A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u412B\u412C\u0000\u0000"+
-        "\u0000\u412D\u412E\u0000\u0000\u412F\u0000\u0000"+
-        "\u4130\u0000\u0000\u0000\u0000\u4131\u0000\u4132"+
-        "\u0000\u0000\u0000\u4133\u0000\u0000\u0000\u4134"+
-        "\u0000\u4135\u0000\u0000\u4136\u0000\u0000\u0000"+
-        "\u4137\u4138\u4139\u0000\u0000\u0000\u0000\u413A"+
-        "\u0000\u0000\u0000\u413B\u413C\u0000\u413D\u0000"+
-        "\u0000\u413E\u0000\u413F\u0000\u0000\u4140\u4141"+
-        "\u0000\u0000\u4142\u0000\u0000\u0000\u4143\u0000"+
-        "\u0000\u4144\u0000\u0000\u0000\u0000\u4145\u0000"+
-        "\u0000\u4146\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4147\u0000\u4148\u4149\u0000\u0000"+
-        "\u0000\u0000\u0000\u414A\u0000\u0000\u0000\u414B"+
-        "\u0000\u414C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u414D\u0000\u414E\u0000\u414F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4150"+
-        "\u4151\u0000\u0000\u0000\u0000\u0000\u0000\u4152"+
-        "\u0000\u0000\u0000\u4153\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4154\u0000\u0000\u4155\u0000\u0000"+
-        "\u0000\u4156\u0000\u0000\u0000\u4157\u0000\u0000"+
-        "\u0000\u0000\u4158\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4159\u0000\u0000\u415A\u0000\u0000"+
-        "\u415B\u0000\u0000\u0000\u0000\u415C\u0000\u0000"+
-        "\u415D\u0000\u0000\u415E\u0000\u0000\u415F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4160\u0000"+
-        "\u0000\u0000\u4161\u4162\u4163\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4164"+
-        "\u0000\u0000\u4165\u0000\u0000\u0000\u0000\u0000"+
-        "\u4166\u4167\u0000\u0000\u0000\u0000\u4168\u0000"+
-        "\u4169\u0000\u0000\u0000\u416A\u0000\u416B\u0000"+
-        "\u416C\u0000\u0000\u0000\u0000\u0000\u0000\u416D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u416E\u0000\u416F\u0000\u4170\u4171\u0000\u0000"+
-        "\u0000\u4172\u0000\u0000\u0000\u0000\u4173\u4174"+
-        "\u4175\u0000\u0000\u0000\u4176\u0000\u0000\u0000"+
-        "\u4177\u4178\u0000\u0000\u0000\u4179\u0000\u0000"+
-        "\u0000\u417A\u417B\u0000\u0000\u417C\u417D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u417E\u4221\u0000"+
-        "\u0000\u4222\u4223\u4224\u4225\u0000\u4226\u0000"+
-        "\u0000\u4227\u4228\u4229\u422A\u0000\u422B\u0000"+
-        "\u422C\u422D\u0000\u422E\u0000\u0000\u0000\u4230"+
-        "\u0000\u422F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4231\u0000\u0000\u0000\u0000\u4232\u4233\u0000"+
-        "\u0000\u0000\u4234\u0000\u4235\u0000\u4237\u0000"+
-        "\u0000\u4236\u0000\u0000\u0000\u0000\u0000\u4238"+
-        "\u4239\u423A\u0000\u423B\u423C\u0000\u0000\u0000"+
-        "\u423D\u423E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4240\u4241\u4242\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4244\u0000\u4245\u0000\u4247"+
-        "\u4248\u4249\u0000\u424A\u424C\u0000\u4243\u4246"+
-        "\u424B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u424D\u424E\u424F\u0000\u0000"+
-        "\u4250\u0000\u4251\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4252\u4253\u4254\u4255\u0000\u0000\u4256"+
-        "\u4257\u0000\u0000\u0000\u4258\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4259\u0000\u0000"+
-        "\u0000\u425A\u425B\u0000\u0000\u425C\u0000\u0000"+
-        "\u0000\u0000\u0000\u425D\u0000\u0000\u0000\u425E"+
-        "\u425F\u0000\u4260\u4261\u0000\u0000\u0000\u0000"+
-        "\u4262\u0000\u0000\u0000\u4263\u0000\u4264\u4265"+
-        "\u0000\u0000\u0000\u0000\u4266\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4267\u0000\u0000\u0000\u4268"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4269\u0000\u0000\u426A\u426B\u0000\u426C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u426D\u423F\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex2=
-        "\u0000\u0000\u0000\u0000\u0000\u426E\u0000\u426F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4270\u0000"+
-        "\u0000\u0000\u0000\u4271\u0000\u0000\u0000\u0000"+
-        "\u0000\u4272\u0000\u0000\u4273\u0000\u0000\u0000"+
-        "\u4274\u0000\u4275\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4276\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4277\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4278\u0000\u4279"+
-        "\u427A\u0000\u0000\u0000\u427B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u427C\u427D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u427E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4321\u0000"+
-        "\u0000\u0000\u0000\u0000\u4322\u0000\u4323\u0000"+
-        "\u0000\u0000\u0000\u0000\u4324\u0000\u4325\u0000"+
-        "\u0000\u0000\u0000\u4326\u0000\u0000\u0000\u0000"+
-        "\u0000\u4327\u0000\u0000\u4328\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4329\u432A"+
-        "\u0000\u432B\u0000\u432C\u0000\u0000\u432D\u0000"+
-        "\u432E\u432F\u0000\u4330\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4331\u4332\u4333\u0000\u0000\u4334\u0000\u0000"+
-        "\u0000\u0000\u0000\u4335\u4336\u4337\u0000\u0000"+
-        "\u4339\u0000\u433A\u433B\u0000\u433C\u0000\u0000"+
-        "\u433D\u433E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u433F\u0000\u0000\u0000\u0000\u4340"+
-        "\u0000\u4341\u0000\u0000\u4342\u0000\u0000\u0000"+
-        "\u0000\u4343\u0000\u0000\u0000\u0000\u4344\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4345\u0000\u4346\u0000\u0000\u0000\u4347\u4348"+
-        "\u0000\u4338\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u434A\u0000\u0000\u0000"+
-        "\u0000\u434B\u0000\u0000\u0000\u434C\u0000\u434D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u434F"+
-        "\u434E\u0000\u0000\u0000\u4350\u4351\u0000\u4352"+
-        "\u4353\u4354\u0000\u4355\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4356\u0000\u0000\u0000\u4357"+
-        "\u0000\u0000\u0000\u0000\u4358\u4359\u0000\u0000"+
-        "\u0000\u0000\u435A\u0000\u435B\u0000\u0000\u0000"+
-        "\u0000\u0000\u4349\u0000\u0000\u435C\u0000\u435D"+
-        "\u435E\u0000\u0000\u435F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4360\u0000\u0000\u4361\u4362"+
-        "\u4363\u4364\u4365\u0000\u0000\u4366\u0000\u0000"+
-        "\u0000\u4367\u4368\u4369\u436A\u0000\u0000\u0000"+
-        "\u0000\u0000\u436B\u0000\u436C\u0000\u436D\u0000"+
-        "\u436E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u436F\u0000"+
-        "\u4370\u0000\u4371\u0000\u4372\u0000\u0000\u0000"+
-        "\u0000\u4373\u0000\u4374\u0000\u4375\u0000\u0000"+
-        "\u0000\u4376\u4377\u0000\u0000\u0000\u4378\u0000"+
-        "\u0000\u0000\u4379\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u437A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u437B\u0000\u0000"+
-        "\u437C\u0000\u0000\u0000\u437D\u0000\u0000\u437E"+
-        "\u4421\u4422\u0000\u4423\u0000\u0000\u4424\u0000"+
-        "\u0000\u4425\u0000\u0000\u4426\u4427\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4428\u0000\u0000"+
-        "\u4429\u0000\u442A\u442B\u442C\u442D\u0000\u0000"+
-        "\u442E\u442F\u0000\u0000\u0000\u4430\u4431\u0000"+
-        "\u0000\u0000\u0000\u4432\u4433\u4434\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4435\u0000"+
-        "\u0000\u4436\u4437\u0000\u0000\u0000\u0000\u0000"+
-        "\u4438\u4439\u0000\u443A\u0000\u0000\u443B\u443C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u443D\u0000\u443E\u0000\u443F\u0000\u0000"+
-        "\u4440\u0000\u0000\u4441\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4442\u0000\u0000\u4443\u0000\u0000"+
-        "\u0000\u4444\u0000\u0000\u0000\u0000\u4445\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4446"+
-        "\u0000\u0000\u0000\u4447\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4448\u4449\u444A\u444B\u0000"+
-        "\u444C\u444D\u0000\u0000\u444E\u0000\u0000\u0000"+
-        "\u444F\u4450\u4451\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4452\u4453\u0000\u0000\u0000\u4454"+
-        "\u4455\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4456\u0000\u0000"+
-        "\u0000\u0000\u4457\u0000\u0000\u0000\u4458\u0000"+
-        "\u4459\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u445A\u0000\u0000\u0000\u445B\u445C\u0000"+
-        "\u445D\u0000\u0000\u445E\u0000\u445F\u0000\u4460"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4461"+
-        "\u4462\u0000\u4463\u0000\u4464\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4465\u0000\u0000"+
-        "\u4466\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4467\u0000\u0000\u0000\u0000\u4468\u4469"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u446A\u0000\u0000\u446B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u446C\u446D"+
-        "\u0000\u446E\u0000\u446F\u0000\u4470\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4471\u0000"+
-        "\u4472\u4473\u0000\u4474\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4475"+
-        "\u0000\u4476\u0000\u0000\u0000\u4477\u0000\u0000"+
-        "\u0000\u0000\u4478\u0000\u0000\u4479\u0000\u0000"+
-        "\u447A\u0000\u0000\u0000\u447B\u0000\u0000\u0000"+
-        "\u447C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u447D\u0000\u447E\u0000\u4521\u0000\u0000\u4522"+
-        "\u0000\u0000\u0000\u4523\u0000\u0000\u4524\u4525"+
-        "\u0000\u0000\u0000\u0000\u0000\u4526\u4527\u0000"+
-        "\u0000\u4528\u4529\u0000\u0000\u0000\u452A\u0000"+
-        "\u452B\u452C\u452D\u0000\u0000\u452E\u452F\u0000"+
-        "\u0000\u0000\u0000\u4530\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4531\u0000\u0000\u4532"+
-        "\u0000\u0000\u4533\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4534\u0000\u4535\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4536\u0000"+
-        "\u0000\u4537\u0000\u4538\u0000\u0000\u4539\u453A"+
-        "\u0000\u453B\u0000\u453C\u0000\u0000\u0000\u0000"+
-        "\u0000\u453D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u453E\u0000\u453F\u4540\u4541"+
-        "\u0000\u0000\u0000\u0000\u0000\u4542\u0000\u0000"+
-        "\u0000\u0000\u0000\u4543\u0000\u0000\u0000\u4544"+
-        "\u4545\u4546\u0000\u0000\u4547\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4548\u4549\u454A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u454B\u0000"+
-        "\u454D\u454C\u0000\u0000\u454E\u0000\u0000\u0000"+
-        "\u454F\u0000\u0000\u0000\u4550\u4551\u4552\u0000"+
-        "\u0000\u0000\u0000\u0000\u4553\u4554\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4555\u0000\u0000\u4556"+
-        "\u0000\u0000\u0000\u0000\u4557\u0000\u0000\u0000"+
-        "\u4558\u4559\u455A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u455B\u455C\u0000\u0000"+
-        "\u0000\u0000\u455D\u455E\u0000\u0000\u455F\u4560"+
-        "\u0000\u4561\u0000\u0000\u0000\u0000\u0000\u4562"+
-        "\u4563\u4564\u0000\u0000\u0000\u0000\u0000\u4565"+
-        "\u0000\u0000\u0000\u4566\u0000\u0000\u4567\u0000"+
-        "\u0000\u0000\u0000\u0000\u4568\u0000\u0000\u0000"+
-        "\u4569\u0000\u0000\u456A\u456B\u0000\u0000\u456C"+
-        "\u0000\u0000\u0000\u0000\u0000\u456D\u456E\u0000"+
-        "\u0000\u0000\u0000\u456F\u0000\u0000\u0000\u4570"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4571\u0000"+
-        "\u0000\u0000\u4572\u0000\u0000\u4573\u0000\u0000"+
-        "\u0000\u0000\u4574\u0000\u0000\u0000\u4575\u0000"+
-        "\u4576\u0000\u0000\u0000\u0000\u4577\u0000\u0000"+
-        "\u4578\u0000\u0000\u0000\u0000\u0000\u0000\u4579"+
-        "\u0000\u0000\u0000\u457A\u0000\u0000\u457B\u0000"+
-        "\u457C\u0000\u0000\u0000\u0000\u457D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u457E\u4621\u0000"+
-        "\u0000\u0000\u4622\u0000\u0000\u4623\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4624"+
-        "\u0000\u0000\u0000\u4625\u0000\u0000\u0000\u4626"+
-        "\u4627\u0000\u4628\u4629\u0000\u0000\u0000\u0000"+
-        "\u462A\u462B\u0000\u0000\u462C\u462D\u462E\u0000"+
-        "\u462F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4630\u4631\u0000\u0000\u0000\u4632\u4633\u0000"+
-        "\u0000\u0000\u0000\u4634\u4635\u0000\u0000\u0000"+
-        "\u0000\u4636\u0000\u0000\u4637\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4638\u0000"+
-        "\u0000\u0000\u4639\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u463A\u0000\u463B\u0000\u0000\u463C\u463D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u463E\u0000"+
-        "\u0000\u463F\u0000\u0000\u0000\u0000\u0000\u4640"+
-        "\u0000\u4641\u0000\u0000\u0000\u0000\u0000\u4642"+
-        "\u0000\u0000\u4643\u0000\u4644\u4645\u0000\u0000"+
-        "\u0000\u4646\u0000\u0000\u0000\u4647\u4648\u0000"+
-        "\u4649\u0000\u464A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u464B\u0000\u0000\u0000\u0000\u0000\u464C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u464D\u464E"+
-        "\u464F\u0000\u0000\u0000\u4650\u0000\u4651\u0000"+
-        "\u0000\u0000\u0000\u4652\u0000\u4653\u4654\u0000"+
-        "\u0000\u0000\u4655\u4656\u0000\u0000\u0000\u4657"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4658\u4659\u0000\u465A\u0000\u465B"+
-        "\u0000\u0000\u465C\u0000\u465D\u0000\u0000\u0000"+
-        "\u0000\u465E\u0000\u465F\u4660\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4736"+
-        "\u0000\u0000\u0000\u4661\u0000\u4662\u0000\u4663"+
-        "\u0000\u0000\u0000\u0000\u4664\u0000\u4665\u0000"+
-        "\u4666\u4667\u0000\u4668\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4669\u466A\u466B"+
-        "\u0000\u466C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u466D\u466E\u0000\u466F"+
-        "\u4670\u0000\u0000\u0000\u4671\u0000\u0000\u4672"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4673\u0000\u4674\u0000\u4675\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4676\u0000\u0000\u0000\u4677\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4678\u0000\u4679"+
-        "\u467A\u467B\u467C\u0000\u467D\u0000\u467E\u0000"+
-        "\u0000\u0000\u4721\u0000\u4722\u0000\u0000\u0000"+
-        "\u4723\u0000\u0000\u0000\u0000\u0000\u0000\u4724"+
-        "\u0000\u4725\u0000\u4726\u4727\u0000\u4728\u0000"+
-        "\u0000\u0000\u4729\u0000\u472A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u472B\u0000\u0000\u472C"+
-        "\u0000\u0000\u472D\u0000\u0000\u0000\u472E\u472F"+
-        "\u0000\u4730\u0000\u4731\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4732\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4733\u4734"+
-        "\u4735\u0000\u0000\u0000\u0000\u0000\u4737\u4738"+
-        "\u0000\u4739\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u473A\u0000\u0000\u473B\u0000\u0000\u473C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u473D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u473E\u473F"+
-        "\u0000\u4740\u0000\u0000\u0000\u4741\u0000\u4742"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4743"+
-        "\u4744\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4745\u0000\u0000\u0000"+
-        "\u0000\u0000\u4746\u0000\u0000\u0000\u0000\u4747"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4748\u4749\u0000\u474A\u0000\u474B\u474C"+
-        "\u474D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u474E\u0000\u474F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4750\u0000\u0000\u4751"+
-        "\u0000\u4752\u0000\u0000\u0000\u4753\u0000\u4754"+
-        "\u0000\u0000\u0000\u0000\u4755\u0000\u0000\u0000"+
-        "\u4756\u0000\u4757\u0000\u0000\u0000\u4758\u4759"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u475A\u0000"+
-        "\u0000\u0000\u0000\u475B\u0000\u475C\u0000\u475D"+
-        "\u475E\u0000\u475F\u0000\u0000\u4760\u0000\u0000"+
-        "\u0000\u4761\u0000\u0000\u0000\u0000\u0000\u4762"+
-        "\u4763\u0000\u0000\u0000\u4764\u0000\u4765\u0000"+
-        "\u0000\u0000\u0000\u0000\u4766\u0000\u0000\u0000"+
-        "\u4767\u0000\u0000\u0000\u4768\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4769\u0000"+
-        "\u0000\u0000\u476A\u0000\u0000\u0000\u0000\u476B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u476C\u0000\u0000\u0000\u476D\u0000"+
-        "\u0000\u476E\u0000\u476F\u4770\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4771\u4772\u0000\u0000"+
-        "\u4773\u4774\u0000\u4775\u0000\u0000\u0000\u4776"+
-        "\u0000\u4777\u4778\u4779\u477A\u0000\u0000\u477B"+
-        "\u0000\u0000\u0000\u0000\u477C\u477D\u477E\u0000"+
-        "\u0000\u0000\u4821\u4822\u0000\u0000\u0000\u0000"+
-        "\u4823\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4824\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4825\u0000\u4826\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4827\u0000\u0000"+
-        "\u0000\u0000\u0000\u4828\u0000\u0000\u0000\u0000"+
-        "\u0000\u4829\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u482A\u0000\u0000\u0000\u0000\u0000\u0000\u482B"+
-        "\u0000\u0000\u0000\u0000\u0000\u482C\u482D\u0000"+
-        "\u0000\u482E\u0000\u482F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4830\u0000\u0000\u0000\u4831"+
-        "\u4832\u4833\u0000\u4834\u0000\u0000\u0000\u4835"+
-        "\u4836\u0000\u4837\u0000\u0000\u4838\u4839\u483A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u483B\u0000\u483C\u483D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u483E\u0000\u483F\u0000\u4840\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4841\u0000\u0000\u0000"+
-        "\u4842\u0000\u4843\u0000\u4844\u4845\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4846\u0000"+
-        "\u4847\u0000\u4848\u4849\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u484A\u0000"+
-        "\u0000\u484B\u484C\u0000\u0000\u4853\u0000\u484D"+
-        "\u484E\u0000\u0000\u484F\u0000\u0000\u4850\u0000"+
-        "\u0000\u0000\u0000\u4851\u4852\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4854"+
-        "\u0000\u4855\u4856\u4857\u0000\u0000\u0000\u4858"+
-        "\u0000\u4859\u485A\u0000\u0000\u485B\u485C\u0000"+
-        "\u0000\u485D\u485E\u0000\u0000\u0000\u0000\u0000"+
-        "\u485F\u0000\u0000\u0000\u4860\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4861\u4862\u0000"+
-        "\u0000\u0000\u0000\u4863\u0000\u0000\u0000\u4864"+
-        "\u4865\u0000\u0000\u4866\u4867\u4868\u0000\u0000"+
-        "\u4869\u0000\u486A\u486B\u486C\u0000\u486D\u0000"+
-        "\u0000\u0000\u486E\u0000\u0000\u0000\u0000\u486F"+
-        "\u4870\u0000\u0000\u0000\u0000\u4871\u4872\u4873"+
-        "\u4874\u0000\u0000\u0000\u0000\u0000\u4875\u4876"+
-        "\u4877\u0000\u0000\u0000\u0000\u4878\u4879\u0000"+
-        "\u0000\u0000\u0000\u0000\u487A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u487B\u0000\u487C"+
-        "\u487D\u0000\u487E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4921\u0000\u0000\u0000\u4922\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4923\u4924\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4925\u0000\u0000\u0000\u0000\u4926\u0000\u0000"+
-        "\u0000\u4927\u0000\u0000\u4928\u4929\u0000\u0000"+
-        "\u492A\u0000\u0000\u0000\u0000\u492B\u492C\u492D"+
-        "\u0000\u0000\u0000\u0000\u0000\u492E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u492F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4930\u0000\u0000\u4931\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4932"+
-        "\u0000\u0000\u0000\u0000\u4933\u0000\u0000\u4934"+
-        "\u0000\u4935\u0000\u0000\u4936\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4937\u4938\u0000\u0000\u0000"+
-        "\u4939\u493A\u493B\u493C\u0000\u0000\u4941\u0000"+
-        "\u0000\u0000\u0000\u0000\u493D\u493E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u493F\u4940\u0000"+
-        "\u0000\u0000\u0000\u0000\u4942\u4943\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4944\u0000\u4945\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4946\u4947\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4948\u0000"+
-        "\u0000\u4949\u0000\u0000\u0000\u494A\u494B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u494C\u494D\u494E\u494F"+
-        "\u4950\u0000\u0000\u4951\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4952\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4953\u0000\u0000\u0000\u0000"+
-        "\u4954\u4955\u0000\u0000\u4956\u0000\u0000\u4957"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4958\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4959\u0000\u495A\u495B\u495C\u495D\u0000"+
-        "\u495E\u0000\u0000\u0000\u495F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4960\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4961\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4962\u4963\u4964\u4965\u4966"+
-        "\u0000\u0000\u0000\u4967\u4968\u0000\u0000\u4969"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u496A\u0000"+
-        "\u496B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u496C\u0000\u496D\u0000\u496E"+
-        "\u496F\u4970\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4971\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4972\u0000\u0000\u0000\u4973\u4974\u4975"+
-        "\u0000\u0000\u4976\u4977\u0000\u0000\u0000\u0000"+
-        "\u4978\u0000\u4979\u0000\u0000\u0000\u0000\u497A"+
-        "\u0000\u0000\u497B\u0000\u497C\u0000\u497D\u0000"+
-        "\u497E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4A21\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A22\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4A23\u0000\u0000\u0000\u0000\u4A24\u0000\u4A25"+
-        "\u0000\u0000\u0000\u0000\u4A26\u0000\u0000\u0000"+
-        "\u0000\u0000\u4A27\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4A28\u4A29\u0000\u0000\u0000\u0000"+
-        "\u4A2A\u0000\u4A2B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4A2C"+
-        "\u4A2D\u0000\u4A2E\u4A2F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4A30\u0000\u0000\u0000\u0000\u4A31"+
-        "\u4A32\u4A33\u0000\u0000\u4A34\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A35\u4A36\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A37\u0000\u0000\u4A38\u0000"+
-        "\u0000\u4A39\u4A3A\u0000\u4A3B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4A3C\u0000\u0000\u0000\u0000\u0000\u4A3D\u0000"+
-        "\u4A3E\u0000\u0000\u0000\u0000\u0000\u0000\u4A3F"+
-        "\u4A40\u4A41\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A42\u0000\u0000\u0000\u4A43"+
-        "\u0000\u0000\u4A44\u0000\u0000\u4A45\u0000\u4A46"+
-        "\u0000\u0000\u0000\u0000\u4A47\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A48\u0000\u0000\u0000\u4A49"+
-        "\u0000\u0000\u0000\u0000\u4A4A\u0000\u0000\u0000"+
-        "\u4A4B\u4A4C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A4D\u4A4E\u4A4F\u0000\u4A50\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4A51\u4A52"+
-        "\u4A53\u0000\u0000\u4A54\u0000\u4A55\u4A56\u0000"+
-        "\u0000\u0000\u4A57\u0000\u4A58\u0000\u4A59\u0000"+
-        "\u4A5A\u0000\u0000\u4A5B\u0000\u0000\u0000\u0000"+
-        "\u4A5C\u0000\u0000\u4A5D\u0000\u0000\u4A5E\u4A5F"+
-        "\u0000\u4A60\u0000\u0000\u0000\u0000\u0000\u4A61"+
-        "\u4A62\u0000\u0000\u4A63\u4A64\u0000\u0000\u4A65"+
-        "\u0000\u0000\u0000\u0000\u4A66\u0000\u0000\u0000"+
-        "\u0000\u4A67\u0000\u0000\u0000\u4A68\u4A69\u0000"+
-        "\u0000\u0000\u0000\u4A6A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A6B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4A6C\u0000\u0000\u0000\u0000\u4A6D\u4A6E\u0000"+
-        "\u0000\u4A6F\u0000\u0000\u4A70\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4A71\u0000"+
-        "\u0000\u4A72\u0000\u0000\u0000\u0000\u0000\u4A73"+
-        "\u0000\u4A74\u0000\u0000\u4A75\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4A76\u4A77\u0000"+
-        "\u4A78\u0000\u0000\u0000\u0000\u0000\u0000\u4A79"+
-        "\u0000\u0000\u0000\u0000\u0000\u4A7A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A7B\u4A7C\u0000\u0000\u0000"+
-        "\u0000\u0000\u4A7D\u4A7E\u0000\u0000\u4B21\u0000"+
-        "\u0000\u0000\u4B22\u0000\u4B23\u4B24\u0000\u4B25"+
-        "\u0000\u0000\u0000\u4B26\u0000\u4B27\u0000\u0000"+
-        "\u0000\u0000\u4B28\u4B29\u0000\u0000\u0000\u0000"+
-        "\u4B2A\u4B2B\u0000\u0000\u0000\u0000\u4B2C\u0000"+
-        "\u0000\u0000\u4B2D\u0000\u4B2E\u0000\u0000\u4B2F"+
-        "\u4B30\u0000\u0000\u0000\u4B31\u0000\u0000\u0000"+
-        "\u0000\u4B32\u4B33\u0000\u0000\u4B34\u0000\u0000"+
-        "\u0000\u0000\u4B35\u4B36\u0000\u4B37\u0000\u0000"+
-        "\u0000\u0000\u0000\u4B38\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4B39\u0000\u0000"+
-        "\u4B3A\u0000\u4B3B\u0000\u0000\u0000\u4B3C\u0000"+
-        "\u4B3D\u0000\u0000\u0000\u0000\u4B3E\u4B3F\u4B40"+
-        "\u4B41\u0000\u0000\u0000\u0000\u0000\u4B42\u4B43"+
-        "\u0000\u4B44\u0000\u4B45\u4B46\u0000\u4B47\u4B48"+
-        "\u0000\u4B49\u0000\u0000\u0000\u0000\u0000\u4B4A"+
-        "\u0000\u4B4B\u0000\u0000\u4B4C\u0000\u0000\u0000"+
-        "\u4B4D\u4B4E\u0000\u4B4F\u0000\u4B50\u4B51\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4B52\u0000"+
-        "\u4B53\u0000\u0000\u4B54\u0000\u4B55\u0000\u4B56"+
-        "\u4B57\u0000\u0000\u0000\u4B58\u0000\u4B59\u4B5A"+
-        "\u4B5B\u0000\u4B5C\u0000\u0000\u4B5D\u4B5E\u0000"+
-        "\u0000\u0000\u4B5F\u4B60\u0000\u4B61\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4B62\u0000\u4B63"+
-        "\u0000\u4B64\u0000\u0000\u4B65\u4B66\u0000\u4B67"+
-        "\u0000\u0000\u0000\u0000\u0000\u4B68\u4B69\u0000"+
-        "\u0000\u4B6A\u0000\u4B6B\u4B6C\u0000\u0000\u4B6D"+
-        "\u0000\u0000\u4B6E\u4B6F\u0000\u0000\u4B70\u0000"+
-        "\u0000\u4B71\u0000\u0000\u0000\u4B72\u0000\u0000"+
-        "\u0000\u4B73\u0000\u4B74\u0000\u0000\u4B75\u4B76"+
-        "\u0000\u4B77\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4B78\u4B79\u0000\u4B7A"+
-        "\u0000\u4B7B\u4B7C\u4B7D\u0000\u4B7E\u0000\u4C21"+
-        "\u4C22\u4C23\u0000\u0000\u4C24\u0000\u0000\u4C25"+
-        "\u0000\u0000\u4C26\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4C27\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C28\u4C29\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4C2A\u0000\u4C2B\u0000"+
-        "\u4C2C\u4C2D\u4C2E\u4C2F\u4C30\u4C31\u4C32\u4C33"+
-        "\u4C34\u4C35\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4C36\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C37\u0000\u0000\u4C38\u4C39\u0000\u4C3A\u4C3B"+
-        "\u0000\u0000\u0000\u4C3C\u0000\u4C3D\u0000\u0000"+
-        "\u0000\u4C3E\u4C3F\u0000\u0000\u0000\u0000\u4C40"+
-        "\u0000\u0000\u0000\u0000\u0000\u4C41\u0000\u0000"+
-        "\u0000\u0000\u4C42\u0000\u0000\u0000\u4C43\u4C44"+
-        "\u4C45\u0000\u0000\u4C46\u0000\u4C47\u4C48\u0000"+
-        "\u0000\u4C49\u4C4A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C4B\u4C4C\u0000\u0000\u0000\u4C4D\u4C4E\u4C4F"+
-        "\u0000\u4C50\u0000\u0000\u0000\u0000\u0000\u4C51"+
-        "\u4C52\u4C53\u4C54\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C55\u4C56\u4C57\u0000\u4C58\u0000\u0000\u4C59"+
-        "\u4C5A\u4C5B\u0000\u4C5C\u0000\u0000\u4C5D\u0000"+
-        "\u4C5E\u4C5F\u4C60\u4C61\u0000\u0000\u4C62\u4C63"+
-        "\u0000\u4C64\u4C65\u0000\u0000\u4C66\u0000\u0000"+
-        "\u0000\u4C67\u0000\u4C68\u0000\u0000\u0000\u4C69"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C6A\u4C6B\u0000\u0000\u4C6C\u0000\u0000\u0000"+
-        "\u4C6D\u0000\u0000\u4C6E\u0000\u0000\u0000\u0000"+
-        "\u4C6F\u0000\u4C70\u4C71\u0000\u0000\u4C72\u4C73"+
-        "\u0000\u0000\u0000\u0000\u4C74\u0000\u0000\u0000"+
-        "\u4C75\u0000\u4C76\u4C77\u0000\u0000\u0000\u4C78"+
-        "\u0000\u0000\u0000\u0000\u4C79\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C7A\u4C7B\u4C7C\u0000\u0000\u4C7D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4C7E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D21\u0000\u0000\u0000\u4D22\u4D23"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4D24\u4D25\u0000\u0000\u4D26\u0000\u0000\u4D27"+
-        "\u0000\u4D28\u4D29\u0000\u0000\u0000\u0000\u4D2A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4D2B\u0000"+
-        "\u0000\u4D2C\u0000\u0000\u0000\u4D2D\u4D2E\u4D2F"+
-        "\u4D30\u0000\u0000\u4D31\u0000\u0000\u0000\u4D32"+
-        "\u4D33\u0000\u0000\u0000\u0000\u0000\u4D34\u0000"+
-        "\u4D35\u0000\u4D36\u0000\u0000\u0000\u0000\u4D37"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4D38\u4D39"+
-        "\u0000\u4D3A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4D3B"+
-        "\u0000\u4D3C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4D3D\u4D3E\u4D3F\u4D40\u4D41\u4D42\u0000"+
-        "\u0000\u4D43\u0000\u0000\u0000\u4D44\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4D45\u0000\u4D46\u4D47\u0000\u4D48\u0000\u0000"+
-        "\u0000\u4D49\u0000\u0000\u4D4A\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D4B\u0000\u4D4C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4D4D\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D4E\u0000\u0000\u0000\u0000\u4D4F"+
-        "\u4D50\u4D51\u0000\u0000\u4D52\u0000\u4D53\u0000"+
-        "\u0000\u0000\u0000\u0000\u4D54\u0000\u4D55\u4D56"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4D57"+
-        "\u0000\u0000\u0000\u0000\u4D58\u0000\u0000\u4D59"+
-        "\u4D5A\u4D5B\u0000\u0000\u4D5C\u0000\u0000\u4D5D"+
-        "\u0000\u0000\u0000\u0000\u4D5E\u0000\u4D5F\u4D60"+
-        "\u0000\u4D61\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4D62\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4D63\u0000\u4D64\u4D65\u4D66\u0000\u0000\u4D67"+
-        "\u4D68\u0000\u4D69\u0000\u4D6A\u0000\u0000\u4D6B"+
-        "\u0000\u0000\u4D6C\u4D6D\u0000\u4D6E\u4D6F\u0000"+
-        "\u0000\u4D70\u0000\u4D71\u4D72\u4D73\u4D74\u0000"+
-        "\u0000\u0000\u0000\u4D75\u0000\u4D76\u4D77\u0000"+
-        "\u0000\u4D78\u0000\u0000\u0000\u4D79\u0000\u0000"+
-        "\u0000\u0000\u4D7A\u4D7B\u0000\u4D7C\u0000\u0000"+
-        "\u4D7D\u4D7E\u4E21\u0000\u4E22\u0000\u0000\u0000"+
-        "\u4E24\u4E25\u0000\u4E26\u4E27\u4E28\u0000\u0000"+
-        "\u0000\u4E29\u4E23\u4E2A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4E2B\u0000\u0000"+
-        "\u0000\u4E2C\u0000\u0000\u0000\u0000\u0000\u4E2D"+
-        "\u0000\u0000\u0000\u0000\u4E2E\u4E2F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4E30\u4E31\u4E32"+
-        "\u0000\u4E33\u0000\u0000\u4E34\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4E35\u0000\u0000\u0000\u4E36\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4E37\u4E38\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4E39\u0000\u0000"+
-        "\u0000\u0000\u0000\u4E3A\u4E3B\u4E3C\u0000\u4E3D"+
-        "\u4E3E\u0000\u4E3F\u4E40\u4E41\u4E42\u4E43\u4E44"+
-        "\u4E45\u0000\u4E46\u0000\u0000\u4E47\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4E48\u0000\u0000"+
-        "\u0000\u4E49\u0000\u0000\u0000\u4E4A\u0000\u0000"+
-        "\u0000\u4E4B\u0000\u4E4C\u4E4D\u0000\u4E4E\u0000"+
-        "\u0000\u0000\u0000\u0000\u4E4F\u0000\u0000\u0000"+
-        "\u0000\u4E50\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4E51\u0000\u0000\u0000\u0000\u0000\u4E52\u0000"+
-        "\u4E53\u0000\u0000\u0000\u4E54\u0000\u0000\u0000"+
-        "\u4E55\u4E56\u0000\u0000\u0000\u0000\u4E57\u0000"+
-        "\u0000\u4E58\u0000\u0000\u4E59\u0000\u0000\u0000";
-
-    private final static String innerIndex3=
-        "\u4E5A\u0000\u0000\u0000\u0000\u0000\u4E5B\u0000"+
-        "\u0000\u0000\u4E5C\u0000\u0000\u0000\u4E5D\u0000"+
-        "\u0000\u0000\u4E5E\u0000\u4E5F\u4E60\u0000\u4E61"+
-        "\u0000\u4E62\u4E63\u0000\u4E64\u0000\u0000\u0000"+
-        "\u0000\u0000\u4E65\u0000\u0000\u0000\u0000\u0000"+
-        "\u4E66\u0000\u0000\u0000\u0000\u4E67\u4E68\u4E69"+
-        "\u0000\u0000\u0000\u0000\u4E6A\u4E6B\u4E6C\u0000"+
-        "\u0000\u4E6D\u0000\u0000\u0000\u4E6E\u4E6F\u0000"+
-        "\u0000\u0000\u4E70\u0000\u0000\u4E71\u4E72\u0000"+
-        "\u0000\u0000\u4E73\u0000\u0000\u4E74\u4E75\u4E76"+
-        "\u0000\u0000\u4E77\u0000\u0000\u0000\u4E78\u4E79"+
-        "\u0000\u0000\u0000\u0000\u4E7A\u0000\u4E7B\u4E7C"+
-        "\u4E7D\u0000\u4E7E\u0000\u4F21\u0000\u0000\u4F22"+
-        "\u0000\u0000\u4F23\u0000\u4F24\u0000\u0000\u0000"+
-        "\u4F25\u0000\u4F26\u4F27\u4F28\u0000\u0000\u0000"+
-        "\u0000\u0000\u4F29\u0000\u0000\u4F2A\u0000\u0000"+
-        "\u4F2B\u0000\u0000\u0000\u4F2C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4F2D\u4F2E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4F2F\u4F30\u4F31\u0000"+
-        "\u0000\u0000\u4F32\u0000\u0000\u0000\u0000\u4F33"+
-        "\u0000\u0000\u4F34\u0000\u0000\u0000\u0000\u4F35"+
-        "\u0000\u0000\u4F36\u0000\u0000\u0000\u4F37\u4F38"+
-        "\u0000\u4F39\u0000\u0000\u0000\u4F3A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4F3B\u0000"+
-        "\u0000\u0000\u0000\u4F3C\u0000\u0000\u0000\u0000"+
-        "\u0000\u4F3D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4F3E\u4F3F\u0000\u0000\u4F40\u0000\u0000"+
-        "\u0000\u4F41\u0000\u0000\u0000\u0000\u4F42\u4F43"+
-        "\u4F44\u0000\u0000\u0000\u4F45\u0000\u4F46\u0000"+
-        "\u0000\u0000\u4F47\u0000\u4F48\u0000\u0000\u0000"+
-        "\u4F49\u4F4A\u0000\u0000\u4F4B\u0000\u0000\u0000"+
-        "\u4F4C\u0000\u0000\u4F4D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4F4E\u4F4F\u0000"+
-        "\u0000\u4F50\u0000\u0000\u0000\u4F51\u4F52\u0000"+
-        "\u0000\u4F53\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4F54\u0000\u0000"+
-        "\u0000\u4F55\u4F56\u4F57\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4F58\u4F59\u0000"+
-        "\u4F5A\u0000\u0000\u0000\u0000\u4F5B\u0000\u4F5C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4F5D\u4F5E\u0000\u0000\u4F5F"+
-        "\u4F60\u0000\u0000\u0000\u4F61\u0000\u4F62\u0000"+
-        "\u0000\u0000\u4F63\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4F64\u0000\u4F65\u0000"+
-        "\u4F66\u4F67\u0000\u4F68\u4F69\u0000\u0000\u0000"+
-        "\u4F6A\u0000\u4F6B\u0000\u0000\u0000\u4F6C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4F6D\u0000\u0000\u0000\u4F6E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4F6F\u0000\u0000\u0000\u0000\u4F70"+
-        "\u0000\u0000\u0000\u0000\u4F71\u0000\u0000\u0000"+
-        "\u4F72\u0000\u0000\u0000\u0000\u4F74\u4F75\u4F76"+
-        "\u0000\u4F73\u0000\u0000\u4F77\u0000\u0000\u0000"+
-        "\u4F78\u0000\u0000\u0000\u4F79\u4F7A\u0000\u0000"+
-        "\u4F7B\u4F7C\u4F7D\u4F7E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5021\u0000\u5022\u0000\u5023"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5024"+
-        "\u5025\u5026\u0000\u0000\u5027\u0000\u5028\u0000"+
-        "\u0000\u0000\u5029\u502A\u0000\u502B\u502C\u0000"+
-        "\u0000\u0000\u0000\u502E\u0000\u0000\u0000\u502F"+
-        "\u5030\u5031\u0000\u0000\u502D\u0000\u5032\u0000"+
-        "\u0000\u0000\u5033\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5034\u5035\u0000\u0000\u5037\u5038"+
-        "\u0000\u0000\u5039\u503A\u0000\u0000\u0000\u503B"+
-        "\u5036\u0000\u0000\u0000\u0000\u0000\u503C\u0000"+
-        "\u0000\u0000\u0000\u0000\u503D\u0000\u0000\u0000"+
-        "\u503E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u503F\u0000\u5040\u0000\u5041\u5042"+
-        "\u5043\u0000\u0000\u0000\u0000\u5044\u0000\u5045"+
-        "\u0000\u5046\u0000\u0000\u0000\u5047\u0000\u0000"+
-        "\u0000\u5048\u0000\u0000\u5049\u504A\u0000\u0000"+
-        "\u0000\u0000\u0000\u504B\u0000\u504C\u0000\u504D"+
-        "\u0000\u0000\u0000\u0000\u504E\u504F\u5050\u0000"+
-        "\u0000\u0000\u5051\u5052\u0000\u0000\u0000\u5053"+
-        "\u0000\u5054\u0000\u0000\u5055\u0000\u0000\u0000"+
-        "\u5056\u0000\u0000\u5057\u5058\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5059"+
-        "\u0000\u505A\u0000\u505B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u505C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u505D\u0000\u505E\u505F\u0000\u5060\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5061\u5062\u0000\u0000\u0000"+
-        "\u0000\u5063\u0000\u5064\u5065\u5066\u5067\u0000"+
-        "\u5068\u0000\u0000\u5069\u506A\u0000\u0000\u0000"+
-        "\u0000\u506B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u506C\u506D\u0000\u506E\u0000\u0000\u0000\u506F"+
-        "\u0000\u5070\u0000\u0000\u5071\u0000\u0000\u0000"+
-        "\u5072\u0000\u0000\u5073\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5074\u0000\u5075\u0000\u0000\u5076"+
-        "\u5077\u0000\u5078\u0000\u0000\u0000\u0000\u5079"+
-        "\u0000\u0000\u0000\u0000\u507A\u0000\u507B\u0000"+
-        "\u0000\u0000\u507C\u0000\u0000\u507D\u507E\u0000"+
-        "\u5121\u0000\u5122\u0000\u0000\u5123\u0000\u0000"+
-        "\u0000\u0000\u5124\u5125\u0000\u5126\u0000\u0000"+
-        "\u0000\u5127\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5128\u0000\u0000\u0000\u5129\u0000\u0000\u0000"+
-        "\u0000\u0000\u512A\u512B\u0000\u0000\u0000\u512C"+
-        "\u0000\u512D\u512E\u0000\u512F\u0000\u0000\u0000"+
-        "\u0000\u5130\u0000\u0000\u0000\u5131\u0000\u0000"+
-        "\u0000\u0000\u0000\u5132\u0000\u0000\u5133\u0000"+
-        "\u0000\u5134\u0000\u0000\u0000\u0000\u0000\u5135"+
-        "\u0000\u0000\u0000\u5136\u0000\u5137\u0000\u5138"+
-        "\u5139\u0000\u0000\u0000\u513A\u513B\u0000\u0000"+
-        "\u513C\u513D\u513E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u513F\u5140\u0000\u5141"+
-        "\u5142\u0000\u0000\u0000\u5143\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5144\u5145\u0000"+
-        "\u0000\u5146\u0000\u0000\u5147\u5148\u0000\u5149"+
-        "\u514A\u0000\u0000\u0000\u0000\u514B\u0000\u514C"+
-        "\u0000\u0000\u514D\u0000\u0000\u514E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u514F\u0000\u0000"+
-        "\u5150\u0000\u0000\u0000\u0000\u0000\u5151\u0000"+
-        "\u5152\u0000\u5153\u0000\u0000\u5154\u5155\u0000"+
-        "\u0000\u0000\u5156\u5157\u0000\u0000\u0000\u0000"+
-        "\u5158\u5159\u0000\u0000\u515A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u515B\u0000"+
-        "\u515C\u0000\u0000\u515D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u515E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u515F\u0000\u5160\u0000\u0000"+
-        "\u0000\u5161\u0000\u5162\u5163\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5164\u0000"+
-        "\u0000\u5165\u0000\u0000\u5166\u0000\u5167\u0000"+
-        "\u0000\u5168\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5169\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u516A\u516B\u0000\u516C\u516D\u0000\u0000\u0000"+
-        "\u0000\u516E\u0000\u0000\u516F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5170\u0000\u5171\u5172\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5173"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5174\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5175"+
-        "\u0000\u0000\u0000\u5176\u0000\u0000\u0000\u5177"+
-        "\u0000\u5178\u5179\u517A\u0000\u517B\u517C\u517D"+
-        "\u517E\u5221\u0000\u0000\u5222\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5223\u0000\u5224"+
-        "\u5225\u5226\u0000\u0000\u0000\u0000\u0000\u5227"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5228\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5229\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u522A\u0000\u0000\u0000\u522B\u0000\u522C\u0000"+
-        "\u0000\u522D\u522E\u0000\u0000\u522F\u0000\u5230"+
-        "\u0000\u0000\u5231\u5232\u0000\u0000\u0000\u5233"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5234\u0000\u0000\u0000"+
-        "\u0000\u5235\u0000\u0000\u0000\u0000\u5236\u0000"+
-        "\u5237\u5238\u0000\u0000\u0000\u0000\u5239\u0000"+
-        "\u0000\u0000\u0000\u523A\u0000\u0000\u523B\u0000"+
-        "\u523C\u0000\u0000\u0000\u0000\u523D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u523E\u0000\u0000\u523F"+
-        "\u5240\u0000\u5241\u0000\u0000\u5242\u5243\u0000"+
-        "\u0000\u0000\u5244\u5245\u5246\u5247\u0000\u0000"+
-        "\u0000\u0000\u5248\u0000\u0000\u5249\u0000\u0000"+
-        "\u524A\u0000\u524B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u524C\u0000\u524D\u524E"+
-        "\u0000\u524F\u5250\u5251\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5252\u0000\u5253\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5254\u0000\u5255\u5256\u0000\u0000"+
-        "\u5257\u5258\u5259\u0000\u525A\u0000\u525B\u0000"+
-        "\u0000\u525C\u525D\u525E\u525F\u0000\u5260\u0000"+
-        "\u0000\u5261\u0000\u5262\u5263\u0000\u5264\u5265"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5266\u0000\u5267\u0000\u0000\u0000\u0000"+
-        "\u5268\u0000\u0000\u0000\u0000\u5269\u526A\u0000"+
-        "\u526B\u0000\u0000\u0000\u526C\u0000\u0000\u0000"+
-        "\u0000\u526D\u0000\u526E\u526F\u0000\u5270\u0000"+
-        "\u0000\u5271\u5272\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5273\u0000"+
-        "\u0000\u0000\u5274\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5276\u5277\u5278\u0000\u5275\u0000\u0000"+
-        "\u0000\u5279\u527A\u527B\u527C\u527D\u527E\u0000"+
-        "\u0000\u5321\u0000\u5322\u0000\u0000\u0000\u5323"+
-        "\u0000\u5324\u0000\u0000\u0000\u5325\u5326\u0000"+
-        "\u5327\u0000\u5328\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5329\u0000\u0000\u532A\u532B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u532C\u532D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u532E"+
-        "\u0000\u0000\u0000\u0000\u532F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5330\u0000"+
-        "\u5331\u0000\u0000\u0000\u0000\u0000\u5332\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5333\u0000\u0000\u0000\u0000\u0000\u5334\u5335"+
-        "\u0000\u0000\u5336\u5337\u5338\u0000\u0000\u5339"+
-        "\u0000\u0000\u0000\u0000\u533A\u0000\u0000\u533B"+
-        "\u533C\u533D\u0000\u0000\u0000\u533E\u0000\u533F"+
-        "\u0000\u0000\u0000\u5340\u5341\u5342\u0000\u5343"+
-        "\u0000\u5344\u5345\u0000\u0000\u5346\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5347\u0000"+
-        "\u0000\u5348\u0000\u5349\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u534A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u534B\u0000\u0000\u0000\u534C"+
-        "\u534D\u534E\u0000\u0000\u0000\u0000\u0000\u534F"+
-        "\u0000\u5350\u5351\u5352\u0000\u0000\u5353\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5354\u5355\u0000"+
-        "\u0000\u0000\u0000\u5356\u0000\u0000\u5357\u0000"+
-        "\u0000\u0000\u5358\u0000\u0000\u5359\u0000\u0000"+
-        "\u0000\u535A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u535B\u535C\u535D\u0000"+
-        "\u535E\u535F\u0000\u0000\u0000\u0000\u0000\u5360"+
-        "\u5361\u0000\u0000\u0000\u0000\u5362\u0000\u0000"+
-        "\u0000\u5363\u0000\u5364\u0000\u0000\u0000\u5365"+
-        "\u0000\u5366\u5367\u0000\u5368\u5369\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u536A\u0000\u536B"+
-        "\u0000\u0000\u536C\u0000\u0000\u0000\u0000\u0000"+
-        "\u536D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u536E\u0000\u536F\u5370\u0000\u0000\u0000\u5371"+
-        "\u0000\u5372\u5373\u5374\u0000\u5375\u5376\u0000"+
-        "\u5377\u0000\u0000\u5378\u5379\u537A\u0000\u0000"+
-        "\u0000\u537B\u0000\u0000\u0000\u0000\u537C\u537D"+
-        "\u0000\u0000\u0000\u0000\u0000\u537E\u5421\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5422\u5423"+
-        "\u0000\u0000\u5424\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5425\u0000\u0000\u5426\u5427"+
-        "\u0000\u5428\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5429\u542A\u542B\u542C\u542D\u0000"+
-        "\u0000\u0000\u0000\u0000\u542E\u542F\u5430\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5431"+
-        "\u0000\u5432\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5434\u0000\u0000\u5435\u5436\u0000"+
-        "\u0000\u0000\u5437\u5438\u0000\u5439\u0000\u0000"+
-        "\u0000\u543A\u0000\u0000\u0000\u543B\u543C\u0000"+
-        "\u0000\u543D\u543E\u0000\u0000\u0000\u0000\u0000"+
-        "\u5433\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u543F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5440\u5441\u0000\u0000\u0000\u5442\u0000\u5443"+
-        "\u0000\u0000\u0000\u0000\u5444\u5445\u0000\u0000"+
-        "\u5446\u0000\u0000\u0000\u0000\u0000\u0000\u5447"+
-        "\u5448\u0000\u0000\u0000\u5449\u544A\u0000\u544B"+
-        "\u0000\u0000\u0000\u544C\u0000\u0000\u544D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u544E"+
-        "\u0000\u0000\u0000\u0000\u544F\u5450\u0000\u5451"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5452\u0000"+
-        "\u5453\u0000\u5454\u0000\u0000\u0000\u0000\u0000"+
-        "\u5455\u0000\u0000\u0000\u0000\u0000\u0000\u5456"+
-        "\u0000\u5457\u5458\u0000\u0000\u5459\u0000\u0000"+
-        "\u0000\u0000\u0000\u545A\u0000\u0000\u545B\u545C"+
-        "\u0000\u0000\u0000\u545D\u0000\u0000\u0000\u0000"+
-        "\u545E\u0000\u0000\u0000\u0000\u0000\u545F\u0000"+
-        "\u0000\u5460\u0000\u0000\u0000\u0000\u5461\u5462"+
-        "\u0000\u0000\u5463\u0000\u0000\u5464\u0000\u0000"+
-        "\u0000\u5465\u0000\u0000\u0000\u5466\u0000\u0000"+
-        "\u5467\u0000\u5468\u0000\u0000\u5469\u546A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u546C\u546B\u546D\u546E\u546F"+
-        "\u0000\u0000\u0000\u5470\u5471\u0000\u0000\u5472"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5473"+
-        "\u0000\u0000\u5474\u5475\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5476\u5477\u5478\u0000\u0000"+
-        "\u0000\u5479\u0000\u547A\u547B\u547C\u547D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u547E\u0000\u0000"+
-        "\u0000\u5521\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5522\u5523\u5524"+
-        "\u5525\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5526\u0000\u5527\u0000\u5528"+
-        "\u5529\u552A\u0000\u0000\u0000\u0000\u552B\u552C"+
-        "\u0000\u0000\u0000\u0000\u552D\u0000\u0000\u0000"+
-        "\u0000\u552E\u552F\u0000\u0000\u0000\u5530\u0000"+
-        "\u0000\u0000\u5531\u0000\u0000\u5532\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5533\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5534\u0000\u0000\u5535"+
-        "\u5536\u0000\u0000\u5537\u0000\u0000\u0000\u0000"+
-        "\u5538\u0000\u0000\u0000\u0000\u0000\u5539\u553A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u553B\u0000\u0000\u0000\u553C"+
-        "\u0000\u0000\u0000\u553D\u0000\u553E\u0000\u0000"+
-        "\u553F\u0000\u0000\u0000\u5540\u0000\u5541\u5542"+
-        "\u0000\u0000\u5543\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5544\u0000\u0000\u5545\u5546\u5547"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5548"+
-        "\u5549\u0000\u554A\u0000\u0000\u554B\u554C\u554D"+
-        "\u0000\u554E\u0000\u554F\u5550\u0000\u5551\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5552\u5553\u5554"+
-        "\u5555\u0000\u0000\u0000\u5556\u0000\u5557\u0000"+
-        "\u0000\u0000\u0000\u0000\u5558\u0000\u5559\u0000"+
-        "\u555A\u0000\u0000\u0000\u555B\u555C\u0000\u555D"+
-        "\u0000\u555E\u555F\u0000\u5560\u0000\u5561\u0000"+
-        "\u5562\u0000\u0000\u0000\u5563\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5564\u0000\u0000\u0000\u5565\u0000\u5566\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5567\u0000\u0000"+
-        "\u0000\u5568\u0000\u0000\u0000\u5569\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u556A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u556B\u0000\u0000\u0000\u0000\u0000\u556C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u556D\u0000\u556E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u556F\u5570"+
-        "\u0000\u0000\u0000\u5571\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5572\u5573\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5574\u0000\u0000\u0000\u0000\u5575\u0000\u5576"+
-        "\u0000\u0000\u5577\u0000\u5578\u5579\u0000\u557A"+
-        "\u557B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u557C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u557D\u557E\u0000"+
-        "\u5621\u0000\u5622\u5623\u0000\u0000\u5624\u0000"+
-        "\u0000\u5625\u5626\u0000\u0000\u0000\u5627\u0000"+
-        "\u0000\u0000\u0000\u5628\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5629\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u562A\u562B"+
-        "\u562C\u0000\u0000\u0000\u562D\u0000\u562E\u0000"+
-        "\u562F\u0000\u0000\u0000\u5630\u0000\u0000\u5631"+
-        "\u0000\u0000\u0000\u0000\u5632\u0000\u0000\u0000"+
-        "\u5633\u0000\u0000\u0000\u0000\u5634\u0000\u0000"+
-        "\u0000\u0000\u5635\u0000\u5636\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5637\u0000\u5638"+
-        "\u0000\u0000\u5639\u0000\u563A\u0000\u0000\u0000"+
-        "\u0000\u0000\u563B\u0000\u0000\u0000\u0000\u563C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u563D\u563E\u0000\u0000\u0000\u0000\u0000\u563F"+
-        "\u5640\u5641\u0000\u0000\u0000\u5642\u0000\u5643"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5644"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5645\u0000\u0000\u5647\u5648\u5649\u0000"+
-        "\u0000\u0000\u0000\u564A\u0000\u0000\u564B\u0000"+
-        "\u5646\u0000\u0000\u0000\u0000\u0000\u564C\u0000"+
-        "\u564D\u0000\u0000\u564E\u0000\u0000\u564F\u0000"+
-        "\u0000\u0000\u5650\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5651\u0000"+
-        "\u0000\u0000\u5652\u0000\u5653\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5654\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5656\u0000\u5657\u0000\u0000"+
-        "\u0000\u0000\u5658\u5655\u0000\u0000\u5659\u565A"+
-        "\u0000\u0000\u0000\u0000\u0000\u565B\u0000\u565C"+
-        "\u0000\u0000\u0000\u565D\u0000\u565E\u565F\u0000"+
-        "\u0000\u5660\u0000\u0000\u5661\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5662\u5663\u0000\u0000\u0000"+
-        "\u5664\u5665\u5666\u0000\u0000\u5667\u5668\u0000"+
-        "\u5669\u566A\u0000\u0000\u0000\u566B\u0000\u566C"+
-        "\u566D\u0000\u0000\u566E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u566F"+
-        "\u0000\u0000\u0000\u5670\u5671\u0000\u0000\u0000"+
-        "\u0000\u5672\u5673\u0000\u0000\u5674\u0000\u0000"+
-        "\u0000\u5675\u5676\u0000\u0000\u0000\u0000\u0000"+
-        "\u5677\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5678\u0000\u5679\u0000\u0000\u0000"+
-        "\u0000\u0000\u567A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u567B\u567C\u567D\u567E\u0000"+
-        "\u0000\u0000\u0000\u5721\u0000\u0000\u5722\u5723"+
-        "\u0000\u5724\u0000\u0000\u0000\u0000\u5725\u0000"+
-        "\u0000\u0000\u0000\u0000\u5726\u0000\u0000\u0000"+
-        "\u5727\u0000\u0000\u5728\u0000\u0000\u0000\u5729"+
-        "\u0000\u0000\u0000\u0000\u0000\u572A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u572B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u572C\u0000\u572D\u0000\u572E"+
-        "\u572F\u5730\u0000\u5731\u5732\u0000\u0000\u5733"+
-        "\u0000\u5734\u5735\u0000\u0000\u0000\u5736\u0000"+
-        "\u0000\u5737\u0000\u0000\u5738\u0000\u5739\u0000"+
-        "\u573A\u0000\u573B\u573C\u0000\u0000\u0000\u0000"+
-        "\u573D\u573E\u0000\u573F\u5740\u0000\u0000\u5741"+
-        "\u5742\u5743\u5744\u0000\u0000\u0000\u5745\u0000"+
-        "\u5746\u0000\u5747\u0000\u5748\u0000\u0000\u5749"+
-        "\u0000\u0000\u574A\u0000\u574B\u0000\u574C\u574D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u574E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u574F\u0000\u0000\u0000\u0000\u5750\u0000\u0000"+
-        "\u0000\u0000\u5751\u0000\u0000\u0000\u0000\u0000"+
-        "\u5752\u0000\u5753\u0000\u5754\u0000\u0000\u0000"+
-        "\u5755\u0000\u5756\u0000\u0000\u5757\u0000\u5758"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5759\u575A"+
-        "\u0000\u0000\u0000\u0000\u0000\u575B\u575C\u0000"+
-        "\u575D\u575E\u0000\u0000\u0000\u0000\u0000\u575F"+
-        "\u5760\u0000\u5761\u5762\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5764\u0000\u5765\u5766\u5767"+
-        "\u0000\u5768\u5769\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u576A\u576B\u576C\u0000"+
-        "\u576D\u0000\u0000\u576E\u0000\u0000\u0000\u576F"+
-        "\u0000\u0000\u5770\u0000\u5771\u5772\u0000\u0000"+
-        "\u0000\u0000\u5773\u5774\u5775\u0000\u0000\u5776"+
-        "\u0000\u0000\u0000\u0000\u0000\u5777\u5778\u0000"+
-        "\u0000\u5779\u0000\u583E\u5763\u577A\u577B\u577C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u577D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u577E\u0000\u0000\u0000\u0000\u5821\u0000\u5822"+
-        "\u5823\u0000\u5824\u0000\u5825\u0000\u5826\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5827\u0000\u0000"+
-        "\u0000\u0000\u5828\u0000\u5829\u582A\u0000\u0000"+
-        "\u582B\u582C\u0000\u582D\u582E\u582F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5830\u5831"+
-        "\u0000\u5832\u0000\u0000\u5833\u584C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5834\u5835"+
-        "\u5836\u0000\u0000\u0000\u0000\u0000\u0000\u5837"+
-        "\u0000\u5838\u0000\u0000\u0000\u0000\u0000\u5839"+
-        "\u583A\u583B\u0000\u0000\u583C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u583D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u583F\u0000\u5840\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5841\u0000"+
-        "\u5842\u5843\u0000\u0000\u5844\u0000\u0000\u0000"+
-        "\u0000\u5845\u0000\u0000\u0000\u0000\u5846\u0000"+
-        "\u0000\u0000\u5847\u0000\u0000\u0000\u0000\u5848"+
-        "\u0000\u5849\u0000\u0000\u0000\u584A\u0000\u0000"+
-        "\u0000\u584B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u584D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u584E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u584F\u0000\u5850"+
-        "\u5851\u0000\u5852\u0000\u0000\u5853\u0000\u5854"+
-        "\u0000\u5855\u5856\u0000\u0000\u0000\u5857\u0000"+
-        "\u5858\u5859\u585A\u0000\u585B\u0000\u0000\u0000"+
-        "\u585C\u0000\u0000\u0000\u585D\u585E\u0000\u585F"+
-        "\u0000\u0000\u5860\u0000\u0000\u0000\u0000\u0000"+
-        "\u5861\u0000\u0000\u5862\u5863\u0000\u5864\u0000"+
-        "\u5865\u0000\u0000\u0000\u5866\u5867\u0000\u0000"+
-        "\u0000\u5868\u0000\u0000\u0000\u5869\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u586A\u586B\u0000\u586C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u586D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u586E\u0000"+
-        "\u586F\u5870\u5871\u0000\u0000\u0000\u0000\u5872"+
-        "\u0000\u5873\u0000\u0000\u5874\u0000\u0000\u0000"+
-        "\u0000\u0000\u5875\u0000\u0000\u5876\u5877\u0000"+
-        "\u5878\u0000\u5879\u0000\u0000\u0000\u0000\u587A"+
-        "\u587B\u0000\u0000\u0000\u587C\u0000\u0000\u587D"+
-        "\u0000\u0000\u0000\u587E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5921\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5922"+
-        "\u0000\u0000\u5923\u0000\u0000\u0000\u0000\u5924"+
-        "\u5925\u5926\u5927\u0000\u0000\u0000\u0000\u5928"+
-        "\u0000\u0000\u592A\u592B\u0000\u592C\u0000\u0000"+
-        "\u0000\u0000\u592D\u592E\u0000\u0000\u0000\u592F"+
-        "\u0000\u0000\u0000\u0000\u5930\u0000\u5931\u0000"+
-        "\u5932\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5933\u0000\u5934\u0000"+
-        "\u0000\u0000\u5935\u5936\u5937\u5938\u0000\u5939"+
-        "\u0000\u0000\u593A\u593B\u0000\u0000\u0000\u593C"+
-        "\u0000\u0000\u5929\u593D\u593E\u0000\u593F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5940"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5941\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5942"+
-        "\u5943\u5944\u5945\u5946\u0000\u0000\u5947\u0000"+
-        "\u0000\u5948\u0000\u0000\u5949\u594A\u594B\u594C"+
-        "\u594D\u594E\u594F\u0000\u5950\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5951\u0000\u0000\u0000\u5952"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5953\u5954\u5955\u0000\u5956\u0000\u5957"+
-        "\u0000\u5958\u0000\u0000\u0000\u5959\u595A\u0000"+
-        "\u0000\u595B\u0000\u595C\u595D\u0000\u0000\u595E"+
-        "\u0000\u0000\u0000\u595F\u0000\u0000\u0000\u0000"+
-        "\u5960\u0000\u0000\u0000\u0000\u5961\u0000\u5962"+
-        "\u5963\u0000\u5964\u0000\u0000\u5965\u0000\u5966"+
-        "\u0000\u0000\u0000\u0000\u0000\u5974\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5967\u0000\u5968\u5969"+
-        "\u596A\u0000\u0000\u0000\u596B\u596C\u596D\u596E"+
-        "\u0000\u0000\u596F\u0000\u0000\u0000\u0000\u5970"+
-        "\u0000\u0000\u5971\u5972\u0000\u0000\u5973\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5975\u0000\u5976\u0000\u0000\u0000\u0000\u5977"+
-        "\u5978\u0000\u0000\u0000\u0000\u0000\u5979\u0000"+
-        "\u597A\u0000\u0000\u0000\u0000\u597B\u0000\u0000"+
-        "\u0000\u0000\u0000\u597C\u0000\u0000\u597D\u0000"+
-        "\u0000\u0000\u0000\u0000\u597E\u0000\u0000\u5A21"+
-        "\u5A22\u0000\u0000\u0000\u5A23\u5A24\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5A25\u5A26\u0000"+
-        "\u5A27\u5A28\u5A29\u0000\u0000\u0000\u0000\u0000"+
-        "\u5A2A\u5A2B\u0000\u5A2C\u0000\u0000\u5A2D\u0000"+
-        "\u0000\u5A2E\u0000\u0000\u0000\u0000\u0000\u5A2F"+
-        "\u0000\u5A30\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5A31\u0000"+
-        "\u5A32\u0000\u5A33\u0000\u5A34\u5A35\u0000\u0000"+
-        "\u5A36\u3866\u5A37\u0000\u0000\u0000\u5A38\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5A39\u5A3A\u0000\u0000\u5A3B\u5A3C"+
-        "\u5A3D\u5A3E\u0000\u0000\u0000\u5A3F\u0000\u0000"+
-        "\u5A40\u5A41\u5A42\u5A43\u5A44\u0000\u0000\u0000"+
-        "\u0000\u5A45\u0000\u0000\u5A46\u0000\u0000\u5A47"+
-        "\u0000\u0000\u0000\u0000\u0000\u5A48\u5A49\u5A4A"+
-        "\u0000\u0000\u5A4B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5A6D\u0000\u0000\u0000\u0000\u5A4C\u0000\u0000"+
-        "\u0000\u5A4D\u0000\u0000\u0000\u0000\u5A4E\u0000"+
-        "\u5A4F\u0000\u5A50\u0000\u5A51\u0000\u0000\u0000"+
-        "\u0000\u5A52\u0000\u0000\u0000\u0000\u5A53\u5A54"+
-        "\u5A55\u0000\u0000\u0000\u0000\u5A56\u0000\u0000"+
-        "\u0000\u5A57\u0000\u5A58\u5A59\u5A5A\u0000\u5A5B"+
-        "\u5A5C\u5A5D\u0000\u0000\u0000\u0000\u0000\u5A5E"+
-        "\u5A5F\u5A60\u0000\u5A61\u0000\u5A62\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5A63\u5A64\u0000\u0000\u5A65\u0000\u5A66"+
-        "\u0000\u0000\u5A67\u0000\u5A68\u0000\u0000\u0000"+
-        "\u5A69\u0000\u0000\u5A6A\u0000\u5A6B\u0000\u5A6C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5A6E\u0000\u5A6F\u5A70\u0000\u0000";
-
-    private final static String innerIndex4=
-        "\u0000\u0000\u0000\u0000\u5A71\u5A72\u0000\u5A73"+
-        "\u0000\u0000\u0000\u5A74\u0000\u0000\u5A75\u5A76"+
-        "\u5A77\u0000\u0000\u5A78\u5A79\u0000\u0000\u0000"+
-        "\u0000\u5A7A\u0000\u0000\u0000\u0000\u5A7B\u5A7C"+
-        "\u0000\u5A7D\u0000\u5A7E\u0000\u0000\u0000\u0000"+
-        "\u5B21\u0000\u0000\u0000\u0000\u0000\u5B22\u5B23"+
-        "\u0000\u5B24\u5B25\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5B26\u5B27\u0000\u5B28\u5B29\u5B2A\u0000"+
-        "\u5B2B\u0000\u0000\u5B2C\u0000\u5B2D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5B2E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5B2F\u0000\u0000\u0000\u0000\u5B30\u0000\u0000"+
-        "\u0000\u5B31\u0000\u0000\u5B32\u5B33\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5B34"+
-        "\u0000\u5B35\u5B36\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5B37\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5B38\u5B39\u5B3A\u5B3B\u5B3C"+
-        "\u5B3D\u5B3E\u0000\u5B3F\u5B40\u0000\u0000\u0000"+
-        "\u5B41\u0000\u0000\u5B42\u0000\u5B43\u0000\u5B44"+
-        "\u5B45\u5B46\u0000\u0000\u0000\u0000\u5B47\u0000"+
-        "\u5B48\u0000\u0000\u5B49\u0000\u0000\u0000\u5B4A"+
-        "\u0000\u0000\u0000\u0000\u5B4B\u5B4C\u5B4D\u0000"+
-        "\u0000\u5B4E\u0000\u0000\u0000\u5B4F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B50\u5B51"+
-        "\u0000\u5B52\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5B53\u5B54\u5B55\u0000\u0000\u0000\u5B56\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5B57\u5B58\u0000"+
-        "\u0000\u5B59\u5B5A\u0000\u5B5B\u0000\u0000\u5B5C"+
-        "\u0000\u0000\u5B5D\u5B5E\u5B5F\u0000\u0000\u0000"+
-        "\u0000\u0000\u5B60\u5B61\u0000\u5B62\u0000\u0000"+
-        "\u0000\u5B63\u0000\u5B64\u0000\u0000\u0000\u0000"+
-        "\u5B65\u0000\u5B66\u0000\u0000\u0000\u0000\u5B67"+
-        "\u0000\u5B68\u0000\u5B69\u0000\u0000\u5B6A\u0000"+
-        "\u0000\u5B6B\u5B6C\u5B6D\u0000\u0000\u0000\u0000"+
-        "\u5B6E\u0000\u5B70\u5B71\u5B72\u0000\u0000\u0000"+
-        "\u5B73\u5B6F\u5B74\u5B75\u5B76\u0000\u5B77\u5B78"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5B79\u0000\u0000\u0000\u0000\u5B7A\u5B7B\u0000"+
-        "\u5B7C\u0000\u5B7D\u0000\u0000\u5B7E\u0000\u0000"+
-        "\u0000\u0000\u5C21\u0000\u5C22\u0000\u0000\u0000"+
-        "\u0000\u5C23\u0000\u5C24\u0000\u5C25\u0000\u0000"+
-        "\u5C26\u5C27\u5C28\u5C29\u0000\u0000\u5C2A\u0000"+
-        "\u0000\u5C2B\u0000\u0000\u0000\u5C2C\u5C2D\u0000"+
-        "\u5C2E\u0000\u5C2F\u0000\u5C30\u0000\u0000\u5C31"+
-        "\u5C32\u0000\u0000\u0000\u5C33\u0000\u0000\u0000"+
-        "\u0000\u5C34\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C35\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C36\u0000\u5C37\u0000\u0000\u0000\u0000"+
-        "\u5C38\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5C39\u0000\u5C3A\u5C3B\u5C3C\u0000\u0000\u5C3D"+
-        "\u5C3E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5C3F\u0000\u5C40\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5C41\u0000\u0000\u5C42\u5C43\u0000"+
-        "\u5C44\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5C45\u5C46\u5C47\u5C48\u5C49\u0000"+
-        "\u0000\u5C4A\u5C4B\u5C4C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5C4D\u0000\u0000\u5C4E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5C4F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5C50"+
-        "\u5C51\u5C52\u0000\u0000\u0000\u5C53\u0000\u5C54"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C55\u0000\u0000\u0000\u0000\u5C56\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5C57\u5C58\u5C59"+
-        "\u0000\u0000\u0000\u0000\u0000\u5C5A\u5C5B\u0000"+
-        "\u5C5C\u5C5D\u5C5E\u0000\u5C5F\u0000\u0000\u0000"+
-        "\u5C60\u0000\u0000\u0000\u0000\u0000\u5C61\u5C62"+
-        "\u5C63\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5C64\u5C65\u5C66\u0000\u0000\u5C67\u0000\u0000"+
-        "\u0000\u5C68\u5C69\u0000\u0000\u0000\u5C6A\u0000"+
-        "\u5C6B\u0000\u5C6C\u0000\u0000\u5C6D\u5C6E\u0000"+
-        "\u0000\u5C6F\u0000\u0000\u0000\u0000\u0000\u5C70"+
-        "\u0000\u0000\u5C71\u0000\u0000\u0000\u0000\u5C72"+
-        "\u0000\u0000\u5C73\u5C74\u5C75\u0000\u0000\u0000"+
-        "\u0000\u5C76\u5C77\u5C78\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5C79\u0000\u0000\u5C7A\u0000"+
-        "\u5C7B\u0000\u0000\u5C7C\u0000\u5C7D\u0000\u0000"+
-        "\u0000\u0000\u5C7E\u5D21\u5D22\u5D23\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5D24\u0000\u0000\u0000\u5D25\u0000\u0000"+
-        "\u5D26\u0000\u0000\u0000\u5D27\u5D28\u0000\u0000"+
-        "\u0000\u0000\u0000\u5D29\u5D2A\u0000\u0000\u5D2B"+
-        "\u5D2C\u0000\u0000\u0000\u0000\u5D2D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5D2E\u0000\u0000\u0000\u5D2F\u5D30\u5D31\u5D32"+
-        "\u0000\u0000\u0000\u0000\u5D33\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5D34\u5D35\u5D36\u5D37"+
-        "\u5D38\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5D39\u0000\u0000"+
-        "\u0000\u5D3A\u0000\u5D3B\u0000\u5D3C\u0000\u0000"+
-        "\u0000\u5D3D\u0000\u5D3E\u0000\u0000\u5D3F\u0000"+
-        "\u0000\u5D40\u0000\u0000\u0000\u5D41\u0000\u5D42"+
-        "\u0000\u0000\u0000\u0000\u5D43\u5D44\u0000\u5D45"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5D46"+
-        "\u0000\u5D47\u5D48\u0000\u5D49\u5D4A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5D4B\u0000"+
-        "\u5D4C\u0000\u5D4D\u0000\u5D4E\u0000\u5D4F\u0000"+
-        "\u0000\u0000\u0000\u5D50\u5D51\u0000\u0000\u5D52"+
-        "\u0000\u0000\u0000\u0000\u0000\u5D53\u0000\u5D54"+
-        "\u0000\u0000\u0000\u0000\u0000\u5D55\u5D56\u0000"+
-        "\u5D57\u0000\u0000\u5D58\u0000\u5D59\u0000\u5D5A"+
-        "\u0000\u5D5B\u0000\u0000\u0000\u5D5C\u5D5D\u0000"+
-        "\u0000\u0000\u0000\u5D5E\u0000\u0000\u5D5F\u5D60"+
-        "\u5D61\u0000\u0000\u0000\u5D62\u5D63\u0000\u0000"+
-        "\u0000\u5D64\u0000\u0000\u0000\u5D65\u0000\u5D66"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5D67\u5D68\u5D69"+
-        "\u0000\u5D6A\u5D6B\u5D6C\u0000\u0000\u5D6D\u5D6E"+
-        "\u5D6F\u0000\u0000\u5D70\u0000\u0000\u5D71\u0000"+
-        "\u0000\u0000\u0000\u5D72\u0000\u0000\u0000\u5D73"+
-        "\u5D74\u0000\u5D75\u0000\u0000\u0000\u5D76\u5D77"+
-        "\u0000\u5D78\u0000\u0000\u0000\u0000\u0000\u5D79"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5D7A"+
-        "\u0000\u5D7B\u0000\u0000\u0000\u0000\u5D7C\u5D7D"+
-        "\u0000\u0000\u0000\u5D7E\u0000\u0000\u5E21\u5E22"+
-        "\u0000\u0000\u0000\u5E23\u0000\u0000\u5E24\u0000"+
-        "\u0000\u0000\u0000\u5E25\u0000\u0000\u5E26\u0000"+
-        "\u5E27\u5E28\u5E29\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5E2A\u0000\u5E2B\u5E2C\u5E2D\u0000\u5E2E"+
-        "\u0000\u0000\u0000\u0000\u0000\u5E2F\u0000\u5E30"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E31\u0000\u0000\u0000"+
-        "\u5E32\u0000\u0000\u0000\u5E33\u5E34\u5E35\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E36\u0000\u0000\u5E37"+
-        "\u0000\u0000\u0000\u0000\u0000\u5E38\u5E39\u0000"+
-        "\u0000\u0000\u5E3F\u5E3A\u0000\u0000\u0000\u0000"+
-        "\u0000\u5E3B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E3C\u0000\u5E3D\u5E3E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5E40\u0000\u0000"+
-        "\u5E41\u0000\u0000\u0000\u0000\u0000\u0000\u5E42"+
-        "\u0000\u0000\u0000\u0000\u5E43\u0000\u0000\u0000"+
-        "\u0000\u0000\u5E44\u5E45\u5E46\u5E47\u5E48\u0000"+
-        "\u5E49\u0000\u0000\u0000\u0000\u5E4E\u0000\u0000"+
-        "\u0000\u0000\u5E4A\u5E4B\u5E4C\u0000\u0000\u0000"+
-        "\u0000\u5E4D\u0000\u0000\u0000\u0000\u5E4F\u0000"+
-        "\u0000\u0000\u0000\u5E50\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5E51\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5E52\u0000"+
-        "\u5E53\u5E54\u0000\u0000\u5E55\u0000\u5E56\u0000"+
-        "\u0000\u5E57\u0000\u0000\u5E58\u5E59\u0000\u0000"+
-        "\u0000\u0000\u0000\u5E5A\u0000\u5E5B\u0000\u5E5C"+
-        "\u0000\u0000\u0000\u0000\u5E5D\u5E5E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E5F\u0000\u5E60\u5E61"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5E62\u5E63\u0000\u0000\u0000\u5E64\u5E65\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5E66\u0000\u5E67"+
-        "\u0000\u5E68\u0000\u5E69\u0000\u0000\u0000\u5E6A"+
-        "\u0000\u5E6B\u0000\u5E6C\u5E6D\u0000\u0000\u5E6E"+
-        "\u5E6F\u5E72\u0000\u5E70\u0000\u5E71\u0000\u0000"+
-        "\u0000\u0000\u0000\u5E73\u5E74\u0000\u5E75\u0000"+
-        "\u5E76\u5E77\u0000\u0000\u0000\u5E78\u0000\u0000"+
-        "\u0000\u0000\u0000\u5E79\u0000\u5E7A\u5E7B\u0000"+
-        "\u0000\u0000\u0000\u5E7C\u0000\u0000\u5E7D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5E7E\u5F21"+
-        "\u0000\u0000\u0000\u5F22\u0000\u0000\u0000\u0000"+
-        "\u5F23\u0000\u5F24\u5F25\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F26\u0000\u5F27\u5F28\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5F29\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F2A\u5F2B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F2C\u5F2D\u0000"+
-        "\u0000\u5F2E\u0000\u5F2F\u0000\u0000\u0000\u5F30"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F32\u5F31\u0000"+
-        "\u0000\u5F33\u0000\u0000\u0000\u5F34\u0000\u0000"+
-        "\u0000\u5F35\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5F36\u0000\u0000\u0000\u5F37\u0000\u0000\u5F38"+
-        "\u5F39\u0000\u5F3A\u0000\u0000\u5F3B\u0000\u5F3C"+
-        "\u5F3D\u0000\u0000\u0000\u0000\u0000\u5F3E\u5F3F"+
-        "\u0000\u5F40\u0000\u5F41\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F42\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5F43\u0000\u0000\u0000\u0000\u5F44"+
-        "\u0000\u0000\u0000\u5F45\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F46\u0000\u0000"+
-        "\u0000\u5F47\u0000\u0000\u5F48\u0000\u5F49\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5F4A"+
-        "\u0000\u0000\u5F4B\u0000\u5F4C\u0000\u0000\u0000"+
-        "\u5F4D\u0000\u0000\u0000\u0000\u5F4E\u0000\u0000"+
-        "\u5F4F\u5F50\u0000\u0000\u0000\u5F51\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5F52\u5F53"+
-        "\u5F54\u0000\u0000\u0000\u0000\u0000\u5F55\u0000"+
-        "\u0000\u0000\u0000\u5F56\u5F57\u0000\u0000\u5F58"+
-        "\u0000\u0000\u5F59\u0000\u0000\u5F5A\u0000\u5F5B"+
-        "\u0000\u5F5C\u0000\u5F5D\u5F6F\u0000\u0000\u0000"+
-        "\u5F5E\u0000\u0000\u0000\u0000\u5F5F\u5F60\u5F61"+
-        "\u5F62\u0000\u5F63\u0000\u0000\u0000\u5F64\u0000"+
-        "\u0000\u5F65\u0000\u0000\u5F66\u5F67\u0000\u5F68"+
-        "\u0000\u5F69\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5F6A\u5F6B\u0000\u5F6C"+
-        "\u0000\u0000\u0000\u0000\u5F6D\u0000\u0000\u0000"+
-        "\u5F6E\u5F70\u5F71\u0000\u5F72\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F73\u0000\u0000"+
-        "\u0000\u5F74\u0000\u0000\u5F75\u5F76\u5F77\u0000"+
-        "\u0000\u0000\u0000\u5F78\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F79\u0000\u0000\u5F7A\u0000\u5F7B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5F7C\u5F7D\u5F7E\u6021\u0000\u0000\u6022\u6023"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6024\u0000\u6025\u0000\u0000\u6026\u6027"+
-        "\u6028\u6029\u0000\u0000\u0000\u602A\u0000\u0000"+
-        "\u602B\u602C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u602D\u0000\u602E\u602F\u6030"+
-        "\u0000\u0000\u0000\u0000\u6031\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6032\u6033\u6034\u6035\u0000"+
-        "\u0000\u6036\u6037\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6038\u0000\u0000\u6039\u603A\u0000\u603B"+
-        "\u603C\u603D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u603E\u603F\u6040\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6041\u6042\u0000\u0000\u0000\u0000"+
-        "\u0000\u6043\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6044\u0000\u6045\u0000\u0000\u6046\u0000\u0000"+
-        "\u0000\u0000\u6047\u6048\u0000\u6049\u604A\u0000"+
-        "\u0000\u0000\u604B\u0000\u0000\u0000\u0000\u604C"+
-        "\u0000\u604D\u0000\u0000\u0000\u604E\u604F\u0000"+
-        "\u0000\u0000\u0000\u6050\u0000\u6051\u0000\u0000"+
-        "\u0000\u0000\u6052\u6053\u0000\u0000\u0000\u0000"+
-        "\u6054\u6055\u0000\u6056\u6057\u0000\u0000\u6058"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6059"+
-        "\u0000\u605A\u0000\u0000\u605B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u605C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u605D\u0000\u0000\u0000\u0000\u6064\u605E\u0000"+
-        "\u605F\u6060\u0000\u0000\u0000\u0000\u0000\u6061"+
-        "\u0000\u6062\u6063\u0000\u0000\u0000\u0000\u0000"+
-        "\u6065\u0000\u6066\u0000\u0000\u0000\u0000\u6067"+
-        "\u6068\u0000\u0000\u0000\u0000\u0000\u0000\u6069"+
-        "\u606A\u0000\u0000\u0000\u0000\u0000\u606B\u606C"+
-        "\u606D\u0000\u0000\u0000\u0000\u0000\u606E\u0000"+
-        "\u606F\u6070\u0000\u6071\u0000\u6072\u0000\u6073"+
-        "\u6074\u0000\u0000\u0000\u6075\u6076\u6077\u0000"+
-        "\u0000\u0000\u0000\u0000\u6078\u6079\u607A\u607B"+
-        "\u0000\u0000\u607C\u0000\u0000\u0000\u0000\u0000"+
-        "\u607D\u607E\u0000\u6121\u0000\u0000\u0000\u6122"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6123"+
-        "\u0000\u6124\u6125\u6126\u6127\u6128\u0000\u0000"+
-        "\u6129\u0000\u0000\u0000\u0000\u612A\u612B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u612C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u612D\u0000\u0000"+
-        "\u612E\u612F\u0000\u0000\u6130\u6131\u6132\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6133\u6134\u0000"+
-        "\u6135\u0000\u0000\u0000\u0000\u0000\u6136\u0000"+
-        "\u6137\u6138\u0000\u0000\u0000\u0000\u6139\u0000"+
-        "\u0000\u0000\u613A\u613B\u0000\u613C\u0000\u0000"+
-        "\u613D\u0000\u613E\u613F\u0000\u6140\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6141\u0000\u0000\u6142\u6143\u0000\u0000\u0000"+
-        "\u6144\u0000\u0000\u0000\u0000\u0000\u6145\u0000"+
-        "\u0000\u6146\u0000\u0000\u0000\u6147\u6148\u0000"+
-        "\u0000\u0000\u0000\u6149\u0000\u0000\u614A\u0000"+
-        "\u0000\u0000\u614B\u0000\u614C\u0000\u0000\u0000"+
-        "\u614D\u0000\u0000\u0000\u614E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u614F\u0000\u0000\u6150\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6151\u6152\u6154\u0000\u6155\u6156\u0000\u6153"+
-        "\u0000\u0000\u0000\u6157\u6158\u0000\u0000\u6159"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u615A"+
-        "\u0000\u0000\u0000\u615B\u615C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u615D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u615E\u0000\u615F\u0000\u0000"+
-        "\u0000\u0000\u6160\u0000\u0000\u0000\u6161\u6162"+
-        "\u0000\u0000\u0000\u0000\u6163\u0000\u0000\u0000"+
-        "\u6164\u0000\u0000\u0000\u6165\u0000\u0000\u0000"+
-        "\u0000\u6166\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6167\u0000\u0000"+
-        "\u6168\u0000\u0000\u6169\u616A\u0000\u616B\u0000"+
-        "\u616C\u0000\u0000\u0000\u0000\u616D\u0000\u616E"+
-        "\u616F\u6170\u0000\u6171\u0000\u0000\u0000\u0000"+
-        "\u6172\u6173\u6174\u0000\u0000\u6175\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6176\u0000\u6177\u6178\u6179\u0000\u617A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u617B\u617D\u0000"+
-        "\u0000\u0000\u0000\u617E\u6221\u6222\u0000\u6223"+
-        "\u6224\u0000\u0000\u0000\u617C\u0000\u0000\u0000"+
-        "\u0000\u0000\u622D\u0000\u0000\u6225\u0000\u6226"+
-        "\u6227\u6228\u0000\u0000\u6229\u622A\u0000\u622B"+
-        "\u0000\u0000\u0000\u0000\u0000\u622C\u0000\u0000"+
-        "\u0000\u0000\u0000\u622F\u0000\u0000\u0000\u6230"+
-        "\u6231\u0000\u0000\u0000\u6232\u0000\u622E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6233\u6234"+
-        "\u6235\u0000\u0000\u0000\u6236\u6237\u6238\u0000"+
-        "\u6239\u0000\u0000\u0000\u0000\u623A\u0000\u0000"+
-        "\u623B\u0000\u0000\u0000\u623C\u0000\u623D\u623E"+
-        "\u623F\u0000\u6240\u0000\u6241\u0000\u6242\u0000"+
-        "\u6243\u0000\u6245\u6246\u0000\u6244\u0000\u6247"+
-        "\u0000\u6248\u0000\u0000\u0000\u0000\u6249\u624A"+
-        "\u0000\u624B\u0000\u0000\u624C\u0000\u624D\u624E"+
-        "\u0000\u624F\u6250\u0000\u6251\u6252\u0000\u0000"+
-        "\u0000\u0000\u0000\u6253\u0000\u0000\u0000\u6254"+
-        "\u6255\u0000\u0000\u0000\u0000\u0000\u0000\u6256"+
-        "\u0000\u0000\u0000\u6257\u0000\u0000\u0000\u6258"+
-        "\u0000\u6259\u625A\u625B\u0000\u0000\u0000\u0000"+
-        "\u0000\u625C\u0000\u0000\u625D\u0000\u0000\u625E"+
-        "\u0000\u0000\u0000\u0000\u0000\u625F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6260\u0000\u0000\u0000"+
-        "\u0000\u6261\u6262\u6263\u0000\u0000\u0000\u0000"+
-        "\u0000\u6264\u0000\u6265\u0000\u6266\u6267\u0000"+
-        "\u0000\u0000\u6268\u0000\u0000\u0000\u6269\u0000"+
-        "\u0000\u626A\u0000\u626B\u626C\u626D\u0000\u0000"+
-        "\u626E\u0000\u0000\u0000\u0000\u0000\u626F\u0000"+
-        "\u0000\u6270\u0000\u0000\u0000\u0000\u6271\u0000"+
-        "\u6272\u0000\u0000\u0000\u6273\u6274\u6275\u0000"+
-        "\u6276\u6277\u6278\u6279\u0000\u0000\u627A\u0000"+
-        "\u0000\u0000\u0000\u627B\u627C\u627D\u0000\u627E"+
-        "\u0000\u0000\u6321\u6322\u0000\u6323\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6324\u6325\u0000\u0000\u6326"+
-        "\u0000\u6327\u6328\u0000\u0000\u0000\u6329\u0000"+
-        "\u0000\u0000\u0000\u0000\u632A\u632B\u0000\u0000"+
-        "\u0000\u632C\u632D\u0000\u632E\u632F\u6330\u6331"+
-        "\u6332\u6333\u0000\u0000\u0000\u0000\u0000\u6334"+
-        "\u0000\u6335\u0000\u6336\u0000\u6337\u0000\u0000"+
-        "\u6338\u6339\u0000\u0000\u633A\u633B\u633C\u633D"+
-        "\u0000\u633E\u633F\u0000\u6340\u0000\u0000\u0000"+
-        "\u6341\u0000\u6342\u6343\u0000\u0000\u6344\u0000"+
-        "\u6345\u0000\u0000\u0000\u6346\u6347\u0000\u0000"+
-        "\u0000\u0000\u0000\u6348\u6349\u634A\u634B\u0000"+
-        "\u634C\u0000\u0000\u0000\u0000\u0000\u634D\u634E"+
-        "\u634F\u0000\u0000\u6350\u0000\u6351\u6352\u0000"+
-        "\u6353\u6354\u6355\u0000\u6356\u0000\u6357\u0000"+
-        "\u6358\u0000\u6359\u635A\u0000\u0000\u635B\u635C"+
-        "\u0000\u0000\u635D\u0000\u0000\u635E\u635F\u6360"+
-        "\u0000\u6361\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6362\u6363\u0000\u0000\u6364\u6365\u0000\u0000"+
-        "\u6366\u6367\u0000\u0000\u0000\u6368\u0000\u6369"+
-        "\u636A\u636B\u0000\u0000\u0000\u0000\u636C\u636D"+
-        "\u636E\u0000\u0000\u0000\u0000\u636F\u6370\u6371"+
-        "\u6372\u6373\u0000\u6374\u6375\u6376\u0000\u6377"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6378\u6379\u637A\u0000\u0000\u637B\u637C\u0000"+
-        "\u0000\u0000\u637D\u0000\u0000\u0000\u0000\u637E"+
-        "\u0000\u6421\u0000\u0000\u0000\u0000\u0000\u6422"+
-        "\u6423\u0000\u0000\u0000\u6424\u6425\u0000\u6426"+
-        "\u6427\u0000\u0000\u6428\u0000\u0000\u0000\u6429"+
-        "\u0000\u0000\u642A\u0000\u0000\u0000\u642B\u0000"+
-        "\u642C\u0000\u642D\u642E\u642F\u6430\u0000\u6431"+
-        "\u6432\u6433\u6434\u6435\u0000\u6436\u6437\u6438"+
-        "\u6439\u0000\u0000\u643A\u643B\u643C\u643D\u0000"+
-        "\u643E\u0000\u0000\u643F\u0000\u6440\u0000\u6441"+
-        "\u6442\u6443\u0000\u0000\u6444\u6445\u0000\u6446"+
-        "\u6447\u6448\u0000\u6449\u0000\u644A\u0000\u644B"+
-        "\u644C\u0000\u0000\u0000\u644D\u0000\u644E\u0000"+
-        "\u644F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6450\u0000\u6451\u0000\u0000\u0000\u6452"+
-        "\u6453\u0000\u6454\u0000\u0000\u0000\u0000\u0000"+
-        "\u6455\u0000\u0000\u0000\u0000\u6456\u0000\u0000"+
-        "\u0000\u6457\u0000\u0000\u6458\u6459\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u645A\u645B\u645C\u645D"+
-        "\u0000\u645E\u0000\u0000\u645F\u6460\u0000\u6461"+
-        "\u0000\u6462\u6463\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6464\u6465\u0000\u6466\u6467"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6468"+
-        "\u6469\u646A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u646B\u646C\u646D\u0000\u0000\u646E\u0000\u646F"+
-        "\u6470\u0000\u6471\u0000\u0000\u0000\u6472\u0000"+
-        "\u0000\u0000\u0000\u0000\u6473\u6474\u0000\u6475"+
-        "\u0000\u6476\u6477\u0000\u0000\u6478\u0000\u6479"+
-        "\u647A\u647B\u0000\u647C\u647D\u0000\u647E\u0000"+
-        "\u0000\u0000\u6521\u0000\u0000\u6522\u0000\u6523"+
-        "\u6524\u6525\u6526\u0000\u0000\u0000\u0000\u0000"+
-        "\u6527\u0000\u6528\u6529\u0000\u652A\u0000\u652B"+
-        "\u0000\u0000\u652C\u0000\u0000\u652D\u0000\u0000"+
-        "\u652E\u0000\u0000\u652F\u0000\u0000\u6530\u0000"+
-        "\u0000\u6531\u0000\u6532\u6533\u0000\u6534\u0000"+
-        "\u6535\u653B\u0000\u6536\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6537\u6538\u6539\u0000"+
-        "\u0000\u0000\u653A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u653C\u0000\u0000\u653D\u653E\u653F\u6540"+
-        "\u0000\u6541\u6542\u6543\u6544\u6545\u0000\u0000"+
-        "\u0000\u0000\u0000\u6546\u0000\u0000\u0000\u0000"+
-        "\u0000\u6547\u0000\u0000\u6548\u0000\u6549\u654A"+
-        "\u0000\u0000\u654B\u0000\u0000\u0000\u654C\u654D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u654F"+
-        "\u6550\u654E\u6551\u6552\u0000\u6553\u0000\u0000"+
-        "\u0000\u6554\u6555\u0000\u6556\u0000\u0000\u0000"+
-        "\u6557\u6558\u0000\u0000\u0000\u6559\u655A\u655B"+
-        "\u0000\u0000\u0000\u0000\u0000\u655C\u655D\u655E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u655F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6560\u6561"+
-        "\u0000\u6562\u6563\u6564\u6565\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6566\u0000\u6568\u0000\u6567"+
-        "\u0000\u0000\u0000\u6569\u0000\u656A\u0000\u0000"+
-        "\u656B\u0000\u656C\u0000\u656D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u656E\u0000\u0000"+
-        "\u0000\u656F\u0000\u0000\u6570\u0000\u0000\u6571"+
-        "\u0000\u6572\u0000\u6573\u0000\u0000\u0000\u0000"+
-        "\u6574\u0000\u0000\u6575\u0000\u6576\u6577\u6578"+
-        "\u0000\u6579\u657A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u657C\u657B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u657D\u657E\u0000\u0000\u0000\u0000\u6621\u0000"+
-        "\u0000\u0000\u0000\u0000\u6622\u0000\u0000\u0000"+
-        "\u6623\u0000\u0000\u0000\u6624\u6625\u6626\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6627\u6628\u6629"+
-        "\u0000\u662A\u0000\u0000\u0000\u0000\u662B\u0000"+
-        "\u0000\u662C\u0000\u662D\u662E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u662F\u0000\u6630\u0000"+
-        "\u0000\u0000\u6631\u0000\u0000\u6632\u0000\u6633"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6634\u0000"+
-        "\u6635\u6636\u0000\u6637\u0000\u0000\u0000\u0000"+
-        "\u6638\u6639\u663A\u663B\u0000\u0000\u0000\u0000"+
-        "\u0000\u663C\u663D\u0000\u0000\u663E\u663F\u6640"+
-        "\u6641\u0000\u0000\u0000\u6642\u0000\u6643\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6644\u6645\u0000"+
-        "\u0000\u0000\u6646\u0000\u6647\u6648\u6649\u0000"+
-        "\u0000\u0000\u0000\u0000\u664A\u0000\u0000\u0000"+
-        "\u0000\u664B\u0000\u664C\u0000\u0000\u0000\u664D"+
-        "\u664E\u664F\u6650\u0000\u6651\u6652\u0000\u0000"+
-        "\u0000\u6653\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6654\u0000\u6655\u0000\u6656\u6657"+
-        "\u6658\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6659\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u665A\u0000"+
-        "\u0000\u0000\u0000\u0000\u665B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u665C\u665D\u0000\u665E\u665F"+
-        "\u0000\u6660\u6661\u6662\u6663\u0000\u0000\u0000"+
-        "\u0000\u6664\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6665\u0000\u0000\u0000\u0000\u6666\u0000"+
-        "\u0000\u0000\u6667\u0000\u0000\u6668\u0000\u6669"+
-        "\u0000\u0000\u0000\u0000\u666A\u666B\u666C\u0000"+
-        "\u0000\u666D\u0000\u0000\u0000\u0000\u666E\u666F"+
-        "\u0000\u0000\u0000\u6670\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6671\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6672\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6673\u0000\u0000\u0000\u0000\u0000"+
-        "\u6675\u0000\u6676\u0000\u0000\u6677\u6678\u6679"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u667A\u0000\u0000\u0000\u0000\u0000\u667B"+
-        "\u0000\u667C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u667D\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex5=
-        "\u0000\u0000\u667E\u6721\u0000\u6722\u0000\u0000"+
-        "\u0000\u6723\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6724\u6725\u0000\u6726\u0000\u0000"+
-        "\u0000\u6727\u6728\u6729\u0000\u0000\u0000\u0000"+
-        "\u672A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u672B\u0000\u672C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u672D\u0000\u672E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u672F\u0000\u0000\u0000\u6730\u6731"+
-        "\u0000\u0000\u0000\u0000\u0000\u6732\u0000\u6733"+
-        "\u6734\u0000\u6735\u6736\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6737\u0000\u0000\u0000\u6738"+
-        "\u0000\u0000\u6739\u0000\u0000\u0000\u673A\u0000"+
-        "\u0000\u0000\u0000\u673B\u0000\u0000\u673C\u673D"+
-        "\u673E\u0000\u0000\u673F\u0000\u6740\u0000\u6741"+
-        "\u6742\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6743\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6744\u6745\u6746"+
-        "\u0000\u6747\u6748\u0000\u0000\u0000\u6749\u674A"+
-        "\u0000\u0000\u674B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u674C\u0000\u674D\u0000"+
-        "\u0000\u674E\u674F\u0000\u0000\u6750\u6751\u0000"+
-        "\u6752\u6753\u6754\u0000\u6755\u0000\u6756\u6757"+
-        "\u0000\u6758\u0000\u0000\u6759\u675A\u0000\u675B"+
-        "\u0000\u675C\u675D\u0000\u675E\u675F\u6760\u0000"+
-        "\u6761\u6762\u0000\u0000\u6763\u0000\u0000\u6764"+
-        "\u6765\u6766\u0000\u676A\u0000\u6767\u6768\u0000"+
-        "\u6769\u676B\u0000\u0000\u676C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u676D"+
-        "\u0000\u676E\u0000\u0000\u676F\u0000\u0000\u6770"+
-        "\u6771\u0000\u6772\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6773"+
-        "\u0000\u0000\u6774\u0000\u0000\u6776\u6777\u0000"+
-        "\u0000\u0000\u0000\u0000\u6778\u0000\u6779\u0000"+
-        "\u0000\u6775\u0000\u0000\u677A\u0000\u677B\u0000"+
-        "\u677C\u0000\u0000\u677D\u0000\u6828\u677E\u0000"+
-        "\u0000\u0000\u0000\u6821\u0000\u0000\u6822\u6823"+
-        "\u6824\u0000\u6825\u6826\u0000\u6827\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6829\u0000"+
-        "\u0000\u0000\u0000\u0000\u682A\u0000\u0000\u682B"+
-        "\u0000\u0000\u682C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u682D\u682E\u682F\u0000\u0000\u6830\u6831"+
-        "\u0000\u6832\u6833\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6834\u6835\u0000\u6836\u6837\u0000"+
-        "\u0000\u0000\u6838\u0000\u6839\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u683A\u0000\u683B\u683C\u0000"+
-        "\u683D\u0000\u0000\u0000\u683E\u0000\u0000\u683F"+
-        "\u6840\u0000\u6841\u6842\u0000\u0000\u0000\u6843"+
-        "\u0000\u0000\u6844\u0000\u0000\u6845\u0000\u0000"+
-        "\u6846\u0000\u0000\u0000\u6847\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6848\u0000\u6849\u0000\u684A\u684B\u684C"+
-        "\u0000\u0000\u684D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u684E\u0000\u0000\u684F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6850\u0000\u0000\u0000\u0000\u6851"+
-        "\u6852\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6853\u0000\u0000\u0000\u6854\u6855\u6856"+
-        "\u0000\u0000\u6857\u6858\u6859\u0000\u0000\u685A"+
-        "\u0000\u0000\u685B\u0000\u0000\u0000\u685C\u685D"+
-        "\u0000\u0000\u0000\u685E\u0000\u0000\u0000\u0000"+
-        "\u0000\u685F\u6860\u6861\u6862\u6863\u0000\u0000"+
-        "\u0000\u6864\u6865\u6866\u6867\u0000\u0000\u0000"+
-        "\u6868\u6869\u0000\u0000\u0000\u0000\u686A\u686B"+
-        "\u686C\u0000\u0000\u0000\u0000\u686D\u686E\u0000"+
-        "\u0000\u0000\u0000\u0000\u686F\u0000\u0000\u0000"+
-        "\u6870\u6871\u0000\u6872\u6873\u0000\u6874\u6875"+
-        "\u6876\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6877\u0000\u6878\u0000\u6879"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u687A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u687B\u687C\u687D\u0000\u0000\u687E\u0000\u0000"+
-        "\u0000\u6921\u6922\u0000\u0000\u6923\u0000\u6924"+
-        "\u0000\u0000\u0000\u6925\u0000\u0000\u0000\u0000"+
-        "\u0000\u6926\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6927\u6928\u0000\u0000\u0000"+
-        "\u0000\u6929\u692A\u0000\u692B\u0000\u692C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u692D"+
-        "\u0000\u0000\u692E\u692F\u6930\u0000\u0000\u0000"+
-        "\u6931\u0000\u0000\u0000\u6932\u6933\u0000\u0000"+
-        "\u0000\u6934\u0000\u0000\u0000\u6935\u6936\u0000"+
-        "\u0000\u0000\u6937\u6938\u6939\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u693A\u693B\u0000\u0000\u0000"+
-        "\u693C\u693D\u0000\u0000\u0000\u0000\u693E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u693F\u0000"+
-        "\u6940\u0000\u6941\u6942\u6943\u0000\u0000\u6944"+
-        "\u0000\u0000\u0000\u0000\u0000\u6945\u6946\u0000"+
-        "\u0000\u0000\u0000\u6947\u0000\u6948\u6949\u0000"+
-        "\u694A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u694C\u0000\u0000\u694D\u0000\u0000\u694B"+
-        "\u0000\u0000\u694E\u694F\u6950\u0000\u6951\u0000"+
-        "\u0000\u6952\u0000\u0000\u6953\u0000\u6954\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6955\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6956\u0000\u6957\u0000\u6958\u6959"+
-        "\u0000\u0000\u695A\u0000\u695B\u695C\u695D\u0000"+
-        "\u0000\u695E\u0000\u695F\u0000\u0000\u6960\u6961"+
-        "\u0000\u6962\u0000\u6963\u0000\u0000\u6964\u0000"+
-        "\u6965\u0000\u0000\u0000\u0000\u0000\u6966\u0000"+
-        "\u6967\u0000\u6968\u0000\u0000\u6969\u696A\u696B"+
-        "\u0000\u0000\u0000\u696C\u696D\u0000\u0000\u0000"+
-        "\u696E\u0000\u0000\u0000\u696F\u6970\u0000\u6971"+
-        "\u0000\u6972\u0000\u0000\u6973\u0000\u0000\u0000"+
-        "\u0000\u0000\u6974\u6975\u0000\u6976\u0000\u0000"+
-        "\u0000\u6977\u6978\u0000\u0000\u6979\u0000\u697A"+
-        "\u697B\u697C\u697D\u697E\u6A21\u6A22\u0000\u0000"+
-        "\u6A23\u6A24\u0000\u6A25\u6A26\u6A27\u6A28\u0000"+
-        "\u6A29\u0000\u6A2A\u0000\u0000\u0000\u6A2B\u0000"+
-        "\u0000\u6A2C\u0000\u6A2D\u6A2E\u0000\u0000\u0000"+
-        "\u6A2F\u0000\u0000\u0000\u0000\u0000\u6A30\u0000"+
-        "\u0000\u0000\u0000\u6A31\u0000\u6A32\u0000\u0000"+
-        "\u0000\u0000\u0000\u6A33\u6A34\u6A35\u0000\u6A36"+
-        "\u0000\u6A37\u6A38\u0000\u0000\u6A39\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6A3A\u0000\u0000\u6A3B\u6A3C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A3D\u6A3E\u6A3F"+
-        "\u0000\u0000\u0000\u6A40\u0000\u0000\u6A41\u0000"+
-        "\u0000\u6A42\u0000\u6A43\u0000\u6A44\u6A45\u0000"+
-        "\u6A46\u0000\u6A47\u6A48\u6A49\u6A4A\u6A4B\u0000"+
-        "\u0000\u0000\u0000\u6A4C\u0000\u6A4D\u0000\u6A4E"+
-        "\u6A4F\u6A50\u0000\u0000\u0000\u0000\u0000\u6A51"+
-        "\u6A52\u0000\u0000\u0000\u6A53\u6A54\u6A55\u6A56"+
-        "\u0000\u6A57\u6A58\u6A59\u0000\u6A5A\u0000\u6A5B"+
-        "\u6A5C\u0000\u0000\u0000\u6A5D\u0000\u0000\u0000"+
-        "\u0000\u0000\u6A5E\u0000\u0000\u6A5F\u6A60\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6A61\u6A62"+
-        "\u0000\u6A63\u0000\u0000\u6A64\u0000\u0000\u0000"+
-        "\u6A65\u6A66\u6A67\u0000\u0000\u0000\u0000\u6A68"+
-        "\u6A69\u0000\u0000\u6A6A\u6A6B\u0000\u6A6C\u6A6D"+
-        "\u0000\u6A6E\u0000\u0000\u0000\u0000\u0000\u6A6F"+
-        "\u6A70\u0000\u0000\u0000\u0000\u0000\u6A71\u0000"+
-        "\u6A72\u0000\u0000\u0000\u0000\u0000\u0000\u6A73"+
-        "\u6A74\u0000\u0000\u0000\u0000\u6A75\u0000\u6A76"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A77\u0000\u6A78"+
-        "\u0000\u0000\u6A79\u6A7A\u0000\u0000\u0000\u6A7B"+
-        "\u0000\u0000\u0000\u6A7C\u0000\u0000\u0000\u6A7D"+
-        "\u6A7E\u6B21\u6B22\u0000\u0000\u6B23\u0000\u6B24"+
-        "\u6B25\u0000\u6B26\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6B27\u0000\u0000\u0000\u6B28"+
-        "\u0000\u6B29\u0000\u0000\u0000\u0000\u6B2A\u0000"+
-        "\u6B2B\u6B2C\u6B2D\u0000\u6B2E\u0000\u6B2F\u0000"+
-        "\u0000\u0000\u6B30\u6B31\u0000\u0000\u6B32\u6B33"+
-        "\u6B34\u6B35\u6B36\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6B37\u0000\u0000\u0000\u6B38\u6B39\u6B3A"+
-        "\u0000\u0000\u0000\u0000\u0000\u6B3B\u0000\u0000"+
-        "\u0000\u6B3C\u0000\u6B3D\u6B3E\u6B3F\u0000\u0000"+
-        "\u0000\u6B40\u6B41\u0000\u0000\u0000\u6B42\u6B43"+
-        "\u6B44\u0000\u0000\u6B45\u6B46\u0000\u6B47\u0000"+
-        "\u6B48\u0000\u0000\u6B49\u6B50\u6B4A\u6B4B\u6B4C"+
-        "\u0000\u0000\u0000\u6B4D\u0000\u0000\u0000\u0000"+
-        "\u6B52\u6B4E\u6B4F\u6B51\u0000\u0000\u6B53\u0000"+
-        "\u6B54\u0000\u6B55\u0000\u0000\u6B56\u0000\u6B57"+
-        "\u0000\u0000\u0000\u6B58\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6B59\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B5A\u0000\u0000\u0000\u0000\u6B5B"+
-        "\u0000\u6B5C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B5E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6B5D\u0000\u0000\u0000\u0000"+
-        "\u0000\u6B5F\u0000\u0000\u0000\u0000\u0000\u6B60"+
-        "\u6B61\u0000\u0000\u0000\u6B62\u6B63\u6B64\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6B65"+
-        "\u6B66\u0000\u6B67\u6B68\u6B69\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B6A\u0000\u6B6B\u6B6D\u0000\u0000"+
-        "\u0000\u0000\u6B6E\u6B6F\u0000\u6B6C\u0000\u6B70"+
-        "\u0000\u0000\u6B71\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6B72\u6B73\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6B74"+
-        "\u0000\u0000\u6B76\u6B75\u0000\u6B77\u0000\u0000"+
-        "\u0000\u6B78\u6B79\u6B7A\u0000\u0000\u0000\u0000"+
-        "\u6B7B\u0000\u0000\u0000\u0000\u0000\u6B7C\u6B7D"+
-        "\u0000\u0000\u0000\u6B7E\u6C21\u0000\u6C22\u0000"+
-        "\u0000\u0000\u0000\u6C23\u6C24\u0000\u6C25\u0000"+
-        "\u0000\u0000\u6C26\u0000\u0000\u6C27\u6C28\u0000"+
-        "\u0000\u0000\u6C29\u6C2A\u0000\u6C2B\u6C2C\u6C2D"+
-        "\u6C2E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6C2F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C30\u0000\u6C31\u0000\u6C32\u0000"+
-        "\u0000\u6C33\u0000\u0000\u0000\u6C34\u0000\u0000"+
-        "\u0000\u6C35\u0000\u0000\u6C36\u0000\u0000\u6C37"+
-        "\u0000\u0000\u0000\u6C38\u0000\u0000\u0000\u6C39"+
-        "\u0000\u6C3A\u6C3B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6C3C\u6C3D\u6C3E\u6C3F"+
-        "\u0000\u0000\u6C40\u0000\u0000\u0000\u6C41\u6C42"+
-        "\u6C43\u0000\u0000\u0000\u0000\u6C44\u0000\u6C45"+
-        "\u0000\u6C46\u0000\u6C47\u0000\u0000\u6C48\u0000"+
-        "\u6C49\u0000\u0000\u6C4A\u6C4B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6C4C\u0000"+
-        "\u0000\u0000\u6C4E\u0000\u0000\u0000\u0000\u6C4F"+
-        "\u0000\u0000\u6C4D\u0000\u0000\u0000\u6C50\u0000"+
-        "\u6C51\u6C52\u6C53\u0000\u0000\u6C54\u6C55\u0000"+
-        "\u0000\u6C56\u0000\u0000\u6C57\u6C58\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C59\u6C5A\u6C5B\u0000\u0000\u0000"+
-        "\u6C5C\u0000\u6C5D\u6C5E\u6C5F\u6C60\u0000\u6C61"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6C62\u6C63"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6C64\u0000"+
-        "\u6C65\u0000\u0000\u6C66\u0000\u0000\u6C67\u0000"+
-        "\u0000\u0000\u0000\u0000\u6C68\u0000\u0000\u0000"+
-        "\u6C69\u0000\u0000\u0000\u6C6A\u0000\u6C6B\u6C6C"+
-        "\u6C6D\u0000\u0000\u6C6E\u6C6F\u6C70\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6C71\u0000"+
-        "\u6C72\u0000\u0000\u6C73\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6C74\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6C75"+
-        "\u0000\u0000\u0000\u0000\u6C76\u0000\u0000\u6C77"+
-        "\u0000\u0000\u0000\u0000\u6C78\u6C79\u6C7A\u0000"+
-        "\u6C7B\u6C7C\u6C7D\u0000\u0000\u6C7E\u0000\u0000"+
-        "\u6D21\u0000\u0000\u0000\u0000\u0000\u0000\u6D22"+
-        "\u0000\u0000\u6D23\u6D24\u0000\u0000\u0000\u0000"+
-        "\u0000\u6D25\u0000\u0000\u0000\u0000\u0000\u6D26"+
-        "\u6D27\u6D28\u6D29\u0000\u6D2A\u0000\u6D2B\u6D2C"+
-        "\u0000\u6D2D\u6D2E\u6D2F\u0000\u0000\u0000\u6D30"+
-        "\u0000\u0000\u6D31\u0000\u0000\u0000\u6D32\u0000"+
-        "\u0000\u0000\u6D33\u6D34\u0000\u0000\u0000\u6D35"+
-        "\u0000\u6D36\u6D37\u0000\u6D38\u0000\u0000\u6D39"+
-        "\u0000\u6D3A\u6D3B\u0000\u6D3C\u6D3D\u0000\u6D3E"+
-        "\u0000\u6D3F\u0000\u6D40\u6D41\u6D42\u6D43\u6D44"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6D45\u0000\u6D46\u6D47\u6D48"+
-        "\u6D49\u0000\u6D4A\u0000\u0000\u6D4B\u6D4C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6D4D\u6D4E\u0000\u0000\u0000\u6D4F\u6D50\u6D51"+
-        "\u6D52\u6D53\u0000\u6D54\u0000\u6D55\u0000\u0000"+
-        "\u0000\u0000\u6D56\u0000\u0000\u6D57\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6D58"+
-        "\u6D59\u6D5A\u6D5B\u0000\u6D5C\u0000\u6D5D\u6D5E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6D5F\u0000"+
-        "\u0000\u6D60\u6D61\u6D62\u0000\u6D63\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2237\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-        1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8,
-        9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
-        25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
-        41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
-        57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
-        73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89
-    };
-
-    private final static String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4,
-        innerIndex5
-    };
-
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0212_MS5022X_Decoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0212_MS5022X_Decoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +0,0 @@
-/*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-
-class JIS_X_0212_MS5022X_Decoder extends JIS_X_0212_Decoder
-{
-    private int _start, _end;
-
-    public JIS_X_0212_MS5022X_Decoder(Charset cs) {
-        super(cs);
-        _start = 0x21;
-        _end = 0x7E;
-    }
-
-    protected char decodeDouble(int byte1, int byte2) {
-        if (((byte1 < 0) || (byte1 > _index1.length))
-            || ((byte2 < _start) || (byte2 > _end)))
-            return REPLACE_CHAR;
-        int n = (_index1[byte1] & 0xf)*(_end - _start + 1) + (byte2 - _start);
-        char unicode = _index2[_index1[byte1] >> 4].charAt(n);
-        if (unicode == '\u0000')
-            return (super.decodeDouble(byte1, byte2));
-        else
-            return unicode;
-    }
-
-    private final static String _innerIndex0=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2170\u2171"+
-        "\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uFF07\uFF02\u0000\u0000\u0000\u70BB"+
-        "\u4EFC\u50F4\u51EC\u5307\u5324\uFA0E\u548A\u5759"+
-        "\uFA0F\uFA10\u589E\u5BEC\u5CF5\u5D53\uFA11\u5FB7"+
-        "\u6085\u6120\u654E\u0000\u6665\uFA12\uF929\u6801"+
-        "\uFA13\uFA14\u6A6B\u6AE2\u6DF8\u6DF2\u7028\uFA15"+
-        "\uFA16\u7501\u7682\u769E\uFA17\u7930\uFA18\uFA19"+
-        "\uFA1A\uFA1B\u7AE7\uFA1C\uFA1D\u7DA0\u7DD6\uFA1E"+
-        "\u8362\uFA1F\u85B0\uFA20\uFA21\u8807\uFA22\u8B7F"+
-        "\u8CF4\u8D76\uFA23\uFA24\uFA25\u90DE\uFA26\u9115"+
-        "\uFA27\uFA28\u9592\uF9DC\uFA29\u973B\u0000\u9751"+
-        "\uFA2A\uFA2B\uFA2C\u999E\u9AD9\u9B72\uFA2D\u9ED1"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u974D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\uE3AC\uE3AD\uE3AE\uE3AF\uE3B0\uE3B1"+
-        "\uE3B2\uE3B3\uE3B4\uE3B5\uE3B6\uE3B7\uE3B8\uE3B9"+
-        "\uE3BA\uE3BB\uE3BC\uE3BD\uE3BE\uE3BF\uE3C0\uE3C1"+
-        "\uE3C2\uE3C3\uE3C4\uE3C5\uE3C6\uE3C7\uE3C8\uE3C9"+
-        "\uE3CA\uE3CB\uE3CC\uE3CD\uE3CE\uE3CF\uE3D0\uE3D1"+
-        "\uE3D2\uE3D3\uE3D4\uE3D5\uE3D6\uE3D7\uE3D8\uE3D9"+
-        "\uE3DA\uE3DB\uE3DC\uE3DD\uE3DE\uE3DF\uE3E0\uE3E1"+
-        "\uE3E2\uE3E3\uE3E4\uE3E5\uE3E6\uE3E7\uE3E8\uE3E9"+
-        "\uE3EA\uE3EB\uE3EC\uE3ED\uE3EE\uE3EF\uE3F0\uE3F1"+
-        "\uE3F2\uE3F3\uE3F4\uE3F5\uE3F6\uE3F7\uE3F8\uE3F9"+
-        "\uE3FA\uE3FB\uE3FC\uE3FD\uE3FE\uE3FF\uE400\uE401"+
-        "\uE402\uE403\uE404\uE405\uE406\uE407\uE408\uE409"+
-        "\uE40A\uE40B\uE40C\uE40D\uE40E\uE40F\uE410\uE411"+
-        "\uE412\uE413\uE414\uE415\uE416\uE417\uE418\uE419"+
-        "\uE41A\uE41B\uE41C\uE41D\uE41E\uE41F\uE420\uE421"+
-        "\uE422\uE423\uE424\uE425\uE426\uE427\uE428\uE429"+
-        "\uE42A\uE42B\uE42C\uE42D\uE42E\uE42F\uE430\uE431"+
-        "\uE432\uE433\uE434\uE435\uE436\uE437\uE438\uE439"+
-        "\uE43A\uE43B\uE43C\uE43D\uE43E\uE43F\uE440\uE441"+
-        "\uE442\uE443\uE444\uE445\uE446\uE447\uE448\uE449"+
-        "\uE44A\uE44B\uE44C\uE44D\uE44E\uE44F\uE450\uE451"+
-        "\uE452\uE453\uE454\uE455\uE456\uE457\uE458\uE459"+
-        "\uE45A\uE45B\uE45C\uE45D\uE45E\uE45F\uE460\uE461"+
-        "\uE462\uE463\uE464\uE465\uE466\uE467\uE468\uE469"+
-        "\uE46A\uE46B\uE46C\uE46D\uE46E\uE46F\uE470\uE471"+
-        "\uE472\uE473\uE474\uE475\uE476\uE477\uE478\uE479"+
-        "\uE47A\uE47B\uE47C\uE47D\uE47E\uE47F\uE480\uE481"+
-        "\uE482\uE483\uE484\uE485\uE486\uE487\uE488\uE489"+
-        "\uE48A\uE48B\uE48C\uE48D\uE48E\uE48F\uE490\uE491"+
-        "\uE492\uE493\uE494\uE495\uE496\uE497\uE498\uE499"+
-        "\uE49A\uE49B\uE49C\uE49D\uE49E\uE49F\uE4A0\uE4A1"+
-        "\uE4A2\uE4A3\uE4A4\uE4A5\uE4A6\uE4A7\uE4A8\uE4A9"+
-        "\uE4AA\uE4AB\uE4AC\uE4AD\uE4AE\uE4AF\uE4B0\uE4B1"+
-        "\uE4B2\uE4B3\uE4B4\uE4B5\uE4B6\uE4B7\uE4B8\uE4B9"+
-        "\uE4BA\uE4BB\uE4BC\uE4BD\uE4BE\uE4BF\uE4C0\uE4C1"+
-        "\uE4C2\uE4C3\uE4C4\uE4C5\uE4C6\uE4C7\uE4C8\uE4C9"+
-        "\uE4CA\uE4CB\uE4CC\uE4CD\uE4CE\uE4CF\uE4D0\uE4D1"+
-        "\uE4D2\uE4D3\uE4D4\uE4D5\uE4D6\uE4D7\uE4D8\uE4D9"+
-        "\uE4DA\uE4DB\uE4DC\uE4DD\uE4DE\uE4DF\uE4E0\uE4E1"+
-        "\uE4E2\uE4E3\uE4E4\uE4E5\uE4E6\uE4E7\uE4E8\uE4E9"+
-        "\uE4EA\uE4EB\uE4EC\uE4ED\uE4EE\uE4EF\uE4F0\uE4F1"+
-        "\uE4F2\uE4F3\uE4F4\uE4F5\uE4F6\uE4F7\uE4F8\uE4F9"+
-        "\uE4FA\uE4FB\uE4FC\uE4FD\uE4FE\uE4FF\uE500\uE501"+
-        "\uE502\uE503\uE504\uE505\uE506\uE507\uE508\uE509"+
-        "\uE50A\uE50B\uE50C\uE50D\uE50E\uE50F\uE510\uE511"+
-        "\uE512\uE513\uE514\uE515\uE516\uE517\uE518\uE519"+
-        "\uE51A\uE51B\uE51C\uE51D\uE51E\uE51F\uE520\uE521"+
-        "\uE522\uE523\uE524\uE525\uE526\uE527\uE528\uE529"+
-        "\uE52A\uE52B\uE52C\uE52D\uE52E\uE52F\uE530\uE531"+
-        "\uE532\uE533\uE534\uE535\uE536\uE537\uE538\uE539"+
-        "\uE53A\uE53B\uE53C\uE53D\uE53E\uE53F\uE540\uE541"+
-        "\uE542\uE543\uE544\uE545\uE546\uE547\uE548\uE549"+
-        "\uE54A\uE54B\uE54C\uE54D\uE54E\uE54F\uE550\uE551"+
-        "\uE552\uE553\uE554\uE555\uE556\uE557\uE558\uE559"+
-        "\uE55A\uE55B\uE55C\uE55D\uE55E\uE55F\uE560\uE561"+
-        "\uE562\uE563\uE564\uE565\uE566\uE567\uE568\uE569"+
-        "\uE56A\uE56B\uE56C\uE56D\uE56E\uE56F\uE570\uE571"+
-        "\uE572\uE573\uE574\uE575\uE576\uE577\uE578\uE579"+
-        "\uE57A\uE57B\uE57C\uE57D\uE57E\uE57F\uE580\uE581"+
-        "\uE582\uE583\uE584\uE585\uE586\uE587\uE588\uE589"+
-        "\uE58A\uE58B\uE58C\uE58D\uE58E\uE58F\uE590\uE591"+
-        "\uE592\uE593\uE594\uE595\uE596\uE597\uE598\uE599"+
-        "\uE59A\uE59B\uE59C\uE59D\uE59E\uE59F\uE5A0\uE5A1"+
-        "\uE5A2\uE5A3\uE5A4\uE5A5\uE5A6\uE5A7\uE5A8\uE5A9"+
-        "\uE5AA\uE5AB\uE5AC\uE5AD\uE5AE\uE5AF\uE5B0\uE5B1"+
-        "\uE5B2\uE5B3\uE5B4\uE5B5\uE5B6\uE5B7\uE5B8\uE5B9"+
-        "\uE5BA\uE5BB\uE5BC\uE5BD\uE5BE\uE5BF\uE5C0\uE5C1"+
-        "\uE5C2\uE5C3\uE5C4\uE5C5\uE5C6\uE5C7\uE5C8\uE5C9"+
-        "\uE5CA\uE5CB\uE5CC\uE5CD\uE5CE\uE5CF\uE5D0\uE5D1"+
-        "\uE5D2\uE5D3\uE5D4\uE5D5\uE5D6\uE5D7\uE5D8\uE5D9"+
-        "\uE5DA\uE5DB\uE5DC\uE5DD\uE5DE\uE5DF\uE5E0\uE5E1"+
-        "\uE5E2\uE5E3\uE5E4\uE5E5\uE5E6\uE5E7\uE5E8\uE5E9"+
-        "\uE5EA\uE5EB\uE5EC\uE5ED\uE5EE\uE5EF\uE5F0\uE5F1"+
-        "\uE5F2\uE5F3\uE5F4\uE5F5\uE5F6\uE5F7\uE5F8\uE5F9"+
-        "\uE5FA\uE5FB\uE5FC\uE5FD\uE5FE\uE5FF\uE600\uE601"+
-        "\uE602\uE603\uE604\uE605\uE606\uE607\uE608\uE609"+
-        "\uE60A\uE60B\uE60C\uE60D\uE60E\uE60F\uE610\uE611"+
-        "\uE612\uE613\uE614\uE615\uE616\uE617\uE618\uE619"+
-        "\uE61A\uE61B\uE61C\uE61D\uE61E\uE61F\uE620\uE621"+
-        "\uE622\uE623\uE624\uE625\uE626\uE627\uE628\uE629"+
-        "\uE62A\uE62B\uE62C\uE62D\uE62E\uE62F\uE630\uE631"+
-        "\uE632\uE633\uE634\uE635\uE636\uE637\uE638\uE639"+
-        "\uE63A\uE63B\uE63C\uE63D\uE63E\uE63F\uE640\uE641"+
-        "\uE642\uE643\uE644\uE645\uE646\uE647\uE648\uE649"+
-        "\uE64A\uE64B\uE64C\uE64D\uE64E\uE64F\uE650\uE651"+
-        "\uE652\uE653\uE654\uE655\uE656\uE657\uE658\uE659"+
-        "\uE65A\uE65B\uE65C\uE65D\uE65E\uE65F\uE660\uE661"+
-        "\uE662\uE663\uE664\uE665\uE666\uE667\uE668\uE669"+
-        "\uE66A\uE66B\uE66C\uE66D\uE66E\uE66F\uE670\uE671"+
-        "\uE672\uE673\uE674\uE675\uE676\uE677\uE678\uE679"+
-        "\uE67A\uE67B\uE67C\uE67D\uE67E\uE67F\uE680\uE681"+
-        "\uE682\uE683\uE684\uE685\uE686\uE687\uE688\uE689"+
-        "\uE68A\uE68B\uE68C\uE68D\uE68E\uE68F\uE690\uE691"+
-        "\uE692\uE693\uE694\uE695\uE696\uE697\uE698\uE699"+
-        "\uE69A\uE69B\uE69C\uE69D\uE69E\uE69F\uE6A0\uE6A1"+
-        "\uE6A2\uE6A3\uE6A4\uE6A5\uE6A6\uE6A7\uE6A8\uE6A9"+
-        "\uE6AA\uE6AB\uE6AC\uE6AD\uE6AE\uE6AF\uE6B0\uE6B1"+
-        "\uE6B2\uE6B3\uE6B4\uE6B5\uE6B6\uE6B7\uE6B8\uE6B9"+
-        "\uE6BA\uE6BB\uE6BC\uE6BD\uE6BE\uE6BF\uE6C0\uE6C1"+
-        "\uE6C2\uE6C3\uE6C4\uE6C5\uE6C6\uE6C7\uE6C8\uE6C9"+
-        "\uE6CA\uE6CB\uE6CC\uE6CD\uE6CE\uE6CF\uE6D0\uE6D1"+
-        "\uE6D2\uE6D3\uE6D4\uE6D5\uE6D6\uE6D7\uE6D8\uE6D9"+
-        "\uE6DA\uE6DB\uE6DC\uE6DD\uE6DE\uE6DF\uE6E0\uE6E1"+
-        "\uE6E2\uE6E3\uE6E4\uE6E5\uE6E6\uE6E7\uE6E8\uE6E9"+
-        "\uE6EA\uE6EB\uE6EC\uE6ED\uE6EE\uE6EF\uE6F0\uE6F1"+
-        "\uE6F2\uE6F3\uE6F4\uE6F5\uE6F6\uE6F7\uE6F8\uE6F9"+
-        "\uE6FA\uE6FB\uE6FC\uE6FD\uE6FE\uE6FF\uE700\uE701"+
-        "\uE702\uE703\uE704\uE705\uE706\uE707\uE708\uE709"+
-        "\uE70A\uE70B\uE70C\uE70D\uE70E\uE70F\uE710\uE711"+
-        "\uE712\uE713\uE714\uE715\uE716\uE717\uE718\uE719"+
-        "\uE71A\uE71B\uE71C\uE71D\uE71E\uE71F\uE720\uE721"+
-        "\uE722\uE723\uE724\uE725\uE726\uE727\uE728\uE729"+
-        "\uE72A\uE72B\uE72C\uE72D\uE72E\uE72F\uE730\uE731"+
-        "\uE732\uE733\uE734\uE735\uE736\uE737\uE738\uE739"+
-        "\uE73A\uE73B\uE73C\uE73D\uE73E\uE73F\uE740\uE741"+
-        "\uE742\uE743\uE744\uE745\uE746\uE747\uE748\uE749"+
-        "\uE74A\uE74B\uE74C\uE74D\uE74E\uE74F\uE750\uE751"+
-        "\uE752\uE753\uE754\uE755\uE756\uE757";
-
-    private final static short _index1[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-
-    private final static String _index2[] = {
-        _innerIndex0
-    };
-
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0212_MS5022X_Encoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0212_MS5022X_Encoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1618 +0,0 @@
-/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-
-class JIS_X_0212_MS5022X_Encoder extends JIS_X_0212_Encoder
-{
-    public JIS_X_0212_MS5022X_Encoder(Charset cs) {
-        super(cs);
-    }
-
-    protected int encodeSingle(char inputChar) {
-        return -1;
-    }
-
-    protected int encodeDouble(char ch) {
-        int offset = _index1[((ch & 0xff00) >> 8 )] << 8;
-        int nativeCode = _index2[offset >> 12].charAt((offset & 0xFFF) + (ch & 0xFF));
-        if (nativeCode == '\u0001')
-            return (super.encodeDouble(ch));
-        else
-            return nativeCode;
-    }
-
-    private final static String _innerIndex0=
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u7321\u7322\u7323\u7324\u7325\u7326\u7327\u7328"+
-        "\u7329\u732A\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u733B\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u733C\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u733D\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u733E"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u733F\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u7341\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u7342\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u7345\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u7346\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u7347\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u7348\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u734A"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u734B\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u734C\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u734D\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001";
-
-    private final static String _innerIndex1=
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u734F\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u7352\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u7355\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u7356\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u7358\u0001\u0001\u0001\u0001\u0001"+
-        "\u7357\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u7359\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u733A\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u735C\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u735D\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u735E\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u7360\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u7365"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u7368\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u7369\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u736B\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u736D\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u7370"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u7372"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u7373\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u7374\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001";
-
-    private final static String _innerIndex2=
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u7378\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u737A\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u737D\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u7422\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u7463\u0001\u0001"+
-        "\u0001\u7424\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u7428\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u7429\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u742A\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u742C\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u7521\u7522\u7523\u7524"+
-        "\u7525\u7526\u7527\u7528\u7529\u752A\u752B\u752C"+
-        "\u752D\u752E\u752F\u7530\u7531\u7532\u7533\u7534"+
-        "\u7535\u7536\u7537\u7538\u7539\u753A\u753B\u753C"+
-        "\u753D\u753E\u753F\u7540\u7541\u7542\u7543\u7544"+
-        "\u7545\u7546\u7547\u7548\u7549\u754A\u754B\u754C"+
-        "\u754D\u754E\u754F\u7550\u7551\u7552\u7553\u7554"+
-        "\u7555\u7556\u7557\u7558\u7559\u755A\u755B\u755C"+
-        "\u755D\u755E\u755F\u7560\u7561\u7562\u7563\u7564"+
-        "\u7565\u7566\u7567\u7568\u7569\u756A\u756B\u756C"+
-        "\u756D\u756E\u756F\u7570\u7571\u7572\u7573\u7574"+
-        "\u7575\u7576\u7577\u7578\u7579\u757A\u757B\u757C"+
-        "\u757D\u757E\u7621\u7622\u7623\u7624\u7625\u7626"+
-        "\u7627\u7628\u7629\u762A\u762B\u762C\u762D\u762E"+
-        "\u762F\u7630\u7631\u7632\u7633\u7634\u7635\u7636"+
-        "\u7637\u7638\u7639\u763A\u763B\u763C\u763D\u763E"+
-        "\u763F\u7640\u7641\u7642\u7643\u7644\u7645\u7646"+
-        "\u7647\u7648\u7649\u764A\u764B\u764C\u764D\u764E"+
-        "\u764F\u7650\u7651\u7652\u7653\u7654\u7655\u7656"+
-        "\u7657\u7658\u7659\u765A\u765B\u765C\u765D\u765E"+
-        "\u765F\u7660\u7661\u7662\u7663\u7664\u7665\u7666"+
-        "\u7667\u7668\u7669\u766A\u766B\u766C\u766D\u766E"+
-        "\u766F\u7670\u7671\u7672\u7673\u7674\u7675\u7676"+
-        "\u7677\u7678\u7679\u767A\u767B\u767C\u767D\u767E"+
-        "\u7721\u7722\u7723\u7724\u7725\u7726\u7727\u7728"+
-        "\u7729\u772A\u772B\u772C\u772D\u772E\u772F\u7730"+
-        "\u7731\u7732\u7733\u7734\u7735\u7736\u7737\u7738"+
-        "\u7739\u773A\u773B\u773C\u773D\u773E\u773F\u7740"+
-        "\u7741\u7742\u7743\u7744\u7745\u7746\u7747\u7748"+
-        "\u7749\u774A\u774B\u774C\u774D\u774E\u774F\u7750"+
-        "\u7751\u7752\u7753\u7754\u7755\u7756\u7757\u7758"+
-        "\u7759\u775A\u775B\u775C\u775D\u775E\u775F\u7760"+
-        "\u7761\u7762\u7763\u7764\u7765\u7766\u7767\u7768"+
-        "\u7769\u776A\u776B\u776C\u776D\u776E\u776F\u7770"+
-        "\u7771\u7772\u7773\u7774\u7775\u7776\u7777\u7778"+
-        "\u7779\u777A\u777B\u777C\u777D\u777E\u7821\u7822"+
-        "\u7823\u7824\u7825\u7826\u7827\u7828\u7829\u782A"+
-        "\u782B\u782C\u782D\u782E\u782F\u7830\u7831\u7832"+
-        "\u7833\u7834\u7835\u7836\u7837\u7838\u7839\u783A"+
-        "\u783B\u783C\u783D\u783E\u783F\u7840\u7841\u7842"+
-        "\u7843\u7844\u7845\u7846\u7847\u7848\u7849\u784A"+
-        "\u784B\u784C\u784D\u784E\u784F\u7850\u7851\u7852"+
-        "\u7853\u7854\u7855\u7856\u7857\u7858\u7859\u785A"+
-        "\u785B\u785C\u785D\u785E\u785F\u7860\u7861\u7862"+
-        "\u7863\u7864\u7865\u7866\u7867\u7868\u7869\u786A"+
-        "\u786B\u786C\u786D\u786E\u786F\u7870\u7871\u7872"+
-        "\u7873\u7874\u7875\u7876\u7877\u7878\u7879\u787A"+
-        "\u787B\u787C\u787D\u787E\u7921\u7922\u7923\u7924"+
-        "\u7925\u7926\u7927\u7928\u7929\u792A\u792B\u792C"+
-        "\u792D\u792E\u792F\u7930\u7931\u7932\u7933\u7934"+
-        "\u7935\u7936\u7937\u7938\u7939\u793A\u793B\u793C"+
-        "\u793D\u793E\u793F\u7940\u7941\u7942\u7943\u7944"+
-        "\u7945\u7946\u7947\u7948\u7949\u794A\u794B\u794C"+
-        "\u794D\u794E\u794F\u7950\u7951\u7952\u7953\u7954"+
-        "\u7955\u7956\u7957\u7958\u7959\u795A\u795B\u795C"+
-        "\u795D\u795E\u795F\u7960\u7961\u7962\u7963\u7964"+
-        "\u7965\u7966\u7967\u7968\u7969\u796A\u796B\u796C"+
-        "\u796D\u796E\u796F\u7970\u7971\u7972\u7973\u7974"+
-        "\u7975\u7976\u7977\u7978\u7979\u797A\u797B\u797C"+
-        "\u797D\u797E\u7A21\u7A22\u7A23\u7A24\u7A25\u7A26"+
-        "\u7A27\u7A28\u7A29\u7A2A\u7A2B\u7A2C\u7A2D\u7A2E"+
-        "\u7A2F\u7A30\u7A31\u7A32\u7A33\u7A34\u7A35\u7A36"+
-        "\u7A37\u7A38\u7A39\u7A3A\u7A3B\u7A3C\u7A3D\u7A3E"+
-        "\u7A3F\u7A40\u7A41\u7A42\u7A43\u7A44\u7A45\u7A46"+
-        "\u7A47\u7A48\u7A49\u7A4A\u7A4B\u7A4C\u7A4D\u7A4E"+
-        "\u7A4F\u7A50\u7A51\u7A52\u7A53\u7A54\u7A55\u7A56"+
-        "\u7A57\u7A58\u7A59\u7A5A\u7A5B\u7A5C\u7A5D\u7A5E"+
-        "\u7A5F\u7A60\u7A61\u7A62\u7A63\u7A64\u7A65\u7A66"+
-        "\u7A67\u7A68\u7A69\u7A6A\u7A6B\u7A6C\u7A6D\u7A6E"+
-        "\u7A6F\u7A70\u7A71\u7A72\u7A73\u7A74\u7A75\u7A76"+
-        "\u7A77\u7A78\u7A79\u7A7A\u7A7B\u7A7C\u7A7D\u7A7E"+
-        "\u7B21\u7B22\u7B23\u7B24\u7B25\u7B26\u7B27\u7B28"+
-        "\u7B29\u7B2A\u7B2B\u7B2C\u7B2D\u7B2E\u7B2F\u7B30"+
-        "\u7B31\u7B32\u7B33\u7B34\u7B35\u7B36\u7B37\u7B38"+
-        "\u7B39\u7B3A\u7B3B\u7B3C\u7B3D\u7B3E\u7B3F\u7B40"+
-        "\u7B41\u7B42\u7B43\u7B44\u7B45\u7B46\u7B47\u7B48"+
-        "\u7B49\u7B4A\u7B4B\u7B4C\u7B4D\u7B4E\u7B4F\u7B50"+
-        "\u7B51\u7B52\u7B53\u7B54\u7B55\u7B56\u7B57\u7B58"+
-        "\u7B59\u7B5A\u7B5B\u7B5C\u7B5D\u7B5E\u7B5F\u7B60"+
-        "\u7B61\u7B62\u7B63\u7B64\u7B65\u7B66\u7B67\u7B68"+
-        "\u7B69\u7B6A\u7B6B\u7B6C\u7B6D\u7B6E\u7B6F\u7B70"+
-        "\u7B71\u7B72\u7B73\u7B74\u7B75\u7B76\u7B77\u7B78"+
-        "\u7B79\u7B7A\u7B7B\u7B7C\u7B7D\u7B7E\u7C21\u7C22"+
-        "\u7C23\u7C24\u7C25\u7C26\u7C27\u7C28\u7C29\u7C2A"+
-        "\u7C2B\u7C2C\u7C2D\u7C2E\u7C2F\u7C30\u7C31\u7C32"+
-        "\u7C33\u7C34\u7C35\u7C36\u7C37\u7C38\u7C39\u7C3A"+
-        "\u7C3B\u7C3C\u7C3D\u7C3E\u7C3F\u7C40\u7C41\u7C42"+
-        "\u7C43\u7C44\u7C45\u7C46\u7C47\u7C48\u7C49\u7C4A"+
-        "\u7C4B\u7C4C\u7C4D\u7C4E\u7C4F\u7C50\u7C51\u7C52"+
-        "\u7C53\u7C54\u7C55\u7C56\u7C57\u7C58\u7C59\u7C5A"+
-        "\u7C5B\u7C5C\u7C5D\u7C5E\u7C5F\u7C60\u7C61\u7C62"+
-        "\u7C63\u7C64\u7C65\u7C66\u7C67\u7C68\u7C69\u7C6A"+
-        "\u7C6B\u7C6C\u7C6D\u7C6E\u7C6F\u7C70\u7C71\u7C72"+
-        "\u7C73\u7C74\u7C75\u7C76\u7C77\u7C78\u7C79\u7C7A"+
-        "\u7C7B\u7C7C\u7C7D\u7C7E\u7D21\u7D22\u7D23\u7D24"+
-        "\u7D25\u7D26\u7D27\u7D28\u7D29\u7D2A\u7D2B\u7D2C"+
-        "\u7D2D\u7D2E\u7D2F\u7D30\u7D31\u7D32\u7D33\u7D34"+
-        "\u7D35\u7D36\u7D37\u7D38\u7D39\u7D3A\u7D3B\u7D3C"+
-        "\u7D3D\u7D3E\u7D3F\u7D40\u7D41\u7D42\u7D43\u7D44"+
-        "\u7D45\u7D46\u7D47\u7D48\u7D49\u7D4A\u7D4B\u7D4C"+
-        "\u7D4D\u7D4E\u7D4F\u7D50\u7D51\u7D52\u7D53\u7D54"+
-        "\u7D55\u7D56\u7D57\u7D58\u7D59\u7D5A\u7D5B\u7D5C"+
-        "\u7D5D\u7D5E\u7D5F\u7D60\u7D61\u7D62\u7D63\u7D64"+
-        "\u7D65\u7D66\u7D67\u7D68\u7D69\u7D6A\u7D6B\u7D6C"+
-        "\u7D6D\u7D6E\u7D6F\u7D70\u7D71\u7D72\u7D73\u7D74"+
-        "\u7D75\u7D76\u7D77\u7D78\u7D79\u7D7A\u7D7B\u7D7C"+
-        "\u7D7D\u7D7E\u7E21\u7E22\u7E23\u7E24\u7E25\u7E26"+
-        "\u7E27\u7E28\u7E29\u7E2A\u7E2B\u7E2C\u7E2D\u7E2E"+
-        "\u7E2F\u7E30\u7E31\u7E32\u7E33\u7E34\u7E35\u7E36"+
-        "\u7E37\u7E38\u7E39\u7E3A\u7E3B\u7E3C\u7E3D\u7E3E"+
-        "\u7E3F\u7E40\u7E41\u7E42\u7E43\u7E44\u7E45\u7E46"+
-        "\u7E47\u7E48\u7E49\u7E4A\u7E4B\u7E4C\u7E4D\u7E4E"+
-        "\u7E4F\u7E50\u7E51\u7E52\u7E53\u7E54\u7E55\u7E56"+
-        "\u7E57\u7E58\u7E59\u7E5A\u7E5B\u7E5C\u7E5D\u7E5E"+
-        "\u7E5F\u7E60\u7E61\u7E62\u7E63\u7E64\u7E65\u7E66"+
-        "\u7E67\u7E68\u7E69\u7E6A\u7E6B\u7E6C\u7E6D\u7E6E"+
-        "\u7E6F\u7E70\u7E71\u7E72\u7E73\u7E74\u7E75\u7E76"+
-        "\u7E77\u7E78\u7E79\u7E7A\u7E7B\u7E7C\u7E7D\u7E7E"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u7351\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u737E\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u7340\u7343"+
-        "\u7344\u7349\u7350\u7353\u7354\u735A\u735B\u735F"+
-        "\u7361\u7362\u7363\u7364\u7366\u7367\u736A\u736C"+
-        "\u736E\u736F\u7371\u7375\u7376\u7377\u7379\u737B"+
-        "\u737C\u7421\u7425\u7426\u7427\u742B\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u7336\u0001\u0001\u0001\u0001\u7335"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-        "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001";
-
-    private final static short _index1[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,
-        3, 4, 0, 5, 6, 0, 0, 7, 8, 0, 0, 9, 10, 11, 0, 12,
-        13, 14, 0, 0, 0, 15, 16, 0, 17, 0, 18, 0, 0, 19, 0, 0,
-        20, 0, 0, 0, 0, 21, 22, 0, 0, 23, 24, 0, 0, 25, 0, 0,
-        0, 0, 0, 26, 0, 27, 0, 0, 28, 0, 0, 29, 30, 31, 0, 0,
-        32, 33, 0, 0, 0, 34, 0, 35, 0, 36, 37, 38, 0, 0, 39, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 40, 41, 42, 43, 44, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 0, 0, 0, 47
-    };
-
-    private final static String _index2[] = {
-        _innerIndex0,
-        _innerIndex1,
-        _innerIndex2
-    };
-
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0212_Solaris_Decoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0212_Solaris_Decoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,919 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-
-public class JIS_X_0212_Solaris_Decoder extends DoubleByteDecoder
-{
-    public JIS_X_0212_Solaris_Decoder(Charset cs) {
-        super(cs,
-              index1,
-              index2,
-              0x21,
-              0x7E);
-    }
-
-    private final static String innerIndex0=
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u02D8\u02C7\u00B8\u02D9"+
-        "\u02DD\u00AF\u02DB\u02DA\uFF5E\u0384\u0385\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A1"+
-        "\u00A6\u00BF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u00BA\u00AA\u00A9\u00AE\u2122\u00A4\u2116\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u0386\u0388\u0389\u038A"+
-        "\u03AA\uFFFD\u038C\uFFFD\u038E\u03AB\uFFFD\u038F"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u03AC\u03AD\u03AE\u03AF"+
-        "\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u0402\u0403\u0404\u0405\u0406"+
-        "\u0407\u0408\u0409\u040A\u040B\u040C\u040E\u040F"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\u0452\u0453\u0454\u0455\u0456"+
-        "\u0457\u0458\u0459\u045A\u045B\u045C\u045E\u045F"+
-        "\u00C6\u0110\uFFFD\u0126\uFFFD\u0132\uFFFD\u0141"+
-        "\u013F\uFFFD\u014A\u00D8\u0152\uFFFD\u0166\u00DE"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0142"+
-        "\u0140\u0149\u014B\u00F8\u0153\u00DF\u0167\u00FE"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00C1\u00C0"+
-        "\u00C4\u00C2\u0102\u01CD\u0100\u0104\u00C5\u00C3"+
-        "\u0106\u0108\u010C\u00C7\u010A\u010E\u00C9\u00C8"+
-        "\u00CB\u00CA\u011A\u0116\u0112\u0118\uFFFD\u011C"+
-        "\u011E\u0122\u0120\u0124\u00CD\u00CC\u00CF\u00CE"+
-        "\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139"+
-        "\u013D\u013B\u0143\u0147\u0145\u00D1\u00D3\u00D2"+
-        "\u00D6\u00D4\u01D1\u0150\u014C\u00D5\u0154\u0158"+
-        "\u0156\u015A\u015C\u0160\u015E\u0164\u0162\u00DA"+
-        "\u00D9\u00DC\u00DB\u016C\u01D3\u0170\u016A\u0172"+
-        "\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\u00DD"+
-        "\u0178\u0176\u0179\u017D\u017B\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\u00E1\u00E0\u00E4\u00E2"+
-        "\u0103\u01CE\u0101\u0105\u00E5\u00E3\u0107\u0109"+
-        "\u010D\u00E7\u010B\u010F\u00E9\u00E8\u00EB\u00EA"+
-        "\u011B\u0117\u0113\u0119\u01F5\u011D\u011F\uFFFD"+
-        "\u0121\u0125\u00ED\u00EC\u00EF\u00EE\u01D0\uFFFD"+
-        "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C"+
-        "\u0144\u0148\u0146\u00F1\u00F3\u00F2\u00F6\u00F4"+
-        "\u01D2\u0151\u014D\u00F5\u0155\u0159\u0157\u015B"+
-        "\u015D\u0161\u015F\u0165\u0163\u00FA\u00F9\u00FC"+
-        "\u00FB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169"+
-        "\u01D8\u01DC\u01DA\u01D6\u0175\u00FD\u00FF\u0177"+
-        "\u017A\u017E\u017C\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F"+
-        "\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35"+
-        "\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63"+
-        "\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96"+
-        "\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB"+
-        "\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5"+
-        "\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B"+
-        "\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31"+
-        "\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40"+
-        "\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56"+
-        "\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77"+
-        "\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"+
-        "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93"+
-        "\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7"+
-        "\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5"+
-        "\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2"+
-        "\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF"+
-        "\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010"+
-        "\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022"+
-        "\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041"+
-        "\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052"+
-        "\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066"+
-        "\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083"+
-        "\u5084\u5086\u508A\u508E\u508F\u5090\u5092\u5093"+
-        "\u5094\u5096\u509B\u509C\u509E\u509F\u50A0\u50A1"+
-        "\u50A2\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0"+
-        "\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4"+
-        "\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8"+
-        "\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106"+
-        "\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110"+
-        "\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127"+
-        "\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135"+
-        "\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157"+
-        "\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B"+
-        "\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA"+
-        "\u51BC\u51BE\u51BF\u51C2\u51C8\u51CF\u51D1\u51D2"+
-        "\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2"+
-        "\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213"+
-        "\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235"+
-        "\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C"+
-        "\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279"+
-        "\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296"+
-        "\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7"+
-        "\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD"+
-        "\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4"+
-        "\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA"+
-        "\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303"+
-        "\u530A\u530B\u530C\u5311\u5313\u5318\u531B\u531C"+
-        "\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C"+
-        "\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342"+
-        "\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C"+
-        "\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E"+
-        "\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB"+
-        "\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD"+
-        "\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD"+
-        "\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A"+
-        "\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435"+
-        "\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464"+
-        "\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"+
-        "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495"+
-        "\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA"+
-        "\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF"+
-        "\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF"+
-        "\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508"+
-        "\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532"+
-        "\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549"+
-        "\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E"+
-        "\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586"+
-        "\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597"+
-        "\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6"+
-        "\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2\u55D3\u55D7"+
-        "\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605"+
-        "\u5608\u560A\u560D\u560E\u560F\u5610\u5611\u5612"+
-        "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B"+
-        "\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646"+
-        "\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661"+
-        "\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672"+
-        "\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699"+
-        "\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9"+
-        "\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5"+
-        "\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9"+
-        "\u56DC\u56DD\u56DF\u56E1\u56E4\u56E5\u56E6\u56E7"+
-        "\u56E8\u56F1\u56EB\u56ED\u56F6\u56F7\u5701\u5702"+
-        "\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D"+
-        "\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C"+
-        "\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745"+
-        "\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768"+
-        "\u576B\u576D\u576E\u576F\u5770\u5771\u5773\u5774"+
-        "\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781"+
-        "\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D"+
-        "\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC"+
-        "\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD"+
-        "\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5"+
-        "\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808"+
-        "\u5809\u57E1\u580C\u580D\u581B\u581E\u581F\u5820"+
-        "\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C"+
-        "\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867"+
-        "\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888"+
-        "\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896"+
-        "\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2"+
-        "\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2"+
-        "\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3"+
-        "\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641"+
-        "\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933"+
-        "\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959"+
-        "\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D";
-
-    private final static String innerIndex1=
-        "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B"+
-        "\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7"+
-        "\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC"+
-        "\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD"+
-        "\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1"+
-        "\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E"+
-        "\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A"+
-        "\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50"+
-        "\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A"+
-        "\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C"+
-        "\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2"+
-        "\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF\u5AC4\u5AC6"+
-        "\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE"+
-        "\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34"+
-        "\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41"+
-        "\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F"+
-        "\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A"+
-        "\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9"+
-        "\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC"+
-        "\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6\u5BD7\u5BD8\u5BD9"+
-        "\u5BDA\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17"+
-        "\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E"+
-        "\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62"+
-        "\u5C63\u5C67\u5C68\u5C69\u5C6D\u5C70\u5C74\u5C75"+
-        "\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F"+
-        "\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA"+
-        "\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD"+
-        "\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D"+
-        "\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34"+
-        "\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55"+
-        "\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64"+
-        "\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81"+
-        "\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99"+
-        "\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8"+
-        "\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9"+
-        "\u5DE0\u5DE4\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D"+
-        "\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28"+
-        "\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56"+
-        "\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A\u5E6B\u5E6C"+
-        "\u5E6D\u5E6E\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4"+
-        "\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE"+
-        "\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4"+
-        "\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07"+
-        "\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23"+
-        "\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36"+
-        "\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D"+
-        "\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"+
-        "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E"+
-        "\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7"+
-        "\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4"+
-        "\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0\u5FD1\u5FD2\u5FD3"+
-        "\u5FD4\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC"+
-        "\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC"+
-        "\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A"+
-        "\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048"+
-        "\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061"+
-        "\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A"+
-        "\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2"+
-        "\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7\u60BB\u60BE"+
-        "\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF"+
-        "\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5"+
-        "\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A"+
-        "\u610C\u6110\u6111\u6112\u6113\u6114\u6116\u6117"+
-        "\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131"+
-        "\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149"+
-        "\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F"+
-        "\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193"+
-        "\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8"+
-        "\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2"+
-        "\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1"+
-        "\u61E2\u61E7\u61E9\u61E5\u61EC\u61ED\u61EF\u6201"+
-        "\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222"+
-        "\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243"+
-        "\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256"+
-        "\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D"+
-        "\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6"+
-        "\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6"+
-        "\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304"+
-        "\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329"+
-        "\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342"+
-        "\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353"+
-        "\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371"+
-        "\u6374\u6375\u6378\u637C\u637D\u637F\u6382\u6384"+
-        "\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E"+
-        "\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5"+
-        "\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0"+
-        "\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9"+
-        "\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420"+
-        "\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435"+
-        "\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454"+
-        "\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463"+
-        "\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F"+
-        "\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1"+
-        "\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"+
-        "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1"+
-        "\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0"+
-        "\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509"+
-        "\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E"+
-        "\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C"+
-        "\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F"+
-        "\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A"+
-        "\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE"+
-        "\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE"+
-        "\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4"+
-        "\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609"+
-        "\u660D\u6611\u6612\u6615\u6616\u661D\u661E\u6621"+
-        "\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C"+
-        "\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645"+
-        "\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659"+
-        "\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C"+
-        "\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B"+
-        "\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699"+
-        "\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1"+
-        "\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8"+
-        "\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB"+
-        "\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719"+
-        "\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748"+
-        "\u674C\u6754\u6755\u675D\u6766\u676C\u676E\u6774"+
-        "\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793"+
-        "\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5"+
-        "\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5"+
-        "\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6"+
-        "\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D"+
-        "\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831"+
-        "\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855"+
-        "\u6857\u6858\u685B\u686B\u686E\u686F\u6870\u6871"+
-        "\u6872\u6875\u6879\u687A\u687B\u687C\u6882\u6884"+
-        "\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3"+
-        "\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8"+
-        "\u68CC\u68CF\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC"+
-        "\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0"+
-        "\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909"+
-        "\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933"+
-        "\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957"+
-        "\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C"+
-        "\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D"+
-        "\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB"+
-        "\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8"+
-        "\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1"+
-        "\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11"+
-        "\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"+
-        "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49"+
-        "\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B"+
-        "\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83"+
-        "\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E"+
-        "\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD"+
-        "\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4"+
-        "\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0"+
-        "\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07"+
-        "\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24"+
-        "\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F"+
-        "\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60"+
-        "\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D\u6B7E\u6B82"+
-        "\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8"+
-        "\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD"+
-        "\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1"+
-        "\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF"+
-        "\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12"+
-        "\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33"+
-        "\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D"+
-        "\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D"+
-        "\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86"+
-        "\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F"+
-        "\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0"+
-        "\u6CD1\u6CD2\u6CD4\u6CD6\u6CDA\u6CDC\u6CE0\u6CE7"+
-        "\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07"+
-        "\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27"+
-        "\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F"+
-        "\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70"+
-        "\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97"+
-        "\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF"+
-        "\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD"+
-        "\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4"+
-        "\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32"+
-        "\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49"+
-        "\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C"+
-        "\u6E5D\u6E5E\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D"+
-        "\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1"+
-        "\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8"+
-        "\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9"+
-        "\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16"+
-        "\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30"+
-        "\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52"+
-        "\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62"+
-        "\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B"+
-        "\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A"+
-        "\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF"+
-        "\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA";
-
-    private final static String innerIndex2=
-        "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC"+
-        "\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020"+
-        "\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044"+
-        "\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E"+
-        "\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E"+
-        "\u7081\u7085\u7086\u7094\u7095\u7096\u7097\u7098"+
-        "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA"+
-        "\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4"+
-        "\u70FA\u7103\u7104\u7105\u7106\u7107\u710B\u710C"+
-        "\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131"+
-        "\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150"+
-        "\u7152\u7157\u715A\u715C\u715E\u7160\u7168\u7179"+
-        "\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0"+
-        "\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0"+
-        "\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA"+
-        "\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213"+
-        "\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234"+
-        "\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F"+
-        "\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260"+
-        "\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278"+
-        "\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293"+
-        "\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1"+
-        "\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5"+
-        "\u72F3\u72F4\u72FA\u72FB\u72FE\u7302\u7304\u7305"+
-        "\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E"+
-        "\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335"+
-        "\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356"+
-        "\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369"+
-        "\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C"+
-        "\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393"+
-        "\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2"+
-        "\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9"+
-        "\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC"+
-        "\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3"+
-        "\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA"+
-        "\u73FB\u73FD\u73FF\u7400\u7401\u7404\u7407\u740A"+
-        "\u7411\u741A\u741B\u7424\u7426\u7428\u7429\u742A"+
-        "\u742B\u742C\u742D\u742E\u742F\u7430\u7431\u7439"+
-        "\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451"+
-        "\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B"+
-        "\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486"+
-        "\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499"+
-        "\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8"+
-        "\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5"+
-        "\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3"+
-        "\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA"+
-        "\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"+
-        "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529"+
-        "\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540"+
-        "\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E"+
-        "\u755F\u7561\u756F\u7571\u7579\u757A\u757B\u757C"+
-        "\u757D\u757E\u7581\u7585\u7590\u7592\u7593\u7595"+
-        "\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0"+
-        "\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC"+
-        "\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF"+
-        "\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608"+
-        "\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619"+
-        "\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629"+
-        "\u762D\u7632\u7633\u7635\u7638\u7639\u763A\u763C"+
-        "\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B"+
-        "\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F"+
-        "\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B"+
-        "\u769C\u769D\u769F\u76A0\u76A2\u76A3\u76A4\u76A5"+
-        "\u76A6\u76A7\u76A8\u76AA\u76AD\u76BD\u76C1\u76C5"+
-        "\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6"+
-        "\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700"+
-        "\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719"+
-        "\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734"+
-        "\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746"+
-        "\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C"+
-        "\u775E\u775F\u7760\u7762\u7764\u7767\u776A\u776C"+
-        "\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784"+
-        "\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2"+
-        "\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3"+
-        "\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0"+
-        "\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8"+
-        "\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D"+
-        "\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837"+
-        "\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C"+
-        "\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E"+
-        "\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D"+
-        "\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1"+
-        "\u78B2\u78B3\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9"+
-        "\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB"+
-        "\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900"+
-        "\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910"+
-        "\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929"+
-        "\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944"+
-        "\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958"+
-        "\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B"+
-        "\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995"+
-        "\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB"+
-        "\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7"+
-        "\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"+
-        "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8"+
-        "\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11"+
-        "\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F"+
-        "\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45"+
-        "\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D"+
-        "\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78"+
-        "\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90"+
-        "\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5"+
-        "\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1"+
-        "\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB"+
-        "\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29"+
-        "\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30\u7B31\u7B34"+
-        "\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60"+
-        "\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73"+
-        "\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B"+
-        "\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5"+
-        "\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8"+
-        "\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8"+
-        "\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC"+
-        "\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B"+
-        "\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26"+
-        "\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A"+
-        "\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59\u7C5A"+
-        "\u7C5B\u7C5C\u7C5D\u7C5E\u7C61\u7C63\u7C67\u7C69"+
-        "\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86"+
-        "\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6"+
-        "\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8"+
-        "\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9"+
-        "\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07"+
-        "\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D"+
-        "\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D"+
-        "\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53"+
-        "\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A"+
-        "\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83"+
-        "\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96"+
-        "\u7D97\u7D9D\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6"+
-        "\u7DB7\u7DB9\u7DC2\u7DC3\u7DC4\u7DC5\u7DC6\u7DCC"+
-        "\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6"+
-        "\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA"+
-        "\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20"+
-        "\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F"+
-        "\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F"+
-        "\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78"+
-        "\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95"+
-        "\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E"+
-        "\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B"+
-        "\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"+
-        "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F"+
-        "\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6"+
-        "\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8"+
-        "\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC"+
-        "\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007"+
-        "\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014"+
-        "\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C"+
-        "\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C"+
-        "\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071"+
-        "\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7"+
-        "\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4"+
-        "\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE\u80F0\u80F2"+
-        "\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116"+
-        "\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C"+
-        "\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C"+
-        "\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D"+
-        "\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B"+
-        "\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2"+
-        "\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF"+
-        "\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB"+
-        "\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9"+
-        "\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219"+
-        "\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A"+
-        "\u8243\u8244\u8245\u8246\u824B\u824E\u824F\u8251"+
-        "\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B"+
-        "\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289"+
-        "\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B"+
-        "\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA"+
-        "\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE"+
-        "\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4"+
-        "\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE"+
-        "\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B"+
-        "\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E"+
-        "\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343"+
-        "\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357"+
-        "\u8370\u8378\u837D\u837F\u8380\u8382\u8384\u8386"+
-        "\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C"+
-        "\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0"+
-        "\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353"+
-        "\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406"+
-        "\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439"+
-        "\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452"+
-        "\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465"+
-        "\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C"+
-        "\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6"+
-        "\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD"+
-        "\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3";
-
-    private final static String innerIndex3=
-        "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7"+
-        "\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C"+
-        "\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525"+
-        "\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F"+
-        "\u8546\u854F\u8550\u8551\u8552\u8553\u8556\u8559"+
-        "\u855C\u855D\u855E\u855F\u8560\u8561\u8562\u8564"+
-        "\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581"+
-        "\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598"+
-        "\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6"+
-        "\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7"+
-        "\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0"+
-        "\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC\u85FF\u8600"+
-        "\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618"+
-        "\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638"+
-        "\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653"+
-        "\u8656\u8657\u8658\u8659\u865D\u8660\u8661\u8662"+
-        "\u8663\u8664\u8669\u866C\u866F\u8675\u8676\u8677"+
-        "\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1"+
-        "\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5"+
-        "\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5"+
-        "\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3"+
-        "\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705"+
-        "\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719"+
-        "\u871E\u871F\u8721\u8723\u8728\u872E\u872F\u8731"+
-        "\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743"+
-        "\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F"+
-        "\u8771\u8772\u877B\u8783\u8784\u8785\u8786\u8787"+
-        "\u8788\u8789\u878B\u878C\u8790\u8793\u8795\u8797"+
-        "\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD"+
-        "\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9"+
-        "\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF"+
-        "\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3"+
-        "\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A"+
-        "\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A"+
-        "\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830"+
-        "\u8832\u8835\u883A\u883C\u8841\u8843\u8845\u8848"+
-        "\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858"+
-        "\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879"+
-        "\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0"+
-        "\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA\u88CB"+
-        "\u88CC\u88CD\u88CE\u88D1\u88D2\u88D3\u88DB\u88DE"+
-        "\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906"+
-        "\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A"+
-        "\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932"+
-        "\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946"+
-        "\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961"+
-        "\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"+
-        "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995"+
-        "\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5"+
-        "\u89B6\u89B7\u89BC\u89D4\u89D5\u89D6\u89D7\u89D8"+
-        "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9"+
-        "\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12"+
-        "\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B"+
-        "\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43"+
-        "\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57"+
-        "\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76"+
-        "\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83"+
-        "\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99"+
-        "\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3\u8AB6\u8AB7"+
-        "\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1"+
-        "\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0"+
-        "\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B"+
-        "\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37"+
-        "\u8B3C\u8B42\u8B43\u8B44\u8B45\u8B46\u8B48\u8B52"+
-        "\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76"+
-        "\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B"+
-        "\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38"+
-        "\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F"+
-        "\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59"+
-        "\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75"+
-        "\u8C76\u8C7B\u8C7E\u8C86\u8C87\u8C8B\u8C90\u8C92"+
-        "\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5"+
-        "\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD"+
-        "\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7"+
-        "\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17"+
-        "\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84"+
-        "\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0"+
-        "\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9"+
-        "\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE"+
-        "\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7"+
-        "\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01"+
-        "\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20"+
-        "\u8E21\u8E22\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36"+
-        "\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D"+
-        "\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61"+
-        "\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79"+
-        "\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95"+
-        "\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD"+
-        "\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3"+
-        "\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE"+
-        "\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02"+
-        "\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E"+
-        "\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D"+
-        "\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"+
-        "\u8F43\u8F47\u8F4F\u8F51\u8F52\u8F53\u8F54\u8F55"+
-        "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4"+
-        "\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1"+
-        "\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5"+
-        "\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6"+
-        "\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B"+
-        "\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034"+
-        "\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062"+
-        "\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088"+
-        "\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099"+
-        "\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3"+
-        "\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3\u90C4\u90C5"+
-        "\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD"+
-        "\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4"+
-        "\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D"+
-        "\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E"+
-        "\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F"+
-        "\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D"+
-        "\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A"+
-        "\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A"+
-        "\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191"+
-        "\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8"+
-        "\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6"+
-        "\u91BB\u91BC\u91BD\u91BF\u91C2\u91C3\u91C5\u91D3"+
-        "\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9"+
-        "\u91EA\u91EC\u91ED\u91EE\u91EF\u91F0\u91F1\u91F7"+
-        "\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206"+
-        "\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216"+
-        "\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228"+
-        "\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239"+
-        "\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247"+
-        "\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C"+
-        "\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E"+
-        "\u926F\u9270\u9275\u9276\u9277\u9278\u9279\u927B"+
-        "\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E"+
-        "\u9292\u9297\u9299\u929F\u92A0\u92A4\u92A5\u92A7"+
-        "\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB"+
-        "\u92BC\u92BD\u92BF\u92C0\u92C1\u92C2\u92C3\u92C5"+
-        "\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0"+
-        "\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF"+
-        "\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE"+
-        "\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D"+
-        "\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321"+
-        "\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336"+
-        "\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355"+
-        "\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369"+
-        "\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"+
-        "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A"+
-        "\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E"+
-        "\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5"+
-        "\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7"+
-        "\u93C9\u93CA\u93CB\u93CC\u93CD\u93D3\u93D9\u93DC"+
-        "\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8"+
-        "\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409"+
-        "\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E"+
-        "\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D"+
-        "\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C"+
-        "\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F"+
-        "\u9471\u9472\u9484\u9483\u9578\u9579\u957E\u9584"+
-        "\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1"+
-        "\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD"+
-        "\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2"+
-        "\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4"+
-        "\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C"+
-        "\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D"+
-        "\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E"+
-        "\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683"+
-        "\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4"+
-        "\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA"+
-        "\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9"+
-        "\u96EF\u96F1\u96FA\u9702\u9703\u9705\u9709\u971A"+
-        "\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733"+
-        "\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758"+
-        "\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776"+
-        "\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795"+
-        "\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC"+
-        "\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA"+
-        "\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9"+
-        "\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7"+
-        "\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4"+
-        "\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A"+
-        "\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820"+
-        "\u9823\u9826\u982B\u982E\u982F\u9830\u9832\u9833"+
-        "\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852"+
-        "\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865"+
-        "\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4"+
-        "\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8"+
-        "\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3"+
-        "\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917"+
-        "\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B"+
-        "\u9931\u9932\u9933\u9934\u9935\u9939\u993A\u993B"+
-        "\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E"+
-        "\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960"+
-        "\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5";
-
-    private final static String innerIndex4=
-        "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4"+
-        "\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC"+
-        "\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03"+
-        "\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20"+
-        "\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35"+
-        "\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C"+
-        "\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE"+
-        "\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE"+
-        "\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2"+
-        "\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5"+
-        "\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA"+
-        "\u9AFD\u9AFF\u9B00\u9B01\u9B02\u9B03\u9B04\u9B05"+
-        "\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12"+
-        "\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D"+
-        "\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48"+
-        "\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61"+
-        "\u9B63\u9B65\u9B66\u9B68\u9B6A\u9B6B\u9B6C\u9B6D"+
-        "\u9B6E\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80"+
-        "\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D"+
-        "\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7"+
-        "\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB"+
-        "\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0"+
-        "\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB"+
-        "\u9BEF\u9BF3\u9BF7\u9BF8\u9BF9\u9BFA\u9BFD\u9BFF"+
-        "\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19"+
-        "\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26\u9C27\u9C28"+
-        "\u9C29\u9C2A\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41"+
-        "\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50"+
-        "\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F"+
-        "\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70"+
-        "\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9"+
-        "\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E"+
-        "\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45"+
-        "\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F"+
-        "\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76"+
-        "\u9D77\u9D7B\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A"+
-        "\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98"+
-        "\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC"+
-        "\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6"+
-        "\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9"+
-        "\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02"+
-        "\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19"+
-        "\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83"+
-        "\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B"+
-        "\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3"+
-        "\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4"+
-        "\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"+
-        "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11"+
-        "\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F"+
-        "\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34"+
-        "\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43"+
-        "\u9F44\u9F45\u9F46\u9F47\u9F53\u9F55\u9F56\u9F57"+
-        "\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D\u9F6E"+
-        "\u9F6F\u9F70\u9F71\u9F73\u9F75\u9F7A\u9F7D\u9F8F"+
-        "\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1"+
-        "\u9FA2\u9FA3\u9FA5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+
-        "\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177"+
-        "\u2178\u2179\u2160\u2161\u2162\u2163\u2164\u2165"+
-        "\u2166\u2167\u2168\u2169\uFF07\uFF02\u3231\u2116"+
-        "\u2121\u70BB\u4EFC\u50F4\u51EC\u5307\u5324\uFA0E"+
-        "\u548A\u5759\uFA0F\uFA10\u589E\u5BEC\u5CF5\u5D53"+
-        "\uFA11\u5FB7\u6085\u6120\u654E\u663B\u6665\uFA12"+
-        "\uF929\u6801\uFA13\uFA14\u6A6B\u6AE2\u6DF8\u6DF2"+
-        "\u7028\uFA15\uFA16\u7501\u7682\u769E\uFA17\u7930"+
-        "\uFA18\uFA19\uFA1A\uFA1B\u7AE7\uFA1C\uFA1D\u7DA0"+
-        "\u7DD6\uFA1E\u8362\uFA1F\u85B0\uFA20\uFA21\u8807"+
-        "\uFA22\u8B7F\u8CF4\u8D76\uFA23\uFA24\uFA25\u90DE"+
-        "\uFA26\u9115\uFA27\uFA28\u9592\uF9DC\uFA29\u973B"+
-        "\u974D\u9751\uFA2A\uFA2B\uFA2C\u999E\u9AD9\u9B72"+
-        "\uFA2D\u9ED1";
-
-    private final static short index1[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 1, 0, 0, 0, 2, 3, 0, 4, 5, 6, 0, 0, 0, 0,
-        7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
-        23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
-        39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
-        55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 0, 0,
-        0, 0, 0, 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-
-    private final static String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4
-    };
-
-    protected char convSingleByte(int b) {
-        return REPLACE_CHAR;
-    }
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/JIS_X_0212_Solaris_Encoder.java
--- a/src/share/classes/sun/nio/cs/ext/JIS_X_0212_Solaris_Encoder.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3066 +0,0 @@
-/*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetEncoder;
-
-public class JIS_X_0212_Solaris_Encoder extends DoubleByteEncoder
-{
-
-    private static byte[] repl = { (byte)0x22, (byte)0x44 };
-
-    public JIS_X_0212_Solaris_Encoder(Charset cs) {
-        super(cs,
-              index1,
-              index2 ,
-              repl
-             );
-    }
-
-    protected int encodeSingle(char inputChar) {
-        return -1;
-    }
-
-    private final static String innerIndex0=
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007"+
-        "\b\t\n\u000B\f\r\u000E\u000F"+
-        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017"+
-        "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F"+
-        "\u0020\u0021\"\u0023\u0024\u0025\u0026\'"+
-        "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F"+
-        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037"+
-        "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u0000"+
-        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047"+
-        "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F"+
-        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057"+
-        "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F"+
-        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067"+
-        "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F"+
-        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077"+
-        "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u2242\u0000\u0000\u2270\u0000\u2243\u0000"+
-        "\u0000\u226D\u226C\u0000\u0000\u0000\u226E\u2234"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2231\u0000\u226B\u0000\u0000\u0000\u0000\u2244"+
-        "\u2A22\u2A21\u2A24\u2A2A\u2A23\u2A29\u2921\u2A2E"+
-        "\u2A32\u2A31\u2A34\u2A33\u2A40\u2A3F\u2A42\u2A41"+
-        "\u0000\u2A50\u2A52\u2A51\u2A54\u2A58\u2A53\u0000"+
-        "\u292C\u2A63\u2A62\u2A65\u2A64\u2A72\u2930\u294E"+
-        "\u2B22\u2B21\u2B24\u2B2A\u2B23\u2B29\u2941\u2B2E"+
-        "\u2B32\u2B31\u2B34\u2B33\u2B40\u2B3F\u2B42\u2B41"+
-        "\u2943\u2B50\u2B52\u2B51\u2B54\u2B58\u2B53\u0000"+
-        "\u294C\u2B63\u2B62\u2B65\u2B64\u2B72\u2950\u2B73"+
-        "\u2A27\u2B27\u2A25\u2B25\u2A28\u2B28\u2A2B\u2B2B"+
-        "\u2A2C\u2B2C\u2A2F\u2B2F\u2A2D\u2B2D\u2A30\u2B30"+
-        "\u2922\u2942\u2A37\u2B37\u0000\u0000\u2A36\u2B36"+
-        "\u2A38\u2B38\u2A35\u2B35\u2A3A\u2B3A\u2A3B\u2B3B"+
-        "\u2A3D\u2B3D\u2A3C\u0000\u2A3E\u2B3E\u2924\u2944"+
-        "\u2A47\u2B47\u2A45\u2B45\u0000\u0000\u2A46\u2B46"+
-        "\u2A44\u2945\u2926\u2946\u2A48\u2B48\u2A49\u2B49"+
-        "\u2947\u2A4A\u2B4A\u2A4C\u2B4C\u2A4B\u2B4B\u2929"+
-        "\u2949\u2928\u2948\u2A4D\u2B4D\u2A4F\u2B4F\u2A4E"+
-        "\u2B4E\u294A\u292B\u294B\u2A57\u2B57\u0000\u0000"+
-        "\u2A56\u2B56\u292D\u294D\u2A59\u2B59\u2A5B\u2B5B"+
-        "\u2A5A\u2B5A\u2A5C\u2B5C\u2A5D\u2B5D\u2A5F\u2B5F"+
-        "\u2A5E\u2B5E\u2A61\u2B61\u2A60\u2B60\u292F\u294F"+
-        "\u2A6C\u2B6C\u2A69\u2B69\u2A66\u2B66\u2A6B\u2B6B"+
-        "\u2A68\u2B68\u2A6A\u2B6A\u2A71\u2B71\u2A74\u2B74"+
-        "\u2A73\u2A75\u2B75\u2A77\u2B77\u2A76\u2B76\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2A26\u2B26\u2A43"+
-        "\u2B43\u2A55\u2B55\u2A67\u2B67\u2A70\u2B70\u2A6D"+
-        "\u2B6D\u2A6F\u2B6F\u2A6E\u2B6E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u2B39\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u2230"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u222F\u2232\u2236\u2235\u0000\u2233\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u2238\u2239\u2661\u0000"+
-        "\u2662\u2663\u2664\u0000\u2667\u0000\u2669\u266C"+
-        "\u2676\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2665\u266A\u2671\u2672\u2673\u2674"+
-        "\u267B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2678\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2675\u267A\u2677\u2679\u267C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2742\u2743\u2744\u2745\u2746\u2747"+
-        "\u2748\u2749\u274A\u274B\u274C\u0000\u274D\u274E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u2772\u2773\u2774\u2775\u2776\u2777"+
-        "\u2778\u2779\u277A\u277B\u277C\u0000\u277D\u277E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2271\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u226F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u7373\u7374\u7375\u7376\u7377\u7378\u7379\u737A"+
-        "\u737B\u737C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3021\u0000\u3022\u3023\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3024\u0000\u0000\u0000"+
-        "\u0000\u0000\u3025\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3026"+
-        "\u0000\u0000\u0000\u3027\u3028\u0000\u0000\u0000"+
-        "\u3029\u0000\u0000\u302A\u0000\u0000\u302B\u302C"+
-        "\u302D\u0000\u0000\u0000\u0000\u302E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u302F\u3030\u0000\u0000\u3031\u0000\u0000\u3032"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3033\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3034\u0000\u3035\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3036\u0000\u0000\u0000\u0000"+
-        "\u3037\u3038\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3039\u303A\u0000\u0000"+
-        "\u0000\u303B\u0000\u0000\u0000\u0000\u0000\u303C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u303D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u303E\u303F"+
-        "\u0000\u0000\u0000\u0000\u0000\u3040\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3041"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3042\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3043\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3044\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3045\u3046\u0000\u0000\u0000\u0000"+
-        "\u3047\u3048\u3049\u0000\u0000\u0000\u0000\u0000"+
-        "\u304A\u0000\u0000\u0000\u0000\u0000\u0000\u304B"+
-        "\u0000\u304C\u0000\u304D\u0000\u304E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u742F\u304F\u3050\u3051"+
-        "\u3052\u0000\u3053\u3054\u0000\u0000\u0000\u0000"+
-        "\u3055\u0000\u0000\u3056\u3057\u0000\u0000\u0000"+
-        "\u0000\u0000\u3058\u0000\u0000\u3059\u305A\u305B"+
-        "\u0000\u305C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u305D\u0000"+
-        "\u0000\u305E\u0000\u3060\u0000\u3061\u0000\u3062"+
-        "\u0000\u3063\u0000\u3064\u0000\u0000\u3065\u0000"+
-        "\u3066\u0000\u3067\u0000\u0000\u0000\u0000\u0000"+
-        "\u3068\u3069\u0000\u306A\u306B\u0000\u0000\u0000"+
-        "\u0000\u0000\u306C\u0000\u306D\u0000\u306E\u0000"+
-        "\u306F\u0000\u0000\u0000\u0000\u0000\u0000\u3070"+
-        "\u305F\u0000\u0000\u3071\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3072\u0000\u3073\u0000\u3074\u0000"+
-        "\u0000\u3075\u0000\u0000\u0000\u0000\u0000\u3076"+
-        "\u3077\u3078\u3079\u0000\u0000\u307A\u307B\u0000"+
-        "\u0000\u307C\u307D\u0000\u307E\u3121\u0000\u0000"+
-        "\u0000\u3122\u3123\u0000\u3124\u0000\u3125\u0000"+
-        "\u3126\u0000\u3127\u3128\u3129\u0000\u0000\u312A"+
-        "\u0000\u312B\u312C\u0000\u0000\u0000\u312D\u312E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u312F\u0000\u0000\u0000\u0000\u3130"+
-        "\u0000\u3131\u0000\u3132\u3133\u3134\u3135\u0000"+
-        "\u3136\u3137\u0000\u0000\u0000\u3138\u3139\u0000"+
-        "\u313A\u313B\u0000\u313C\u313D\u313E\u0000\u313F"+
-        "\u0000\u0000\u3140\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3141\u0000\u0000\u0000"+
-        "\u3142\u0000\u3143\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3144\u0000\u3145\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3146\u3147\u0000\u3148"+
-        "\u3149\u314A\u0000\u0000\u314B\u0000\u0000\u314C"+
-        "\u0000\u0000\u314D\u0000\u314E\u0000\u314F\u0000"+
-        "\u3150\u0000\u0000\u3151\u0000\u0000\u0000\u3152"+
-        "\u3153\u0000\u0000\u3154\u3155\u3156\u3157\u0000"+
-        "\u0000\u0000\u3158\u0000\u0000\u0000\u0000\u3159"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u315A\u0000"+
-        "\u315B\u0000\u315C\u315D\u0000\u315E\u0000\u0000"+
-        "\u0000\u0000\u0000\u3176\u0000\u0000\u0000\u0000"+
-        "\u315F\u3160\u3161\u0000\u0000\u3162\u3163\u0000"+
-        "\u0000\u0000\u3164\u0000\u3165\u0000\u3166\u0000"+
-        "\u0000\u3167\u3168\u3169\u0000\u0000\u0000\u316A"+
-        "\u0000\u316B\u0000\u0000\u0000\u0000\u0000\u316C"+
-        "\u316D\u0000\u316E\u316F\u0000\u0000\u3170\u3171"+
-        "\u0000\u0000\u3172\u0000\u0000\u3173\u0000\u0000"+
-        "\u3174\u3175\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3177\u0000\u3178\u3179\u0000\u317A\u0000"+
-        "\u0000\u0000\u317B\u0000\u0000\u0000\u317C\u317D"+
-        "\u317E\u0000\u3221\u3222\u3223\u0000\u3224\u0000"+
-        "\u0000\u0000\u0000\u3225\u3226\u0000\u3227\u3228"+
-        "\u3229\u322A\u322B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u322C\u0000\u0000\u0000\u0000\u322D"+
-        "\u322E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u322F\u3230\u0000\u0000\u3231\u0000\u0000"+
-        "\u3232\u0000\u0000\u3233\u3234\u0000\u0000\u3235"+
-        "\u0000\u0000\u0000\u0000\u3236\u0000\u3237\u0000"+
-        "\u3238\u0000\u0000\u3239\u323A\u0000\u0000\u0000"+
-        "\u323B\u0000\u0000\u0000\u323C\u323D\u0000\u323E"+
-        "\u0000\u0000\u323F\u0000\u3240\u0000\u3241\u0000"+
-        "\u3242\u3243\u0000\u0000\u0000\u0000\u0000\u3244"+
-        "\u0000\u3245\u3251\u0000\u7430\u0000\u3246\u0000"+
-        "\u0000\u0000\u3247\u0000\u0000\u0000\u3248\u0000"+
-        "\u0000\u0000\u0000\u3249\u0000\u0000\u324A\u324B"+
-        "\u324C\u0000\u0000\u324D\u324E\u324F\u3250\u0000"+
-        "\u3252\u0000\u0000\u0000\u0000\u0000\u0000\u3253"+
-        "\u0000\u3254\u0000\u3255\u3256\u3257\u3258\u0000"+
-        "\u0000\u0000\u0000\u3259\u0000\u0000\u0000\u325A"+
-        "\u325B\u0000\u0000\u0000\u325C\u325D\u0000\u325E"+
-        "\u0000\u325F\u0000\u3260\u3261\u3262\u0000\u0000"+
-        "\u3263\u3264\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3265\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3266\u0000\u0000\u0000\u0000\u3267"+
-        "\u0000\u0000\u0000\u3268\u0000\u3269\u0000\u326A"+
-        "\u326B\u0000\u0000\u0000\u0000\u0000\u0000\u326C"+
-        "\u0000\u0000\u0000\u0000\u326D\u0000\u326E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u326F\u0000"+
-        "\u0000\u0000\u0000\u3270\u3271\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3272\u0000\u0000\u3273\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3274\u0000\u0000\u0000\u0000\u3275\u0000\u0000"+
-        "\u0000\u3276\u0000\u3277\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3278\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3279\u0000\u327A\u0000\u327B\u0000\u327C\u327D"+
-        "\u0000\u0000\u327E\u0000\u0000\u0000\u0000\u0000"+
-        "\u3321\u0000\u0000\u0000\u0000\u0000\u0000\u3322"+
-        "\u0000\u3323\u3324\u3325\u0000\u3326\u0000\u0000"+
-        "\u3327\u0000\u0000\u0000\u0000\u0000\u3328\u0000"+
-        "\u0000\u0000\u3329\u0000\u0000\u332A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7431\u0000\u332B\u0000"+
-        "\u0000\u0000\u332C\u332D\u332E\u0000\u0000\u332F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3330\u3331\u0000\u0000\u3332\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3333\u3334\u0000\u3335\u3336\u0000"+
-        "\u3337\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3338\u0000\u0000\u0000\u0000\u0000"+
-        "\u3339\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u333A\u333B\u0000\u0000\u333C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u333D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u333E\u0000\u0000"+
-        "\u0000\u333F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3340\u0000\u3341"+
-        "\u3342\u0000\u3343\u0000\u3344\u0000\u0000\u3345"+
-        "\u3346\u3347\u0000\u0000\u0000\u0000\u3348\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3349\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u334A"+
-        "\u334B\u334C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u334D\u0000\u334E\u0000\u0000\u334F\u0000\u0000"+
-        "\u0000\u0000\u3350\u0000\u3351\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3352\u0000\u3353\u3354\u3355"+
-        "\u3356\u0000\u3357\u0000\u3358\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3359\u335A\u335B\u335C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u335D"+
-        "\u335E\u0000\u0000\u0000\u0000\u0000\u335F\u3360"+
-        "\u3361\u0000\u3362\u3363\u0000\u3364\u0000\u0000"+
-        "\u3365\u0000\u0000\u0000\u3366\u0000\u3367\u0000"+
-        "\u3368\u0000\u0000\u0000\u3369\u0000\u0000\u336A"+
-        "\u0000\u336B\u0000\u0000\u336C\u0000\u336D\u0000"+
-        "\u0000\u0000\u0000\u336E\u336F\u0000\u0000\u0000"+
-        "\u0000\u3370\u0000\u0000\u0000\u3371\u0000\u0000"+
-        "\u3372\u3373\u3374\u0000\u3375\u0000\u0000\u0000"+
-        "\u3376\u3377\u0000\u0000\u3378\u0000\u3379\u337A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u337B\u0000\u0000\u337C\u0000\u0000\u0000\u7432"+
-        "\u0000\u0000\u337D\u337E\u3421\u0000\u0000\u0000"+
-        "\u0000\u3422\u0000\u3423\u0000\u0000\u0000\u0000"+
-        "\u3424\u0000\u0000\u3425\u3426\u0000\u3427\u3428"+
-        "\u0000\u0000\u0000\u0000\u7433\u3429\u0000\u342A"+
-        "\u342B\u342C\u0000\u342D\u342E\u342F\u0000\u0000"+
-        "\u3430\u0000\u3431\u0000\u0000\u3432\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3433\u3434\u3435\u0000"+
-        "\u0000\u0000\u3436\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3438\u3437\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3439\u0000\u343A\u0000\u0000\u0000\u0000"+
-        "\u0000\u343B\u0000\u343C\u0000\u343D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u343E\u343F\u0000\u0000"+
-        "\u0000\u0000\u3440\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3441\u0000\u0000\u0000\u0000\u3442\u0000"+
-        "\u0000\u0000\u0000\u3443\u0000\u0000\u0000\u3444"+
-        "\u3445\u0000\u0000\u0000\u0000\u0000\u3446\u0000"+
-        "\u0000\u0000\u0000\u3447\u3448\u0000\u0000\u0000"+
-        "\u0000\u3449\u0000\u0000\u0000\u344A\u0000\u0000"+
-        "\u0000\u344B\u0000\u0000\u344C\u0000\u0000\u0000"+
-        "\u0000\u0000\u344D\u344E\u0000\u0000\u0000\u344F"+
-        "\u0000\u0000\u3450\u0000\u3451\u3452\u0000\u3453"+
-        "\u3454\u0000\u3455\u0000\u0000\u3456\u0000\u0000"+
-        "\u3457\u0000\u0000\u0000\u0000\u3458\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3459"+
-        "\u0000\u0000\u345A\u345B\u0000\u345C\u0000\u0000"+
-        "\u0000\u0000\u345D\u0000\u0000\u345E\u345F\u0000"+
-        "\u3460\u0000\u0000\u0000\u0000\u0000\u3461\u3462"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3463\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3464\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3465\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3466\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3467\u0000\u0000\u0000\u0000\u0000\u3468"+
-        "\u3469\u0000\u346A\u0000\u0000\u0000\u0000\u346B"+
-        "\u0000\u346C\u0000\u0000\u346D\u346E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u346F\u3470\u0000\u0000\u3471"+
-        "\u0000\u0000\u0000\u0000\u0000\u3472\u0000\u3473"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3474\u0000"+
-        "\u0000\u0000\u3475\u0000\u3476\u0000\u3477\u3478"+
-        "\u0000\u3479\u0000\u347A\u0000\u347B\u347C\u0000"+
-        "\u0000\u0000\u0000\u0000\u347D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u347E"+
-        "\u0000\u3521\u0000\u3522\u0000\u3523\u0000\u0000"+
-        "\u3524\u3525\u7435\u0000\u0000\u3526\u0000\u0000"+
-        "\u0000\u3527\u0000\u0000\u0000\u3528\u3529\u0000"+
-        "\u0000\u0000\u0000\u0000\u352A\u0000\u0000\u352B"+
-        "\u0000\u352C\u0000\u0000\u0000\u0000\u352D\u352E"+
-        "\u0000\u352F\u3530\u0000\u0000\u3531\u3532\u0000"+
-        "\u0000\u3533\u0000\u0000\u0000\u0000\u0000\u3534"+
-        "\u0000\u3535\u3536\u3537\u0000\u0000\u0000\u3538"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3539\u0000"+
-        "\u0000\u0000\u353A\u0000\u0000\u353B\u353C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u353D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u353E\u0000\u353F\u0000\u0000\u3540"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3541\u0000"+
-        "\u0000\u0000\u0000\u0000\u3542\u0000\u3543\u3544"+
-        "\u3545\u3546\u0000\u0000\u0000\u3547\u0000\u0000"+
-        "\u3548\u3549\u0000\u0000\u354A\u354B\u354C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u354D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u354E\u354F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3550\u0000\u0000\u3551\u3552\u0000"+
-        "\u0000\u0000\u0000\u3553\u3554\u3555\u0000\u0000"+
-        "\u0000\u3556\u0000\u0000\u0000\u0000\u0000\u3557"+
-        "\u0000\u3558\u3559\u0000\u0000\u355A\u0000\u0000"+
-        "\u355B\u355C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u355D\u0000\u355E\u355F\u0000\u0000\u3560\u0000"+
-        "\u3561\u3562\u0000\u0000\u3563\u0000\u3564\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3565"+
-        "\u0000\u3566\u3567\u0000\u0000\u0000\u3568\u0000"+
-        "\u3569\u0000\u0000\u0000\u0000\u0000\u356A\u356B"+
-        "\u0000\u356C\u356D\u356E\u356F\u0000\u0000\u3570"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3571\u3572\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3573\u0000\u0000"+
-        "\u0000\u0000\u3574\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3575"+
-        "\u0000\u3576\u0000\u3577\u0000\u0000\u3578\u0000"+
-        "\u0000\u3579\u0000\u357A\u357B\u0000\u357C\u0000"+
-        "\u0000\u357D\u357E\u3621\u0000\u0000\u0000\u3622"+
-        "\u3623\u0000\u0000\u3624\u0000\u0000\u3625\u0000"+
-        "\u0000\u0000\u3626\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3627\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3628\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3629"+
-        "\u0000\u0000\u0000\u0000\u0000\u362A\u0000\u0000"+
-        "\u362B\u0000\u362C\u0000\u0000\u362D\u362E\u362F"+
-        "\u3630\u3631\u3632\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3633\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3634\u0000\u0000\u0000"+
-        "\u3635\u0000\u0000\u3636\u0000\u3637\u0000\u3638"+
-        "\u0000\u3639\u0000\u363A\u363B\u363C\u0000\u363D"+
-        "\u363E\u363F\u0000\u3640\u3641\u0000\u3642\u0000"+
-        "\u0000\u3643\u0000\u3644\u0000\u3645\u0000\u3646"+
-        "\u0000\u0000\u0000\u0000\u3647\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3648\u0000"+
-        "\u3649\u364A\u364B\u364C\u0000\u0000\u364D\u0000"+
-        "\u0000\u364E\u0000\u0000\u0000\u364F\u0000\u3650"+
-        "\u0000\u3651\u3652\u0000\u0000\u3653\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3654\u3655\u0000\u0000"+
-        "\u3656\u0000\u0000\u3657\u3658\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3659\u0000\u0000"+
-        "\u0000\u365A\u365B\u0000\u0000\u365C\u365D\u365E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u365F\u3660"+
-        "\u3661\u3662\u0000\u3663\u3664\u3665\u0000\u0000"+
-        "\u0000\u3666\u0000\u3667\u0000\u0000\u0000\u3668"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3669\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u366A\u0000\u0000"+
-        "\u0000\u366B\u366C\u366D\u3670\u3671\u0000\u366E"+
-        "\u366F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3672\u0000\u0000\u3673\u3674\u0000\u3675"+
-        "\u0000\u3676\u0000\u0000\u3677\u3678\u3679\u367A"+
-        "\u367B\u0000\u0000\u367D\u0000\u367E\u0000\u0000"+
-        "\u0000\u367C\u0000\u0000\u0000\u0000\u3721\u3722"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex1=
-        "\u0000\u3723\u3724\u0000\u0000\u0000\u0000\u3725"+
-        "\u0000\u0000\u3726\u0000\u3727\u0000\u0000\u0000"+
-        "\u0000\u3728\u0000\u0000\u0000\u3729\u0000\u0000"+
-        "\u0000\u0000\u372A\u372B\u0000\u372C\u0000\u0000"+
-        "\u372D\u0000\u372E\u372F\u3730\u3731\u0000\u0000"+
-        "\u0000\u3732\u3733\u0000\u3734\u0000\u3735\u3736"+
-        "\u0000\u0000\u0000\u3737\u3738\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3739\u373A\u373B"+
-        "\u0000\u0000\u0000\u0000\u0000\u373C\u373D\u0000"+
-        "\u0000\u0000\u0000\u0000\u373E\u373F\u0000\u0000"+
-        "\u0000\u0000\u3740\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u7436\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3741\u0000\u0000\u3742\u0000\u3743"+
-        "\u3744\u0000\u0000\u3745\u0000\u3746\u3747\u3748"+
-        "\u3749\u374A\u0000\u374B\u374C\u374D\u0000\u374E"+
-        "\u0000\u374F\u3750\u3751\u3752\u0000\u3753\u0000"+
-        "\u0000\u3754\u0000\u3755\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3756\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3757\u3760\u0000\u3758"+
-        "\u0000\u3759\u375A\u0000\u375B\u375C\u375D\u375E"+
-        "\u0000\u375F\u0000\u0000\u0000\u0000\u0000\u3761"+
-        "\u3762\u3763\u0000\u0000\u3764\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3765\u0000\u0000\u0000\u0000\u3766\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3767"+
-        "\u3768\u0000\u0000\u0000\u3769\u0000\u0000\u376A"+
-        "\u0000\u0000\u0000\u0000\u0000\u376B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u376C\u376D\u0000"+
-        "\u0000\u377E\u0000\u0000\u376E\u0000\u376F\u3770"+
-        "\u0000\u3771\u0000\u0000\u0000\u3772\u0000\u0000"+
-        "\u3773\u0000\u0000\u0000\u0000\u3774\u3775\u0000"+
-        "\u3776\u0000\u0000\u0000\u0000\u3777\u3778\u3779"+
-        "\u0000\u0000\u0000\u377A\u377B\u0000\u0000\u0000"+
-        "\u377C\u377D\u0000\u0000\u3821\u3822\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3823\u0000\u0000\u3824\u3825"+
-        "\u3826\u0000\u0000\u0000\u0000\u0000\u3827\u3828"+
-        "\u0000\u0000\u0000\u0000\u0000\u3829\u0000\u0000"+
-        "\u0000\u0000\u382A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u382B\u0000\u0000\u0000\u0000\u0000\u382C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u382D\u0000\u0000\u382E\u382F\u0000\u3830"+
-        "\u3831\u0000\u0000\u0000\u0000\u3832\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3833"+
-        "\u0000\u3834\u0000\u0000\u3835\u0000\u0000\u3836"+
-        "\u3837\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3838\u0000\u0000\u0000\u3839\u0000\u0000\u383A"+
-        "\u383B\u383C\u0000\u0000\u0000\u0000\u0000\u383D"+
-        "\u383E\u383F\u3840\u0000\u3841\u3842\u0000\u3843"+
-        "\u3844\u0000\u0000\u0000\u3845\u0000\u3846\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3847\u7439\u0000"+
-        "\u3848\u3849\u384A\u0000\u0000\u0000\u384B\u0000"+
-        "\u0000\u384C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u384D\u384E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3850\u0000\u0000\u0000"+
-        "\u0000\u0000\u3851\u0000\u384F\u0000\u0000\u0000"+
-        "\u3852\u0000\u0000\u0000\u0000\u3853\u3854\u0000"+
-        "\u3855\u0000\u3856\u0000\u3857\u0000\u3858\u0000"+
-        "\u0000\u0000\u3859\u0000\u0000\u385A\u0000\u0000"+
-        "\u0000\u385B\u385C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u385D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u385E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u385F\u3860\u0000"+
-        "\u0000\u0000\u0000\u3861\u3862\u0000\u0000\u0000"+
-        "\u0000\u0000\u3863\u3864\u3865\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3867\u0000\u0000"+
-        "\u0000\u3868\u0000\u3869\u386A\u0000\u0000\u0000"+
-        "\u386B\u0000\u0000\u0000\u0000\u0000\u0000\u386C"+
-        "\u386D\u0000\u0000\u386E\u0000\u386F\u3870\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3871"+
-        "\u0000\u0000\u0000\u3872\u0000\u0000\u3873\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3874\u3875\u0000\u0000\u0000\u0000"+
-        "\u0000\u3876\u0000\u3877\u0000\u3878\u3879\u387A"+
-        "\u0000\u387B\u0000\u387C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u387D\u0000\u387E\u0000\u3921"+
-        "\u0000\u0000\u3922\u0000\u0000\u3923\u3924\u0000"+
-        "\u0000\u3925\u0000\u3926\u3927\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3928\u3929\u0000\u392A\u0000"+
-        "\u0000\u0000\u392B\u0000\u0000\u392C\u0000\u392D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u392E"+
-        "\u0000\u0000\u0000\u0000\u392F\u0000\u0000\u3930"+
-        "\u0000\u0000\u0000\u0000\u0000\u3931\u3932\u3933"+
-        "\u3934\u0000\u0000\u3935\u0000\u0000\u0000\u3936"+
-        "\u0000\u0000\u3937\u0000\u3938\u0000\u0000\u0000"+
-        "\u0000\u3939\u0000\u393A\u393B\u0000\u0000\u0000"+
-        "\u393C\u0000\u393D\u0000\u0000\u393E\u0000\u0000"+
-        "\u0000\u0000\u393F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3940\u3941\u3942"+
-        "\u0000\u0000\u0000\u3943\u3944\u0000\u0000\u3945"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3946\u3947"+
-        "\u0000\u3948\u3949\u0000\u394A\u0000\u0000\u394B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u394C\u0000\u0000\u0000\u394D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u394E\u394F\u3950\u0000"+
-        "\u0000\u0000\u3951\u3952\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3953\u0000"+
-        "\u0000\u0000\u0000\u3954\u3955\u0000\u0000\u3956"+
-        "\u3957\u0000\u3958\u0000\u0000\u3959\u0000\u0000"+
-        "\u395A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u395B\u395C\u0000\u395D"+
-        "\u395E\u0000\u0000\u0000\u395F\u0000\u0000\u0000"+
-        "\u3960\u0000\u0000\u0000\u0000\u3961\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3962\u0000"+
-        "\u0000\u0000\u0000\u3963\u0000\u3964\u0000\u3965"+
-        "\u0000\u0000\u0000\u0000\u0000\u3966\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3967"+
-        "\u0000\u0000\u3968\u3969\u0000\u0000\u396A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u396B\u0000\u0000\u0000\u0000"+
-        "\u396C\u0000\u0000\u396D\u0000\u0000\u396E\u0000"+
-        "\u0000\u396F\u0000\u0000\u3970\u0000\u3971\u3972"+
-        "\u3973\u0000\u3974\u0000\u0000\u0000\u0000\u3975"+
-        "\u0000\u0000\u0000\u0000\u3976\u0000\u0000\u0000"+
-        "\u0000\u3977\u3978\u3979\u0000\u397A\u0000\u0000"+
-        "\u397B\u0000\u397C\u397D\u0000\u0000\u0000\u397E"+
-        "\u0000\u0000\u0000\u0000\u3A21\u0000\u3A22\u0000"+
-        "\u3A23\u0000\u0000\u0000\u0000\u0000\u0000\u3A24"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A25\u0000\u3A26\u0000\u0000\u0000"+
-        "\u3A27\u0000\u0000\u0000\u0000\u3A28\u0000\u0000"+
-        "\u0000\u0000\u3A29\u0000\u0000\u0000\u3A2A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3A2B\u3A2C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3A2D\u0000\u0000"+
-        "\u3A2E\u3A2F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3A30\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3A31"+
-        "\u0000\u3A33\u0000\u3A34\u0000\u3A35\u0000\u0000"+
-        "\u0000\u3A36\u0000\u0000\u0000\u3A37\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3A38\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3A32\u0000\u0000\u0000"+
-        "\u3A39\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3A3A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3A3B\u3A3C\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A3D\u0000\u0000\u0000\u3A3E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3A3F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3A40\u0000\u0000\u0000\u0000\u0000\u3A41\u3A42"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3A43\u3A44\u3A45\u3A46"+
-        "\u0000\u3A47\u0000\u0000\u3A48\u0000\u3A49\u0000"+
-        "\u0000\u0000\u3A4A\u0000\u0000\u0000\u3A4B\u0000"+
-        "\u3A4C\u3A4D\u0000\u3A4E\u3A4F\u0000\u3A50\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3A51\u3A52\u0000\u0000\u3A53\u3A54\u0000\u3A55"+
-        "\u0000\u3A56\u3A57\u0000\u0000\u0000\u0000\u3A58"+
-        "\u0000\u0000\u3A59\u0000\u3A5A\u0000\u0000\u0000"+
-        "\u3A5B\u3A5C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3A5D\u0000\u3A5E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3A5F\u3A60"+
-        "\u3A61\u3A62\u3A63\u0000\u0000\u0000\u0000\u0000"+
-        "\u3A64\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u743A\u0000\u0000\u3A65"+
-        "\u0000\u3A66\u0000\u0000\u3A67\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3A68\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3A69\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3A6A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3A6B\u3A6C"+
-        "\u0000\u0000\u0000\u3A6D\u0000\u0000\u3A6E\u0000"+
-        "\u0000\u3A6F\u0000\u3A70\u3A71\u0000\u3A72\u0000"+
-        "\u3A73\u0000\u3A74\u0000\u0000\u3A75\u3A76\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3A77\u3A78\u0000\u3A79\u0000\u0000\u0000"+
-        "\u0000\u0000\u3A7A\u3A7B\u0000\u0000\u0000\u3A7C"+
-        "\u3A7D\u3A7E\u0000\u0000\u0000\u3B21\u0000\u0000"+
-        "\u3B22\u0000\u0000\u0000\u3B23\u3B24\u0000\u0000"+
-        "\u0000\u0000\u3B25\u3B26\u3B27\u3B28\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3B29"+
-        "\u3B2A\u0000\u3B2B\u0000\u0000\u0000\u0000\u3B2C"+
-        "\u0000\u0000\u3B2D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3B2E\u0000\u3B2F"+
-        "\u3B30\u0000\u3B31\u3B32\u0000\u0000\u3B33\u0000"+
-        "\u0000\u0000\u3B34\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B35\u0000\u3B36\u3B37\u0000\u0000"+
-        "\u0000\u0000\u3B38\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3B39\u0000\u3B3A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B3B\u0000\u0000\u0000\u0000\u3B3D"+
-        "\u0000\u0000\u0000\u0000\u0000\u3B3C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3B3E\u0000"+
-        "\u0000\u3B3F\u3B40\u0000\u3B41\u743B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3B42\u0000\u0000\u0000\u0000\u3B43\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3B44\u0000\u0000"+
-        "\u0000\u0000\u3B45\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B47\u3B48\u0000\u3B49\u3B4A"+
-        "\u0000\u0000\u0000\u3B46\u0000\u0000\u0000\u0000"+
-        "\u0000\u3B4B\u0000\u0000\u3B4C\u0000\u0000\u0000"+
-        "\u0000\u3B4D\u0000\u0000\u0000\u3B4E\u0000\u3B4F"+
-        "\u0000\u0000\u3B50\u3B51\u0000\u0000\u3B52\u0000"+
-        "\u3B53\u0000\u3B57\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3B55\u0000\u743C\u0000\u3B54\u0000\u0000"+
-        "\u0000\u3B56\u0000\u0000\u0000\u0000\u0000\u3B58"+
-        "\u3B59\u3B5A\u3B5B\u0000\u3B5C\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B5D\u0000\u0000\u3B5E\u0000\u0000"+
-        "\u3B5F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3B60\u3B61\u0000\u0000\u0000\u3B62\u3B63"+
-        "\u0000\u3B64\u0000\u3B65\u0000\u0000\u0000\u0000"+
-        "\u3B66\u0000\u3B67\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3B68\u3B69\u3B6A\u3B6B\u0000\u0000"+
-        "\u0000\u3B6C\u0000\u3B6D\u0000\u0000\u0000\u3B6E"+
-        "\u3B6F\u0000\u0000\u0000\u0000\u0000\u0000\u3B70"+
-        "\u0000\u0000\u0000\u3B71\u0000\u0000\u0000\u0000"+
-        "\u3B72\u0000\u6674\u0000\u3B73\u0000\u0000\u0000"+
-        "\u3B74\u3B75\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3B76\u0000\u0000\u0000\u3B77"+
-        "\u0000\u0000\u0000\u3B78\u0000\u0000\u3B7A\u0000"+
-        "\u3B79\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3B7B\u3B7C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3B7D\u0000\u0000\u0000\u3B7E\u0000\u0000\u0000"+
-        "\u0000\u3C21\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C22\u3C23\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C24\u0000\u0000\u0000\u0000\u0000\u0000\u3C25"+
-        "\u0000\u0000\u0000\u0000\u0000\u3C26\u0000\u0000"+
-        "\u0000\u0000\u3C27\u0000\u3C28\u3C29\u0000\u0000"+
-        "\u3C2A\u0000\u0000\u0000\u0000\u0000\u0000\u3C2B"+
-        "\u3C2C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C2E\u0000\u0000\u0000\u0000\u0000\u3C2D\u0000"+
-        "\u0000\u0000\u3C2F\u0000\u0000\u3C30\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3C31\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3C34\u0000\u3C32\u0000\u0000\u0000\u0000"+
-        "\u3C33\u3C35\u0000\u0000\u0000\u0000\u3C36\u0000"+
-        "\u3C37\u0000\u0000\u3C38\u3C39\u0000\u3C3A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C3B\u0000\u3C3C\u3C3D\u3C3E\u3C3F\u3C40\u0000"+
-        "\u3C41\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3C42\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3C43\u0000\u0000\u3C44\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3C45\u0000\u3C46\u3C47\u0000\u0000"+
-        "\u3C48\u0000\u3C49\u0000\u3C4A\u0000\u0000\u0000"+
-        "\u0000\u3C4B\u0000\u3C4C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3C4D\u3C4E\u3C4F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3C50\u0000"+
-        "\u0000\u0000\u0000\u3C52\u3C51\u0000\u3C53\u0000"+
-        "\u0000\u3C54\u3C55\u0000\u3C56\u3C57\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3C58\u0000\u3C59\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3C5A\u0000\u0000"+
-        "\u0000\u0000\u0000\u3C5B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3C5C\u0000\u0000\u0000\u3C5D\u3C5E"+
-        "\u3C5F\u0000\u0000\u0000\u0000\u0000\u3C60\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3C61\u0000\u0000\u3C62\u3C63\u0000\u0000"+
-        "\u0000\u3C64\u3C65\u3C66\u3C67\u0000\u0000\u0000"+
-        "\u3C68\u0000\u0000\u3C69\u3C6A\u0000\u3C6B\u0000"+
-        "\u3C6C\u0000\u0000\u0000\u3C6D\u0000\u3C6E\u0000"+
-        "\u0000\u0000\u0000\u3C6F\u0000\u3C70\u0000\u3C71"+
-        "\u3C72\u0000\u0000\u0000\u3C73\u3C74\u0000\u3C75"+
-        "\u0000\u0000\u0000\u0000\u0000\u3C76\u0000\u0000"+
-        "\u3C77\u0000\u0000\u0000\u3C78\u0000\u0000\u0000"+
-        "\u3C79\u0000\u0000\u3C7A\u0000\u0000\u0000\u0000"+
-        "\u3C7B\u0000\u0000\u3C7C\u3C7D\u0000\u0000\u3C7E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3D21"+
-        "\u0000\u0000\u3D22\u0000\u3D23\u3D24\u0000\u0000"+
-        "\u3D25\u0000\u3D26\u0000\u0000\u3D27\u3D28\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3D29\u0000\u0000\u0000\u3D2A\u0000\u3D2B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3D2C\u0000"+
-        "\u0000\u0000\u0000\u0000\u3D2D\u3D2E\u0000\u0000"+
-        "\u0000\u0000\u3D2F\u0000\u3D32\u0000\u0000\u3D30"+
-        "\u0000\u0000\u0000\u3D31\u3D33\u0000\u0000\u3D34"+
-        "\u3D35\u3D36\u0000\u0000\u0000\u0000\u0000\u743E"+
-        "\u3D37\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3D38\u0000\u0000\u3D39"+
-        "\u3D3A\u3D3B\u0000\u3D3C\u0000\u0000\u0000\u0000"+
-        "\u3D3D\u3D3E\u3D3F\u3D40\u3D41\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3D42\u0000"+
-        "\u0000\u3D43\u3D44\u0000\u0000\u0000\u0000\u0000"+
-        "\u3D45\u3D46\u3D47\u0000\u3D48\u3D49\u3D4A\u3D4B"+
-        "\u0000\u0000\u3D4C\u3D4D\u0000\u0000\u3D4E\u0000"+
-        "\u0000\u0000\u3D4F\u0000\u3D50\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3D51"+
-        "\u0000\u0000\u3D52\u0000\u0000\u3D53\u0000\u0000"+
-        "\u0000\u0000\u0000\u3D54\u3D55\u0000\u0000\u3D56"+
-        "\u3D57\u0000\u3D58\u0000\u0000\u0000\u0000\u3D59"+
-        "\u0000\u0000\u0000\u0000\u3D5A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3D5B\u0000\u0000"+
-        "\u0000\u0000\u0000\u3D5C\u0000\u3D5D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3D5E\u0000\u0000\u0000\u0000\u0000\u0000\u3D5F"+
-        "\u3D60\u3D61\u0000\u0000\u3D62\u0000\u0000\u0000"+
-        "\u0000\u3D63\u0000\u0000\u3D64\u0000\u3D65\u3D66"+
-        "\u0000\u0000\u0000\u0000\u0000\u3D67\u0000\u0000"+
-        "\u0000\u3D68\u0000\u0000\u0000\u0000\u0000\u3D69"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3D6A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3D6B\u3D6C"+
-        "\u0000\u0000\u3D6D\u0000\u0000\u743F\u3D6E\u0000"+
-        "\u3D6F\u0000\u3D70\u0000\u0000\u0000\u3D71\u0000"+
-        "\u0000\u3D72\u0000\u3D73\u0000\u3D74\u0000\u0000"+
-        "\u3D75\u0000\u0000\u0000\u0000\u3D76\u3D77\u0000"+
-        "\u0000\u0000\u3D78\u0000\u3D79\u3D7A\u0000\u0000"+
-        "\u3D7B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3D7C\u3D7D\u0000\u0000\u0000\u0000\u0000\u3D7E"+
-        "\u0000\u0000\u0000\u3E21\u0000\u0000\u3E22\u0000"+
-        "\u0000\u0000\u3E23\u0000\u3E24\u0000\u0000\u0000"+
-        "\u3E25\u3E26\u3E27\u3E28\u0000\u0000\u3E29\u3E2A"+
-        "\u0000\u0000\u0000\u0000\u3E2B\u3E2C\u0000\u0000"+
-        "\u0000\u3E2D\u0000\u3E2E\u0000\u3E2F\u3E30\u0000"+
-        "\u0000\u0000\u3E31\u0000\u0000\u3E32\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3E33\u0000\u0000\u3E34\u0000\u0000"+
-        "\u3E35\u0000\u0000\u0000\u3E36\u3E37\u0000\u0000"+
-        "\u0000\u0000\u3E38\u0000\u0000\u0000\u0000\u3E39"+
-        "\u0000\u0000\u3E3A\u0000\u3E3B\u0000\u0000\u0000"+
-        "\u3E3C\u3E3D\u3E3E\u3E3F\u3E40\u0000\u3E41\u3E42"+
-        "\u0000\u3E43\u0000\u0000\u3E44\u0000\u3E45\u0000"+
-        "\u7440\u0000\u3E46\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3E47\u3E48\u0000\u0000\u0000\u0000"+
-        "\u3E49\u3E4A\u0000\u0000\u0000\u3E4B\u3E4C\u3E4D"+
-        "\u0000\u3E4E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3E4F\u0000\u0000\u0000\u3E50\u3E51\u0000"+
-        "\u0000\u3E52\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3E53\u0000"+
-        "\u3E54\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3E55\u0000\u0000\u0000"+
-        "\u0000\u0000\u3E56\u0000\u0000\u0000\u0000\u0000"+
-        "\u3E57\u0000\u0000\u3E58\u3E59\u0000\u0000\u3E5A"+
-        "\u3E5B\u3E5C\u0000\u3E5D\u3E5E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3E5F\u0000\u3E60\u0000\u0000"+
-        "\u0000\u0000\u3E61\u3E62\u0000\u0000\u0000\u3E63"+
-        "\u3E64\u0000\u0000\u0000\u3E65\u3E66\u0000\u3E67"+
-        "\u3E68\u0000\u0000\u0000\u0000\u3E69\u0000\u0000"+
-        "\u3E6A\u0000\u3E6B\u0000\u0000\u3E6C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u3E6D\u3E6E\u0000\u0000\u3E6F\u0000\u0000\u0000"+
-        "\u3E70\u3E71\u3E72\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3E73\u3E74"+
-        "\u0000\u0000\u0000\u0000\u0000\u3E75\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3E76\u3E77\u3E78\u3E79"+
-        "\u0000\u3E7A\u3E7B\u0000\u0000\u3E7E\u0000\u3E7C"+
-        "\u0000\u3E7D\u0000\u0000\u3F21\u3F22\u0000\u3F23"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F24\u0000\u3F25\u3F26\u0000\u0000\u3F27"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F28\u0000\u3F29\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F2A\u0000\u0000\u0000"+
-        "\u3F2B\u0000\u3F2C\u3F2D\u0000\u0000\u0000\u3F2E"+
-        "\u0000\u3F2F\u0000\u3F30\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F31\u0000\u0000\u0000\u3F32\u0000\u0000"+
-        "\u0000\u0000\u3F33\u3F34\u3F35\u0000\u3F36\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F37\u0000\u0000\u0000"+
-        "\u3F38\u3F39\u3F3A\u0000\u3F3B\u0000\u3F3C\u0000"+
-        "\u0000\u0000\u3F3D\u0000\u3F3E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F3F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F40\u0000\u3F41"+
-        "\u0000\u0000\u0000\u3F42\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3F43\u0000\u0000\u3F44\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F45\u3F46\u3F47"+
-        "\u3F48\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3F49\u0000"+
-        "\u3F4A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F4B\u0000\u0000\u3F4C\u3F4D"+
-        "\u0000\u0000\u3F4E\u0000\u0000\u0000\u3F4F\u3F50"+
-        "\u0000\u0000\u0000\u0000\u3F51\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u3F52\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F53\u3F54\u0000"+
-        "\u0000\u0000\u3F55\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3F56\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u3F57\u0000\u3F58\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F59\u3F5A\u0000\u0000"+
-        "\u0000\u0000\u0000\u3F5B\u3F5C\u0000\u0000\u0000"+
-        "\u0000\u0000\u3F5D\u3F5E\u0000\u3F5F\u0000\u0000"+
-        "\u3F60\u0000\u0000\u3F61\u0000\u0000\u3F62\u0000"+
-        "\u3F63\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u3F64\u3F65\u0000\u0000\u3F66\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F67\u3F68\u0000"+
-        "\u0000\u3F69\u0000\u0000\u3F6A\u0000\u0000\u0000"+
-        "\u0000\u3F6B\u3F6C\u3F6D\u3F6E\u0000\u3F6F\u0000"+
-        "\u0000\u0000\u3F70\u3F71\u0000\u0000\u3F72\u0000"+
-        "\u0000\u0000\u3F73\u3F74\u3F75\u0000\u0000\u0000"+
-        "\u3F76\u0000\u0000\u3F77\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u3F78\u3F79\u0000"+
-        "\u0000\u0000\u0000\u0000\u3F7A\u3F7B\u0000\u0000"+
-        "\u0000\u3F7C\u0000\u0000\u3F7D\u3F7E\u0000\u0000"+
-        "\u4021\u0000\u0000\u0000\u4022\u4023\u0000\u4024"+
-        "\u0000\u0000\u4025\u0000\u4026\u0000\u0000\u4027"+
-        "\u0000\u0000\u4028\u0000\u0000\u0000\u0000\u0000"+
-        "\u4029\u0000\u0000\u0000\u402A\u402B\u0000\u0000"+
-        "\u0000\u402C\u402D\u0000\u0000\u0000\u402E\u0000"+
-        "\u0000\u0000\u0000\u0000\u402F\u0000\u4030\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4031\u4032\u4033"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4034\u0000\u0000"+
-        "\u0000\u4035\u0000\u0000\u0000\u4036\u0000\u0000"+
-        "\u4037\u0000\u0000\u0000\u0000\u0000\u4038\u0000"+
-        "\u0000\u4039\u0000\u403A\u403B\u403C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u403D\u0000\u0000\u0000"+
-        "\u403E\u0000\u0000\u0000\u0000\u403F\u0000\u0000"+
-        "\u0000\u0000\u4040\u0000\u4041\u0000\u0000\u0000"+
-        "\u0000\u0000\u4042\u4043\u0000\u4044\u0000\u0000"+
-        "\u4045\u4046\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4047\u4048\u0000\u0000\u0000\u0000\u0000"+
-        "\u4049\u0000\u404A\u0000\u404B\u0000\u0000\u0000"+
-        "\u404C\u0000\u0000\u0000\u0000\u0000\u404D\u0000"+
-        "\u404E\u0000\u404F\u0000\u4050\u4051\u0000\u0000"+
-        "\u0000\u4052\u4053\u0000\u0000\u0000\u0000\u4054"+
-        "\u4055\u0000\u0000\u0000\u0000\u4056\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4057\u0000\u4058"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4059\u0000\u0000\u0000\u405A"+
-        "\u0000\u405B\u405C\u405D\u405E\u0000\u0000\u0000"+
-        "\u0000\u0000\u405F\u4060\u4061\u4062\u0000\u4063"+
-        "\u4064\u4065\u0000\u4066\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4067\u0000\u0000"+
-        "\u0000\u0000\u0000\u4068\u4069\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u406A\u0000\u406B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u406C\u0000\u406D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u406E"+
-        "\u406F\u4070\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4071\u4072\u0000\u4073\u0000\u4074\u0000\u4075"+
-        "\u0000\u4076\u0000\u4077\u0000\u0000\u4078\u0000"+
-        "\u4079\u0000\u0000\u0000\u407A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u407B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u407C\u407D\u407E"+
-        "\u0000\u0000\u0000\u0000\u4121\u0000\u0000\u0000"+
-        "\u0000\u4122\u4123\u4124\u4125\u0000\u4126\u0000"+
-        "\u4127\u4128\u0000\u0000\u0000\u4129\u0000\u412A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u412B\u412C\u0000\u0000"+
-        "\u0000\u412D\u412E\u0000\u0000\u412F\u0000\u0000"+
-        "\u4130\u0000\u0000\u0000\u0000\u4131\u0000\u4132"+
-        "\u0000\u0000\u0000\u4133\u0000\u0000\u0000\u4134"+
-        "\u0000\u4135\u0000\u0000\u4136\u0000\u0000\u0000"+
-        "\u4137\u4138\u4139\u0000\u0000\u0000\u0000\u413A"+
-        "\u0000\u0000\u0000\u413B\u413C\u0000\u413D\u0000"+
-        "\u0000\u413E\u0000\u413F\u0000\u0000\u4140\u4141"+
-        "\u0000\u0000\u4142\u0000\u0000\u0000\u4143\u0000"+
-        "\u0000\u4144\u0000\u0000\u0000\u0000\u4145\u0000"+
-        "\u0000\u4146\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4147\u0000\u4148\u4149\u0000\u0000"+
-        "\u0000\u0000\u0000\u414A\u0000\u0000\u0000\u414B"+
-        "\u0000\u414C\u0000\u0000\u0000\u0000\u7441\u0000"+
-        "\u414D\u0000\u414E\u0000\u414F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4150"+
-        "\u4151\u0000\u0000\u0000\u0000\u0000\u0000\u4152"+
-        "\u0000\u0000\u0000\u4153\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4154\u0000\u0000\u4155\u0000\u0000"+
-        "\u0000\u4156\u0000\u0000\u0000\u4157\u0000\u0000"+
-        "\u0000\u0000\u4158\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4159\u0000\u0000\u415A\u0000\u0000"+
-        "\u415B\u0000\u0000\u0000\u0000\u415C\u0000\u0000"+
-        "\u415D\u0000\u0000\u415E\u0000\u0000\u415F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4160\u0000"+
-        "\u0000\u0000\u4161\u4162\u4163\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4164"+
-        "\u0000\u0000\u4165\u0000\u0000\u0000\u0000\u0000"+
-        "\u4166\u4167\u0000\u0000\u0000\u0000\u4168\u0000"+
-        "\u4169\u0000\u0000\u0000\u416A\u0000\u416B\u0000"+
-        "\u416C\u0000\u0000\u0000\u0000\u0000\u0000\u416D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u416E\u0000\u416F\u0000\u4170\u4171\u0000\u0000"+
-        "\u0000\u4172\u0000\u0000\u0000\u0000\u4173\u4174"+
-        "\u4175\u0000\u0000\u0000\u4176\u0000\u0000\u0000"+
-        "\u4177\u4178\u0000\u0000\u0000\u4179\u0000\u0000"+
-        "\u0000\u417A\u417B\u0000\u0000\u417C\u417D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u417E\u4221\u0000"+
-        "\u0000\u4222\u4223\u4224\u4225\u0000\u4226\u0000"+
-        "\u0000\u4227\u4228\u4229\u422A\u0000\u422B\u0000"+
-        "\u422C\u422D\u0000\u422E\u0000\u0000\u0000\u4230"+
-        "\u0000\u422F\u0000\u7442\u0000\u0000\u0000\u0000"+
-        "\u4231\u0000\u0000\u0000\u0000\u4232\u4233\u0000"+
-        "\u0000\u0000\u4234\u0000\u4235\u0000\u4237\u0000"+
-        "\u0000\u4236\u0000\u0000\u0000\u0000\u0000\u4238"+
-        "\u4239\u423A\u0000\u423B\u423C\u0000\u0000\u0000"+
-        "\u423D\u423E\u0000\u0000\u0000\u7443\u0000\u0000"+
-        "\u0000\u0000\u4240\u4241\u4242\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4244\u0000\u4245\u0000\u4247"+
-        "\u4248\u4249\u0000\u424A\u424C\u0000\u4243\u4246"+
-        "\u424B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u424D\u424E\u424F\u0000\u0000"+
-        "\u4250\u0000\u4251\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4252\u4253\u4254\u4255\u0000\u0000\u4256"+
-        "\u4257\u0000\u0000\u0000\u4258\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4259\u0000\u0000"+
-        "\u0000\u425A\u425B\u0000\u0000\u425C\u0000\u0000"+
-        "\u0000\u0000\u0000\u425D\u0000\u0000\u0000\u425E"+
-        "\u425F\u0000\u4260\u4261\u0000\u0000\u0000\u0000"+
-        "\u4262\u0000\u0000\u0000\u4263\u0000\u4264\u4265"+
-        "\u0000\u0000\u0000\u0000\u4266\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4267\u0000\u0000\u0000\u4268"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4269\u0000\u0000\u426A\u426B\u0000\u426C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u426D\u423F\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex2=
-        "\u0000\u0000\u0000\u0000\u0000\u426E\u0000\u426F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4270\u0000"+
-        "\u0000\u0000\u0000\u4271\u0000\u0000\u0000\u0000"+
-        "\u0000\u4272\u0000\u0000\u4273\u0000\u0000\u0000"+
-        "\u4274\u0000\u4275\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4276\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4277\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4278\u0000\u4279"+
-        "\u427A\u0000\u0000\u0000\u427B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u427C\u427D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u427E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4321\u0000"+
-        "\u0000\u0000\u0000\u0000\u4322\u0000\u4323\u0000"+
-        "\u0000\u0000\u0000\u0000\u4324\u0000\u4325\u0000"+
-        "\u0000\u0000\u0000\u4326\u0000\u0000\u0000\u0000"+
-        "\u0000\u4327\u0000\u0000\u4328\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4329\u432A"+
-        "\u0000\u432B\u0000\u432C\u0000\u0000\u432D\u0000"+
-        "\u432E\u432F\u0000\u4330\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4331\u4332\u4333\u0000\u0000\u4334\u0000\u0000"+
-        "\u0000\u0000\u0000\u4335\u4336\u4337\u0000\u0000"+
-        "\u4339\u0000\u433A\u433B\u0000\u433C\u0000\u0000"+
-        "\u433D\u433E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u433F\u0000\u0000\u0000\u0000\u4340"+
-        "\u0000\u4341\u0000\u0000\u4342\u0000\u0000\u0000"+
-        "\u0000\u4343\u0000\u0000\u0000\u0000\u4344\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4345\u0000\u4346\u0000\u0000\u0000\u4347\u4348"+
-        "\u0000\u4338\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u7446\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u434A\u0000\u0000\u0000"+
-        "\u0000\u434B\u0000\u0000\u0000\u434C\u0000\u434D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u434F"+
-        "\u434E\u0000\u0000\u0000\u4350\u4351\u0000\u4352"+
-        "\u4353\u4354\u0000\u4355\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4356\u0000\u0000\u0000\u4357"+
-        "\u0000\u0000\u0000\u0000\u4358\u4359\u0000\u0000"+
-        "\u0000\u0000\u435A\u0000\u435B\u0000\u0000\u0000"+
-        "\u0000\u0000\u4349\u0000\u0000\u435C\u0000\u435D"+
-        "\u435E\u0000\u0000\u435F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4360\u0000\u0000\u4361\u4362"+
-        "\u4363\u4364\u4365\u0000\u0000\u4366\u0000\u0000"+
-        "\u0000\u4367\u4368\u4369\u436A\u0000\u0000\u0000"+
-        "\u0000\u0000\u436B\u0000\u436C\u0000\u436D\u0000"+
-        "\u436E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u436F\u0000"+
-        "\u4370\u0000\u4371\u0000\u4372\u0000\u0000\u0000"+
-        "\u0000\u4373\u0000\u4374\u0000\u4375\u0000\u0000"+
-        "\u0000\u4376\u4377\u0000\u0000\u0000\u4378\u0000"+
-        "\u0000\u0000\u4379\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u437A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u437B\u0000\u0000"+
-        "\u437C\u0000\u0000\u0000\u437D\u0000\u0000\u437E"+
-        "\u4421\u4422\u0000\u4423\u0000\u0000\u4424\u0000"+
-        "\u0000\u4425\u0000\u0000\u4426\u4427\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4428\u0000\u0000"+
-        "\u4429\u0000\u442A\u442B\u442C\u442D\u0000\u0000"+
-        "\u442E\u442F\u0000\u0000\u0000\u4430\u4431\u0000"+
-        "\u0000\u0000\u0000\u4432\u4433\u4434\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4435\u0000"+
-        "\u0000\u4436\u4437\u0000\u0000\u0000\u0000\u0000"+
-        "\u4438\u4439\u0000\u443A\u0000\u0000\u443B\u443C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u443D\u0000\u443E\u0000\u443F\u0000\u0000"+
-        "\u4440\u0000\u0000\u4441\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4442\u0000\u0000\u4443\u0000\u0000"+
-        "\u0000\u4444\u0000\u0000\u0000\u0000\u4445\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4446"+
-        "\u0000\u0000\u0000\u4447\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4448\u4449\u444A\u444B\u0000"+
-        "\u444C\u444D\u0000\u0000\u444E\u0000\u0000\u0000"+
-        "\u444F\u4450\u4451\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4452\u4453\u0000\u0000\u0000\u4454"+
-        "\u4455\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4456\u0000\u0000"+
-        "\u0000\u0000\u4457\u0000\u0000\u0000\u4458\u0000"+
-        "\u4459\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u445A\u0000\u0000\u0000\u445B\u445C\u0000"+
-        "\u445D\u0000\u0000\u445E\u0000\u445F\u0000\u4460"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4461"+
-        "\u4462\u0000\u4463\u0000\u4464\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4465\u0000\u0000"+
-        "\u4466\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4467\u0000\u0000\u0000\u0000\u4468\u4469"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u446A\u0000\u0000\u446B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u446C\u446D"+
-        "\u0000\u446E\u0000\u446F\u0000\u4470\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4471\u0000"+
-        "\u4472\u4473\u0000\u4474\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4475"+
-        "\u0000\u4476\u0000\u0000\u0000\u4477\u0000\u0000"+
-        "\u0000\u0000\u4478\u0000\u0000\u4479\u0000\u0000"+
-        "\u447A\u0000\u0000\u0000\u447B\u0000\u0000\u0000"+
-        "\u447C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u447D\u0000\u447E\u0000\u4521\u0000\u0000\u4522"+
-        "\u0000\u0000\u0000\u4523\u0000\u0000\u4524\u4525"+
-        "\u0000\u0000\u0000\u0000\u0000\u4526\u4527\u0000"+
-        "\u0000\u4528\u4529\u0000\u0000\u0000\u452A\u0000"+
-        "\u452B\u452C\u452D\u0000\u0000\u452E\u452F\u0000"+
-        "\u0000\u0000\u0000\u4530\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4531\u0000\u0000\u4532"+
-        "\u0000\u0000\u4533\u7449\u0000\u0000\u0000\u0000"+
-        "\u0000\u4534\u0000\u4535\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4536\u0000"+
-        "\u0000\u4537\u0000\u4538\u0000\u0000\u4539\u453A"+
-        "\u0000\u453B\u0000\u453C\u0000\u0000\u0000\u0000"+
-        "\u0000\u453D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u453E\u0000\u453F\u4540\u4541"+
-        "\u0000\u0000\u0000\u0000\u0000\u4542\u0000\u0000"+
-        "\u0000\u0000\u0000\u4543\u0000\u0000\u0000\u4544"+
-        "\u4545\u4546\u0000\u0000\u4547\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4548\u4549\u454A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u454B\u0000"+
-        "\u454D\u454C\u0000\u0000\u454E\u0000\u0000\u0000"+
-        "\u454F\u0000\u0000\u0000\u4550\u4551\u4552\u0000"+
-        "\u0000\u0000\u0000\u0000\u4553\u4554\u0000\u0000"+
-        "\u0000\u0000\u744A\u0000\u4555\u0000\u0000\u4556"+
-        "\u0000\u0000\u0000\u0000\u4557\u0000\u0000\u0000"+
-        "\u4558\u4559\u455A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u455B\u455C\u0000\u0000"+
-        "\u0000\u0000\u455D\u455E\u0000\u0000\u455F\u4560"+
-        "\u0000\u4561\u0000\u0000\u0000\u0000\u0000\u4562"+
-        "\u4563\u4564\u0000\u0000\u0000\u0000\u0000\u4565"+
-        "\u0000\u0000\u0000\u4566\u0000\u0000\u4567\u0000"+
-        "\u0000\u0000\u0000\u0000\u4568\u0000\u0000\u0000"+
-        "\u4569\u0000\u0000\u456A\u456B\u0000\u0000\u456C"+
-        "\u0000\u0000\u0000\u0000\u0000\u456D\u456E\u0000"+
-        "\u0000\u0000\u0000\u456F\u0000\u0000\u0000\u4570"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4571\u0000"+
-        "\u0000\u0000\u4572\u0000\u0000\u4573\u0000\u0000"+
-        "\u0000\u0000\u4574\u0000\u0000\u0000\u4575\u0000"+
-        "\u4576\u0000\u0000\u0000\u0000\u4577\u0000\u0000"+
-        "\u4578\u0000\u0000\u0000\u0000\u0000\u0000\u4579"+
-        "\u0000\u0000\u0000\u457A\u0000\u0000\u457B\u0000"+
-        "\u457C\u0000\u0000\u0000\u0000\u457D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u457E\u4621\u0000"+
-        "\u0000\u0000\u4622\u0000\u0000\u4623\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4624"+
-        "\u0000\u0000\u0000\u4625\u0000\u0000\u0000\u4626"+
-        "\u4627\u0000\u4628\u4629\u0000\u0000\u0000\u0000"+
-        "\u462A\u462B\u0000\u0000\u462C\u462D\u462E\u0000"+
-        "\u462F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4630\u4631\u0000\u0000\u0000\u4632\u4633\u0000"+
-        "\u0000\u0000\u0000\u4634\u4635\u0000\u0000\u0000"+
-        "\u0000\u4636\u0000\u0000\u4637\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4638\u0000"+
-        "\u0000\u0000\u4639\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u463A\u0000\u463B\u0000\u0000\u463C\u463D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u463E\u0000"+
-        "\u0000\u463F\u0000\u0000\u0000\u0000\u0000\u4640"+
-        "\u0000\u4641\u0000\u0000\u0000\u0000\u0000\u4642"+
-        "\u0000\u0000\u4643\u0000\u4644\u4645\u0000\u0000"+
-        "\u0000\u4646\u0000\u0000\u0000\u4647\u4648\u0000"+
-        "\u4649\u0000\u464A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u464B\u0000\u0000\u0000\u0000\u0000\u464C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u464D\u464E"+
-        "\u464F\u0000\u0000\u0000\u4650\u0000\u4651\u0000"+
-        "\u0000\u0000\u0000\u4652\u0000\u4653\u4654\u0000"+
-        "\u0000\u0000\u4655\u4656\u0000\u0000\u0000\u4657"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4658\u4659\u0000\u465A\u0000\u465B"+
-        "\u0000\u0000\u465C\u0000\u465D\u0000\u0000\u0000"+
-        "\u0000\u465E\u0000\u465F\u4660\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4736"+
-        "\u0000\u0000\u0000\u4661\u0000\u4662\u0000\u4663"+
-        "\u0000\u0000\u0000\u0000\u4664\u0000\u4665\u0000"+
-        "\u4666\u4667\u0000\u4668\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4669\u466A\u466B"+
-        "\u0000\u466C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u466D\u466E\u0000\u466F"+
-        "\u4670\u0000\u0000\u0000\u4671\u0000\u0000\u4672"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4673\u0000\u4674\u0000\u4675\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4676\u0000\u0000\u0000\u4677\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4678\u0000\u4679"+
-        "\u467A\u467B\u467C\u0000\u467D\u0000\u467E\u0000"+
-        "\u0000\u0000\u4721\u0000\u4722\u0000\u0000\u0000"+
-        "\u4723\u0000\u0000\u0000\u0000\u0000\u0000\u4724"+
-        "\u0000\u4725\u0000\u4726\u4727\u0000\u4728\u0000"+
-        "\u0000\u0000\u4729\u0000\u472A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u472B\u0000\u0000\u472C"+
-        "\u0000\u0000\u472D\u0000\u0000\u0000\u472E\u472F"+
-        "\u0000\u4730\u0000\u4731\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4732\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4733\u4734"+
-        "\u4735\u0000\u0000\u0000\u0000\u0000\u4737\u4738"+
-        "\u0000\u4739\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u473A\u0000\u0000\u473B\u0000\u0000\u473C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u473D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u473E\u473F"+
-        "\u0000\u4740\u0000\u0000\u0000\u4741\u0000\u4742"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4743"+
-        "\u4744\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4745\u0000\u0000\u0000"+
-        "\u0000\u0000\u4746\u0000\u0000\u0000\u0000\u4747"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4748\u4749\u0000\u474A\u0000\u474B\u474C"+
-        "\u474D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u474E\u0000\u474F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4750\u0000\u0000\u4751"+
-        "\u0000\u4752\u0000\u0000\u0000\u4753\u0000\u4754"+
-        "\u0000\u0000\u0000\u0000\u4755\u0000\u0000\u0000"+
-        "\u4756\u0000\u4757\u0000\u0000\u0000\u4758\u4759"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u475A\u0000"+
-        "\u0000\u0000\u0000\u475B\u0000\u475C\u0000\u475D"+
-        "\u475E\u0000\u475F\u0000\u0000\u4760\u0000\u0000"+
-        "\u0000\u4761\u0000\u0000\u0000\u0000\u0000\u4762"+
-        "\u4763\u0000\u744C\u0000\u4764\u0000\u4765\u0000"+
-        "\u744B\u0000\u0000\u0000\u4766\u0000\u0000\u0000"+
-        "\u4767\u0000\u0000\u0000\u4768\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4769\u0000"+
-        "\u0000\u0000\u476A\u0000\u0000\u0000\u0000\u476B"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u476C\u0000\u0000\u0000\u476D\u0000"+
-        "\u0000\u476E\u0000\u476F\u4770\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4771\u4772\u0000\u0000"+
-        "\u4773\u4774\u0000\u4775\u0000\u0000\u0000\u4776"+
-        "\u0000\u4777\u4778\u4779\u477A\u0000\u0000\u477B"+
-        "\u0000\u0000\u0000\u0000\u477C\u477D\u477E\u0000"+
-        "\u0000\u0000\u4821\u4822\u0000\u0000\u0000\u0000"+
-        "\u4823\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4824\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4825\u0000\u4826\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4827\u0000\u0000"+
-        "\u0000\u0000\u0000\u4828\u0000\u0000\u0000\u0000"+
-        "\u0000\u4829\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u482A\u0000\u0000\u0000\u0000\u0000\u0000\u482B"+
-        "\u0000\u0000\u0000\u0000\u0000\u482C\u482D\u0000"+
-        "\u0000\u482E\u0000\u482F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4830\u0000\u0000\u0000\u4831"+
-        "\u4832\u4833\u0000\u4834\u0000\u0000\u0000\u4835"+
-        "\u4836\u0000\u4837\u0000\u0000\u4838\u4839\u483A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u483B\u0000\u483C\u483D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u483E\u0000\u483F\u0000\u4840\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4841\u0000\u0000\u0000"+
-        "\u4842\u0000\u4843\u0000\u4844\u4845\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4846\u0000"+
-        "\u4847\u0000\u4848\u4849\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u484A\u0000"+
-        "\u0000\u484B\u484C\u0000\u0000\u4853\u0000\u484D"+
-        "\u484E\u0000\u0000\u484F\u0000\u0000\u4850\u0000"+
-        "\u0000\u0000\u0000\u4851\u4852\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4854"+
-        "\u0000\u4855\u4856\u4857\u0000\u0000\u0000\u4858"+
-        "\u0000\u4859\u485A\u0000\u0000\u485B\u485C\u0000"+
-        "\u0000\u485D\u485E\u0000\u0000\u0000\u0000\u0000"+
-        "\u485F\u0000\u0000\u0000\u4860\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4861\u4862\u0000"+
-        "\u0000\u0000\u0000\u4863\u0000\u0000\u0000\u4864"+
-        "\u4865\u0000\u0000\u4866\u4867\u4868\u0000\u0000"+
-        "\u4869\u0000\u486A\u486B\u486C\u0000\u486D\u0000"+
-        "\u0000\u0000\u486E\u0000\u0000\u0000\u0000\u486F"+
-        "\u4870\u0000\u0000\u0000\u0000\u4871\u4872\u4873"+
-        "\u4874\u0000\u0000\u0000\u0000\u0000\u4875\u4876"+
-        "\u4877\u0000\u0000\u0000\u0000\u4878\u4879\u0000"+
-        "\u0000\u0000\u0000\u0000\u487A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u487B\u0000\u487C"+
-        "\u487D\u0000\u487E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4921\u0000\u0000\u0000\u4922\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4923\u4924\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4925\u0000\u0000\u0000\u0000\u4926\u0000\u0000"+
-        "\u0000\u4927\u0000\u0000\u4928\u4929\u0000\u0000"+
-        "\u492A\u0000\u0000\u0000\u0000\u492B\u492C\u492D"+
-        "\u0000\u0000\u0000\u0000\u0000\u492E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u492F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4930\u0000\u0000\u4931\u0000\u0000\u0000\u0000"+
-        "\u744D\u0000\u0000\u0000\u0000\u0000\u0000\u4932"+
-        "\u0000\u0000\u0000\u0000\u4933\u0000\u0000\u4934"+
-        "\u0000\u4935\u0000\u0000\u4936\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4937\u4938\u0000\u0000\u0000"+
-        "\u4939\u493A\u493B\u493C\u0000\u0000\u4941\u0000"+
-        "\u0000\u0000\u0000\u0000\u493D\u493E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u493F\u4940\u0000"+
-        "\u0000\u0000\u0000\u0000\u4942\u4943\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4944\u0000\u4945\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4946\u4947\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4948\u0000"+
-        "\u0000\u4949\u0000\u0000\u0000\u494A\u494B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u494C\u494D\u494E\u494F"+
-        "\u4950\u0000\u0000\u4951\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4952\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4953\u0000\u0000\u0000\u0000"+
-        "\u4954\u4955\u0000\u0000\u4956\u0000\u0000\u4957"+
-        "\u0000\u0000\u0000\u742E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4958\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4959\u0000\u495A\u495B\u495C\u495D\u0000"+
-        "\u495E\u0000\u0000\u0000\u495F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4960\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4961\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4962\u4963\u4964\u4965\u4966"+
-        "\u0000\u0000\u0000\u4967\u4968\u0000\u0000\u4969"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u496A\u0000"+
-        "\u496B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u496C\u0000\u496D\u0000\u496E"+
-        "\u496F\u4970\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4971\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4972\u0000\u0000\u0000\u4973\u4974\u4975"+
-        "\u0000\u0000\u4976\u4977\u0000\u0000\u0000\u0000"+
-        "\u4978\u0000\u4979\u0000\u0000\u0000\u0000\u497A"+
-        "\u0000\u0000\u497B\u0000\u497C\u0000\u497D\u0000"+
-        "\u497E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4A21\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A22\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4A23\u0000\u0000\u0000\u0000\u4A24\u0000\u4A25"+
-        "\u0000\u0000\u0000\u0000\u4A26\u0000\u0000\u0000"+
-        "\u0000\u0000\u4A27\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4A28\u4A29\u0000\u0000\u0000\u0000"+
-        "\u4A2A\u0000\u4A2B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4A2C"+
-        "\u4A2D\u0000\u4A2E\u4A2F\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4A30\u0000\u0000\u0000\u0000\u4A31"+
-        "\u4A32\u4A33\u0000\u0000\u4A34\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A35\u4A36\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A37\u0000\u0000\u4A38\u0000"+
-        "\u0000\u4A39\u4A3A\u0000\u4A3B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4A3C\u0000\u0000\u0000\u0000\u0000\u4A3D\u0000"+
-        "\u4A3E\u0000\u0000\u0000\u0000\u0000\u0000\u4A3F"+
-        "\u4A40\u4A41\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A42\u0000\u0000\u0000\u4A43"+
-        "\u0000\u0000\u4A44\u0000\u0000\u4A45\u0000\u4A46"+
-        "\u0000\u0000\u0000\u0000\u4A47\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A48\u0000\u0000\u0000\u4A49"+
-        "\u0000\u0000\u0000\u0000\u4A4A\u0000\u0000\u0000"+
-        "\u4A4B\u4A4C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4A4D\u4A4E\u4A4F\u0000\u4A50\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4A51\u4A52"+
-        "\u4A53\u0000\u0000\u4A54\u0000\u4A55\u4A56\u0000"+
-        "\u0000\u0000\u4A57\u0000\u4A58\u0000\u4A59\u0000"+
-        "\u4A5A\u0000\u0000\u4A5B\u0000\u0000\u0000\u0000"+
-        "\u4A5C\u0000\u0000\u4A5D\u0000\u0000\u4A5E\u4A5F"+
-        "\u0000\u4A60\u0000\u0000\u0000\u0000\u0000\u4A61"+
-        "\u4A62\u0000\u0000\u4A63\u4A64\u0000\u0000\u4A65"+
-        "\u0000\u0000\u0000\u0000\u4A66\u0000\u0000\u0000"+
-        "\u0000\u4A67\u0000\u0000\u0000\u4A68\u4A69\u0000"+
-        "\u0000\u0000\u0000\u4A6A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A6B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4A6C\u0000\u0000\u0000\u0000\u4A6D\u4A6E\u0000"+
-        "\u0000\u4A6F\u0000\u0000\u4A70\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4A71\u0000"+
-        "\u0000\u4A72\u0000\u0000\u0000\u0000\u0000\u4A73"+
-        "\u0000\u4A74\u0000\u0000\u4A75\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4A76\u4A77\u0000"+
-        "\u4A78\u0000\u0000\u0000\u0000\u0000\u0000\u4A79"+
-        "\u0000\u0000\u0000\u0000\u0000\u4A7A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4A7B\u4A7C\u0000\u0000\u0000"+
-        "\u0000\u0000\u4A7D\u4A7E\u0000\u0000\u4B21\u0000"+
-        "\u0000\u0000\u4B22\u0000\u4B23\u4B24\u0000\u4B25"+
-        "\u0000\u0000\u0000\u4B26\u0000\u4B27\u0000\u0000"+
-        "\u0000\u0000\u4B28\u4B29\u0000\u0000\u0000\u0000"+
-        "\u4B2A\u4B2B\u0000\u0000\u0000\u0000\u4B2C\u0000"+
-        "\u0000\u0000\u4B2D\u0000\u4B2E\u0000\u0000\u4B2F"+
-        "\u4B30\u0000\u0000\u0000\u4B31\u0000\u0000\u0000"+
-        "\u0000\u4B32\u4B33\u0000\u0000\u4B34\u0000\u0000"+
-        "\u0000\u0000\u4B35\u4B36\u0000\u4B37\u0000\u0000"+
-        "\u0000\u0000\u0000\u4B38\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4B39\u0000\u0000"+
-        "\u4B3A\u0000\u4B3B\u0000\u0000\u0000\u4B3C\u0000"+
-        "\u4B3D\u0000\u0000\u0000\u0000\u4B3E\u4B3F\u4B40"+
-        "\u4B41\u0000\u0000\u0000\u0000\u0000\u4B42\u4B43"+
-        "\u0000\u4B44\u0000\u4B45\u4B46\u0000\u4B47\u4B48"+
-        "\u0000\u4B49\u0000\u0000\u0000\u0000\u0000\u4B4A"+
-        "\u0000\u4B4B\u0000\u0000\u4B4C\u0000\u0000\u0000"+
-        "\u4B4D\u4B4E\u0000\u4B4F\u0000\u4B50\u4B51\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4B52\u0000"+
-        "\u4B53\u0000\u0000\u4B54\u0000\u4B55\u0000\u4B56"+
-        "\u4B57\u0000\u0000\u0000\u4B58\u0000\u4B59\u4B5A"+
-        "\u4B5B\u0000\u4B5C\u0000\u0000\u4B5D\u4B5E\u0000"+
-        "\u0000\u0000\u4B5F\u4B60\u0000\u4B61\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4B62\u0000\u4B63"+
-        "\u0000\u4B64\u0000\u0000\u4B65\u4B66\u0000\u4B67"+
-        "\u0000\u0000\u0000\u0000\u0000\u4B68\u4B69\u0000"+
-        "\u0000\u4B6A\u0000\u4B6B\u4B6C\u0000\u0000\u4B6D"+
-        "\u0000\u0000\u4B6E\u4B6F\u0000\u0000\u4B70\u0000"+
-        "\u0000\u4B71\u0000\u0000\u0000\u4B72\u0000\u0000"+
-        "\u0000\u4B73\u0000\u4B74\u0000\u0000\u4B75\u4B76"+
-        "\u0000\u4B77\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4B78\u4B79\u0000\u4B7A"+
-        "\u0000\u4B7B\u4B7C\u4B7D\u0000\u4B7E\u0000\u4C21"+
-        "\u4C22\u4C23\u0000\u0000\u4C24\u0000\u0000\u4C25"+
-        "\u0000\u0000\u4C26\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4C27\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C28\u4C29\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4C2A\u0000\u4C2B\u0000"+
-        "\u4C2C\u4C2D\u4C2E\u4C2F\u4C30\u4C31\u4C32\u4C33"+
-        "\u4C34\u4C35\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4C36\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C37\u0000\u0000\u4C38\u4C39\u0000\u4C3A\u4C3B"+
-        "\u0000\u0000\u0000\u4C3C\u0000\u4C3D\u0000\u0000"+
-        "\u0000\u4C3E\u4C3F\u0000\u0000\u0000\u0000\u4C40"+
-        "\u0000\u0000\u0000\u0000\u0000\u4C41\u0000\u0000"+
-        "\u0000\u0000\u4C42\u0000\u0000\u0000\u4C43\u4C44"+
-        "\u4C45\u0000\u0000\u4C46\u0000\u4C47\u4C48\u0000"+
-        "\u0000\u4C49\u4C4A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C4B\u4C4C\u0000\u0000\u0000\u4C4D\u4C4E\u4C4F"+
-        "\u0000\u4C50\u0000\u0000\u0000\u0000\u0000\u4C51"+
-        "\u4C52\u4C53\u4C54\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C55\u4C56\u4C57\u0000\u4C58\u0000\u0000\u4C59"+
-        "\u4C5A\u4C5B\u0000\u4C5C\u0000\u0000\u4C5D\u0000"+
-        "\u4C5E\u4C5F\u4C60\u4C61\u0000\u0000\u4C62\u4C63"+
-        "\u0000\u4C64\u4C65\u0000\u0000\u4C66\u0000\u0000"+
-        "\u0000\u4C67\u0000\u4C68\u0000\u0000\u0000\u4C69"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4C6A\u4C6B\u0000\u0000\u4C6C\u0000\u0000\u0000"+
-        "\u4C6D\u0000\u0000\u4C6E\u0000\u0000\u0000\u0000"+
-        "\u4C6F\u0000\u4C70\u4C71\u0000\u0000\u4C72\u4C73"+
-        "\u0000\u0000\u0000\u0000\u4C74\u0000\u0000\u0000"+
-        "\u4C75\u0000\u4C76\u4C77\u0000\u0000\u0000\u4C78"+
-        "\u0000\u0000\u0000\u0000\u4C79\u0000\u0000\u0000"+
-        "\u0000\u0000\u4C7A\u4C7B\u4C7C\u0000\u0000\u4C7D"+
-        "\u0000\u7450\u0000\u0000\u0000\u0000\u4C7E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D21\u0000\u0000\u0000\u4D22\u4D23"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4D24\u4D25\u0000\u0000\u4D26\u0000\u0000\u4D27"+
-        "\u0000\u4D28\u4D29\u0000\u0000\u0000\u0000\u4D2A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4D2B\u0000"+
-        "\u0000\u4D2C\u0000\u0000\u0000\u4D2D\u4D2E\u4D2F"+
-        "\u4D30\u0000\u0000\u4D31\u0000\u0000\u0000\u4D32"+
-        "\u4D33\u0000\u0000\u0000\u0000\u0000\u4D34\u0000"+
-        "\u4D35\u0000\u4D36\u0000\u0000\u0000\u0000\u4D37"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4D38\u4D39"+
-        "\u0000\u4D3A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4D3B"+
-        "\u0000\u4D3C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4D3D\u4D3E\u4D3F\u4D40\u4D41\u4D42\u0000"+
-        "\u0000\u4D43\u0000\u0000\u0000\u4D44\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4D45\u0000\u4D46\u4D47\u0000\u4D48\u0000\u0000"+
-        "\u0000\u4D49\u0000\u0000\u4D4A\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D4B\u0000\u4D4C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4D4D\u0000\u0000\u0000"+
-        "\u0000\u0000\u4D4E\u0000\u0000\u0000\u0000\u4D4F"+
-        "\u4D50\u4D51\u0000\u0000\u4D52\u0000\u4D53\u0000"+
-        "\u0000\u0000\u0000\u0000\u4D54\u0000\u4D55\u4D56"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4D57"+
-        "\u0000\u0000\u0000\u0000\u4D58\u0000\u0000\u4D59"+
-        "\u4D5A\u4D5B\u0000\u0000\u4D5C\u0000\u0000\u4D5D"+
-        "\u0000\u0000\u0000\u0000\u4D5E\u0000\u4D5F\u4D60"+
-        "\u0000\u4D61\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4D62\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4D63\u0000\u4D64\u4D65\u4D66\u0000\u0000\u4D67"+
-        "\u4D68\u0000\u4D69\u0000\u4D6A\u0000\u0000\u4D6B"+
-        "\u0000\u0000\u4D6C\u4D6D\u0000\u4D6E\u4D6F\u0000"+
-        "\u0000\u4D70\u0000\u4D71\u4D72\u4D73\u4D74\u0000"+
-        "\u0000\u0000\u0000\u4D75\u0000\u4D76\u4D77\u0000"+
-        "\u0000\u4D78\u0000\u0000\u0000\u4D79\u0000\u0000"+
-        "\u0000\u0000\u4D7A\u4D7B\u0000\u4D7C\u0000\u0000"+
-        "\u4D7D\u4D7E\u4E21\u0000\u4E22\u0000\u0000\u0000"+
-        "\u4E24\u4E25\u0000\u4E26\u4E27\u4E28\u0000\u0000"+
-        "\u0000\u4E29\u4E23\u4E2A\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4E2B\u0000\u0000"+
-        "\u0000\u4E2C\u0000\u0000\u0000\u0000\u0000\u4E2D"+
-        "\u0000\u0000\u0000\u0000\u4E2E\u4E2F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4E30\u4E31\u4E32"+
-        "\u0000\u4E33\u0000\u0000\u4E34\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4E35\u7451\u0000\u0000\u4E36\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4E37\u4E38\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4E39\u0000\u0000"+
-        "\u0000\u0000\u0000\u4E3A\u4E3B\u4E3C\u7452\u4E3D"+
-        "\u4E3E\u0000\u4E3F\u4E40\u4E41\u4E42\u4E43\u4E44"+
-        "\u4E45\u0000\u4E46\u0000\u0000\u4E47\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4E48\u0000\u0000"+
-        "\u0000\u4E49\u0000\u0000\u0000\u4E4A\u0000\u0000"+
-        "\u0000\u4E4B\u0000\u4E4C\u4E4D\u0000\u4E4E\u0000"+
-        "\u0000\u0000\u0000\u0000\u4E4F\u0000\u0000\u0000"+
-        "\u0000\u4E50\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u4E51\u0000\u0000\u0000\u0000\u0000\u4E52\u0000"+
-        "\u4E53\u0000\u0000\u0000\u4E54\u0000\u0000\u0000"+
-        "\u4E55\u4E56\u0000\u0000\u0000\u0000\u4E57\u0000"+
-        "\u0000\u4E58\u0000\u0000\u4E59\u0000\u0000\u0000";
-
-    private final static String innerIndex3=
-        "\u4E5A\u0000\u0000\u0000\u0000\u0000\u4E5B\u0000"+
-        "\u0000\u0000\u4E5C\u0000\u0000\u0000\u4E5D\u0000"+
-        "\u0000\u0000\u4E5E\u0000\u4E5F\u4E60\u0000\u4E61"+
-        "\u0000\u4E62\u4E63\u0000\u4E64\u0000\u0000\u0000"+
-        "\u0000\u0000\u4E65\u0000\u0000\u0000\u0000\u0000"+
-        "\u4E66\u0000\u0000\u0000\u0000\u4E67\u4E68\u4E69"+
-        "\u0000\u0000\u0000\u0000\u4E6A\u4E6B\u4E6C\u0000"+
-        "\u0000\u4E6D\u0000\u0000\u0000\u4E6E\u4E6F\u0000"+
-        "\u0000\u0000\u4E70\u0000\u0000\u4E71\u4E72\u0000"+
-        "\u0000\u0000\u4E73\u0000\u0000\u4E74\u4E75\u4E76"+
-        "\u0000\u0000\u4E77\u0000\u0000\u0000\u4E78\u4E79"+
-        "\u0000\u0000\u0000\u0000\u4E7A\u0000\u4E7B\u4E7C"+
-        "\u4E7D\u0000\u4E7E\u0000\u4F21\u0000\u0000\u4F22"+
-        "\u0000\u0000\u4F23\u0000\u4F24\u0000\u0000\u0000"+
-        "\u4F25\u0000\u4F26\u4F27\u4F28\u0000\u0000\u0000"+
-        "\u0000\u0000\u4F29\u0000\u0000\u4F2A\u0000\u0000"+
-        "\u4F2B\u0000\u0000\u0000\u4F2C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4F2D\u4F2E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4F2F\u4F30\u4F31\u0000"+
-        "\u0000\u0000\u4F32\u0000\u0000\u0000\u0000\u4F33"+
-        "\u0000\u0000\u4F34\u0000\u0000\u0000\u0000\u4F35"+
-        "\u0000\u0000\u4F36\u0000\u0000\u0000\u4F37\u4F38"+
-        "\u0000\u4F39\u0000\u0000\u0000\u4F3A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u4F3B\u0000"+
-        "\u0000\u0000\u0000\u4F3C\u0000\u0000\u0000\u0000"+
-        "\u0000\u4F3D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u4F3E\u4F3F\u0000\u0000\u4F40\u0000\u0000"+
-        "\u0000\u4F41\u0000\u0000\u0000\u0000\u4F42\u4F43"+
-        "\u4F44\u0000\u0000\u0000\u4F45\u0000\u4F46\u0000"+
-        "\u0000\u0000\u4F47\u0000\u4F48\u0000\u0000\u0000"+
-        "\u4F49\u4F4A\u0000\u0000\u4F4B\u0000\u0000\u0000"+
-        "\u4F4C\u0000\u0000\u4F4D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4F4E\u4F4F\u0000"+
-        "\u0000\u4F50\u0000\u0000\u0000\u4F51\u4F52\u0000"+
-        "\u0000\u4F53\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4F54\u0000\u0000"+
-        "\u0000\u4F55\u4F56\u4F57\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u4F58\u4F59\u0000"+
-        "\u4F5A\u0000\u0000\u0000\u0000\u4F5B\u0000\u4F5C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u4F5D\u4F5E\u0000\u0000\u4F5F"+
-        "\u4F60\u0000\u0000\u0000\u4F61\u0000\u4F62\u0000"+
-        "\u0000\u0000\u4F63\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u4F64\u0000\u4F65\u0000"+
-        "\u4F66\u4F67\u0000\u4F68\u4F69\u0000\u0000\u0000"+
-        "\u4F6A\u0000\u4F6B\u0000\u0000\u0000\u4F6C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4F6D\u0000\u0000\u0000\u4F6E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u4F6F\u0000\u0000\u0000\u0000\u4F70"+
-        "\u0000\u0000\u0000\u0000\u4F71\u0000\u0000\u0000"+
-        "\u4F72\u0000\u0000\u0000\u0000\u4F74\u4F75\u4F76"+
-        "\u0000\u4F73\u0000\u0000\u4F77\u0000\u0000\u0000"+
-        "\u4F78\u0000\u0000\u0000\u4F79\u4F7A\u0000\u0000"+
-        "\u4F7B\u4F7C\u4F7D\u4F7E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5021\u0000\u5022\u0000\u5023"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5024"+
-        "\u5025\u5026\u0000\u0000\u5027\u0000\u5028\u0000"+
-        "\u0000\u0000\u5029\u502A\u0000\u502B\u502C\u0000"+
-        "\u0000\u0000\u0000\u502E\u0000\u0000\u0000\u502F"+
-        "\u5030\u5031\u0000\u0000\u502D\u0000\u5032\u0000"+
-        "\u0000\u0000\u5033\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5034\u5035\u0000\u0000\u5037\u5038"+
-        "\u0000\u0000\u5039\u503A\u0000\u0000\u0000\u503B"+
-        "\u5036\u0000\u0000\u0000\u0000\u0000\u503C\u0000"+
-        "\u0000\u0000\u0000\u0000\u503D\u0000\u0000\u0000"+
-        "\u503E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u503F\u0000\u5040\u0000\u5041\u5042"+
-        "\u5043\u0000\u0000\u0000\u0000\u5044\u0000\u5045"+
-        "\u0000\u5046\u0000\u0000\u0000\u5047\u0000\u0000"+
-        "\u7454\u5048\u0000\u0000\u5049\u504A\u0000\u0000"+
-        "\u0000\u0000\u0000\u504B\u0000\u504C\u0000\u504D"+
-        "\u0000\u0000\u0000\u0000\u504E\u504F\u5050\u0000"+
-        "\u0000\u0000\u5051\u5052\u0000\u0000\u0000\u5053"+
-        "\u0000\u5054\u0000\u0000\u5055\u0000\u0000\u0000"+
-        "\u5056\u0000\u0000\u5057\u5058\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5059"+
-        "\u0000\u505A\u0000\u505B\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u505C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u505D\u0000\u505E\u505F\u0000\u5060\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5061\u5062\u0000\u0000\u0000"+
-        "\u0000\u5063\u0000\u5064\u5065\u5066\u5067\u0000"+
-        "\u5068\u0000\u0000\u5069\u506A\u0000\u0000\u0000"+
-        "\u0000\u506B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u506C\u506D\u0000\u506E\u0000\u0000\u0000\u506F"+
-        "\u0000\u5070\u0000\u0000\u5071\u0000\u0000\u0000"+
-        "\u5072\u0000\u0000\u5073\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5074\u0000\u5075\u0000\u0000\u5076"+
-        "\u5077\u0000\u5078\u0000\u0000\u0000\u0000\u5079"+
-        "\u0000\u0000\u0000\u0000\u507A\u0000\u507B\u0000"+
-        "\u0000\u0000\u507C\u0000\u0000\u507D\u507E\u0000"+
-        "\u5121\u0000\u5122\u0000\u0000\u5123\u0000\u0000"+
-        "\u0000\u0000\u5124\u5125\u0000\u5126\u0000\u0000"+
-        "\u0000\u5127\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5128\u0000\u0000\u0000\u5129\u0000\u0000\u0000"+
-        "\u0000\u0000\u512A\u512B\u0000\u0000\u0000\u512C"+
-        "\u0000\u512D\u512E\u0000\u512F\u0000\u0000\u0000"+
-        "\u0000\u5130\u0000\u0000\u0000\u5131\u0000\u0000"+
-        "\u0000\u0000\u0000\u5132\u0000\u0000\u5133\u0000"+
-        "\u0000\u5134\u0000\u0000\u0000\u0000\u0000\u5135"+
-        "\u0000\u0000\u0000\u5136\u0000\u5137\u0000\u5138"+
-        "\u5139\u0000\u0000\u0000\u513A\u513B\u0000\u0000"+
-        "\u513C\u513D\u513E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u513F\u5140\u0000\u5141"+
-        "\u5142\u0000\u0000\u0000\u5143\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5144\u5145\u0000"+
-        "\u0000\u5146\u0000\u0000\u5147\u5148\u0000\u5149"+
-        "\u514A\u0000\u0000\u0000\u0000\u514B\u0000\u514C"+
-        "\u0000\u0000\u514D\u0000\u0000\u514E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u514F\u0000\u0000"+
-        "\u5150\u0000\u0000\u0000\u0000\u0000\u5151\u0000"+
-        "\u5152\u0000\u5153\u0000\u0000\u5154\u5155\u0000"+
-        "\u0000\u0000\u5156\u5157\u0000\u0000\u0000\u0000"+
-        "\u5158\u5159\u0000\u0000\u515A\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u515B\u0000"+
-        "\u515C\u0000\u0000\u515D\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u515E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u515F\u0000\u5160\u0000\u0000"+
-        "\u0000\u5161\u0000\u5162\u5163\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5164\u0000"+
-        "\u0000\u5165\u0000\u0000\u5166\u0000\u5167\u0000"+
-        "\u0000\u5168\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5169\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7459"+
-        "\u516A\u516B\u0000\u516C\u516D\u0000\u0000\u0000"+
-        "\u0000\u516E\u0000\u0000\u516F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5170\u0000\u5171\u5172\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5173"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5174\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5175"+
-        "\u0000\u0000\u0000\u5176\u0000\u0000\u0000\u5177"+
-        "\u0000\u5178\u5179\u517A\u0000\u517B\u517C\u517D"+
-        "\u517E\u5221\u0000\u0000\u5222\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5223\u0000\u5224"+
-        "\u5225\u5226\u0000\u0000\u0000\u0000\u0000\u5227"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5228\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5229\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u522A\u0000\u0000\u0000\u522B\u0000\u522C\u0000"+
-        "\u0000\u522D\u522E\u0000\u0000\u522F\u0000\u5230"+
-        "\u0000\u0000\u5231\u5232\u0000\u0000\u0000\u5233"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5234\u0000\u0000\u0000"+
-        "\u0000\u5235\u0000\u0000\u0000\u0000\u5236\u0000"+
-        "\u5237\u5238\u0000\u0000\u0000\u0000\u5239\u0000"+
-        "\u0000\u0000\u0000\u523A\u0000\u0000\u523B\u0000"+
-        "\u523C\u0000\u0000\u0000\u0000\u523D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u523E\u0000\u0000\u523F"+
-        "\u5240\u0000\u5241\u0000\u0000\u5242\u5243\u0000"+
-        "\u0000\u0000\u5244\u5245\u5246\u5247\u0000\u0000"+
-        "\u0000\u0000\u5248\u0000\u0000\u5249\u0000\u0000"+
-        "\u524A\u0000\u524B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u524C\u0000\u524D\u524E"+
-        "\u0000\u524F\u5250\u5251\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5252\u0000\u5253\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5254\u0000\u5255\u5256\u0000\u0000"+
-        "\u5257\u5258\u5259\u0000\u525A\u0000\u525B\u0000"+
-        "\u0000\u525C\u525D\u525E\u525F\u0000\u5260\u0000"+
-        "\u0000\u5261\u0000\u5262\u5263\u0000\u5264\u5265"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5266\u0000\u5267\u0000\u0000\u0000\u0000"+
-        "\u5268\u0000\u0000\u0000\u0000\u5269\u526A\u0000"+
-        "\u526B\u0000\u0000\u0000\u526C\u0000\u0000\u0000"+
-        "\u0000\u526D\u0000\u526E\u526F\u0000\u5270\u0000"+
-        "\u0000\u5271\u5272\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5273\u0000"+
-        "\u0000\u0000\u5274\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5276\u5277\u5278\u0000\u5275\u0000\u0000"+
-        "\u0000\u5279\u527A\u527B\u527C\u527D\u527E\u0000"+
-        "\u0000\u5321\u0000\u5322\u0000\u0000\u0000\u5323"+
-        "\u0000\u5324\u0000\u0000\u0000\u5325\u5326\u0000"+
-        "\u5327\u0000\u5328\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5329\u0000\u0000\u532A\u532B\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u532C\u532D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u532E"+
-        "\u0000\u0000\u0000\u0000\u532F\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5330\u0000"+
-        "\u5331\u0000\u0000\u0000\u0000\u0000\u5332\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5333\u0000\u0000\u0000\u0000\u0000\u5334\u5335"+
-        "\u0000\u0000\u5336\u5337\u5338\u0000\u0000\u5339"+
-        "\u0000\u0000\u0000\u0000\u533A\u0000\u0000\u533B"+
-        "\u533C\u533D\u0000\u0000\u0000\u533E\u0000\u533F"+
-        "\u0000\u0000\u0000\u5340\u5341\u5342\u0000\u5343"+
-        "\u0000\u5344\u5345\u0000\u0000\u5346\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5347\u0000"+
-        "\u0000\u5348\u0000\u5349\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u534A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u534B\u0000\u0000\u0000\u534C"+
-        "\u534D\u534E\u0000\u0000\u0000\u0000\u0000\u534F"+
-        "\u0000\u5350\u5351\u5352\u0000\u0000\u5353\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5354\u5355\u0000"+
-        "\u0000\u0000\u0000\u5356\u0000\u0000\u5357\u0000"+
-        "\u0000\u0000\u5358\u0000\u0000\u5359\u0000\u0000"+
-        "\u0000\u535A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u535B\u535C\u535D\u0000"+
-        "\u535E\u535F\u0000\u0000\u0000\u0000\u0000\u5360"+
-        "\u5361\u0000\u0000\u0000\u0000\u5362\u0000\u0000"+
-        "\u0000\u5363\u0000\u5364\u0000\u0000\u0000\u5365"+
-        "\u0000\u5366\u5367\u0000\u5368\u5369\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u536A\u0000\u536B"+
-        "\u0000\u0000\u536C\u0000\u0000\u0000\u0000\u0000"+
-        "\u536D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u536E\u0000\u536F\u5370\u0000\u0000\u0000\u5371"+
-        "\u0000\u5372\u5373\u5374\u0000\u5375\u5376\u0000"+
-        "\u5377\u0000\u0000\u5378\u5379\u537A\u0000\u0000"+
-        "\u0000\u537B\u0000\u0000\u0000\u0000\u537C\u537D"+
-        "\u0000\u0000\u0000\u0000\u0000\u537E\u5421\u0000"+
-        "\u745C\u0000\u0000\u0000\u0000\u0000\u5422\u5423"+
-        "\u0000\u0000\u5424\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5425\u0000\u0000\u5426\u5427"+
-        "\u0000\u5428\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5429\u542A\u542B\u542C\u542D\u0000"+
-        "\u0000\u0000\u0000\u0000\u542E\u542F\u5430\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u745D\u5431"+
-        "\u0000\u5432\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5434\u0000\u0000\u5435\u5436\u0000"+
-        "\u0000\u0000\u5437\u5438\u0000\u5439\u0000\u0000"+
-        "\u0000\u543A\u0000\u0000\u0000\u543B\u543C\u0000"+
-        "\u0000\u543D\u543E\u0000\u0000\u0000\u0000\u0000"+
-        "\u5433\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u543F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5440\u5441\u0000\u0000\u0000\u5442\u0000\u5443"+
-        "\u0000\u0000\u0000\u0000\u5444\u5445\u0000\u0000"+
-        "\u5446\u0000\u0000\u0000\u0000\u0000\u0000\u5447"+
-        "\u5448\u0000\u0000\u0000\u5449\u544A\u0000\u544B"+
-        "\u0000\u0000\u0000\u544C\u0000\u0000\u544D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u544E"+
-        "\u0000\u0000\u0000\u0000\u544F\u5450\u0000\u5451"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5452\u0000"+
-        "\u5453\u0000\u5454\u0000\u0000\u0000\u0000\u0000"+
-        "\u5455\u0000\u0000\u0000\u0000\u0000\u0000\u5456"+
-        "\u0000\u5457\u5458\u0000\u0000\u5459\u0000\u0000"+
-        "\u0000\u0000\u0000\u545A\u0000\u0000\u545B\u545C"+
-        "\u0000\u0000\u0000\u545D\u0000\u0000\u0000\u0000"+
-        "\u545E\u0000\u0000\u0000\u0000\u0000\u545F\u0000"+
-        "\u0000\u5460\u0000\u0000\u0000\u0000\u5461\u5462"+
-        "\u0000\u0000\u5463\u0000\u0000\u5464\u0000\u0000"+
-        "\u0000\u5465\u0000\u0000\u0000\u5466\u0000\u0000"+
-        "\u5467\u0000\u5468\u0000\u0000\u5469\u546A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u546C\u546B\u546D\u546E\u546F"+
-        "\u0000\u0000\u0000\u5470\u5471\u0000\u0000\u5472"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5473"+
-        "\u0000\u0000\u5474\u5475\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5476\u5477\u5478\u0000\u0000"+
-        "\u0000\u5479\u0000\u547A\u547B\u547C\u547D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u547E\u0000\u0000"+
-        "\u0000\u5521\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5522\u5523\u5524"+
-        "\u5525\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5526\u0000\u5527\u0000\u5528"+
-        "\u5529\u552A\u0000\u0000\u0000\u0000\u552B\u552C"+
-        "\u0000\u0000\u0000\u0000\u552D\u0000\u0000\u0000"+
-        "\u0000\u552E\u552F\u0000\u0000\u0000\u5530\u0000"+
-        "\u0000\u0000\u5531\u0000\u0000\u5532\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5533\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5534\u0000\u0000\u5535"+
-        "\u5536\u0000\u0000\u5537\u0000\u0000\u0000\u0000"+
-        "\u5538\u0000\u0000\u0000\u0000\u0000\u5539\u553A"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u553B\u0000\u0000\u0000\u553C"+
-        "\u0000\u0000\u0000\u553D\u0000\u553E\u0000\u0000"+
-        "\u553F\u0000\u0000\u0000\u5540\u0000\u5541\u5542"+
-        "\u0000\u0000\u5543\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5544\u0000\u0000\u5545\u5546\u5547"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5548"+
-        "\u5549\u0000\u554A\u0000\u0000\u554B\u554C\u554D"+
-        "\u0000\u554E\u0000\u554F\u5550\u0000\u5551\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5552\u5553\u5554"+
-        "\u5555\u0000\u0000\u0000\u5556\u0000\u5557\u0000"+
-        "\u0000\u0000\u0000\u0000\u5558\u0000\u5559\u0000"+
-        "\u555A\u0000\u0000\u0000\u555B\u555C\u0000\u555D"+
-        "\u0000\u555E\u555F\u0000\u5560\u0000\u5561\u0000"+
-        "\u5562\u0000\u0000\u0000\u5563\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5564\u0000\u0000\u0000\u5565\u0000\u5566\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5567\u0000\u0000"+
-        "\u0000\u5568\u0000\u0000\u0000\u5569\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u556A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u556B\u0000\u0000\u0000\u0000\u0000\u556C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u556D\u0000\u556E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u556F\u5570"+
-        "\u0000\u0000\u0000\u5571\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5572\u5573\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5574\u0000\u0000\u0000\u0000\u5575\u0000\u5576"+
-        "\u0000\u0000\u5577\u0000\u5578\u5579\u0000\u557A"+
-        "\u557B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u557C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u557D\u557E\u0000"+
-        "\u5621\u0000\u5622\u5623\u0000\u0000\u5624\u0000"+
-        "\u0000\u5625\u5626\u0000\u0000\u0000\u5627\u0000"+
-        "\u0000\u0000\u0000\u5628\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5629\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u562A\u562B"+
-        "\u562C\u0000\u0000\u0000\u562D\u0000\u562E\u0000"+
-        "\u562F\u0000\u0000\u0000\u5630\u0000\u0000\u5631"+
-        "\u0000\u0000\u0000\u0000\u5632\u0000\u0000\u0000"+
-        "\u5633\u0000\u0000\u0000\u0000\u5634\u0000\u0000"+
-        "\u0000\u0000\u5635\u0000\u5636\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5637\u0000\u5638"+
-        "\u0000\u0000\u5639\u0000\u563A\u0000\u0000\u0000"+
-        "\u0000\u0000\u563B\u0000\u0000\u0000\u0000\u563C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u563D\u563E\u0000\u0000\u0000\u0000\u0000\u563F"+
-        "\u5640\u5641\u0000\u0000\u0000\u5642\u0000\u5643"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5644"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5645\u0000\u0000\u5647\u5648\u5649\u0000"+
-        "\u0000\u0000\u0000\u564A\u0000\u0000\u564B\u0000"+
-        "\u5646\u0000\u0000\u0000\u0000\u0000\u564C\u0000"+
-        "\u564D\u0000\u0000\u564E\u0000\u0000\u564F\u0000"+
-        "\u0000\u0000\u5650\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5651\u0000"+
-        "\u0000\u0000\u5652\u0000\u5653\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5654\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5656\u0000\u5657\u0000\u0000"+
-        "\u0000\u0000\u5658\u5655\u0000\u0000\u5659\u565A"+
-        "\u0000\u0000\u0000\u0000\u0000\u565B\u0000\u565C"+
-        "\u0000\u0000\u0000\u565D\u0000\u565E\u565F\u0000"+
-        "\u0000\u5660\u0000\u0000\u5661\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5662\u5663\u0000\u0000\u0000"+
-        "\u5664\u5665\u5666\u0000\u0000\u5667\u5668\u0000"+
-        "\u5669\u566A\u0000\u0000\u0000\u566B\u0000\u566C"+
-        "\u566D\u0000\u0000\u566E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u566F"+
-        "\u0000\u0000\u0000\u5670\u5671\u0000\u0000\u0000"+
-        "\u0000\u5672\u5673\u0000\u0000\u5674\u0000\u0000"+
-        "\u0000\u5675\u5676\u0000\u0000\u0000\u0000\u0000"+
-        "\u5677\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5678\u0000\u5679\u0000\u0000\u0000"+
-        "\u0000\u0000\u567A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u567B\u567C\u567D\u567E\u0000"+
-        "\u0000\u0000\u0000\u5721\u0000\u0000\u5722\u5723"+
-        "\u0000\u5724\u0000\u0000\u0000\u0000\u5725\u0000"+
-        "\u0000\u0000\u0000\u0000\u5726\u0000\u0000\u0000"+
-        "\u5727\u0000\u0000\u5728\u0000\u0000\u0000\u5729"+
-        "\u0000\u0000\u0000\u0000\u0000\u572A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u572B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u572C\u0000\u572D\u0000\u572E"+
-        "\u572F\u5730\u0000\u5731\u5732\u0000\u0000\u5733"+
-        "\u0000\u5734\u5735\u0000\u0000\u0000\u5736\u0000"+
-        "\u0000\u5737\u0000\u0000\u5738\u0000\u5739\u0000"+
-        "\u573A\u0000\u573B\u573C\u0000\u0000\u0000\u0000"+
-        "\u573D\u573E\u0000\u573F\u5740\u0000\u0000\u5741"+
-        "\u5742\u5743\u5744\u0000\u0000\u0000\u5745\u0000"+
-        "\u5746\u0000\u5747\u0000\u5748\u0000\u0000\u5749"+
-        "\u0000\u0000\u574A\u0000\u574B\u0000\u574C\u574D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u574E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u574F\u0000\u0000\u0000\u0000\u5750\u0000\u0000"+
-        "\u0000\u0000\u5751\u0000\u0000\u0000\u0000\u0000"+
-        "\u5752\u0000\u5753\u0000\u5754\u0000\u0000\u0000"+
-        "\u5755\u0000\u5756\u0000\u0000\u5757\u0000\u5758"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5759\u575A"+
-        "\u0000\u0000\u0000\u0000\u0000\u575B\u575C\u0000"+
-        "\u575D\u575E\u0000\u0000\u0000\u0000\u0000\u575F"+
-        "\u5760\u0000\u5761\u5762\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5764\u0000\u5765\u5766\u5767"+
-        "\u0000\u5768\u5769\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u576A\u576B\u576C\u0000"+
-        "\u576D\u0000\u0000\u576E\u0000\u0000\u0000\u576F"+
-        "\u0000\u0000\u5770\u0000\u5771\u5772\u0000\u0000"+
-        "\u0000\u0000\u5773\u5774\u5775\u0000\u0000\u5776"+
-        "\u0000\u0000\u0000\u0000\u0000\u5777\u5778\u0000"+
-        "\u0000\u5779\u0000\u583E\u5763\u577A\u577B\u577C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u745F\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u577D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u577E\u0000\u0000\u0000\u0000\u5821\u0000\u5822"+
-        "\u5823\u0000\u5824\u0000\u5825\u0000\u5826\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5827\u0000\u0000"+
-        "\u0000\u0000\u5828\u0000\u5829\u582A\u0000\u0000"+
-        "\u582B\u582C\u0000\u582D\u582E\u582F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5830\u5831"+
-        "\u0000\u5832\u0000\u0000\u5833\u584C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5834\u5835"+
-        "\u5836\u0000\u0000\u0000\u0000\u0000\u0000\u5837"+
-        "\u0000\u5838\u0000\u0000\u0000\u0000\u0000\u5839"+
-        "\u583A\u583B\u0000\u0000\u583C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u583D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u583F\u0000\u5840\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5841\u0000"+
-        "\u5842\u5843\u0000\u0000\u5844\u0000\u0000\u0000"+
-        "\u0000\u5845\u0000\u0000\u0000\u0000\u5846\u0000"+
-        "\u0000\u0000\u5847\u0000\u0000\u0000\u0000\u5848"+
-        "\u0000\u5849\u0000\u0000\u0000\u584A\u0000\u0000"+
-        "\u0000\u584B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u584D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u584E\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u584F\u0000\u5850"+
-        "\u5851\u0000\u5852\u0000\u0000\u5853\u0000\u5854"+
-        "\u0000\u5855\u5856\u0000\u0000\u0000\u5857\u0000"+
-        "\u5858\u5859\u585A\u0000\u585B\u0000\u0000\u0000"+
-        "\u585C\u0000\u0000\u0000\u585D\u585E\u0000\u585F"+
-        "\u0000\u0000\u5860\u0000\u0000\u0000\u0000\u0000"+
-        "\u5861\u0000\u0000\u5862\u5863\u0000\u5864\u0000"+
-        "\u5865\u0000\u0000\u0000\u5866\u5867\u0000\u0000"+
-        "\u0000\u5868\u0000\u0000\u0000\u5869\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u586A\u586B\u0000\u586C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u586D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u586E\u0000"+
-        "\u586F\u5870\u5871\u0000\u0000\u0000\u0000\u5872"+
-        "\u0000\u5873\u0000\u0000\u5874\u0000\u0000\u0000"+
-        "\u0000\u0000\u5875\u0000\u0000\u5876\u5877\u0000"+
-        "\u5878\u0000\u5879\u0000\u0000\u0000\u0000\u587A"+
-        "\u587B\u0000\u0000\u0000\u587C\u0000\u0000\u587D"+
-        "\u0000\u0000\u0000\u587E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5921\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5922"+
-        "\u0000\u0000\u5923\u0000\u0000\u0000\u0000\u5924"+
-        "\u5925\u5926\u5927\u0000\u0000\u0000\u0000\u5928"+
-        "\u0000\u0000\u592A\u592B\u0000\u592C\u0000\u0000"+
-        "\u0000\u0000\u592D\u592E\u0000\u0000\u0000\u592F"+
-        "\u0000\u0000\u0000\u0000\u5930\u0000\u5931\u0000"+
-        "\u5932\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5933\u0000\u5934\u0000"+
-        "\u0000\u0000\u5935\u5936\u5937\u5938\u0000\u5939"+
-        "\u0000\u0000\u593A\u593B\u0000\u0000\u0000\u593C"+
-        "\u0000\u0000\u5929\u593D\u593E\u0000\u593F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5940"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5941\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5942"+
-        "\u5943\u5944\u5945\u5946\u0000\u0000\u5947\u0000"+
-        "\u0000\u5948\u0000\u0000\u5949\u594A\u594B\u594C"+
-        "\u594D\u594E\u594F\u0000\u5950\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5951\u0000\u0000\u0000\u5952"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5953\u5954\u5955\u0000\u5956\u0000\u5957"+
-        "\u0000\u5958\u0000\u0000\u0000\u5959\u595A\u0000"+
-        "\u0000\u595B\u0000\u595C\u595D\u0000\u0000\u595E"+
-        "\u0000\u0000\u0000\u595F\u0000\u0000\u0000\u0000"+
-        "\u5960\u0000\u0000\u0000\u0000\u5961\u0000\u5962"+
-        "\u5963\u0000\u5964\u0000\u0000\u5965\u0000\u5966"+
-        "\u0000\u0000\u0000\u0000\u0000\u5974\u0000\u0000"+
-        "\u7461\u0000\u0000\u0000\u5967\u0000\u5968\u5969"+
-        "\u596A\u0000\u0000\u0000\u596B\u596C\u596D\u596E"+
-        "\u0000\u0000\u596F\u0000\u0000\u0000\u0000\u5970"+
-        "\u0000\u0000\u5971\u5972\u0000\u0000\u5973\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5975\u0000\u5976\u0000\u0000\u0000\u0000\u5977"+
-        "\u5978\u0000\u0000\u0000\u0000\u0000\u5979\u0000"+
-        "\u597A\u0000\u0000\u0000\u0000\u597B\u0000\u0000"+
-        "\u0000\u0000\u0000\u597C\u0000\u0000\u597D\u0000"+
-        "\u0000\u0000\u0000\u0000\u597E\u0000\u0000\u5A21"+
-        "\u5A22\u0000\u0000\u0000\u5A23\u5A24\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5A25\u5A26\u0000"+
-        "\u5A27\u5A28\u5A29\u0000\u0000\u0000\u0000\u0000"+
-        "\u5A2A\u5A2B\u0000\u5A2C\u0000\u0000\u5A2D\u0000"+
-        "\u0000\u5A2E\u0000\u0000\u0000\u0000\u0000\u5A2F"+
-        "\u0000\u5A30\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5A31\u0000"+
-        "\u5A32\u0000\u5A33\u0000\u5A34\u5A35\u0000\u0000"+
-        "\u5A36\u3866\u5A37\u0000\u0000\u0000\u5A38\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5A39\u5A3A\u0000\u0000\u5A3B\u5A3C"+
-        "\u5A3D\u5A3E\u0000\u0000\u0000\u5A3F\u0000\u0000"+
-        "\u5A40\u5A41\u5A42\u5A43\u5A44\u0000\u0000\u0000"+
-        "\u0000\u5A45\u0000\u0000\u5A46\u0000\u0000\u5A47"+
-        "\u0000\u0000\u0000\u0000\u0000\u5A48\u5A49\u5A4A"+
-        "\u0000\u0000\u5A4B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5A6D\u0000\u0000\u0000\u0000\u5A4C\u0000\u0000"+
-        "\u0000\u5A4D\u0000\u0000\u0000\u0000\u5A4E\u0000"+
-        "\u5A4F\u0000\u5A50\u0000\u5A51\u0000\u0000\u0000"+
-        "\u0000\u5A52\u0000\u0000\u0000\u0000\u5A53\u5A54"+
-        "\u5A55\u0000\u0000\u0000\u0000\u5A56\u0000\u0000"+
-        "\u0000\u5A57\u0000\u5A58\u5A59\u5A5A\u0000\u5A5B"+
-        "\u5A5C\u5A5D\u0000\u0000\u0000\u0000\u0000\u5A5E"+
-        "\u5A5F\u5A60\u0000\u5A61\u0000\u5A62\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5A63\u5A64\u0000\u0000\u5A65\u0000\u5A66"+
-        "\u0000\u0000\u5A67\u0000\u5A68\u0000\u0000\u0000"+
-        "\u5A69\u0000\u0000\u5A6A\u0000\u5A6B\u0000\u5A6C"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5A6E\u0000\u5A6F\u5A70\u0000\u0000";
-
-    private final static String innerIndex4=
-        "\u0000\u0000\u0000\u0000\u5A71\u5A72\u0000\u5A73"+
-        "\u0000\u0000\u0000\u5A74\u0000\u0000\u5A75\u5A76"+
-        "\u5A77\u0000\u0000\u5A78\u5A79\u0000\u0000\u0000"+
-        "\u0000\u5A7A\u0000\u0000\u0000\u0000\u5A7B\u5A7C"+
-        "\u0000\u5A7D\u0000\u5A7E\u0000\u0000\u0000\u0000"+
-        "\u5B21\u0000\u0000\u0000\u0000\u0000\u5B22\u5B23"+
-        "\u0000\u5B24\u5B25\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5B26\u5B27\u0000\u5B28\u5B29\u5B2A\u0000"+
-        "\u5B2B\u0000\u0000\u5B2C\u0000\u5B2D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5B2E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5B2F\u0000\u0000\u0000\u0000\u5B30\u0000\u0000"+
-        "\u0000\u5B31\u0000\u0000\u5B32\u5B33\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5B34"+
-        "\u0000\u5B35\u5B36\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5B37\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5B38\u5B39\u5B3A\u5B3B\u5B3C"+
-        "\u5B3D\u5B3E\u0000\u5B3F\u5B40\u0000\u0000\u0000"+
-        "\u5B41\u0000\u0000\u5B42\u0000\u5B43\u0000\u5B44"+
-        "\u5B45\u5B46\u0000\u0000\u0000\u0000\u5B47\u0000"+
-        "\u5B48\u0000\u0000\u5B49\u0000\u0000\u0000\u5B4A"+
-        "\u0000\u0000\u0000\u0000\u5B4B\u5B4C\u5B4D\u0000"+
-        "\u0000\u5B4E\u0000\u0000\u0000\u5B4F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5B50\u5B51"+
-        "\u0000\u5B52\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5B53\u5B54\u5B55\u0000\u0000\u0000\u5B56\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5B57\u5B58\u0000"+
-        "\u0000\u5B59\u5B5A\u0000\u5B5B\u0000\u0000\u5B5C"+
-        "\u0000\u0000\u5B5D\u5B5E\u5B5F\u0000\u0000\u0000"+
-        "\u0000\u0000\u5B60\u5B61\u0000\u5B62\u0000\u0000"+
-        "\u0000\u5B63\u0000\u5B64\u0000\u0000\u0000\u0000"+
-        "\u5B65\u0000\u5B66\u0000\u0000\u0000\u0000\u5B67"+
-        "\u0000\u5B68\u0000\u5B69\u0000\u0000\u5B6A\u7464"+
-        "\u0000\u5B6B\u5B6C\u5B6D\u0000\u0000\u0000\u0000"+
-        "\u5B6E\u0000\u5B70\u5B71\u5B72\u0000\u0000\u0000"+
-        "\u5B73\u5B6F\u5B74\u5B75\u5B76\u0000\u5B77\u5B78"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5B79\u0000\u0000\u0000\u0000\u5B7A\u5B7B\u0000"+
-        "\u5B7C\u0000\u5B7D\u0000\u0000\u5B7E\u0000\u0000"+
-        "\u0000\u0000\u5C21\u0000\u5C22\u0000\u0000\u0000"+
-        "\u0000\u5C23\u0000\u5C24\u0000\u5C25\u0000\u0000"+
-        "\u5C26\u5C27\u5C28\u5C29\u0000\u0000\u5C2A\u0000"+
-        "\u0000\u5C2B\u0000\u0000\u0000\u5C2C\u5C2D\u0000"+
-        "\u5C2E\u0000\u5C2F\u0000\u5C30\u0000\u0000\u5C31"+
-        "\u5C32\u0000\u0000\u0000\u5C33\u0000\u0000\u0000"+
-        "\u0000\u5C34\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C35\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C36\u0000\u5C37\u0000\u0000\u0000\u0000"+
-        "\u5C38\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5C39\u0000\u5C3A\u5C3B\u5C3C\u0000\u0000\u5C3D"+
-        "\u5C3E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5C3F\u0000\u5C40\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5C41\u0000\u0000\u5C42\u5C43\u0000"+
-        "\u5C44\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5C45\u5C46\u5C47\u5C48\u5C49\u0000"+
-        "\u0000\u5C4A\u5C4B\u5C4C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5C4D\u0000\u0000\u5C4E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5C4F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5C50"+
-        "\u5C51\u5C52\u0000\u0000\u0000\u5C53\u0000\u5C54"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5C55\u0000\u0000\u0000\u0000\u5C56\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5C57\u5C58\u5C59"+
-        "\u0000\u0000\u0000\u0000\u0000\u5C5A\u5C5B\u0000"+
-        "\u5C5C\u5C5D\u5C5E\u0000\u5C5F\u0000\u0000\u0000"+
-        "\u5C60\u0000\u0000\u0000\u0000\u0000\u5C61\u5C62"+
-        "\u5C63\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5C64\u5C65\u5C66\u0000\u0000\u5C67\u0000\u0000"+
-        "\u0000\u5C68\u5C69\u0000\u0000\u0000\u5C6A\u0000"+
-        "\u5C6B\u0000\u5C6C\u0000\u0000\u5C6D\u5C6E\u0000"+
-        "\u0000\u5C6F\u0000\u0000\u0000\u0000\u0000\u5C70"+
-        "\u0000\u0000\u5C71\u0000\u0000\u0000\u0000\u5C72"+
-        "\u0000\u0000\u5C73\u5C74\u5C75\u0000\u0000\u0000"+
-        "\u0000\u5C76\u5C77\u5C78\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u5C79\u0000\u0000\u5C7A\u0000"+
-        "\u5C7B\u0000\u0000\u5C7C\u0000\u5C7D\u0000\u0000"+
-        "\u0000\u0000\u5C7E\u5D21\u5D22\u5D23\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5D24\u0000\u0000\u0000\u5D25\u0000\u0000"+
-        "\u5D26\u0000\u0000\u0000\u5D27\u5D28\u0000\u0000"+
-        "\u0000\u0000\u0000\u5D29\u5D2A\u0000\u0000\u5D2B"+
-        "\u5D2C\u0000\u0000\u0000\u0000\u5D2D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5D2E\u0000\u0000\u0000\u5D2F\u5D30\u5D31\u5D32"+
-        "\u0000\u0000\u0000\u0000\u5D33\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5D34\u5D35\u5D36\u5D37"+
-        "\u5D38\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5D39\u0000\u0000"+
-        "\u0000\u5D3A\u0000\u5D3B\u0000\u5D3C\u0000\u0000"+
-        "\u0000\u5D3D\u0000\u5D3E\u0000\u0000\u5D3F\u0000"+
-        "\u0000\u5D40\u0000\u0000\u0000\u5D41\u0000\u5D42"+
-        "\u0000\u0000\u0000\u0000\u5D43\u5D44\u0000\u5D45"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5D46"+
-        "\u0000\u5D47\u5D48\u0000\u5D49\u5D4A\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5D4B\u0000"+
-        "\u5D4C\u0000\u5D4D\u0000\u5D4E\u0000\u5D4F\u0000"+
-        "\u0000\u0000\u0000\u5D50\u5D51\u0000\u0000\u5D52"+
-        "\u0000\u0000\u0000\u0000\u0000\u5D53\u0000\u5D54"+
-        "\u0000\u0000\u0000\u0000\u0000\u5D55\u5D56\u0000"+
-        "\u5D57\u0000\u0000\u5D58\u0000\u5D59\u0000\u5D5A"+
-        "\u0000\u5D5B\u0000\u0000\u0000\u5D5C\u5D5D\u0000"+
-        "\u0000\u0000\u0000\u5D5E\u0000\u0000\u5D5F\u5D60"+
-        "\u5D61\u0000\u0000\u0000\u5D62\u5D63\u0000\u0000"+
-        "\u0000\u5D64\u0000\u0000\u0000\u5D65\u0000\u5D66"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5D67\u5D68\u5D69"+
-        "\u0000\u5D6A\u5D6B\u5D6C\u0000\u0000\u5D6D\u5D6E"+
-        "\u5D6F\u0000\u0000\u5D70\u0000\u0000\u5D71\u0000"+
-        "\u0000\u0000\u0000\u5D72\u0000\u0000\u0000\u5D73"+
-        "\u5D74\u0000\u5D75\u0000\u0000\u0000\u5D76\u5D77"+
-        "\u0000\u5D78\u0000\u0000\u0000\u0000\u0000\u5D79"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5D7A"+
-        "\u0000\u5D7B\u0000\u0000\u0000\u0000\u5D7C\u5D7D"+
-        "\u0000\u0000\u0000\u5D7E\u0000\u0000\u5E21\u5E22"+
-        "\u0000\u0000\u0000\u5E23\u0000\u0000\u5E24\u0000"+
-        "\u0000\u0000\u0000\u5E25\u0000\u0000\u5E26\u0000"+
-        "\u5E27\u5E28\u5E29\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5E2A\u0000\u5E2B\u5E2C\u5E2D\u0000\u5E2E"+
-        "\u0000\u0000\u0000\u0000\u0000\u5E2F\u0000\u5E30"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E31\u0000\u0000\u0000"+
-        "\u5E32\u0000\u0000\u0000\u5E33\u5E34\u5E35\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E36\u0000\u0000\u5E37"+
-        "\u0000\u0000\u0000\u0000\u0000\u5E38\u5E39\u0000"+
-        "\u0000\u0000\u5E3F\u5E3A\u0000\u0000\u0000\u0000"+
-        "\u0000\u5E3B\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E3C\u0000\u5E3D\u5E3E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5E40\u0000\u0000"+
-        "\u5E41\u0000\u0000\u0000\u0000\u0000\u0000\u5E42"+
-        "\u0000\u0000\u0000\u0000\u5E43\u0000\u0000\u0000"+
-        "\u0000\u0000\u5E44\u5E45\u5E46\u5E47\u5E48\u0000"+
-        "\u5E49\u0000\u0000\u0000\u0000\u5E4E\u0000\u0000"+
-        "\u0000\u0000\u5E4A\u5E4B\u5E4C\u0000\u0000\u0000"+
-        "\u0000\u5E4D\u0000\u0000\u0000\u0000\u5E4F\u0000"+
-        "\u0000\u0000\u0000\u5E50\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5E51\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5E52\u0000"+
-        "\u5E53\u5E54\u0000\u0000\u5E55\u0000\u5E56\u7466"+
-        "\u0000\u5E57\u0000\u0000\u5E58\u5E59\u0000\u0000"+
-        "\u0000\u0000\u0000\u5E5A\u0000\u5E5B\u0000\u5E5C"+
-        "\u0000\u0000\u0000\u0000\u5E5D\u5E5E\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5E5F\u0000\u5E60\u5E61"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5E62\u5E63\u0000\u0000\u0000\u5E64\u5E65\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5E66\u0000\u5E67"+
-        "\u0000\u5E68\u0000\u5E69\u0000\u0000\u0000\u5E6A"+
-        "\u0000\u5E6B\u0000\u5E6C\u5E6D\u0000\u0000\u5E6E"+
-        "\u5E6F\u5E72\u0000\u5E70\u0000\u5E71\u0000\u0000"+
-        "\u0000\u0000\u0000\u5E73\u5E74\u0000\u5E75\u0000"+
-        "\u5E76\u5E77\u0000\u0000\u0000\u5E78\u0000\u0000"+
-        "\u0000\u0000\u0000\u5E79\u0000\u5E7A\u5E7B\u0000"+
-        "\u0000\u0000\u0000\u5E7C\u0000\u0000\u5E7D\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5E7E\u5F21"+
-        "\u0000\u0000\u0000\u5F22\u0000\u0000\u0000\u0000"+
-        "\u5F23\u0000\u5F24\u5F25\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F26\u0000\u5F27\u5F28\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5F29\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F2A\u5F2B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F2C\u5F2D\u0000"+
-        "\u0000\u5F2E\u0000\u5F2F\u0000\u0000\u0000\u5F30"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F32\u5F31\u0000"+
-        "\u0000\u5F33\u0000\u0000\u0000\u5F34\u0000\u0000"+
-        "\u0000\u5F35\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5F36\u0000\u0000\u0000\u5F37\u0000\u0000\u5F38"+
-        "\u5F39\u0000\u5F3A\u0000\u7467\u5F3B\u0000\u5F3C"+
-        "\u5F3D\u0000\u0000\u0000\u0000\u0000\u5F3E\u5F3F"+
-        "\u0000\u5F40\u0000\u5F41\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F42\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u5F43\u0000\u0000\u0000\u0000\u5F44"+
-        "\u0000\u0000\u0000\u5F45\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F46\u0000\u0000"+
-        "\u0000\u5F47\u0000\u0000\u5F48\u0000\u5F49\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7468\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5F4A"+
-        "\u0000\u0000\u5F4B\u0000\u5F4C\u0000\u0000\u0000"+
-        "\u5F4D\u0000\u0000\u0000\u0000\u5F4E\u0000\u0000"+
-        "\u5F4F\u5F50\u0000\u0000\u0000\u5F51\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u5F52\u5F53"+
-        "\u5F54\u0000\u0000\u0000\u0000\u0000\u5F55\u0000"+
-        "\u0000\u0000\u0000\u5F56\u5F57\u0000\u0000\u5F58"+
-        "\u0000\u0000\u5F59\u0000\u0000\u5F5A\u0000\u5F5B"+
-        "\u0000\u5F5C\u0000\u5F5D\u5F6F\u0000\u0000\u0000"+
-        "\u5F5E\u0000\u0000\u0000\u0000\u5F5F\u5F60\u5F61"+
-        "\u5F62\u0000\u5F63\u0000\u0000\u0000\u5F64\u0000"+
-        "\u0000\u5F65\u0000\u0000\u5F66\u5F67\u0000\u5F68"+
-        "\u0000\u5F69\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u5F6A\u5F6B\u0000\u5F6C"+
-        "\u0000\u0000\u0000\u0000\u5F6D\u0000\u0000\u0000"+
-        "\u5F6E\u5F70\u5F71\u0000\u5F72\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u5F73\u0000\u0000"+
-        "\u0000\u5F74\u0000\u0000\u5F75\u5F76\u5F77\u0000"+
-        "\u0000\u0000\u0000\u5F78\u0000\u0000\u0000\u0000"+
-        "\u0000\u5F79\u0000\u0000\u5F7A\u0000\u5F7B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u5F7C\u5F7D\u5F7E\u6021\u0000\u0000\u6022\u6023"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6024\u0000\u6025\u0000\u0000\u6026\u6027"+
-        "\u6028\u6029\u0000\u0000\u0000\u602A\u0000\u0000"+
-        "\u602B\u602C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u602D\u0000\u602E\u602F\u6030"+
-        "\u0000\u0000\u0000\u0000\u6031\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6032\u6033\u6034\u6035\u0000"+
-        "\u0000\u6036\u6037\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6038\u0000\u0000\u6039\u603A\u0000\u603B"+
-        "\u603C\u603D\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u603E\u603F\u6040\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6041\u6042\u0000\u0000\u0000\u0000"+
-        "\u0000\u6043\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6044\u0000\u6045\u0000\u0000\u6046\u0000\u0000"+
-        "\u0000\u0000\u6047\u6048\u0000\u6049\u604A\u0000"+
-        "\u0000\u0000\u604B\u0000\u0000\u0000\u0000\u604C"+
-        "\u0000\u604D\u0000\u0000\u0000\u604E\u604F\u0000"+
-        "\u0000\u0000\u0000\u6050\u0000\u6051\u0000\u0000"+
-        "\u0000\u0000\u6052\u6053\u0000\u0000\u0000\u0000"+
-        "\u6054\u6055\u0000\u6056\u6057\u0000\u0000\u6058"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6059"+
-        "\u0000\u605A\u0000\u0000\u605B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u605C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u605D\u0000\u0000\u0000\u0000\u6064\u605E\u0000"+
-        "\u605F\u6060\u0000\u0000\u0000\u0000\u0000\u6061"+
-        "\u0000\u6062\u6063\u0000\u0000\u0000\u0000\u0000"+
-        "\u6065\u0000\u6066\u0000\u0000\u0000\u0000\u6067"+
-        "\u6068\u0000\u0000\u0000\u0000\u0000\u0000\u6069"+
-        "\u606A\u0000\u0000\u0000\u0000\u0000\u606B\u606C"+
-        "\u606D\u0000\u0000\u0000\u0000\u0000\u606E\u0000"+
-        "\u606F\u6070\u0000\u6071\u0000\u6072\u0000\u6073"+
-        "\u6074\u0000\u0000\u0000\u6075\u6076\u6077\u0000"+
-        "\u0000\u0000\u0000\u0000\u6078\u6079\u607A\u607B"+
-        "\u0000\u0000\u607C\u0000\u0000\u0000\u0000\u0000"+
-        "\u607D\u607E\u0000\u6121\u0000\u0000\u0000\u6122"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6123"+
-        "\u0000\u6124\u6125\u6126\u6127\u6128\u0000\u0000"+
-        "\u6129\u0000\u0000\u0000\u0000\u612A\u612B\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u612C\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u612D\u0000\u0000"+
-        "\u612E\u612F\u0000\u0000\u6130\u6131\u6132\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6133\u6134\u0000"+
-        "\u6135\u0000\u0000\u0000\u0000\u0000\u6136\u0000"+
-        "\u6137\u6138\u0000\u0000\u0000\u0000\u6139\u0000"+
-        "\u0000\u0000\u613A\u613B\u0000\u613C\u0000\u0000"+
-        "\u613D\u0000\u613E\u613F\u0000\u6140\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6141\u0000\u0000\u6142\u6143\u0000\u0000\u0000"+
-        "\u6144\u0000\u0000\u0000\u0000\u0000\u6145\u0000"+
-        "\u0000\u6146\u0000\u0000\u0000\u6147\u6148\u0000"+
-        "\u0000\u0000\u0000\u6149\u0000\u0000\u614A\u0000"+
-        "\u0000\u0000\u614B\u0000\u614C\u0000\u0000\u0000"+
-        "\u614D\u0000\u0000\u0000\u614E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u614F\u0000\u0000\u6150\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6151\u6152\u6154\u0000\u6155\u6156\u0000\u6153"+
-        "\u0000\u0000\u0000\u6157\u6158\u0000\u0000\u6159"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u615A"+
-        "\u0000\u0000\u0000\u615B\u615C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u615D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u615E\u0000\u615F\u0000\u0000"+
-        "\u0000\u0000\u6160\u0000\u0000\u0000\u6161\u6162"+
-        "\u0000\u0000\u0000\u0000\u6163\u0000\u0000\u0000"+
-        "\u6164\u0000\u0000\u0000\u6165\u0000\u0000\u0000"+
-        "\u0000\u6166\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6167\u0000\u0000"+
-        "\u6168\u0000\u0000\u6169\u616A\u0000\u616B\u0000"+
-        "\u616C\u0000\u0000\u0000\u0000\u616D\u0000\u616E"+
-        "\u616F\u6170\u0000\u6171\u0000\u0000\u0000\u0000"+
-        "\u6172\u6173\u6174\u0000\u0000\u6175\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6176\u0000\u6177\u6178\u6179\u0000\u617A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u617B\u617D\u0000"+
-        "\u0000\u0000\u0000\u617E\u6221\u6222\u0000\u6223"+
-        "\u6224\u0000\u0000\u0000\u617C\u0000\u0000\u0000"+
-        "\u0000\u0000\u622D\u0000\u0000\u6225\u0000\u6226"+
-        "\u6227\u6228\u0000\u0000\u6229\u622A\u746C\u622B"+
-        "\u0000\u0000\u0000\u0000\u0000\u622C\u0000\u0000"+
-        "\u0000\u0000\u0000\u622F\u0000\u0000\u0000\u6230"+
-        "\u6231\u0000\u0000\u0000\u6232\u0000\u622E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6233\u6234"+
-        "\u6235\u0000\u0000\u0000\u6236\u6237\u6238\u0000"+
-        "\u6239\u0000\u0000\u0000\u0000\u623A\u0000\u0000"+
-        "\u623B\u0000\u0000\u0000\u623C\u746E\u623D\u623E"+
-        "\u623F\u0000\u6240\u0000\u6241\u0000\u6242\u0000"+
-        "\u6243\u0000\u6245\u6246\u0000\u6244\u0000\u6247"+
-        "\u0000\u6248\u0000\u0000\u0000\u0000\u6249\u624A"+
-        "\u0000\u624B\u0000\u0000\u624C\u0000\u624D\u624E"+
-        "\u0000\u624F\u6250\u0000\u6251\u6252\u0000\u0000"+
-        "\u0000\u0000\u0000\u6253\u0000\u0000\u0000\u6254"+
-        "\u6255\u0000\u0000\u0000\u0000\u0000\u0000\u6256"+
-        "\u0000\u0000\u0000\u6257\u0000\u0000\u0000\u6258"+
-        "\u0000\u6259\u625A\u625B\u0000\u0000\u0000\u0000"+
-        "\u0000\u625C\u0000\u0000\u625D\u0000\u0000\u625E"+
-        "\u0000\u0000\u0000\u0000\u0000\u625F\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6260\u0000\u0000\u0000"+
-        "\u0000\u6261\u6262\u6263\u0000\u0000\u0000\u0000"+
-        "\u0000\u6264\u0000\u6265\u0000\u6266\u6267\u0000"+
-        "\u0000\u0000\u6268\u0000\u0000\u0000\u6269\u0000"+
-        "\u0000\u626A\u0000\u626B\u626C\u626D\u0000\u0000"+
-        "\u626E\u0000\u0000\u0000\u0000\u0000\u626F\u0000"+
-        "\u0000\u6270\u0000\u0000\u0000\u0000\u6271\u0000"+
-        "\u6272\u0000\u0000\u0000\u6273\u6274\u6275\u0000"+
-        "\u6276\u6277\u6278\u6279\u0000\u0000\u627A\u0000"+
-        "\u0000\u0000\u0000\u627B\u627C\u627D\u0000\u627E"+
-        "\u0000\u0000\u6321\u6322\u0000\u6323\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6324\u6325\u0000\u0000\u6326"+
-        "\u0000\u6327\u6328\u0000\u0000\u0000\u6329\u0000"+
-        "\u0000\u0000\u0000\u0000\u632A\u632B\u0000\u0000"+
-        "\u0000\u632C\u632D\u0000\u632E\u632F\u6330\u6331"+
-        "\u6332\u6333\u0000\u0000\u0000\u0000\u0000\u6334"+
-        "\u0000\u6335\u0000\u6336\u0000\u6337\u0000\u0000"+
-        "\u6338\u6339\u0000\u0000\u633A\u633B\u633C\u633D"+
-        "\u0000\u633E\u633F\u0000\u6340\u0000\u0000\u0000"+
-        "\u6341\u0000\u6342\u6343\u0000\u0000\u6344\u0000"+
-        "\u6345\u0000\u0000\u0000\u6346\u6347\u0000\u0000"+
-        "\u0000\u0000\u0000\u6348\u6349\u634A\u634B\u0000"+
-        "\u634C\u0000\u0000\u0000\u0000\u0000\u634D\u634E"+
-        "\u634F\u0000\u0000\u6350\u0000\u6351\u6352\u0000"+
-        "\u6353\u6354\u6355\u0000\u6356\u0000\u6357\u0000"+
-        "\u6358\u0000\u6359\u635A\u0000\u0000\u635B\u635C"+
-        "\u0000\u0000\u635D\u0000\u0000\u635E\u635F\u6360"+
-        "\u0000\u6361\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6362\u6363\u0000\u0000\u6364\u6365\u0000\u0000"+
-        "\u6366\u6367\u0000\u0000\u0000\u6368\u0000\u6369"+
-        "\u636A\u636B\u0000\u0000\u0000\u0000\u636C\u636D"+
-        "\u636E\u0000\u0000\u0000\u0000\u636F\u6370\u6371"+
-        "\u6372\u6373\u0000\u6374\u6375\u6376\u0000\u6377"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6378\u6379\u637A\u0000\u0000\u637B\u637C\u0000"+
-        "\u0000\u0000\u637D\u0000\u0000\u0000\u0000\u637E"+
-        "\u0000\u6421\u0000\u0000\u0000\u0000\u0000\u6422"+
-        "\u6423\u0000\u0000\u0000\u6424\u6425\u0000\u6426"+
-        "\u6427\u0000\u0000\u6428\u0000\u0000\u0000\u6429"+
-        "\u0000\u0000\u642A\u0000\u0000\u0000\u642B\u0000"+
-        "\u642C\u0000\u642D\u642E\u642F\u6430\u0000\u6431"+
-        "\u6432\u6433\u6434\u6435\u0000\u6436\u6437\u6438"+
-        "\u6439\u0000\u0000\u643A\u643B\u643C\u643D\u0000"+
-        "\u643E\u0000\u0000\u643F\u0000\u6440\u0000\u6441"+
-        "\u6442\u6443\u0000\u0000\u6444\u6445\u0000\u6446"+
-        "\u6447\u6448\u0000\u6449\u0000\u644A\u0000\u644B"+
-        "\u644C\u0000\u0000\u0000\u644D\u0000\u644E\u0000"+
-        "\u644F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6450\u0000\u6451\u0000\u0000\u0000\u6452"+
-        "\u6453\u0000\u6454\u0000\u0000\u0000\u0000\u0000"+
-        "\u6455\u0000\u0000\u0000\u0000\u6456\u0000\u0000"+
-        "\u0000\u6457\u0000\u0000\u6458\u6459\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u645A\u645B\u645C\u645D"+
-        "\u0000\u645E\u0000\u0000\u645F\u6460\u0000\u6461"+
-        "\u0000\u6462\u6463\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6464\u6465\u0000\u6466\u6467"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6468"+
-        "\u6469\u646A\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u646B\u646C\u646D\u0000\u0000\u646E\u0000\u646F"+
-        "\u6470\u0000\u6471\u0000\u0000\u0000\u6472\u0000"+
-        "\u0000\u0000\u0000\u0000\u6473\u6474\u0000\u6475"+
-        "\u0000\u6476\u6477\u0000\u0000\u6478\u0000\u6479"+
-        "\u647A\u647B\u0000\u647C\u647D\u0000\u647E\u0000"+
-        "\u0000\u0000\u6521\u0000\u0000\u6522\u0000\u6523"+
-        "\u6524\u6525\u6526\u0000\u0000\u0000\u0000\u0000"+
-        "\u6527\u0000\u6528\u6529\u0000\u652A\u0000\u652B"+
-        "\u0000\u0000\u652C\u0000\u0000\u652D\u0000\u0000"+
-        "\u652E\u0000\u0000\u652F\u0000\u0000\u6530\u0000"+
-        "\u0000\u6531\u0000\u6532\u6533\u0000\u6534\u0000"+
-        "\u6535\u653B\u0000\u6536\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6537\u6538\u6539\u0000"+
-        "\u0000\u0000\u653A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u653C\u0000\u0000\u653D\u653E\u653F\u6540"+
-        "\u0000\u6541\u6542\u6543\u6544\u6545\u0000\u0000"+
-        "\u0000\u0000\u0000\u6546\u0000\u0000\u0000\u0000"+
-        "\u0000\u6547\u0000\u0000\u6548\u0000\u6549\u654A"+
-        "\u0000\u0000\u654B\u0000\u0000\u0000\u654C\u654D"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u654F"+
-        "\u6550\u654E\u6551\u6552\u0000\u6553\u0000\u0000"+
-        "\u0000\u6554\u6555\u0000\u6556\u0000\u0000\u0000"+
-        "\u6557\u6558\u0000\u0000\u0000\u6559\u655A\u655B"+
-        "\u0000\u0000\u0000\u0000\u0000\u655C\u655D\u655E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u655F"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6560\u6561"+
-        "\u0000\u6562\u6563\u6564\u6565\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6566\u0000\u6568\u0000\u6567"+
-        "\u0000\u0000\u0000\u6569\u0000\u656A\u0000\u0000"+
-        "\u656B\u0000\u656C\u0000\u656D\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u656E\u0000\u0000"+
-        "\u0000\u656F\u0000\u0000\u6570\u0000\u0000\u6571"+
-        "\u0000\u6572\u0000\u6573\u0000\u0000\u0000\u0000"+
-        "\u6574\u0000\u0000\u6575\u0000\u6576\u6577\u6578"+
-        "\u0000\u6579\u657A\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u657C\u657B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u657D\u657E\u0000\u0000\u0000\u0000\u6621\u0000"+
-        "\u0000\u0000\u0000\u0000\u6622\u0000\u0000\u0000"+
-        "\u6623\u0000\u0000\u0000\u6624\u6625\u6626\u0000"+
-        "\u0000\u0000\u7471\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6627\u6628\u6629"+
-        "\u0000\u662A\u0000\u0000\u0000\u0000\u662B\u0000"+
-        "\u0000\u662C\u0000\u662D\u662E\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u662F\u0000\u6630\u0000"+
-        "\u0000\u0000\u6631\u0000\u0000\u6632\u0000\u6633"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6634\u0000"+
-        "\u6635\u6636\u0000\u6637\u0000\u0000\u0000\u0000"+
-        "\u6638\u6639\u663A\u663B\u0000\u0000\u0000\u0000"+
-        "\u0000\u663C\u663D\u0000\u0000\u663E\u663F\u6640"+
-        "\u6641\u0000\u0000\u0000\u6642\u0000\u6643\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6644\u6645\u0000"+
-        "\u0000\u0000\u6646\u0000\u6647\u6648\u6649\u0000"+
-        "\u0000\u0000\u0000\u0000\u664A\u0000\u0000\u0000"+
-        "\u0000\u664B\u0000\u664C\u0000\u0000\u0000\u664D"+
-        "\u664E\u664F\u6650\u0000\u6651\u6652\u0000\u0000"+
-        "\u0000\u6653\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6654\u0000\u6655\u0000\u6656\u6657"+
-        "\u6658\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6659\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u665A\u0000"+
-        "\u0000\u0000\u0000\u0000\u665B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u665C\u665D\u0000\u665E\u665F"+
-        "\u0000\u6660\u6661\u6662\u6663\u0000\u0000\u0000"+
-        "\u0000\u6664\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6665\u0000\u0000\u0000\u0000\u6666\u0000"+
-        "\u0000\u0000\u6667\u0000\u0000\u6668\u0000\u6669"+
-        "\u0000\u0000\u0000\u0000\u666A\u666B\u666C\u0000"+
-        "\u0000\u666D\u0000\u0000\u0000\u0000\u666E\u666F"+
-        "\u0000\u0000\u0000\u6670\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6671\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6672\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6673\u0000\u0000\u0000\u0000\u0000"+
-        "\u6675\u0000\u6676\u0000\u0000\u6677\u6678\u6679"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u667A\u0000\u0000\u0000\u0000\u0000\u667B"+
-        "\u0000\u667C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u667D\u0000\u0000\u0000\u0000\u0000";
-
-    private final static String innerIndex5=
-        "\u0000\u0000\u667E\u6721\u0000\u6722\u0000\u0000"+
-        "\u0000\u6723\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6724\u6725\u0000\u6726\u0000\u0000"+
-        "\u0000\u6727\u6728\u6729\u0000\u0000\u0000\u0000"+
-        "\u672A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u672B\u0000\u672C\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u7474\u0000\u0000\u0000\u0000"+
-        "\u0000\u672D\u0000\u672E\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u672F\u0000\u0000\u7475\u6730\u6731"+
-        "\u0000\u7476\u0000\u0000\u0000\u6732\u0000\u6733"+
-        "\u6734\u0000\u6735\u6736\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6737\u0000\u0000\u0000\u6738"+
-        "\u0000\u0000\u6739\u0000\u0000\u0000\u673A\u0000"+
-        "\u0000\u0000\u0000\u673B\u0000\u0000\u673C\u673D"+
-        "\u673E\u0000\u0000\u673F\u0000\u6740\u0000\u6741"+
-        "\u6742\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6743\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6744\u6745\u6746"+
-        "\u0000\u6747\u6748\u0000\u0000\u0000\u6749\u674A"+
-        "\u0000\u0000\u674B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u674C\u0000\u674D\u0000"+
-        "\u0000\u674E\u674F\u0000\u0000\u6750\u6751\u0000"+
-        "\u6752\u6753\u6754\u0000\u6755\u0000\u6756\u6757"+
-        "\u0000\u6758\u0000\u0000\u6759\u675A\u0000\u675B"+
-        "\u0000\u675C\u675D\u0000\u675E\u675F\u6760\u0000"+
-        "\u6761\u6762\u0000\u0000\u6763\u0000\u0000\u6764"+
-        "\u6765\u6766\u0000\u676A\u0000\u6767\u6768\u0000"+
-        "\u6769\u676B\u0000\u0000\u676C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u676D"+
-        "\u0000\u676E\u0000\u0000\u676F\u0000\u0000\u6770"+
-        "\u6771\u0000\u6772\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6773"+
-        "\u0000\u0000\u6774\u0000\u0000\u6776\u6777\u0000"+
-        "\u0000\u0000\u0000\u0000\u6778\u0000\u6779\u0000"+
-        "\u0000\u6775\u0000\u0000\u677A\u0000\u677B\u0000"+
-        "\u677C\u0000\u0000\u677D\u0000\u6828\u677E\u0000"+
-        "\u0000\u0000\u0000\u6821\u0000\u0000\u6822\u6823"+
-        "\u6824\u0000\u6825\u6826\u0000\u6827\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6829\u0000"+
-        "\u0000\u0000\u0000\u0000\u682A\u0000\u0000\u682B"+
-        "\u0000\u0000\u682C\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u682D\u682E\u682F\u0000\u0000\u6830\u6831"+
-        "\u0000\u6832\u6833\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6834\u6835\u0000\u6836\u6837\u0000"+
-        "\u0000\u0000\u6838\u0000\u6839\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u683A\u0000\u683B\u683C\u0000"+
-        "\u683D\u0000\u0000\u0000\u683E\u0000\u0000\u683F"+
-        "\u6840\u0000\u6841\u6842\u0000\u0000\u0000\u6843"+
-        "\u0000\u0000\u6844\u0000\u0000\u6845\u0000\u0000"+
-        "\u6846\u0000\u0000\u0000\u6847\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6848\u0000\u6849\u0000\u684A\u684B\u684C"+
-        "\u0000\u0000\u684D\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u684E\u0000\u0000\u684F\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6850\u0000\u0000\u0000\u0000\u6851"+
-        "\u6852\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6853\u0000\u0000\u0000\u6854\u6855\u6856"+
-        "\u0000\u0000\u6857\u6858\u6859\u0000\u0000\u685A"+
-        "\u0000\u0000\u685B\u0000\u0000\u0000\u685C\u685D"+
-        "\u0000\u0000\u0000\u685E\u0000\u0000\u0000\u0000"+
-        "\u0000\u685F\u6860\u6861\u6862\u6863\u0000\u0000"+
-        "\u0000\u6864\u6865\u6866\u6867\u0000\u0000\u0000"+
-        "\u6868\u6869\u0000\u0000\u0000\u0000\u686A\u686B"+
-        "\u686C\u0000\u0000\u0000\u0000\u686D\u686E\u0000"+
-        "\u0000\u0000\u0000\u0000\u686F\u0000\u0000\u0000"+
-        "\u6870\u6871\u0000\u6872\u6873\u0000\u6874\u6875"+
-        "\u6876\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6877\u0000\u6878\u747A\u6879"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u687A\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u687B\u687C\u687D\u0000\u0000\u687E\u0000\u0000"+
-        "\u0000\u6921\u6922\u0000\u0000\u6923\u0000\u6924"+
-        "\u0000\u0000\u0000\u6925\u0000\u0000\u0000\u0000"+
-        "\u0000\u6926\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6927\u6928\u0000\u0000\u0000"+
-        "\u0000\u6929\u692A\u0000\u692B\u0000\u692C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u692D"+
-        "\u0000\u0000\u692E\u692F\u6930\u0000\u0000\u0000"+
-        "\u6931\u0000\u0000\u0000\u6932\u6933\u0000\u0000"+
-        "\u0000\u6934\u0000\u0000\u0000\u6935\u6936\u0000"+
-        "\u0000\u0000\u6937\u6938\u6939\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u693A\u693B\u0000\u0000\u0000"+
-        "\u693C\u693D\u0000\u0000\u0000\u0000\u693E\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u693F\u0000"+
-        "\u6940\u0000\u6941\u6942\u6943\u0000\u0000\u6944"+
-        "\u0000\u0000\u0000\u0000\u0000\u6945\u6946\u0000"+
-        "\u0000\u0000\u0000\u6947\u0000\u6948\u6949\u0000"+
-        "\u694A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u694C\u0000\u0000\u694D\u0000\u0000\u694B"+
-        "\u0000\u0000\u694E\u694F\u6950\u0000\u6951\u0000"+
-        "\u0000\u6952\u0000\u0000\u6953\u0000\u6954\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6955\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6956\u0000\u6957\u0000\u6958\u6959"+
-        "\u0000\u0000\u695A\u0000\u695B\u695C\u695D\u0000"+
-        "\u0000\u695E\u0000\u695F\u0000\u0000\u6960\u6961"+
-        "\u0000\u6962\u0000\u6963\u0000\u0000\u6964\u0000"+
-        "\u6965\u0000\u0000\u0000\u0000\u0000\u6966\u0000"+
-        "\u6967\u0000\u6968\u0000\u0000\u6969\u696A\u696B"+
-        "\u0000\u747B\u0000\u696C\u696D\u0000\u0000\u0000"+
-        "\u696E\u0000\u0000\u0000\u696F\u6970\u0000\u6971"+
-        "\u0000\u6972\u0000\u0000\u6973\u0000\u0000\u0000"+
-        "\u0000\u0000\u6974\u6975\u0000\u6976\u0000\u0000"+
-        "\u0000\u6977\u6978\u0000\u0000\u6979\u0000\u697A"+
-        "\u697B\u697C\u697D\u697E\u6A21\u6A22\u0000\u0000"+
-        "\u6A23\u6A24\u0000\u6A25\u6A26\u6A27\u6A28\u0000"+
-        "\u6A29\u0000\u6A2A\u0000\u0000\u0000\u6A2B\u0000"+
-        "\u0000\u6A2C\u0000\u6A2D\u6A2E\u0000\u0000\u0000"+
-        "\u6A2F\u0000\u0000\u0000\u0000\u0000\u6A30\u0000"+
-        "\u0000\u0000\u0000\u6A31\u0000\u6A32\u0000\u0000"+
-        "\u0000\u0000\u0000\u6A33\u6A34\u6A35\u0000\u6A36"+
-        "\u0000\u6A37\u6A38\u0000\u0000\u6A39\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6A3A\u0000\u0000\u6A3B\u6A3C\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A3D\u6A3E\u6A3F"+
-        "\u0000\u0000\u0000\u6A40\u0000\u0000\u6A41\u0000"+
-        "\u0000\u6A42\u0000\u6A43\u0000\u6A44\u6A45\u0000"+
-        "\u6A46\u0000\u6A47\u6A48\u6A49\u6A4A\u6A4B\u0000"+
-        "\u0000\u0000\u747C\u6A4C\u0000\u6A4D\u0000\u6A4E"+
-        "\u6A4F\u6A50\u0000\u0000\u0000\u0000\u0000\u6A51"+
-        "\u6A52\u0000\u0000\u0000\u6A53\u6A54\u6A55\u6A56"+
-        "\u0000\u6A57\u6A58\u6A59\u0000\u6A5A\u0000\u6A5B"+
-        "\u6A5C\u0000\u0000\u0000\u6A5D\u0000\u0000\u0000"+
-        "\u0000\u0000\u6A5E\u0000\u0000\u6A5F\u6A60\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6A61\u6A62"+
-        "\u0000\u6A63\u0000\u0000\u6A64\u0000\u0000\u0000"+
-        "\u6A65\u6A66\u6A67\u0000\u0000\u0000\u0000\u6A68"+
-        "\u6A69\u0000\u0000\u6A6A\u6A6B\u0000\u6A6C\u6A6D"+
-        "\u0000\u6A6E\u0000\u0000\u0000\u0000\u0000\u6A6F"+
-        "\u6A70\u0000\u0000\u0000\u0000\u0000\u6A71\u0000"+
-        "\u6A72\u0000\u0000\u0000\u0000\u0000\u0000\u6A73"+
-        "\u6A74\u0000\u0000\u0000\u0000\u6A75\u0000\u6A76"+
-        "\u0000\u0000\u0000\u0000\u0000\u6A77\u0000\u6A78"+
-        "\u0000\u0000\u6A79\u6A7A\u0000\u0000\u0000\u6A7B"+
-        "\u0000\u0000\u0000\u6A7C\u0000\u0000\u0000\u6A7D"+
-        "\u6A7E\u6B21\u6B22\u0000\u0000\u6B23\u0000\u6B24"+
-        "\u6B25\u0000\u6B26\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6B27\u0000\u0000\u0000\u6B28"+
-        "\u0000\u6B29\u0000\u0000\u0000\u0000\u6B2A\u0000"+
-        "\u6B2B\u6B2C\u6B2D\u0000\u6B2E\u0000\u6B2F\u0000"+
-        "\u0000\u0000\u6B30\u6B31\u0000\u0000\u6B32\u6B33"+
-        "\u6B34\u6B35\u6B36\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6B37\u0000\u0000\u0000\u6B38\u6B39\u6B3A"+
-        "\u0000\u0000\u0000\u0000\u0000\u6B3B\u0000\u0000"+
-        "\u0000\u6B3C\u0000\u6B3D\u6B3E\u6B3F\u0000\u0000"+
-        "\u0000\u6B40\u6B41\u0000\u0000\u0000\u6B42\u6B43"+
-        "\u6B44\u0000\u0000\u6B45\u6B46\u0000\u6B47\u0000"+
-        "\u6B48\u0000\u0000\u6B49\u6B50\u6B4A\u6B4B\u6B4C"+
-        "\u0000\u0000\u0000\u6B4D\u0000\u0000\u0000\u0000"+
-        "\u6B52\u6B4E\u6B4F\u6B51\u0000\u0000\u6B53\u0000"+
-        "\u6B54\u0000\u6B55\u0000\u0000\u6B56\u0000\u6B57"+
-        "\u0000\u0000\u0000\u6B58\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6B59\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B5A\u0000\u0000\u0000\u0000\u6B5B"+
-        "\u0000\u6B5C\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B5E\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6B5D\u0000\u0000\u0000\u0000"+
-        "\u0000\u6B5F\u0000\u0000\u0000\u0000\u0000\u6B60"+
-        "\u6B61\u0000\u0000\u0000\u6B62\u6B63\u6B64\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6B65"+
-        "\u6B66\u0000\u6B67\u6B68\u6B69\u0000\u0000\u0000"+
-        "\u0000\u0000\u6B6A\u0000\u6B6B\u6B6D\u0000\u0000"+
-        "\u0000\u0000\u6B6E\u6B6F\u0000\u6B6C\u0000\u6B70"+
-        "\u0000\u0000\u6B71\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6B72\u6B73\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6B74"+
-        "\u0000\u0000\u6B76\u6B75\u0000\u6B77\u0000\u0000"+
-        "\u0000\u6B78\u6B79\u6B7A\u0000\u0000\u0000\u0000"+
-        "\u6B7B\u0000\u0000\u0000\u0000\u0000\u6B7C\u6B7D"+
-        "\u0000\u0000\u0000\u6B7E\u6C21\u0000\u6C22\u0000"+
-        "\u0000\u0000\u0000\u6C23\u6C24\u0000\u6C25\u0000"+
-        "\u0000\u0000\u6C26\u0000\u0000\u6C27\u6C28\u0000"+
-        "\u0000\u0000\u6C29\u6C2A\u0000\u6C2B\u6C2C\u6C2D"+
-        "\u6C2E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u6C2F\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C30\u0000\u6C31\u0000\u6C32\u0000"+
-        "\u0000\u6C33\u0000\u0000\u0000\u6C34\u0000\u0000"+
-        "\u0000\u6C35\u0000\u0000\u6C36\u0000\u0000\u6C37"+
-        "\u0000\u0000\u0000\u6C38\u0000\u0000\u0000\u6C39"+
-        "\u0000\u6C3A\u6C3B\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u6C3C\u6C3D\u6C3E\u6C3F"+
-        "\u0000\u0000\u6C40\u0000\u0000\u0000\u6C41\u6C42"+
-        "\u6C43\u0000\u0000\u0000\u0000\u6C44\u0000\u6C45"+
-        "\u0000\u6C46\u0000\u6C47\u0000\u0000\u6C48\u0000"+
-        "\u6C49\u0000\u0000\u6C4A\u6C4B\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6C4C\u0000"+
-        "\u0000\u0000\u6C4E\u0000\u0000\u0000\u0000\u6C4F"+
-        "\u0000\u0000\u6C4D\u0000\u0000\u0000\u6C50\u0000"+
-        "\u6C51\u6C52\u6C53\u0000\u0000\u6C54\u6C55\u0000"+
-        "\u0000\u6C56\u0000\u0000\u6C57\u6C58\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u6C59\u6C5A\u6C5B\u0000\u0000\u0000"+
-        "\u6C5C\u0000\u6C5D\u6C5E\u6C5F\u6C60\u0000\u6C61"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6C62\u6C63"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6C64\u0000"+
-        "\u6C65\u0000\u0000\u6C66\u0000\u0000\u6C67\u0000"+
-        "\u0000\u0000\u0000\u0000\u6C68\u0000\u0000\u0000"+
-        "\u6C69\u0000\u0000\u0000\u6C6A\u0000\u6C6B\u6C6C"+
-        "\u6C6D\u0000\u0000\u6C6E\u6C6F\u6C70\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6C71\u0000"+
-        "\u6C72\u0000\u0000\u6C73\u0000\u0000\u0000\u0000"+
-        "\u0000\u747E\u0000\u0000\u0000\u6C74\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6C75"+
-        "\u0000\u0000\u0000\u0000\u6C76\u0000\u0000\u6C77"+
-        "\u0000\u0000\u0000\u0000\u6C78\u6C79\u6C7A\u0000"+
-        "\u6C7B\u6C7C\u6C7D\u0000\u0000\u6C7E\u0000\u0000"+
-        "\u6D21\u0000\u0000\u0000\u0000\u0000\u0000\u6D22"+
-        "\u0000\u0000\u6D23\u6D24\u0000\u0000\u0000\u0000"+
-        "\u0000\u6D25\u0000\u0000\u0000\u0000\u0000\u6D26"+
-        "\u6D27\u6D28\u6D29\u0000\u6D2A\u0000\u6D2B\u6D2C"+
-        "\u0000\u6D2D\u6D2E\u6D2F\u0000\u0000\u0000\u6D30"+
-        "\u0000\u0000\u6D31\u0000\u0000\u0000\u6D32\u0000"+
-        "\u0000\u0000\u6D33\u6D34\u0000\u0000\u0000\u6D35"+
-        "\u0000\u6D36\u6D37\u0000\u6D38\u0000\u0000\u6D39"+
-        "\u0000\u6D3A\u6D3B\u0000\u6D3C\u6D3D\u0000\u6D3E"+
-        "\u0000\u6D3F\u0000\u6D40\u6D41\u6D42\u6D43\u6D44"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u6D45\u0000\u6D46\u6D47\u6D48"+
-        "\u6D49\u0000\u6D4A\u0000\u0000\u6D4B\u6D4C\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u6D4D\u6D4E\u0000\u0000\u0000\u6D4F\u6D50\u6D51"+
-        "\u6D52\u6D53\u0000\u6D54\u0000\u6D55\u0000\u0000"+
-        "\u0000\u0000\u6D56\u0000\u0000\u6D57\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6D58"+
-        "\u6D59\u6D5A\u6D5B\u0000\u6D5C\u0000\u6D5D\u6D5E"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u6D5F\u0000"+
-        "\u0000\u6D60\u6D61\u6D62\u0000\u6D63\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u2271\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u7445\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u7472\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u7434\u7437"+
-        "\u7438\u743D\u7444\u7447\u7448\u744E\u744F\u7453"+
-        "\u7455\u7456\u7457\u7458\u745A\u745B\u745E\u7460"+
-        "\u7462\u7463\u7465\u7469\u746A\u746B\u746D\u746F"+
-        "\u7470\u7473\u7477\u7478\u7479\u747D\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u742A\u0000\u0000\u0000\u0000\u7429"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u2237\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+
-        "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000";
-
-    private final static short index1[] = {
-        1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8,
-        9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
-        25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
-        41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
-        57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
-        73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 89, 0, 0, 90, 91, 0, 0, 0, 0, 92
-    };
-
-    private final static String index2[] = {
-        innerIndex0,
-        innerIndex1,
-        innerIndex2,
-        innerIndex3,
-        innerIndex4,
-        innerIndex5
-    };
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/MS50220.java
--- a/src/share/classes/sun/nio/cs/ext/MS50220.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/nio/cs/ext/MS50220.java	Fri Aug 24 09:29:17 2012 +0100
@@ -26,6 +26,8 @@
 package sun.nio.cs.ext;
 
 import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
 
 public class MS50220 extends ISO2022_JP
 {
@@ -34,6 +36,10 @@
               ExtendedCharsets.aliasesFor("x-windows-50220"));
     }
 
+    protected MS50220(String canonicalName, String[] aliases) {
+        super(canonicalName, aliases);
+    }
+
     public String historicalName() {
         return "MS50220";
     }
@@ -44,29 +50,25 @@
              (cs instanceof MS50220);
     }
 
-    protected short[] getDecIndex1() {
-        return JIS_X_0208_MS5022X_Decoder.index1;
+    public CharsetDecoder newDecoder() {
+        return new Decoder(this, DEC0208, DEC0212);
     }
 
-    protected String[] getDecIndex2() {
-        return JIS_X_0208_MS5022X_Decoder.index2;
-    }
-
-    protected DoubleByteDecoder get0212Decoder() {
-        return new JIS_X_0212_MS5022X_Decoder(this);
+    public CharsetEncoder newEncoder() {
+        return new Encoder(this, ENC0208, ENC0212, doSBKANA());
     }
 
-    protected short[] getEncIndex1() {
-        return JIS_X_0208_MS5022X_Encoder.index1;
-    }
+    private final static DoubleByte.Decoder DEC0208 =
+        (DoubleByte.Decoder)new JIS_X_0208_MS5022X().newDecoder();
+
+    private final static DoubleByte.Decoder DEC0212 =
+        (DoubleByte.Decoder)new JIS_X_0212_MS5022X().newDecoder();
 
-    protected String[] getEncIndex2() {
-        return JIS_X_0208_MS5022X_Encoder.index2;
-    }
+    private final static DoubleByte.Encoder ENC0208 =
+        (DoubleByte.Encoder)new JIS_X_0208_MS5022X().newEncoder();
 
-    protected DoubleByteEncoder get0212Encoder() {
-        return new JIS_X_0212_MS5022X_Encoder(this);
-    }
+    private final static DoubleByte.Encoder ENC0212 =
+        (DoubleByte.Encoder)new JIS_X_0212_MS5022X().newEncoder();
 
     protected boolean doSBKANA() {
         return false;
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/MS50221.java
--- a/src/share/classes/sun/nio/cs/ext/MS50221.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/nio/cs/ext/MS50221.java	Fri Aug 24 09:29:17 2012 +0100
@@ -27,7 +27,7 @@
 
 import java.nio.charset.Charset;
 
-public class MS50221 extends ISO2022_JP
+public class MS50221 extends MS50220
 {
     public MS50221() {
         super("x-windows-50221",
@@ -44,30 +44,6 @@
              (cs instanceof MS50221);
     }
 
-    protected short[] getDecIndex1() {
-        return JIS_X_0208_MS5022X_Decoder.index1;
-    }
-
-    protected String[] getDecIndex2() {
-        return JIS_X_0208_MS5022X_Decoder.index2;
-    }
-
-    protected DoubleByteDecoder get0212Decoder() {
-        return new JIS_X_0212_MS5022X_Decoder(this);
-    }
-
-    protected short[] getEncIndex1() {
-        return JIS_X_0208_MS5022X_Encoder.index1;
-    }
-
-    protected String[] getEncIndex2() {
-        return JIS_X_0208_MS5022X_Encoder.index2;
-    }
-
-    protected DoubleByteEncoder get0212Encoder() {
-        return new JIS_X_0212_MS5022X_Encoder(this);
-    }
-
     protected boolean doSBKANA() {
         return true;
     }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/MSISO2022JP.java
--- a/src/share/classes/sun/nio/cs/ext/MSISO2022JP.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/nio/cs/ext/MSISO2022JP.java	Fri Aug 24 09:29:17 2012 +0100
@@ -26,6 +26,8 @@
 package sun.nio.cs.ext;
 
 import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
 
 public class MSISO2022JP extends ISO2022_JP
 {
@@ -43,31 +45,17 @@
              (cs instanceof MSISO2022JP);
     }
 
-    protected short[] getDecIndex1() {
-        return JIS_X_0208_MS932_Decoder.index1;
-    }
-
-    protected String[] getDecIndex2() {
-        return JIS_X_0208_MS932_Decoder.index2;
-    }
-
-    protected DoubleByteDecoder get0212Decoder() {
-        return null;
+    public CharsetDecoder newDecoder() {
+        return new Decoder(this, DEC0208, null);
     }
 
-    protected short[] getEncIndex1() {
-        return JIS_X_0208_MS932_Encoder.index1;
-    }
-
-    protected String[] getEncIndex2() {
-        return JIS_X_0208_MS932_Encoder.index2;
+    public CharsetEncoder newEncoder() {
+        return new Encoder(this, ENC0208, null, true);
     }
 
-    protected DoubleByteEncoder get0212Encoder() {
-        return null;
-    }
+    private final static DoubleByte.Decoder DEC0208 =
+        (DoubleByte.Decoder)new JIS_X_0208_MS932().newDecoder();
 
-    protected boolean doSBKANA() {
-        return true;
-    }
+    private final static DoubleByte.Encoder ENC0208 =
+        (DoubleByte.Encoder)new JIS_X_0208_MS932().newEncoder();
 }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/PCK.java
--- a/src/share/classes/sun/nio/cs/ext/PCK.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CoderResult;
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class PCK
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public PCK() {
-        super("x-PCK", ExtendedCharsets.aliasesFor("x-PCK"));
-    }
-
-    public String historicalName() {
-        return "PCK";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof JIS_X_0201)
-                || (cs instanceof PCK));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-
-        // Need to force the replacement byte to 0x3f
-        // because JIS_X_0208_Encoder defines its own
-        // alternative 2 byte substitution to permit it
-        // to exist as a self-standing Encoder
-
-        byte[] replacementBytes = { (byte)0x3f };
-        return new Encoder(this).replaceWith(replacementBytes);
-    }
-
-    private static class Decoder extends SJIS.Decoder {
-
-        JIS_X_0208_Solaris_Decoder jis0208;
-        private static final char REPLACE_CHAR='\uFFFD';
-
-        private Decoder(Charset cs) {
-            super(cs);
-            jis0208 = new JIS_X_0208_Solaris_Decoder(cs);
-        }
-
-        protected char decodeDouble(int c1, int c2) {
-            char outChar;
-
-            if ((outChar = super.decodeDouble(c1, c2)) != '\uFFFD')  {
-                // Map JIS X 0208:1983 0x213D <--> U+2015
-                return ((outChar != '\u2014')? outChar: '\u2015');
-            } else {
-                int adjust = c2 < 0x9F ? 1 : 0;
-                int rowOffset = c1 < 0xA0 ? 0x70 : 0xB0;
-                int cellOffset = (adjust == 1) ? (c2 > 0x7F ? 0x20 : 0x1F) : 0x7E;
-                int b1 = ((c1 - rowOffset) << 1) - adjust;
-                int b2 = c2 - cellOffset;
-                char outChar2 = jis0208.decodeDouble(b1, b2);
-                return outChar2;
-            }
-        }
-    }
-
-    private static class Encoder extends SJIS.Encoder {
-
-        private JIS_X_0201.Encoder jis0201;
-
-        private static final short[] j0208Index1 =
-            JIS_X_0208_Solaris_Encoder.getIndex1();
-        private static final String[] j0208Index2 =
-            JIS_X_0208_Solaris_Encoder.getIndex2();
-
-        private Encoder(Charset cs) {
-            super(cs);
-            jis0201 = new JIS_X_0201.Encoder(cs);
-        }
-
-        protected int encodeDouble(char ch) {
-            int result = 0;
-
-            // PCK uses JIS_X_0208:1983 rather than JIS_X_0208:1997
-
-            switch (ch) {
-                case '\u2015':
-                    return 0x815C;
-                case '\u2014':
-                    return 0;
-                default:
-                    break;
-            }
-
-            if ((result = super.encodeDouble(ch)) != 0) {
-                return result;
-            }
-            else {
-                int offset = j0208Index1[ch >> 8] << 8;
-                int pos = j0208Index2[offset >> 12].charAt((offset & 0xfff) + (ch & 0xff));
-                if (pos != 0) {
-                int c1 = (pos >> 8) & 0xff;
-                int c2 = pos & 0xff;
-                int rowOffset = c1 < 0x5F ? 0x70 : 0xB0;
-                int cellOffset = (c1 % 2 == 1) ? (c2 > 0x5F ? 0x20 : 0x1F) : 0x7E;
-                result = ((((c1 + 1 ) >> 1) + rowOffset) << 8) | (c2 + cellOffset);
-                }
-            }
-            return result;
-        }
-    }
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/nio/cs/ext/SJIS.java
--- a/src/share/classes/sun/nio/cs/ext/SJIS.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-/*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CoderResult;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class SJIS
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public SJIS() {
-        super("Shift_JIS", ExtendedCharsets.aliasesFor("Shift_JIS"));
-    }
-
-    public String historicalName() {
-        return "SJIS";
-    }
-
-    public boolean contains(Charset cs) {
-        return ((cs.name().equals("US-ASCII"))
-                || (cs instanceof JIS_X_0201)
-                || (cs instanceof SJIS)
-                || (cs instanceof JIS_X_0208));
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-
-        // Need to force the replacement byte to 0x3f
-        // because JIS_X_0208_Encoder defines its own
-        // alternative 2 byte substitution to permit it
-        // to exist as a self-standing Encoder
-
-        byte[] replacementBytes = { (byte)0x3f };
-        return new Encoder(this).replaceWith(replacementBytes);
-    }
-
-    static class Decoder extends JIS_X_0208_Decoder
-        implements DelegatableDecoder {
-
-        JIS_X_0201.Decoder jis0201;
-
-        protected Decoder(Charset cs) {
-            super(cs);
-            jis0201 = new JIS_X_0201.Decoder(cs);
-        }
-
-        protected char decodeSingle(int b) {
-            // If the high bits are all off, it's ASCII == Unicode
-            if ((b & 0xFF80) == 0) {
-                return (char)b;
-            }
-            return jis0201.decode(b);
-        }
-
-        protected char decodeDouble(int c1, int c2) {
-            int adjust = c2 < 0x9F ? 1 : 0;
-            int rowOffset = c1 < 0xA0 ? 0x70 : 0xB0;
-            int cellOffset = (adjust == 1) ? (c2 > 0x7F ? 0x20 : 0x1F) : 0x7E;
-            int b1 = ((c1 - rowOffset) << 1) - adjust;
-            int b2 = c2 - cellOffset;
-            return super.decodeDouble(b1, b2);
-        }
-
-        // Make some protected methods public for use by JISAutoDetect
-        public CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
-            return super.decodeLoop(src, dst);
-        }
-        public void implReset() {
-            super.implReset();
-        }
-        public CoderResult implFlush(CharBuffer out) {
-            return super.implFlush(out);
-        }
-    }
-
-    static class Encoder extends JIS_X_0208_Encoder {
-
-        private JIS_X_0201.Encoder jis0201;
-
-        private static final short[] j0208Index1 =
-            JIS_X_0208_Encoder.getIndex1();
-        private static final String[] j0208Index2 =
-            JIS_X_0208_Encoder.getIndex2();
-
-        protected Encoder(Charset cs) {
-            super(cs);
-            jis0201 = new JIS_X_0201.Encoder(cs);
-        }
-
-        protected int encodeSingle(char inputChar) {
-            byte b;
-
-            // \u0000 - \u007F map straight through
-            if ((inputChar & 0xFF80) == 0)
-                return (byte)inputChar;
-
-            if ((b = jis0201.encode(inputChar)) == 0)
-                return -1;
-            else
-                return b;
-        }
-
-        protected int encodeDouble(char ch) {
-            int offset = j0208Index1[ch >> 8] << 8;
-            int pos = j0208Index2[offset >> 12].charAt((offset & 0xfff) + (ch & 0xff));
-            if (pos == 0) {
-                /* Zero value indicates this Unicode has no mapping to
-                 * JIS0208.
-                 * We bail here because the JIS -> SJIS algorithm produces
-                 * bogus SJIS values for invalid JIS input.  Zero should be
-                 * the only invalid JIS value in our table.
-                 */
-                return 0;
-            }
-            /*
-             * This algorithm for converting from JIS to SJIS comes from
-             * Ken Lunde's "Understanding Japanese Information Processing",
-             * pg 163.
-             */
-            int c1 = (pos >> 8) & 0xff;
-            int c2 = pos & 0xff;
-            int rowOffset = c1 < 0x5F ? 0x70 : 0xB0;
-            int cellOffset = (c1 % 2 == 1) ? (c2 > 0x5F ? 0x20 : 0x1F) : 0x7E;
-            return ((((c1 + 1 ) >> 1) + rowOffset) << 8) | (c2 + cellOffset);
-        }
-    }
-}
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/rmi/transport/tcp/TCPTransport.java
--- a/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java	Fri Aug 24 09:29:17 2012 +0100
@@ -28,6 +28,7 @@
 import java.lang.ref.SoftReference;
 import java.lang.ref.WeakReference;
 import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.UndeclaredThrowableException;
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.IOException;
@@ -462,8 +463,10 @@
                             return;
                         }
                         // continue loop
+                    } else if (t instanceof Error) {
+                        throw (Error) t;
                     } else {
-                        throw (Error) t;
+                        throw new UndeclaredThrowableException(t);
                     }
                 }
             }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/security/jgss/GSSCredentialImpl.java
--- a/src/share/classes/sun/security/jgss/GSSCredentialImpl.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/security/jgss/GSSCredentialImpl.java	Fri Aug 24 09:29:17 2012 +0100
@@ -576,7 +576,7 @@
         if (element == null)
             throw new GSSExceptionImpl(GSSException.NO_CRED,
                                        "No credential found for: " +
-                                       mechOid + getElementStr(mechOid,
+                                       getElementStr(mechOid,
                                        initiate? INITIATE_ONLY : ACCEPT_ONLY));
         return element;
     }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/security/pkcs/PKCS7.java
--- a/src/share/classes/sun/security/pkcs/PKCS7.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/security/pkcs/PKCS7.java	Fri Aug 24 09:29:17 2012 +0100
@@ -882,7 +882,7 @@
         PKCS7 tsToken = tsReply.getToken();
 
         TimestampToken tst = tsReply.getTimestampToken();
-        if (!tst.getHashAlgorithm().getName().equals("SHA")) {
+        if (!tst.getHashAlgorithm().getName().equals("SHA-1")) {
             throw new IOException("Digest algorithm not SHA-1 in "
                                   + "timestamp token");
         }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java
--- a/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java	Fri Aug 24 09:29:17 2012 +0100
@@ -1298,11 +1298,9 @@
            try {
                 String algName =
                         macData.getDigestAlgName().toUpperCase(Locale.ENGLISH);
-                if (algName.equals("SHA")  ||
-                    algName.equals("SHA1") ||
-                    algName.equals("SHA-1")) {
-                    algName = "SHA1";
-                }
+
+                // Change SHA-1 to SHA1
+                algName = algName.replace("-", "");
 
                 // generate MAC (MAC key is created within JCE)
                 Mac m = Mac.getInstance("HmacPBE" + algName);
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/security/provider/certpath/OCSPResponse.java
--- a/src/share/classes/sun/security/provider/certpath/OCSPResponse.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/security/provider/certpath/OCSPResponse.java	Fri Aug 24 09:29:17 2012 +0100
@@ -157,8 +157,6 @@
     private final AlgorithmId sigAlgId;
     private final byte[] signature;
     private final byte[] tbsResponseData;
-    private final X500Principal responderName;
-    private final byte[] responderKey;
     private final byte[] responseNonce;
 
     /*
@@ -195,8 +193,6 @@
             sigAlgId = null;
             signature = null;
             tbsResponseData = null;
-            responderName = null;
-            responderKey = null;
             responseNonce = null;
             return;
         }
@@ -268,15 +264,17 @@
         // responderID
         short tag = (byte)(seq.tag & 0x1f);
         if (tag == NAME_TAG) {
-            responderName =
-                new X500Principal(new ByteArrayInputStream(seq.toByteArray()));
             if (debug != null) {
+                X500Principal responderName =
+                    new X500Principal(seq.getData().toByteArray());
                 debug.println("OCSP Responder name: " + responderName);
             }
-            responderKey = null;
         } else if (tag == KEY_TAG) {
-            responderKey = seq.getOctetString();
-            responderName = null;
+            if (debug != null) {
+                byte[] responderKey = seq.getData().getOctetString();
+                debug.println("OCSP Responder key: " +
+                              Debug.toString(responderKey));
+            }
         } else {
             throw new IOException("Bad encoding in responderID element of " +
                 "OCSP response: expected ASN.1 context specific tag 0 or 1");
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/security/ssl/SSLSocketImpl.java
--- a/src/share/classes/sun/security/ssl/SSLSocketImpl.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/security/ssl/SSLSocketImpl.java	Fri Aug 24 09:29:17 2012 +0100
@@ -1576,11 +1576,9 @@
         Throwable cachedThrowable = null;
         try {
             switch (state) {
-            /*
-             * java.net code sometimes closes sockets "early", when
-             * we can't actually do I/O on them.
-             */
             case cs_START:
+                // unconnected socket or handshaking has not been initialized
+                closeSocket(selfInitiated);
                 break;
 
             /*
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/security/x509/AlgorithmId.java
--- a/src/share/classes/sun/security/x509/AlgorithmId.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/security/x509/AlgorithmId.java	Fri Aug 24 09:29:17 2012 +0100
@@ -242,10 +242,7 @@
                 AlgorithmId paramsId =
                         AlgorithmId.parse(new DerValue(getEncodedParams()));
                 String paramsName = paramsId.getName();
-                if (paramsName.equals("SHA")) {
-                    paramsName = "SHA1";
-                }
-                algName = paramsName + "withECDSA";
+                algName = makeSigAlg(paramsName, "EC");
             } catch (IOException e) {
                 // ignore
             }
@@ -876,11 +873,11 @@
         nameTable = new HashMap();
         nameTable.put(MD5_oid, "MD5");
         nameTable.put(MD2_oid, "MD2");
-        nameTable.put(SHA_oid, "SHA");
-        nameTable.put(SHA224_oid, "SHA224");
-        nameTable.put(SHA256_oid, "SHA256");
-        nameTable.put(SHA384_oid, "SHA384");
-        nameTable.put(SHA512_oid, "SHA512");
+        nameTable.put(SHA_oid, "SHA-1");
+        nameTable.put(SHA224_oid, "SHA-224");
+        nameTable.put(SHA256_oid, "SHA-256");
+        nameTable.put(SHA384_oid, "SHA-384");
+        nameTable.put(SHA512_oid, "SHA-512");
         nameTable.put(RSAEncryption_oid, "RSA");
         nameTable.put(RSA_oid, "RSA");
         nameTable.put(DH_oid, "Diffie-Hellman");
@@ -917,11 +914,8 @@
      * name and a encryption algorithm name.
      */
     public static String makeSigAlg(String digAlg, String encAlg) {
-        digAlg = digAlg.replace("-", "").toUpperCase(Locale.ENGLISH);
-        if (digAlg.equalsIgnoreCase("SHA")) digAlg = "SHA1";
-
-        encAlg = encAlg.toUpperCase(Locale.ENGLISH);
-        if (encAlg.equals("EC")) encAlg = "ECDSA";
+        digAlg = digAlg.replace("-", "");
+        if (encAlg.equalsIgnoreCase("EC")) encAlg = "ECDSA";
 
         return digAlg + "with" + encAlg;
     }
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/security/x509/X509CRLImpl.java
--- a/src/share/classes/sun/security/x509/X509CRLImpl.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/security/x509/X509CRLImpl.java	Fri Aug 24 09:29:17 2012 +0100
@@ -32,6 +32,7 @@
 import java.security.Principal;
 import java.security.PublicKey;
 import java.security.PrivateKey;
+import java.security.Provider;
 import java.security.Signature;
 import java.security.NoSuchAlgorithmException;
 import java.security.InvalidKeyException;
@@ -399,6 +400,61 @@
     }
 
     /**
+     * Verifies that this CRL was signed using the
+     * private key that corresponds to the given public key,
+     * and that the signature verification was computed by
+     * the given provider. Note that the specified Provider object
+     * does not have to be registered in the provider list.
+     *
+     * @param key the PublicKey used to carry out the verification.
+     * @param sigProvider the signature provider.
+     *
+     * @exception NoSuchAlgorithmException on unsupported signature
+     * algorithms.
+     * @exception InvalidKeyException on incorrect key.
+     * @exception SignatureException on signature errors.
+     * @exception CRLException on encoding errors.
+     */
+    public synchronized void verify(PublicKey key, Provider sigProvider)
+            throws CRLException, NoSuchAlgorithmException, InvalidKeyException,
+            SignatureException {
+
+        if (signedCRL == null) {
+            throw new CRLException("Uninitialized CRL");
+        }
+        Signature sigVerf = null;
+        if (sigProvider == null) {
+            sigVerf = Signature.getInstance(sigAlgId.getName());
+        } else {
+            sigVerf = Signature.getInstance(sigAlgId.getName(), sigProvider);
+        }
+        sigVerf.initVerify(key);
+
+        if (tbsCertList == null) {
+            throw new CRLException("Uninitialized CRL");
+        }
+
+        sigVerf.update(tbsCertList, 0, tbsCertList.length);
+
+        if (!sigVerf.verify(signature)) {
+            throw new SignatureException("Signature does not match.");
+        }
+        verifiedPublicKey = key;
+    }
+
+    /**
+     * This static method is the default implementation of the
+     * verify(PublicKey key, Provider sigProvider) method in X509CRL.
+     * Called from java.security.cert.X509CRL.verify(PublicKey key,
+     * Provider sigProvider)
+     */
+    public static void verify(X509CRL crl, PublicKey key,
+            Provider sigProvider) throws CRLException,
+            NoSuchAlgorithmException, InvalidKeyException, SignatureException {
+        crl.verify(key, sigProvider);
+    }
+
+    /**
      * Encodes an X.509 CRL, and signs it using the given key.
      *
      * @param key the private key used for signing.
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/security/x509/X509CertImpl.java
--- a/src/share/classes/sun/security/x509/X509CertImpl.java	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/security/x509/X509CertImpl.java	Fri Aug 24 09:29:17 2012 +0100
@@ -453,6 +453,62 @@
     }
 
     /**
+     * Throws an exception if the certificate was not signed using the
+     * verification key provided.  This method uses the signature verification
+     * engine supplied by the specified provider. Note that the specified
+     * Provider object does not have to be registered in the provider list.
+     * Successfully verifying a certificate does not indicate that one
+     * should trust the entity which it represents.
+     *
+     * @param key the public key used for verification.
+     * @param sigProvider the provider.
+     *
+     * @exception NoSuchAlgorithmException on unsupported signature
+     * algorithms.
+     * @exception InvalidKeyException on incorrect key.
+     * @exception SignatureException on signature errors.
+     * @exception CertificateException on encoding errors.
+     */
+    public synchronized void verify(PublicKey key, Provider sigProvider)
+            throws CertificateException, NoSuchAlgorithmException,
+            InvalidKeyException, SignatureException {
+        if (signedCert == null) {
+            throw new CertificateEncodingException("Uninitialized certificate");
+        }
+        // Verify the signature ...
+        Signature sigVerf = null;
+        if (sigProvider == null) {
+            sigVerf = Signature.getInstance(algId.getName());
+        } else {
+            sigVerf = Signature.getInstance(algId.getName(), sigProvider);
+        }
+        sigVerf.initVerify(key);
+
+        byte[] rawCert = info.getEncodedInfo();
+        sigVerf.update(rawCert, 0, rawCert.length);
+
+        // verify may throw SignatureException for invalid encodings, etc.
+        verificationResult = sigVerf.verify(signature);
+        verifiedPublicKey = key;
+
+        if (verificationResult == false) {
+            throw new SignatureException("Signature does not match.");
+        }
+    }
+
+     /**
+     * This static method is the default implementation of the
+     * verify(PublicKey key, Provider sigProvider) method in X509Certificate.
+     * Called from java.security.cert.X509Certificate.verify(PublicKey key,
+     * Provider sigProvider)
+     */
+    public static void verify(X509Certificate cert, PublicKey key,
+            Provider sigProvider) throws CertificateException,
+            NoSuchAlgorithmException, InvalidKeyException, SignatureException {
+        cert.verify(key, sigProvider);
+    }
+
+    /**
      * Creates an X.509 certificate, and signs it using the given key
      * (associating a signature algorithm and an X.500 name).
      * This operation is used to implement the certificate generation
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sun/util/resources/CurrencyNames_es_VE.properties
--- a/src/share/classes/sun/util/resources/CurrencyNames_es_VE.properties	Fri Aug 03 20:56:16 2012 +0100
+++ b/src/share/classes/sun/util/resources/CurrencyNames_es_VE.properties	Fri Aug 24 09:29:17 2012 +0100
@@ -36,5 +36,5 @@
 # Taligent is a registered trademark of Taligent, Inc.
 
 VEB=Bs
-VEF=BsF.
+VEF=Bs.F.
 
diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sunw/io/Serializable.java
--- a/src/share/classes/sunw/io/Serializable.java	Fri Aug 03 20:56:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 1996, 1997, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sunw.io;
-
-/**
- * FOR BACKWARD COMPATIBILITY ONLY - DO NOT USE.
- * 

- * This is a backwards compatibility class to allow Java Beans that - * were developed under JDK 1.0.2 to run correctly under JDK 1.1 - *

- * To allow beans development under JDK 1.0.2, JavaSoft delivered three - * no-op interfaces/classes (sunw.io.Serializable, sunw.util.EventObject - * and sunw.util.EventListener) that could be downloaded into JDK 1.0.2 - * systems and which would act as placeholders for the real JDK 1.1 - * classes. - *

- * Now under JDK 1.1 we provide versions of these classes and interfaces - * that inherit from the real version in java.util and java.io. These - * mean that beans developed under JDK 1.0.2 against the sunw.* classes - * will now continue to work on JDK 1.1 and will (indirectly) inherit - * from the appropriate java.* interfaces/classes. - * - * @deprecated This is a compatibility type to allow Java Beans that - * were developed under JDK 1.0.2 to run correctly under JDK 1.1. The - * corresponding JDK1.1 type is java.io.Serializable - * - * @see java.io.Serializable - */ - -public interface Serializable extends java.io.Serializable { -} diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sunw/util/EventListener.java --- a/src/share/classes/sunw/util/EventListener.java Fri Aug 03 20:56:16 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* - * Copyright (c) 1996, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package sunw.util; - -/** - * FOR BACKWARD COMPATIBILITY ONLY - DO NOT USE. - *

- * This is a backwards compatibility class to allow Java Beans that - * were developed under JDK 1.0.2 to run correctly under JDK 1.1 - *

- * To allow beans development under JDK 1.0.2, JavaSoft delivered three - * no-op interfaces/classes (sunw.io.Serializable, sunw.util.EventObject - * and sunw.util.EventListener) that could be downloaded into JDK 1.0.2 - * systems and which would act as placeholders for the real JDK 1.1 - * classes. - *

- * Now under JDK 1.1 we provide versions of these classes and interfaces - * that inherit from the real version in java.util and java.io. These - * mean that beans developed under JDK 1.0.2 against the sunw.* classes - * will now continue to work on JDK 1.1 and will (indirectly) inherit - * from the approrpiate java.* interfaces/classes. - * - * @deprecated This is a compatibility type to allow Java Beans that - * were developed under JDK 1.0.2 to run correctly under JDK 1.1. The - * corresponding JDK1.1 type is java.util.EventListener - * - * @see java.util.EventListener - */ - -public interface EventListener extends java.util.EventListener { -} diff -r d15095dfd348 -r aa2c9ce06632 src/share/classes/sunw/util/EventObject.java --- a/src/share/classes/sunw/util/EventObject.java Fri Aug 03 20:56:16 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* - * Copyright (c) 1996, 2003, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package sunw.util; - -/** - * FOR BACKWARD COMPATIBILITY ONLY - DO NOT USE. - *

- * This is a backwards compatibility class to allow Java Beans that - * were developed under JDK 1.0.2 to run correctly under JDK 1.1 - *

- * To allow beans development under JDK 1.0.2, JavaSoft delivered three - * no-op interfaces/classes (sunw.io.Serializable, sunw.util.EventObject - * and sunw.util.EventListener) that could be downloaded into JDK 1.0.2 - * systems and which would act as placeholders for the real JDK 1.1 - * classes. - *

- * Now under JDK 1.1 we provide versions of these classes and interfaces - * that inherit from the real version in java.util and java.io. These - * mean that beans developed under JDK 1.0.2 against the sunw.* classes - * will now continue to work on JDK 1.1 and will (indirectly) inherit - * from the approrpiate java.* interfaces/classes. - * - * @deprecated This is a compatibility type to allow Java Beans that - * were developed under JDK 1.0.2 to run correctly under JDK 1.1. The - * corresponding JDK1.1 type is java.util.EventObject - * - * @see java.util.EventObject - */ - -public class EventObject extends java.util.EventObject { - - private static final long serialVersionUID = 6723767567830330255L; - - public EventObject(Object source) { - super(source); - } - -} diff -r d15095dfd348 -r aa2c9ce06632 src/share/native/java/io/io_util.h --- a/src/share/native/java/io/io_util.h Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/native/java/io/io_util.h Fri Aug 24 09:29:17 2012 +0100 @@ -25,9 +25,6 @@ #include "jni.h" #include "jni_util.h" -#ifdef MACOSX -char* convertToNFDIfNeeded(const char *origPath, char *buf, size_t bufsize); -#endif extern jfieldID IO_fd_fdID; extern jfieldID IO_handle_fdID; @@ -59,7 +56,6 @@ void throwFileNotFoundException(JNIEnv *env, jstring path); - /* * Macros for managing platform strings. The typical usage pattern is: * @@ -88,35 +84,6 @@ * declares a unique variable. */ -#ifdef MACOSX - -#define WITH_PLATFORM_STRING(env, strexp, var) \ - if (1) { \ - const char *var; \ - jstring _##var##str = (strexp); \ - if (_##var##str == NULL) { \ - JNU_ThrowNullPointerException((env), NULL); \ - goto _##var##end; \ - } \ - const char *temp_var = JNU_GetStringPlatformChars((env), _##var##str, NULL); \ - if (temp_var == NULL) goto _##var##end; \ - char buf[MAXPATHLEN]; \ - var = convertToNFDIfNeeded(temp_var, buf, sizeof(buf)); - -#define WITH_FIELD_PLATFORM_STRING(env, object, id, var) \ - WITH_PLATFORM_STRING(env, \ - ((object == NULL) \ - ? NULL \ - : (*(env))->GetObjectField((env), (object), (id))), \ - var) - -#define END_PLATFORM_STRING(env, var) \ - JNU_ReleaseStringPlatformChars(env, _##var##str, temp_var); \ - _##var##end: ; \ - } else ((void)NULL) - -#else - #define WITH_PLATFORM_STRING(env, strexp, var) \ if (1) { \ const char *var; \ @@ -140,8 +107,6 @@ _##var##end: ; \ } else ((void)NULL) -#endif - /* Macros for transforming Java Strings into native Unicode strings. * Works analogously to WITH_PLATFORM_STRING. diff -r d15095dfd348 -r aa2c9ce06632 src/share/native/java/util/zip/Deflater.c --- a/src/share/native/java/util/zip/Deflater.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/native/java/util/zip/Deflater.c Fri Aug 24 09:29:17 2012 +0100 @@ -215,18 +215,6 @@ return ((z_stream *)jlong_to_ptr(addr))->adler; } -JNIEXPORT jlong JNICALL -Java_java_util_zip_Deflater_getBytesRead(JNIEnv *env, jclass cls, jlong addr) -{ - return ((z_stream *)jlong_to_ptr(addr))->total_in; -} - -JNIEXPORT jlong JNICALL -Java_java_util_zip_Deflater_getBytesWritten(JNIEnv *env, jclass cls, jlong addr) -{ - return ((z_stream *)jlong_to_ptr(addr))->total_out; -} - JNIEXPORT void JNICALL Java_java_util_zip_Deflater_reset(JNIEnv *env, jclass cls, jlong addr) { diff -r d15095dfd348 -r aa2c9ce06632 src/share/native/java/util/zip/Inflater.c --- a/src/share/native/java/util/zip/Inflater.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/native/java/util/zip/Inflater.c Fri Aug 24 09:29:17 2012 +0100 @@ -174,18 +174,6 @@ return ((z_stream *)jlong_to_ptr(addr))->adler; } -JNIEXPORT jlong JNICALL -Java_java_util_zip_Inflater_getBytesRead(JNIEnv *env, jclass cls, jlong addr) -{ - return ((z_stream *)jlong_to_ptr(addr))->total_in; -} - -JNIEXPORT jlong JNICALL -Java_java_util_zip_Inflater_getBytesWritten(JNIEnv *env, jclass cls, jlong addr) -{ - return ((z_stream *)jlong_to_ptr(addr))->total_out; -} - JNIEXPORT void JNICALL Java_java_util_zip_Inflater_reset(JNIEnv *env, jclass cls, jlong addr) { diff -r d15095dfd348 -r aa2c9ce06632 src/share/native/java/util/zip/zlib-1.2.5/compress.c --- a/src/share/native/java/util/zip/zlib-1.2.5/compress.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/native/java/util/zip/zlib-1.2.5/compress.c Fri Aug 24 09:29:17 2012 +0100 @@ -75,7 +75,7 @@ deflateEnd(&stream); return err == Z_OK ? Z_BUF_ERROR : err; } - *destLen = (uLong)stream.total_out; + *destLen = stream.total_out; err = deflateEnd(&stream); return err; diff -r d15095dfd348 -r aa2c9ce06632 src/share/native/java/util/zip/zlib-1.2.5/inflate.c --- a/src/share/native/java/util/zip/zlib-1.2.5/inflate.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/native/java/util/zip/zlib-1.2.5/inflate.c Fri Aug 24 09:29:17 2012 +0100 @@ -1370,7 +1370,7 @@ z_streamp strm; { unsigned len; /* number of bytes to look at or looked at */ - long long in, out; /* temporary to save total_in and total_out */ + unsigned long in, out; /* temporary to save total_in and total_out */ unsigned char buf[4]; /* to restore bit buffer to byte string */ struct inflate_state FAR *state; diff -r d15095dfd348 -r aa2c9ce06632 src/share/native/java/util/zip/zlib-1.2.5/patches/ChangeLog_java --- a/src/share/native/java/util/zip/zlib-1.2.5/patches/ChangeLog_java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/native/java/util/zip/zlib-1.2.5/patches/ChangeLog_java Fri Aug 24 09:29:17 2012 +0100 @@ -8,12 +8,3 @@ (3)updated crc32.c/crc32() unsigned long -> uLong - -(4)updated zlib.h (to support > 4G zipfile): - total_in/out: uLong -> long long - -(5)updated inflate.c/inflateSync() - unsigned long in, out; --> long long in, out; - -(6)updated compress.c/uncompr.c - *destLen = stream.total_out; --> *destLen = (uLong)stream.total_out; diff -r d15095dfd348 -r aa2c9ce06632 src/share/native/java/util/zip/zlib-1.2.5/zlib.h --- a/src/share/native/java/util/zip/zlib-1.2.5/zlib.h Fri Aug 03 20:56:16 2012 +0100 +++ b/src/share/native/java/util/zip/zlib-1.2.5/zlib.h Fri Aug 24 09:29:17 2012 +0100 @@ -109,11 +109,11 @@ typedef struct z_stream_s { Bytef *next_in; /* next input byte */ uInt avail_in; /* number of bytes available at next_in */ - long long total_in; /* total nb of input bytes read so far */ + uLong total_in; /* total nb of input bytes read so far */ Bytef *next_out; /* next output byte should be put there */ uInt avail_out; /* remaining free space at next_out */ - long long total_out;/* total nb of bytes output so far */ + uLong total_out; /* total nb of bytes output so far */ char *msg; /* last error message, NULL if no error */ struct internal_state FAR *state; /* not visible by applications */ diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/bin/java_md.c --- a/src/solaris/bin/java_md.c Fri Aug 03 20:56:16 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1522 +0,0 @@ -/* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#include "java.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "manifest_info.h" -#include "version_comp.h" - -#ifdef __solaris__ -#include -#else -#include -#endif - -#define JVM_DLL "libjvm.so" -#define JAVA_DLL "libjava.so" - -/* help jettison the LD_LIBRARY_PATH settings in the future */ -#ifndef SETENV_REQUIRED -#define SETENV_REQUIRED -#endif -/* - * If a processor / os combination has the ability to run binaries of - * two data models and cohabitation of jre/jdk bits with both data - * models is supported, then DUAL_MODE is defined. When DUAL_MODE is - * defined, the architecture names for the narrow and wide version of - * the architecture are defined in LIBARCH64NAME and LIBARCH32NAME. - * Currently only Solaris on sparc/sparcv9 and i586/amd64 is DUAL_MODE; - * linux i586/amd64 could be defined as DUAL_MODE but that is not the - * current policy. - */ - -#ifdef __solaris__ -# define DUAL_MODE -# ifndef LIBARCH32NAME -# error "The macro LIBARCH32NAME was not defined on the compile line" -# endif -# ifndef LIBARCH64NAME -# error "The macro LIBARCH64NAME was not defined on the compile line" -# endif -# include -# include -# include -#endif - -/* pointer to environment */ -extern char **environ; - -/* - * A collection of useful strings. One should think of these as #define - * entries, but actual strings can be more efficient (with many compilers). - */ -#ifdef __linux__ -static const char *system_dir = "/usr/java"; -static const char *user_dir = "/java"; -#else /* Solaris */ -static const char *system_dir = "/usr/jdk"; -static const char *user_dir = "/jdk"; -#endif - -/* Store the name of the executable once computed */ -static char *execname = NULL; - -/* - * Flowchart of launcher execs and options processing on unix - * - * The selection of the proper vm shared library to open depends on - * several classes of command line options, including vm "flavor" - * options (-client, -server) and the data model options, -d32 and - * -d64, as well as a version specification which may have come from - * the command line or from the manifest of an executable jar file. - * The vm selection options are not passed to the running - * virtual machine; they must be screened out by the launcher. - * - * The version specification (if any) is processed first by the - * platform independent routine SelectVersion. This may result in - * the exec of the specified launcher version. - * - * Previously the launcher modified the LD_LIBRARY_PATH appropriately for the - * desired data model path, regardless if data models matched or not. The - * launcher subsequently exec'ed the desired executable, in order to make the - * LD_LIBRARY_PATH path available, for the runtime linker. - * - * Now, in most cases,the launcher will dlopen the target libjvm.so. All - * required libraries are loaded by the runtime linker, using the - * $RPATH/$ORIGIN baked into the shared libraries at compile time. Therefore, - * in most cases, the launcher will only exec, if the data models are - * mismatched, and will not set any environment variables, regardless of the - * data models. - * - * However, if the environment contains a LD_LIBRARY_PATH, this will cause the - * launcher to inspect the LD_LIBRARY_PATH. The launcher will check - * a. if the LD_LIBRARY_PATH's first component is the the path to the desired - * libjvm.so - * b. if any other libjvm.so is found in any of the paths. - * If case b is true, then the launcher will set the LD_LIBRARY_PATH to the - * desired JRE and reexec, in order to propagate the environment. - * - * Main - * (incoming argv) - * | - * \|/ - * SelectVersion - * (selects the JRE version, note: not data model) - * | - * \|/ - * CreateExecutionEnvironment - * (determines desired data model) - * | - * | - * \|/ - * Have Desired Model ? --> NO --> Is Dual-Mode ? --> NO --> Exit(with error) - * | | - * | | - * | \|/ - * | YES - * | | - * | | - * | \|/ - * | CheckJvmType - * | (removes -client, -server etc.) - * | | - * | | - * \|/ \|/ - * YES Find the desired executable/library - * | | - * | | - * \|/ \|/ - * CheckJvmType RequiresSetenv - * (removes -client, -server, etc.) - * | - * | - * \|/ - * TranslateDashJArgs... - * (Prepare to pass args to vm) - * | - * | - * \|/ - * ParseArguments - * (removes -d32 and -d64 if any, - * processes version options, - * creates argument list for vm, - * etc.) - * | - * | - * \|/ - * RequiresSetenv - * Is LD_LIBRARY_PATH - * and friends set ? --> NO --> Have Desired Model ? NO --> Re-exec --> Main - * YES YES --> Continue - * | - * | - * \|/ - * Path is desired JRE ? YES --> Have Desired Model ? NO --> Re-exec --> Main - * NO YES --> Continue - * | - * | - * \|/ - * Paths have well known - * jvm paths ? --> NO --> Have Desired Model ? NO --> Re-exec --> Main - * YES YES --> Continue - * | - * | - * \|/ - * Does libjvm.so exit - * in any of them ? --> NO --> Have Desired Model ? NO --> Re-exec --> Main - * YES YES --> Continue - * | - * | - * \|/ - * Set the LD_LIBRARY_PATH - * | - * | - * \|/ - * Re-exec - * | - * | - * \|/ - * Main - */ - -static const char * SetExecname(char **argv); -static jboolean GetJVMPath(const char *jrepath, const char *jvmtype, - char *jvmpath, jint jvmpathsize, const char * arch); -static jboolean GetJREPath(char *path, jint pathsize, const char * arch, jboolean speculative); - - -#define GetArch() GetArchPath(CURRENT_DATA_MODEL) - -const char * -GetArchPath(int nbits) -{ - switch(nbits) { -#ifdef DUAL_MODE - case 32: - return LIBARCH32NAME; - case 64: - return LIBARCH64NAME; -#endif /* DUAL_MODE */ - default: - return LIBARCHNAME; - } -} - -#ifdef SETENV_REQUIRED -static jboolean -JvmExists(const char *path) { - char tmp[PATH_MAX + 1]; - struct stat statbuf; - JLI_Snprintf(tmp, PATH_MAX, "%s/%s", path, JVM_DLL); - if (stat(tmp, &statbuf) == 0) { - return JNI_TRUE; - } - return JNI_FALSE; -} -/* - * contains a lib/$LIBARCH/{server,client}/libjvm.so ? - */ -static jboolean -ContainsLibJVM(int wanted, const char *env) { - char clientPattern[PATH_MAX + 1]; - char serverPattern[PATH_MAX + 1]; - char *envpath; - char *path; - jboolean clientPatternFound; - jboolean serverPatternFound; - - /* fastest path */ - if (env == NULL) { - return JNI_FALSE; - } - - /* the usual suspects */ - JLI_Snprintf(clientPattern, PATH_MAX, "lib/%s/client", GetArchPath(wanted)); - JLI_Snprintf(serverPattern, PATH_MAX, "lib/%s/server", GetArchPath(wanted)); - - /* to optimize for time, test if any of our usual suspects are present. */ - clientPatternFound = JLI_StrStr(env, clientPattern) != NULL; - serverPatternFound = JLI_StrStr(env, serverPattern) != NULL; - if (clientPatternFound == JNI_FALSE && serverPatternFound == JNI_FALSE) { - return JNI_FALSE; - } - - /* - * we have a suspicious path component, check if it contains a libjvm.so - */ - envpath = JLI_StringDup(env); - for (path = JLI_StrTok(envpath, ":"); path != NULL; path = JLI_StrTok(NULL, ":")) { - if (clientPatternFound && JLI_StrStr(path, clientPattern) != NULL) { - if (JvmExists(path)) { - JLI_MemFree(envpath); - return JNI_TRUE; - } - } - if (serverPatternFound && JLI_StrStr(path, serverPattern) != NULL) { - if (JvmExists(path)) { - JLI_MemFree(envpath); - return JNI_TRUE; - } - } - } - JLI_MemFree(envpath); - return JNI_FALSE; -} - -/* - * Test whether the environment variable needs to be set, see flowchart. - */ -static jboolean -RequiresSetenv(int wanted, const char *jvmpath) { - char jpath[PATH_MAX + 1]; - char *llp; - char *dmllp = NULL; - char *p; /* a utility pointer */ - - llp = getenv("LD_LIBRARY_PATH"); -#ifdef __solaris__ - dmllp = (CURRENT_DATA_MODEL == 32) - ? getenv("LD_LIBRARY_PATH_32") - : getenv("LD_LIBRARY_PATH_64"); -#endif /* __solaris__ */ - /* no environment variable is a good environment variable */ - if (llp == NULL && dmllp == NULL) { - return JNI_FALSE; - } -#ifdef __linux - /* - * On linux, if a binary is running as sgid or suid, glibc sets - * LD_LIBRARY_PATH to the empty string for security purposes. (In contrast, - * on Solaris the LD_LIBRARY_PATH variable for a privileged binary does not - * lose its settings; but the dynamic linker does apply more scrutiny to the - * path.) The launcher uses the value of LD_LIBRARY_PATH to prevent an exec - * loop, here and further downstream. Therefore, if we are running sgid or - * suid, this function's setting of LD_LIBRARY_PATH will be ineffective and - * we should case a return from the calling function. Getting the right - * libraries will be handled by the RPATH. In reality, this check is - * redundant, as the previous check for a non-null LD_LIBRARY_PATH will - * return back to the calling function forthwith, it is left here to safe - * guard against any changes, in the glibc's existing security policy. - */ - if ((getgid() != getegid()) || (getuid() != geteuid())) { - return JNI_FALSE; - } -#endif /* __linux */ - - /* - * Prevent recursions. Since LD_LIBRARY_PATH is the one which will be set by - * previous versions of the JRE, thus it is the only path that matters here. - * So we check to see if the desired JRE is set. - */ - JLI_StrNCpy(jpath, jvmpath, PATH_MAX); - p = JLI_StrRChr(jpath, '/'); - *p = '\0'; - if (llp != NULL && JLI_StrNCmp(llp, jpath, JLI_StrLen(jpath)) == 0) { - return JNI_FALSE; - } - - /* scrutinize all the paths further */ - if (llp != NULL && ContainsLibJVM(wanted, llp)) { - return JNI_TRUE; - } - if (dmllp != NULL && ContainsLibJVM(wanted, dmllp)) { - return JNI_TRUE; - } - return JNI_FALSE; -} -#endif /* SETENV_REQUIRED */ - -void -CreateExecutionEnvironment(int *pargc, char ***pargv, - char jrepath[], jint so_jrepath, - char jvmpath[], jint so_jvmpath) { - /* - * First, determine if we are running the desired data model. If we - * are running the desired data model, all the error messages - * associated with calling GetJREPath, ReadKnownVMs, etc. should be - * output. However, if we are not running the desired data model, - * some of the errors should be suppressed since it is more - * informative to issue an error message based on whether or not the - * os/processor combination has dual mode capabilities. - */ - jboolean jvmpathExists; - - /* Compute/set the name of the executable */ - SetExecname(*pargv); - - /* Check data model flags, and exec process, if needed */ - { - char *arch = (char *)GetArch(); /* like sparc or sparcv9 */ - char * jvmtype = NULL; - int argc = *pargc; - char **argv = *pargv; - int running = CURRENT_DATA_MODEL; - - int wanted = running; /* What data mode is being - asked for? Current model is - fine unless another model - is asked for */ -#ifdef SETENV_REQUIRED - jboolean mustsetenv = JNI_FALSE; - char *runpath = NULL; /* existing effective LD_LIBRARY_PATH setting */ - char* new_runpath = NULL; /* desired new LD_LIBRARY_PATH string */ - char* newpath = NULL; /* path on new LD_LIBRARY_PATH */ - char* lastslash = NULL; - char** newenvp = NULL; /* current environment */ -#ifdef __solaris__ - char* dmpath = NULL; /* data model specific LD_LIBRARY_PATH, - Solaris only */ -#endif /* __solaris__ */ -#endif /* SETENV_REQUIRED */ - - char** newargv = NULL; - int newargc = 0; - - /* - * Starting in 1.5, all unix platforms accept the -d32 and -d64 - * options. On platforms where only one data-model is supported - * (e.g. ia-64 Linux), using the flag for the other data model is - * an error and will terminate the program. - */ - - { /* open new scope to declare local variables */ - int i; - - newargv = (char **)JLI_MemAlloc((argc+1) * sizeof(char*)); - newargv[newargc++] = argv[0]; - - /* scan for data model arguments and remove from argument list; - last occurrence determines desired data model */ - for (i=1; i < argc; i++) { - - if (JLI_StrCmp(argv[i], "-J-d64") == 0 || JLI_StrCmp(argv[i], "-d64") == 0) { - wanted = 64; - continue; - } - if (JLI_StrCmp(argv[i], "-J-d32") == 0 || JLI_StrCmp(argv[i], "-d32") == 0) { - wanted = 32; - continue; - } - newargv[newargc++] = argv[i]; - - if (IsJavaArgs()) { - if (argv[i][0] != '-') continue; - } else { - if (JLI_StrCmp(argv[i], "-classpath") == 0 || JLI_StrCmp(argv[i], "-cp") == 0) { - i++; - if (i >= argc) break; - newargv[newargc++] = argv[i]; - continue; - } - if (argv[i][0] != '-') { i++; break; } - } - } - - /* copy rest of args [i .. argc) */ - while (i < argc) { - newargv[newargc++] = argv[i++]; - } - newargv[newargc] = NULL; - - /* - * newargv has all proper arguments here - */ - - argc = newargc; - argv = newargv; - } - - /* If the data model is not changing, it is an error if the - jvmpath does not exist */ - if (wanted == running) { - /* Find out where the JRE is that we will be using. */ - if (!GetJREPath(jrepath, so_jrepath, arch, JNI_FALSE) ) { - JLI_ReportErrorMessage(JRE_ERROR1); - exit(2); - } - - /* Find the specified JVM type */ - if (ReadKnownVMs(jrepath, arch, JNI_FALSE) < 1) { - JLI_ReportErrorMessage(CFG_ERROR7); - exit(1); - } - - jvmpath[0] = '\0'; - jvmtype = CheckJvmType(pargc, pargv, JNI_FALSE); - if (JLI_StrCmp(jvmtype, "ERROR") == 0) { - JLI_ReportErrorMessage(CFG_ERROR9); - exit(4); - } - - if (!GetJVMPath(jrepath, jvmtype, jvmpath, so_jvmpath, arch )) { - JLI_ReportErrorMessage(CFG_ERROR8, jvmtype, jvmpath); - exit(4); - } - /* - * we seem to have everything we need, so without further ado - * we return back, otherwise proceed to set the environment. - */ -#ifdef SETENV_REQUIRED - mustsetenv = RequiresSetenv(wanted, jvmpath); - JLI_TraceLauncher("mustsetenv: %s\n", mustsetenv ? "TRUE" : "FALSE"); - - if (mustsetenv == JNI_FALSE) { - return; - } -#else - return; -#endif /* SETENV_REQUIRED */ - } else { /* do the same speculatively or exit */ -#ifdef DUAL_MODE - if (running != wanted) { - /* Find out where the JRE is that we will be using. */ - if (!GetJREPath(jrepath, so_jrepath, GetArchPath(wanted), JNI_TRUE)) { - /* give up and let other code report error message */ - JLI_ReportErrorMessage(JRE_ERROR2, wanted); - exit(1); - } - - /* - * Read in jvm.cfg for target data model and process vm - * selection options. - */ - if (ReadKnownVMs(jrepath, GetArchPath(wanted), JNI_TRUE) < 1) { - /* give up and let other code report error message */ - JLI_ReportErrorMessage(JRE_ERROR2, wanted); - exit(1); - } - jvmpath[0] = '\0'; - jvmtype = CheckJvmType(pargc, pargv, JNI_TRUE); - if (JLI_StrCmp(jvmtype, "ERROR") == 0) { - JLI_ReportErrorMessage(CFG_ERROR9); - exit(4); - } - - /* exec child can do error checking on the existence of the path */ - jvmpathExists = GetJVMPath(jrepath, jvmtype, jvmpath, so_jvmpath, GetArchPath(wanted)); -#ifdef SETENV_REQUIRED - mustsetenv = RequiresSetenv(wanted, jvmpath); -#endif /* SETENV_REQUIRED */ - } -#else - JLI_ReportErrorMessage(JRE_ERROR2, wanted); - exit(1); -#endif - } -#ifdef SETENV_REQUIRED - if (mustsetenv) { - /* - * We will set the LD_LIBRARY_PATH as follows: - * - * o $JVMPATH (directory portion only) - * o $JRE/lib/$LIBARCHNAME - * o $JRE/../lib/$LIBARCHNAME - * - * followed by the user's previous effective LD_LIBRARY_PATH, if - * any. - */ - -#ifdef __solaris__ - /* - * Starting in Solaris 7, ld.so.1 supports three LD_LIBRARY_PATH - * variables: - * - * 1. LD_LIBRARY_PATH -- used for 32 and 64 bit searches if - * data-model specific variables are not set. - * - * 2. LD_LIBRARY_PATH_64 -- overrides and replaces LD_LIBRARY_PATH - * for 64-bit binaries. - * - * 3. LD_LIBRARY_PATH_32 -- overrides and replaces LD_LIBRARY_PATH - * for 32-bit binaries. - * - * The vm uses LD_LIBRARY_PATH to set the java.library.path system - * property. To shield the vm from the complication of multiple - * LD_LIBRARY_PATH variables, if the appropriate data model - * specific variable is set, we will act as if LD_LIBRARY_PATH had - * the value of the data model specific variant and the data model - * specific variant will be unset. Note that the variable for the - * *wanted* data model must be used (if it is set), not simply the - * current running data model. - */ - - switch (wanted) { - case 0: - if (running == 32) { - dmpath = getenv("LD_LIBRARY_PATH_32"); - wanted = 32; - } else { - dmpath = getenv("LD_LIBRARY_PATH_64"); - wanted = 64; - } - break; - - case 32: - dmpath = getenv("LD_LIBRARY_PATH_32"); - break; - - case 64: - dmpath = getenv("LD_LIBRARY_PATH_64"); - break; - - default: - JLI_ReportErrorMessage(JRE_ERROR3, __LINE__); - exit(1); /* unknown value in wanted */ - break; - } - - /* - * If dmpath is NULL, the relevant data model specific variable is - * not set and normal LD_LIBRARY_PATH should be used. - */ - if (dmpath == NULL) { - runpath = getenv("LD_LIBRARY_PATH"); - } else { - runpath = dmpath; - } -#else - /* - * If not on Solaris, assume only a single LD_LIBRARY_PATH - * variable. - */ - runpath = getenv("LD_LIBRARY_PATH"); -#endif /* __solaris__ */ - - /* runpath contains current effective LD_LIBRARY_PATH setting */ - - jvmpath = JLI_StringDup(jvmpath); - new_runpath = JLI_MemAlloc(((runpath != NULL) ? JLI_StrLen(runpath) : 0) + - 2 * JLI_StrLen(jrepath) + 2 * JLI_StrLen(arch) + - JLI_StrLen(jvmpath) + 52); - newpath = new_runpath + JLI_StrLen("LD_LIBRARY_PATH="); - - - /* - * Create desired LD_LIBRARY_PATH value for target data model. - */ - { - /* remove the name of the .so from the JVM path */ - lastslash = JLI_StrRChr(jvmpath, '/'); - if (lastslash) - *lastslash = '\0'; - - sprintf(new_runpath, "LD_LIBRARY_PATH=" - "%s:" - "%s/lib/%s:" - "%s/../lib/%s", - jvmpath, -#ifdef DUAL_MODE - jrepath, GetArchPath(wanted), - jrepath, GetArchPath(wanted) -#else - jrepath, arch, - jrepath, arch -#endif - ); - - - /* - * Check to make sure that the prefix of the current path is the - * desired environment variable setting, though the RequiresSetenv - * checks if the desired runpath exists, this logic does a more - * comprehensive check. - */ - if (runpath != NULL && - JLI_StrNCmp(newpath, runpath, JLI_StrLen(newpath)) == 0 && - (runpath[JLI_StrLen(newpath)] == 0 || runpath[JLI_StrLen(newpath)] == ':') && - (running == wanted) /* data model does not have to be changed */ -#ifdef __solaris__ - && (dmpath == NULL) /* data model specific variables not set */ -#endif - ) { - - return; - - } - } - - /* - * Place the desired environment setting onto the prefix of - * LD_LIBRARY_PATH. Note that this prevents any possible infinite - * loop of execv() because we test for the prefix, above. - */ - if (runpath != 0) { - JLI_StrCat(new_runpath, ":"); - JLI_StrCat(new_runpath, runpath); - } - - if (putenv(new_runpath) != 0) { - exit(1); /* problem allocating memory; LD_LIBRARY_PATH not set - properly */ - } - - /* - * Unix systems document that they look at LD_LIBRARY_PATH only - * once at startup, so we have to re-exec the current executable - * to get the changed environment variable to have an effect. - */ - -#ifdef __solaris__ - /* - * If dmpath is not NULL, remove the data model specific string - * in the environment for the exec'ed child. - */ - if (dmpath != NULL) - (void)UnsetEnv((wanted == 32) ? "LD_LIBRARY_PATH_32" : "LD_LIBRARY_PATH_64"); -#endif - - newenvp = environ; - } -#endif /* SETENV_REQUIRED */ - { - char *newexec = execname; -#ifdef DUAL_MODE - /* - * If the data model is being changed, the path to the - * executable must be updated accordingly; the executable name - * and directory the executable resides in are separate. In the - * case of 32 => 64, the new bits are assumed to reside in, e.g. - * "olddir/LIBARCH64NAME/execname"; in the case of 64 => 32, - * the bits are assumed to be in "olddir/../execname". For example, - * - * olddir/sparcv9/execname - * olddir/amd64/execname - * - * for Solaris SPARC and Linux amd64, respectively. - */ - - if (running != wanted) { - char *oldexec = JLI_StrCpy(JLI_MemAlloc(JLI_StrLen(execname) + 1), execname); - char *olddir = oldexec; - char *oldbase = JLI_StrRChr(oldexec, '/'); - - - newexec = JLI_MemAlloc(JLI_StrLen(execname) + 20); - *oldbase++ = 0; - sprintf(newexec, "%s/%s/%s", olddir, - ((wanted == 64) ? LIBARCH64NAME : ".."), oldbase); - argv[0] = newexec; - } -#endif /* DUAL_MODE */ - JLI_TraceLauncher("TRACER_MARKER:About to EXEC\n"); - (void) fflush(stdout); - (void) fflush(stderr); -#ifdef SETENV_REQUIRED - if (mustsetenv) { - execve(newexec, argv, newenvp); - } else { - execv(newexec, argv); - } -#else - execv(newexec, argv); -#endif /* SETENV_REQUIRED */ - JLI_ReportErrorMessageSys(JRE_ERROR4, newexec); - -#ifdef DUAL_MODE - if (running != wanted) { - JLI_ReportErrorMessage(JRE_ERROR5, wanted, running); -#ifdef __solaris__ -#ifdef __sparc - JLI_ReportErrorMessage(JRE_ERROR6); -#else - JLI_ReportErrorMessage(JRE_ERROR7); -#endif /* __sparc */ - } -#endif /* __solaris__ */ -#endif /* DUAL_MODE */ - - } - exit(1); - } -} - -/* - * On Solaris VM choosing is done by the launcher (java.c). - */ -static jboolean -GetJVMPath(const char *jrepath, const char *jvmtype, - char *jvmpath, jint jvmpathsize, const char * arch) -{ - struct stat s; - - if (JLI_StrChr(jvmtype, '/')) { - JLI_Snprintf(jvmpath, jvmpathsize, "%s/" JVM_DLL, jvmtype); - } else { - JLI_Snprintf(jvmpath, jvmpathsize, "%s/lib/%s/%s/" JVM_DLL, jrepath, arch, jvmtype); - } - - JLI_TraceLauncher("Does `%s' exist ... ", jvmpath); - - if (stat(jvmpath, &s) == 0) { - JLI_TraceLauncher("yes.\n"); - return JNI_TRUE; - } else { - JLI_TraceLauncher("no.\n"); - return JNI_FALSE; - } -} - -/* - * Find path to JRE based on .exe's location or registry settings. - */ -static jboolean -GetJREPath(char *path, jint pathsize, const char * arch, jboolean speculative) -{ - char libjava[MAXPATHLEN]; - - if (GetApplicationHome(path, pathsize)) { - /* Is JRE co-located with the application? */ - JLI_Snprintf(libjava, sizeof(libjava), "%s/lib/%s/" JAVA_DLL, path, arch); - if (access(libjava, F_OK) == 0) { - JLI_TraceLauncher("JRE path is %s\n", path); - return JNI_TRUE; - } - - /* Does the app ship a private JRE in /jre directory? */ - JLI_Snprintf(libjava, sizeof(libjava), "%s/jre/lib/%s/" JAVA_DLL, path, arch); - if (access(libjava, F_OK) == 0) { - JLI_StrCat(path, "/jre"); - JLI_TraceLauncher("JRE path is %s\n", path); - return JNI_TRUE; - } - } - - if (!speculative) - JLI_ReportErrorMessage(JRE_ERROR8 JAVA_DLL); - return JNI_FALSE; -} - -jboolean -LoadJavaVM(const char *jvmpath, InvocationFunctions *ifn) -{ - void *libjvm; - - JLI_TraceLauncher("JVM path is %s\n", jvmpath); - - libjvm = dlopen(jvmpath, RTLD_NOW + RTLD_GLOBAL); - if (libjvm == NULL) { -#if defined(__solaris__) && defined(__sparc) && !defined(_LP64) /* i.e. 32-bit sparc */ - FILE * fp; - Elf32_Ehdr elf_head; - int count; - int location; - - fp = fopen(jvmpath, "r"); - if (fp == NULL) { - JLI_ReportErrorMessage(DLL_ERROR2, jvmpath, dlerror()); - return JNI_FALSE; - } - - /* read in elf header */ - count = fread((void*)(&elf_head), sizeof(Elf32_Ehdr), 1, fp); - fclose(fp); - if (count < 1) { - JLI_ReportErrorMessage(DLL_ERROR2, jvmpath, dlerror()); - return JNI_FALSE; - } - - /* - * Check for running a server vm (compiled with -xarch=v8plus) - * on a stock v8 processor. In this case, the machine type in - * the elf header would not be included the architecture list - * provided by the isalist command, which is turn is gotten from - * sysinfo. This case cannot occur on 64-bit hardware and thus - * does not have to be checked for in binaries with an LP64 data - * model. - */ - if (elf_head.e_machine == EM_SPARC32PLUS) { - char buf[257]; /* recommended buffer size from sysinfo man - page */ - long length; - char* location; - - length = sysinfo(SI_ISALIST, buf, 257); - if (length > 0) { - location = JLI_StrStr(buf, "sparcv8plus "); - if (location == NULL) { - JLI_ReportErrorMessage(JVM_ERROR3); - return JNI_FALSE; - } - } - } -#endif - JLI_ReportErrorMessage(DLL_ERROR1, __LINE__); - JLI_ReportErrorMessage(DLL_ERROR2, jvmpath, dlerror()); - return JNI_FALSE; - } - - ifn->CreateJavaVM = (CreateJavaVM_t) - dlsym(libjvm, "JNI_CreateJavaVM"); - if (ifn->CreateJavaVM == NULL) { - JLI_ReportErrorMessage(DLL_ERROR2, jvmpath, dlerror()); - return JNI_FALSE; - } - - ifn->GetDefaultJavaVMInitArgs = (GetDefaultJavaVMInitArgs_t) - dlsym(libjvm, "JNI_GetDefaultJavaVMInitArgs"); - if (ifn->GetDefaultJavaVMInitArgs == NULL) { - JLI_ReportErrorMessage(DLL_ERROR2, jvmpath, dlerror()); - return JNI_FALSE; - } - - return JNI_TRUE; -} - -/* - * If app is "/foo/bin/javac", or "/foo/bin/sparcv9/javac" then put - * "/foo" into buf. - */ -jboolean -GetApplicationHome(char *buf, jint bufsize) -{ - if (execname != NULL) { - JLI_Snprintf(buf, bufsize, "%s", execname); - buf[bufsize-1] = '\0'; - } else { - return JNI_FALSE; - } - - if (JLI_StrRChr(buf, '/') == 0) { - buf[0] = '\0'; - return JNI_FALSE; - } - *(JLI_StrRChr(buf, '/')) = '\0'; /* executable file */ - if (JLI_StrLen(buf) < 4 || JLI_StrRChr(buf, '/') == 0) { - buf[0] = '\0'; - return JNI_FALSE; - } - if (JLI_StrCmp("/bin", buf + JLI_StrLen(buf) - 4) != 0) - *(JLI_StrRChr(buf, '/')) = '\0'; /* sparcv9 or amd64 */ - if (JLI_StrLen(buf) < 4 || JLI_StrCmp("/bin", buf + JLI_StrLen(buf) - 4) != 0) { - buf[0] = '\0'; - return JNI_FALSE; - } - *(JLI_StrRChr(buf, '/')) = '\0'; /* bin */ - - return JNI_TRUE; -} - - -/* - * Return true if the named program exists - */ -static int -ProgramExists(char *name) -{ - struct stat sb; - if (stat(name, &sb) != 0) return 0; - if (S_ISDIR(sb.st_mode)) return 0; - return (sb.st_mode & S_IEXEC) != 0; -} - - -/* - * Find a command in a directory, returning the path. - */ -static char * -Resolve(char *indir, char *cmd) -{ - char name[PATH_MAX + 2], *real; - - if ((JLI_StrLen(indir) + JLI_StrLen(cmd) + 1) > PATH_MAX) return 0; - JLI_Snprintf(name, sizeof(name), "%s%c%s", indir, FILE_SEPARATOR, cmd); - if (!ProgramExists(name)) return 0; - real = JLI_MemAlloc(PATH_MAX + 2); - if (!realpath(name, real)) - JLI_StrCpy(real, name); - return real; -} - - -/* - * Find a path for the executable - */ -static char * -FindExecName(char *program) -{ - char cwdbuf[PATH_MAX+2]; - char *path; - char *tmp_path; - char *f; - char *result = NULL; - - /* absolute path? */ - if (*program == FILE_SEPARATOR || - (FILE_SEPARATOR=='\\' && JLI_StrRChr(program, ':'))) - return Resolve("", program+1); - - /* relative path? */ - if (JLI_StrRChr(program, FILE_SEPARATOR) != 0) { - char buf[PATH_MAX+2]; - return Resolve(getcwd(cwdbuf, sizeof(cwdbuf)), program); - } - - /* from search path? */ - path = getenv("PATH"); - if (!path || !*path) path = "."; - tmp_path = JLI_MemAlloc(JLI_StrLen(path) + 2); - JLI_StrCpy(tmp_path, path); - - for (f=tmp_path; *f && result==0; ) { - char *s = f; - while (*f && (*f != PATH_SEPARATOR)) ++f; - if (*f) *f++ = 0; - if (*s == FILE_SEPARATOR) - result = Resolve(s, program); - else { - /* relative path element */ - char dir[2*PATH_MAX]; - JLI_Snprintf(dir, sizeof(dir), "%s%c%s", getcwd(cwdbuf, sizeof(cwdbuf)), - FILE_SEPARATOR, s); - result = Resolve(dir, program); - } - if (result != 0) break; - } - - JLI_MemFree(tmp_path); - return result; -} - - - -/* - * Compute the name of the executable - * - * In order to re-exec securely we need the absolute path of the - * executable. On Solaris getexecname(3c) may not return an absolute - * path so we use dladdr to get the filename of the executable and - * then use realpath to derive an absolute path. From Solaris 9 - * onwards the filename returned in DL_info structure from dladdr is - * an absolute pathname so technically realpath isn't required. - * On Linux we read the executable name from /proc/self/exe. - * As a fallback, and for platforms other than Solaris and Linux, - * we use FindExecName to compute the executable name. - */ -static const char* -SetExecname(char **argv) -{ - char* exec_path = NULL; -#if defined(__solaris__) - { - Dl_info dlinfo; - int (*fptr)(); - - fptr = (int (*)())dlsym(RTLD_DEFAULT, "main"); - if (fptr == NULL) { - JLI_ReportErrorMessage(DLL_ERROR3, dlerror()); - return JNI_FALSE; - } - - if (dladdr((void*)fptr, &dlinfo)) { - char *resolved = (char*)JLI_MemAlloc(PATH_MAX+1); - if (resolved != NULL) { - exec_path = realpath(dlinfo.dli_fname, resolved); - if (exec_path == NULL) { - JLI_MemFree(resolved); - } - } - } - } -#elif defined(__linux__) - { - const char* self = "/proc/self/exe"; - char buf[PATH_MAX+1]; - int len = readlink(self, buf, PATH_MAX); - if (len >= 0) { - buf[len] = '\0'; /* readlink doesn't nul terminate */ - exec_path = JLI_StringDup(buf); - } - } -#else /* !__solaris__ && !__linux */ - { - /* Not implemented */ - } -#endif - - if (exec_path == NULL) { - exec_path = FindExecName(argv[0]); - } - execname = exec_path; - return exec_path; -} - -void JLI_ReportErrorMessage(const char* fmt, ...) { - va_list vl; - va_start(vl, fmt); - vfprintf(stderr, fmt, vl); - fprintf(stderr, "\n"); - va_end(vl); -} - -void JLI_ReportErrorMessageSys(const char* fmt, ...) { - va_list vl; - char *emsg; - - /* - * TODO: its safer to use strerror_r but is not available on - * Solaris 8. Until then.... - */ - emsg = strerror(errno); - if (emsg != NULL) { - fprintf(stderr, "%s\n", emsg); - } - - va_start(vl, fmt); - vfprintf(stderr, fmt, vl); - fprintf(stderr, "\n"); - va_end(vl); -} - -void JLI_ReportExceptionDescription(JNIEnv * env) { - (*env)->ExceptionDescribe(env); -} - -/* - * Since using the file system as a registry is a bit risky, perform - * additional sanity checks on the identified directory to validate - * it as a valid jre/sdk. - * - * Return 0 if the tests fail; otherwise return non-zero (true). - * - * Note that checking for anything more than the existence of an - * executable object at bin/java relative to the path being checked - * will break the regression tests. - */ -static int -CheckSanity(char *path, char *dir) -{ - char buffer[PATH_MAX]; - - if (JLI_StrLen(path) + JLI_StrLen(dir) + 11 > PATH_MAX) - return (0); /* Silently reject "impossibly" long paths */ - - JLI_Snprintf(buffer, sizeof(buffer), "%s/%s/bin/java", path, dir); - return ((access(buffer, X_OK) == 0) ? 1 : 0); -} - -/* - * Determine if there is an acceptable JRE in the directory dirname. - * Upon locating the "best" one, return a fully qualified path to - * it. "Best" is defined as the most advanced JRE meeting the - * constraints contained in the manifest_info. If no JRE in this - * directory meets the constraints, return NULL. - * - * Note that we don't check for errors in reading the directory - * (which would be done by checking errno). This is because it - * doesn't matter if we get an error reading the directory, or - * we just don't find anything interesting in the directory. We - * just return NULL in either case. - * - * The historical names of j2sdk and j2re were changed to jdk and - * jre respecively as part of the 1.5 rebranding effort. Since the - * former names are legacy on Linux, they must be recognized for - * all time. Fortunately, this is a minor cost. - */ -static char -*ProcessDir(manifest_info *info, char *dirname) -{ - DIR *dirp; - struct dirent *dp; - char *best = NULL; - int offset; - int best_offset = 0; - char *ret_str = NULL; - char buffer[PATH_MAX]; - - if ((dirp = opendir(dirname)) == NULL) - return (NULL); - - do { - if ((dp = readdir(dirp)) != NULL) { - offset = 0; - if ((JLI_StrNCmp(dp->d_name, "jre", 3) == 0) || - (JLI_StrNCmp(dp->d_name, "jdk", 3) == 0)) - offset = 3; - else if (JLI_StrNCmp(dp->d_name, "j2re", 4) == 0) - offset = 4; - else if (JLI_StrNCmp(dp->d_name, "j2sdk", 5) == 0) - offset = 5; - if (offset > 0) { - if ((JLI_AcceptableRelease(dp->d_name + offset, - info->jre_version)) && CheckSanity(dirname, dp->d_name)) - if ((best == NULL) || (JLI_ExactVersionId( - dp->d_name + offset, best + best_offset) > 0)) { - if (best != NULL) - JLI_MemFree(best); - best = JLI_StringDup(dp->d_name); - best_offset = offset; - } - } - } - } while (dp != NULL); - (void) closedir(dirp); - if (best == NULL) - return (NULL); - else { - ret_str = JLI_MemAlloc(JLI_StrLen(dirname) + JLI_StrLen(best) + 2); - sprintf(ret_str, "%s/%s", dirname, best); - JLI_MemFree(best); - return (ret_str); - } -} - -/* - * This is the global entry point. It examines the host for the optimal - * JRE to be used by scanning a set of directories. The set of directories - * is platform dependent and can be overridden by the environment - * variable JAVA_VERSION_PATH. - * - * This routine itself simply determines the set of appropriate - * directories before passing control onto ProcessDir(). - */ -char* -LocateJRE(manifest_info* info) -{ - char *path; - char *home; - char *target = NULL; - char *dp; - char *cp; - - /* - * Start by getting JAVA_VERSION_PATH - */ - if (info->jre_restrict_search) { - path = JLI_StringDup(system_dir); - } else if ((path = getenv("JAVA_VERSION_PATH")) != NULL) { - path = JLI_StringDup(path); - } else { - if ((home = getenv("HOME")) != NULL) { - path = (char *)JLI_MemAlloc(JLI_StrLen(home) + \ - JLI_StrLen(system_dir) + JLI_StrLen(user_dir) + 2); - sprintf(path, "%s%s:%s", home, user_dir, system_dir); - } else { - path = JLI_StringDup(system_dir); - } - } - - /* - * Step through each directory on the path. Terminate the scan with - * the first directory with an acceptable JRE. - */ - cp = dp = path; - while (dp != NULL) { - cp = JLI_StrChr(dp, (int)':'); - if (cp != NULL) - *cp = '\0'; - if ((target = ProcessDir(info, dp)) != NULL) - break; - dp = cp; - if (dp != NULL) - dp++; - } - JLI_MemFree(path); - return (target); -} - -/* - * Given a path to a jre to execute, this routine checks if this process - * is indeed that jre. If not, it exec's that jre. - * - * We want to actually check the paths rather than just the version string - * built into the executable, so that given version specification (and - * JAVA_VERSION_PATH) will yield the exact same Java environment, regardless - * of the version of the arbitrary launcher we start with. - */ -void -ExecJRE(char *jre, char **argv) -{ - char wanted[PATH_MAX]; - const char* progname = GetProgramName(); - - /* - * Resolve the real path to the directory containing the selected JRE. - */ - if (realpath(jre, wanted) == NULL) { - JLI_ReportErrorMessage(JRE_ERROR9, jre); - exit(1); - } - - /* - * Resolve the real path to the currently running launcher. - */ - SetExecname(argv); - if (execname == NULL) { - JLI_ReportErrorMessage(JRE_ERROR10); - exit(1); - } - - /* - * If the path to the selected JRE directory is a match to the initial - * portion of the path to the currently executing JRE, we have a winner! - * If so, just return. - */ - if (JLI_StrNCmp(wanted, execname, JLI_StrLen(wanted)) == 0) - return; /* I am the droid you were looking for */ - - - /* - * This should never happen (because of the selection code in SelectJRE), - * but check for "impossibly" long path names just because buffer overruns - * can be so deadly. - */ - if (JLI_StrLen(wanted) + JLI_StrLen(progname) + 6 > PATH_MAX) { - JLI_ReportErrorMessage(JRE_ERROR11); - exit(1); - } - - /* - * Construct the path and exec it. - */ - (void)JLI_StrCat(JLI_StrCat(wanted, "/bin/"), progname); - argv[0] = JLI_StringDup(progname); - if (JLI_IsTraceLauncher()) { - int i; - printf("ReExec Command: %s (%s)\n", wanted, argv[0]); - printf("ReExec Args:"); - for (i = 1; argv[i] != NULL; i++) - printf(" %s", argv[i]); - printf("\n"); - } - JLI_TraceLauncher("TRACER_MARKER:About to EXEC\n"); - (void)fflush(stdout); - (void)fflush(stderr); - execv(wanted, argv); - JLI_ReportErrorMessageSys(JRE_ERROR12, wanted); - exit(1); -} - -/* - * "Borrowed" from Solaris 10 where the unsetenv() function is being added - * to libc thanks to SUSv3 (Standard Unix Specification, version 3). As - * such, in the fullness of time this will appear in libc on all relevant - * Solaris/Linux platforms and maybe even the Windows platform. At that - * time, this stub can be removed. - * - * This implementation removes the environment locking for multithreaded - * applications. (We don't have access to these mutexes within libc and - * the launcher isn't multithreaded.) Note that what remains is platform - * independent, because it only relies on attributes that a POSIX environment - * defines. - * - * Returns 0 on success, -1 on failure. - * - * Also removed was the setting of errno. The only value of errno set - * was EINVAL ("Invalid Argument"). - */ - -/* - * s1(environ) is name=value - * s2(name) is name(not the form of name=value). - * if names match, return value of 1, else return 0 - */ -static int -match_noeq(const char *s1, const char *s2) -{ - while (*s1 == *s2++) { - if (*s1++ == '=') - return (1); - } - if (*s1 == '=' && s2[-1] == '\0') - return (1); - return (0); -} - -/* - * added for SUSv3 standard - * - * Delete entry from environ. - * Do not free() memory! Other threads may be using it. - * Keep it around forever. - */ -static int -borrowed_unsetenv(const char *name) -{ - long idx; /* index into environ */ - - if (name == NULL || *name == '\0' || - JLI_StrChr(name, '=') != NULL) { - return (-1); - } - - for (idx = 0; environ[idx] != NULL; idx++) { - if (match_noeq(environ[idx], name)) - break; - } - if (environ[idx] == NULL) { - /* name not found but still a success */ - return (0); - } - /* squeeze up one entry */ - do { - environ[idx] = environ[idx+1]; - } while (environ[++idx] != NULL); - - return (0); -} -/* --- End of "borrowed" code --- */ - -/* - * Wrapper for unsetenv() function. - */ -int -UnsetEnv(char *name) -{ - return(borrowed_unsetenv(name)); -} - -/* --- Splash Screen shared library support --- */ - -static const char* SPLASHSCREEN_SO = "libsplashscreen.so"; - -static void* hSplashLib = NULL; - -void* SplashProcAddress(const char* name) { - if (!hSplashLib) { - hSplashLib = dlopen(SPLASHSCREEN_SO, RTLD_LAZY | RTLD_GLOBAL); - } - if (hSplashLib) { - void* sym = dlsym(hSplashLib, name); - return sym; - } else { - return NULL; - } -} - -void SplashFreeLibrary() { - if (hSplashLib) { - dlclose(hSplashLib); - hSplashLib = NULL; - } -} - -const char * -jlong_format_specifier() { - return "%lld"; -} - - - -/* - * Block current thread and continue execution in a new thread - */ -int -ContinueInNewThread0(int (JNICALL *continuation)(void *), jlong stack_size, void * args) { - int rslt; -#ifdef __solaris__ - thread_t tid; - long flags = 0; - if (thr_create(NULL, stack_size, (void *(*)(void *))continuation, args, flags, &tid) == 0) { - void * tmp; - thr_join(tid, NULL, &tmp); - rslt = (int)tmp; - } else { - /* See below. Continue in current thread if thr_create() failed */ - rslt = continuation(args); - } -#else - pthread_t tid; - pthread_attr_t attr; - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); - - if (stack_size > 0) { - pthread_attr_setstacksize(&attr, stack_size); - } - - if (pthread_create(&tid, &attr, (void *(*)(void*))continuation, (void*)args) == 0) { - void * tmp; - pthread_join(tid, &tmp); - rslt = (int)tmp; - } else { - /* - * Continue execution in current thread if for some reason (e.g. out of - * memory/LWP) a new thread can't be created. This will likely fail - * later in continuation as JNI_CreateJavaVM needs to create quite a - * few new threads, anyway, just give it a try.. - */ - rslt = continuation(args); - } - - pthread_attr_destroy(&attr); -#endif - return rslt; -} - -/* Coarse estimation of number of digits assuming the worst case is a 64-bit pid. */ -#define MAX_PID_STR_SZ 20 - -void SetJavaLauncherPlatformProps() { - /* Linux only */ -#ifdef __linux__ - const char *substr = "-Dsun.java.launcher.pid="; - char *pid_prop_str = (char *)JLI_MemAlloc(JLI_StrLen(substr) + MAX_PID_STR_SZ + 1); - sprintf(pid_prop_str, "%s%d", substr, getpid()); - AddOption(pid_prop_str, NULL); -#endif -} - -jboolean -IsJavaw() -{ - /* noop on UNIX */ - return JNI_FALSE; -} - -void -InitLauncher(jboolean javaw) -{ - JLI_SetTraceLauncher(); -} - -/* - * The implementation for finding classes from the bootstrap - * class loader, refer to java.h - */ -static FindClassFromBootLoader_t *findBootClass = NULL; - -jclass -FindBootStrapClass(JNIEnv *env, const char* classname) -{ - if (findBootClass == NULL) { - findBootClass = (FindClassFromBootLoader_t *)dlsym(RTLD_DEFAULT, - "JVM_FindClassFromBootLoader"); - if (findBootClass == NULL) { - JLI_ReportErrorMessage(DLL_ERROR4, - "JVM_FindClassFromBootLoader"); - return NULL; - } - } - return findBootClass(env, classname); -} diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/bin/java_md_common.c --- a/src/solaris/bin/java_md_common.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/bin/java_md_common.c Fri Aug 24 09:29:17 2012 +0100 @@ -502,3 +502,19 @@ return findBootClass(env, classname); } +StdArg +*JLI_GetStdArgs() +{ + return NULL; +} + +int +JLI_GetStdArgc() { + return 0; +} + +jobjectArray +CreateApplicationArgs(JNIEnv *env, char **strv, int argc) +{ + return NewPlatformStringArray(env, strv, argc); +} diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/classes/sun/awt/X11/XTextAreaPeer.java --- a/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java Fri Aug 24 09:29:17 2012 +0100 @@ -463,13 +463,6 @@ protected boolean setTextImpl(String txt) { if (jtext != null) { - // Please note that we do not want to post an event - // if setText() replaces an empty text by an empty text, - // that is, if component's text remains unchanged. - if (jtext.getDocument().getLength() == 0 && txt.length() == 0) { - return true; - } - // JTextArea.setText() posts two different events (remove & insert). // Since we make no differences between text events, // the document listener has to be disabled while diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/classes/sun/awt/motif/X11JIS0201.java --- a/src/solaris/classes/sun/awt/motif/X11JIS0201.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/classes/sun/awt/motif/X11JIS0201.java Fri Aug 24 09:29:17 2012 +0100 @@ -25,12 +25,19 @@ package sun.awt.motif; -import java.nio.charset.Charset; -import java.nio.charset.CharsetEncoder; -import java.nio.charset.CharsetDecoder; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.*; +import sun.nio.cs.*; import sun.nio.cs.ext.JIS_X_0201; +import static sun.nio.cs.CharsetMapping.*; public class X11JIS0201 extends Charset { + + private static Charset jis0201 = new JIS_X_0201(); + private static SingleByte.Encoder enc = + (SingleByte.Encoder)jis0201.newEncoder(); + public X11JIS0201 () { super("X11JIS0201", null); } @@ -40,16 +47,17 @@ } public CharsetDecoder newDecoder() { - return new JIS_X_0201.Decoder(this); + return jis0201.newDecoder(); } public boolean contains(Charset cs) { return cs instanceof X11JIS0201; } - private class Encoder extends JIS_X_0201.Encoder { + private class Encoder extends CharsetEncoder { + public Encoder(Charset cs) { - super(cs); + super(cs, 1.0f, 1.0f); } public boolean canEncode(char c){ @@ -60,5 +68,42 @@ } return false; } + + private Surrogate.Parser sgp; + protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) { + char[] sa = src.array(); + int sp = src.arrayOffset() + src.position(); + int sl = src.arrayOffset() + src.limit(); + + byte[] da = dst.array(); + int dp = dst.arrayOffset() + dst.position(); + int dl = dst.arrayOffset() + dst.limit(); + CoderResult cr = CoderResult.UNDERFLOW; + if ((dl - dp) < (sl - sp)) { + sl = sp + (dl - dp); + cr = CoderResult.OVERFLOW; + } + try { + while (sp < sl) { + char c = sa[sp]; + int b = enc.encode(c); + if (b == UNMAPPABLE_ENCODING) { + if (Character.isSurrogate(c)) { + if (sgp == null) + sgp = new Surrogate.Parser(); + if (sgp.parse(c, sa, sp, sl) >= 0) + return CoderResult.unmappableForLength(2); + } + return CoderResult.unmappableForLength(1); + } + da[dp++] = (byte)b; + sp++; + } + return cr; + } finally { + src.position(sp - src.arrayOffset()); + dst.position(dp - dst.arrayOffset()); + } + } } } diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/classes/sun/awt/motif/X11JIS0208.java --- a/src/solaris/classes/sun/awt/motif/X11JIS0208.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/classes/sun/awt/motif/X11JIS0208.java Fri Aug 24 09:29:17 2012 +0100 @@ -28,20 +28,22 @@ import java.nio.charset.Charset; import java.nio.charset.CharsetEncoder; import java.nio.charset.CharsetDecoder; -import sun.nio.cs.ext.JIS_X_0208_Encoder; -import sun.nio.cs.ext.JIS_X_0208_Decoder; +import sun.nio.cs.ext.JIS_X_0208; public class X11JIS0208 extends Charset { + + private static Charset jis0208 = new JIS_X_0208(); + public X11JIS0208 () { super("X11JIS0208", null); } public CharsetEncoder newEncoder() { - return new JIS_X_0208_Encoder(this); + return jis0208.newEncoder(); } public CharsetDecoder newDecoder() { - return new JIS_X_0208_Decoder(this); + return jis0208.newDecoder(); } public boolean contains(Charset cs) { diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/classes/sun/awt/motif/X11JIS0212.java --- a/src/solaris/classes/sun/awt/motif/X11JIS0212.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/classes/sun/awt/motif/X11JIS0212.java Fri Aug 24 09:29:17 2012 +0100 @@ -28,20 +28,20 @@ import java.nio.charset.Charset; import java.nio.charset.CharsetEncoder; import java.nio.charset.CharsetDecoder; -import sun.nio.cs.ext.JIS_X_0212_Encoder; -import sun.nio.cs.ext.JIS_X_0212_Decoder; +import sun.nio.cs.ext.JIS_X_0212; public class X11JIS0212 extends Charset { + private static Charset jis0212 = new JIS_X_0212(); + public X11JIS0212 () { super("X11JIS0212", null); } public CharsetEncoder newEncoder() { - return new JIS_X_0212_Encoder(this); + return jis0212.newEncoder(); } public CharsetDecoder newDecoder() { - return new JIS_X_0212_Decoder(this); + return jis0212.newDecoder(); } - public boolean contains(Charset cs) { return cs instanceof X11JIS0212; } diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/classes/sun/nio/fs/BsdNativeDispatcher.java --- a/src/solaris/classes/sun/nio/fs/BsdNativeDispatcher.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/classes/sun/nio/fs/BsdNativeDispatcher.java Fri Aug 24 09:29:17 2012 +0100 @@ -33,7 +33,7 @@ */ class BsdNativeDispatcher extends UnixNativeDispatcher { - private BsdNativeDispatcher() { } + protected BsdNativeDispatcher() { } /** * struct fsstat_iter *getfsstat(); @@ -55,11 +55,6 @@ private static native void initIDs(); static { - AccessController.doPrivileged(new PrivilegedAction() { - public Void run() { - System.loadLibrary("nio"); - return null; - }}); - initIDs(); + initIDs(); } } diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java --- a/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java Fri Aug 24 09:29:17 2012 +0100 @@ -69,7 +69,7 @@ if (osname.equals("Linux")) return createProvider("sun.nio.fs.LinuxFileSystemProvider"); if (osname.equals("Darwin") || osname.contains("OS X")) - return createProvider("sun.nio.fs.BsdFileSystemProvider"); + return createProvider("sun.nio.fs.MacOSXFileSystemProvider"); throw new AssertionError("Platform not recognized"); } } diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/classes/sun/nio/fs/MacOSXFileSystem.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/solaris/classes/sun/nio/fs/MacOSXFileSystem.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.nio.fs; + +import java.nio.file.*; +import java.io.IOException; +import java.util.*; +import java.util.regex.Pattern; +import java.security.AccessController; +import sun.security.action.GetPropertyAction; + +import static sun.nio.fs.MacOSXNativeDispatcher.*; + +/** + * MacOS implementation of FileSystem + */ + +class MacOSXFileSystem extends BsdFileSystem { + + MacOSXFileSystem(UnixFileSystemProvider provider, String dir) { + super(provider, dir); + } + + // match in unicode canon_eq + Pattern compilePathMatchPattern(String expr) { + return Pattern.compile(expr, Pattern.CANON_EQ) ; + } + + char[] normalizeNativePath(char[] path) { + for (char c : path) { + if (c > 0x80) + return normalizepath(path, kCFStringNormalizationFormD); + } + return path; + } + + String normalizeJavaPath(String path) { + for (int i = 0; i < path.length(); i++) { + if (path.charAt(i) > 0x80) + return new String(normalizepath(path.toCharArray(), + kCFStringNormalizationFormC)); + } + return path; + } + +} diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/classes/sun/nio/fs/MacOSXFileSystemProvider.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/solaris/classes/sun/nio/fs/MacOSXFileSystemProvider.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.nio.fs; + +import java.nio.file.*; +import java.nio.file.attribute.*; +import java.io.IOException; + +/** + * MacOSX implementation of FileSystemProvider + */ + +public class MacOSXFileSystemProvider extends BsdFileSystemProvider { + public MacOSXFileSystemProvider() { + super(); + } + + @Override + MacOSXFileSystem newFileSystem(String dir) { + return new MacOSXFileSystem(this, dir); + } +} diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/classes/sun/nio/fs/MacOSXNativeDispatcher.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/solaris/classes/sun/nio/fs/MacOSXNativeDispatcher.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.nio.fs; + +import java.security.AccessController; +import java.security.PrivilegedAction; + +/** + * MacOSX specific system calls. + */ + +class MacOSXNativeDispatcher extends BsdNativeDispatcher { + private MacOSXNativeDispatcher() { } + + static final int kCFStringNormalizationFormC = 2; + static final int kCFStringNormalizationFormD = 0; + static native char[] normalizepath(char[] path, int form); +} diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/classes/sun/nio/fs/UnixFileSystem.java --- a/src/solaris/classes/sun/nio/fs/UnixFileSystem.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/classes/sun/nio/fs/UnixFileSystem.java Fri Aug 24 09:29:17 2012 +0100 @@ -302,7 +302,8 @@ } // return matcher - final Pattern pattern = Pattern.compile(expr); + final Pattern pattern = compilePathMatchPattern(expr); + return new PathMatcher() { @Override public boolean matches(Path path) { @@ -310,11 +311,10 @@ } }; } + private static final String GLOB_SYNTAX = "glob"; private static final String REGEX_SYNTAX = "regex"; - - @Override public final UserPrincipalLookupService getUserPrincipalLookupService() { return LookupService.instance; @@ -339,4 +339,23 @@ }; } + // Override if the platform has different path match requrement, such as + // case insensitive or Unicode canonical equal on MacOSX + Pattern compilePathMatchPattern(String expr) { + return Pattern.compile(expr); + } + + // Override if the platform uses different Unicode normalization form + // for native file path. For example on MacOSX, the native path is stored + // in Unicode NFD form. + char[] normalizeNativePath(char[] path) { + return path; + } + + // Override if the native file path use non-NFC form. For example on MacOSX, + // the native path is stored in Unicode NFD form, the path need to be + // normalized back to NFC before passed back to Java level. + String normalizeJavaPath(String path) { + return path; + } } diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/classes/sun/nio/fs/UnixPath.java --- a/src/solaris/classes/sun/nio/fs/UnixPath.java Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/classes/sun/nio/fs/UnixPath.java Fri Aug 24 09:29:17 2012 +0100 @@ -68,7 +68,7 @@ UnixPath(UnixFileSystem fs, String input) { // removes redundant slashes and checks for invalid characters - this(fs, encode(normalizeAndCheck(input))); + this(fs, encode(fs, normalizeAndCheck(input))); } // package-private @@ -116,7 +116,7 @@ } // encodes the given path-string into a sequence of bytes - private static byte[] encode(String input) { + private static byte[] encode(UnixFileSystem fs, String input) { SoftReference ref = encoder.get(); CharsetEncoder ce = (ref != null) ? ref.get() : null; if (ce == null) { @@ -126,7 +126,7 @@ encoder.set(new SoftReference(ce)); } - char[] ca = input.toCharArray(); + char[] ca = fs.normalizeNativePath(input.toCharArray()); // size output buffer for worse-case size byte[] ba = new byte[(int)(ca.length * (double)ce.maxBytesPerChar())]; @@ -728,7 +728,7 @@ if (c1 != c2) { return c1 - c2; } - k++; + k++; } return len1 - len2; } @@ -757,8 +757,9 @@ @Override public String toString() { // OK if two or more threads create a String - if (stringValue == null) - stringValue = new String(path); // platform encoding + if (stringValue == null) { + stringValue = fs.normalizeJavaPath(new String(path)); // platform encoding + } return stringValue; } diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/native/java/io/UnixFileSystem_md.c --- a/src/solaris/native/java/io/UnixFileSystem_md.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/native/java/io/UnixFileSystem_md.c Fri Aug 24 09:29:17 2012 +0100 @@ -38,6 +38,7 @@ #include "jlong.h" #include "jvm.h" #include "io_util.h" +#include "io_util_md.h" #include "java_io_FileSystem.h" #include "java_io_UnixFileSystem.h" @@ -80,7 +81,11 @@ canonicalPath, JVM_MAXPATHLEN) < 0) { JNU_ThrowIOExceptionWithLastError(env, "Bad pathname"); } else { +#ifdef MACOSX + rv = newStringPlatform(env, canonicalPath); +#else rv = JNU_NewStringPlatform(env, canonicalPath); +#endif } } END_PLATFORM_STRING(env, path); return rv; @@ -311,7 +316,11 @@ if (JNU_CopyObjectArray(env, rv, old, len) < 0) goto error; (*env)->DeleteLocalRef(env, old); } +#ifdef MACOSX + name = newStringPlatform(env, ptr->d_name); +#else name = JNU_NewStringPlatform(env, ptr->d_name); +#endif if (name == NULL) goto error; (*env)->SetObjectArrayElement(env, rv, len++, name); (*env)->DeleteLocalRef(env, name); diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/native/java/io/io_util_md.c --- a/src/solaris/native/java/io/io_util_md.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/native/java/io/io_util_md.c Fri Aug 24 09:29:17 2012 +0100 @@ -34,37 +34,32 @@ #include -static inline char *convertToNFD(const char *path, char *buf, size_t bufsize) +__private_extern__ +jstring newStringPlatform(JNIEnv *env, const char* str) { - CFMutableStringRef mutable = CFStringCreateMutable(NULL, 0); - CFStringAppendCString(mutable, path, kCFStringEncodingUTF8); - CFStringNormalize(mutable, kCFStringNormalizationFormD); - - CFStringGetCString(mutable, buf, bufsize, kCFStringEncodingUTF8); - - CFRelease(mutable); - return buf; -} - -/* Converts the path to NFD form if it was in NFC form. Returns a pointer to - * the converting string which could be buf (if the converstion took place) or - * origPath if no conversion was needed - */ -__private_extern__ -char* convertToNFDIfNeeded(const char *origPath, char *buf, size_t bufsize) -{ - const char *current = origPath; - int c; - for (c = *current; c != 0; current++, c = *current) { - if (c < 0) { - // Need to convert - return convertToNFD(origPath, buf, bufsize); + jstring rv = NULL; + CFMutableStringRef csref = CFStringCreateMutable(NULL, 0); + if (csref == NULL) { + JNU_ThrowOutOfMemoryError(env, "native heap"); + } else { + CFStringAppendCString(csref, str, kCFStringEncodingUTF8); + CFStringNormalize(csref, kCFStringNormalizationFormC); + int clen = CFStringGetLength(csref); + int ulen = (clen + 1) * 2; // utf16 + zero padding + char* chars = malloc(ulen); + if (chars == NULL) { + CFRelease(csref); + JNU_ThrowOutOfMemoryError(env, "native heap"); + } else { + if (CFStringGetCString(csref, chars, ulen, kCFStringEncodingUTF16)) { + rv = (*env)->NewString(env, (jchar*)chars, clen); + } + free(chars); + CFRelease(csref); } } - - return (char *)origPath; + return rv; } - #endif void diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/native/java/io/io_util_md.h --- a/src/solaris/native/java/io/io_util_md.h Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/native/java/io/io_util_md.h Fri Aug 24 09:29:17 2012 +0100 @@ -72,3 +72,7 @@ * IO helper function(s) */ void fileClose(JNIEnv *env, jobject this, jfieldID fid); + +#ifdef MACOSX +jstring newStringPlatform(JNIEnv *env, const char* str); +#endif diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/native/java/lang/java_props_md.c --- a/src/solaris/native/java/lang/java_props_md.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/native/java/lang/java_props_md.c Fri Aug 24 09:29:17 2012 +0100 @@ -135,12 +135,12 @@ #define P_tmpdir "/var/tmp" #endif -static int ParseLocale(int cat, char ** std_language, char ** std_script, +static int ParseLocale(JNIEnv* env, int cat, char ** std_language, char ** std_script, char ** std_country, char ** std_variant, char ** std_encoding) { - char temp[64]; + char *temp = NULL; char *language = NULL, *country = NULL, *variant = NULL, *encoding = NULL; - char *p, encoding_variant[64]; + char *p, *encoding_variant, *old_temp, *old_ev; char *lc; /* Query the locale set for the category */ @@ -156,6 +156,12 @@ return 0; } + temp = malloc(strlen(lc) + 1); + if (temp == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); + return 0; + } + if (cat == LC_CTYPE) { /* * Workaround for Solaris bug 4201684: Xlib doesn't like @euro @@ -178,6 +184,13 @@ if (lc == NULL || !strcmp(lc, "C") || !strcmp(lc, "POSIX")) { lc = "en_US"; } + + temp = malloc(strlen(lc) + 1); + if (temp == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); + return 0; + } + #endif /* @@ -203,6 +216,14 @@ * to a default country if that's possible. It's also used to map * the Solaris locale aliases to their proper Java locale IDs. */ + + encoding_variant = malloc(strlen(temp)+1); + if (encoding_variant == NULL) { + free(temp); + JNU_ThrowOutOfMemoryError(env, NULL); + return 0; + } + if ((p = strchr(temp, '.')) != NULL) { strcpy(encoding_variant, p); /* Copy the leading '.' */ *p = '\0'; @@ -214,7 +235,23 @@ } if (mapLookup(locale_aliases, temp, &p)) { + old_temp = temp; + temp = realloc(temp, strlen(p)+1); + if (temp == NULL) { + free(old_temp); + free(encoding_variant); + JNU_ThrowOutOfMemoryError(env, NULL); + return 0; + } strcpy(temp, p); + old_ev = encoding_variant; + encoding_variant = realloc(encoding_variant, strlen(temp)+1); + if (encoding_variant == NULL) { + free(old_ev); + free(temp); + JNU_ThrowOutOfMemoryError(env, NULL); + return 0; + } // check the "encoding_variant" again, if any. if ((p = strchr(temp, '.')) != NULL) { strcpy(encoding_variant, p); /* Copy the leading '.' */ @@ -326,6 +363,9 @@ #endif } + free(temp); + free(encoding_variant); + return 1; } @@ -398,6 +438,7 @@ PreferredToolkit prefToolkit = getPreferredToolkit(); switch (prefToolkit) { case CToolkit: + case HToolkit: sprops.graphics_env = "sun.awt.CGraphicsEnvironment"; break; case XToolkit: @@ -405,9 +446,6 @@ sprops.graphics_env = "sun.awt.X11GraphicsEnvironment"; #ifdef MACOSX break; - default: - sprops.graphics_env = "sun.java2d.HeadlessGraphicsEnvironment"; - break; } #endif /* AWT properties */ @@ -480,13 +518,13 @@ * and store these in the user.language, user.country, user.variant and * file.encoding system properties. */ setlocale(LC_ALL, ""); - if (ParseLocale(LC_CTYPE, + if (ParseLocale(env, LC_CTYPE, &(sprops.format_language), &(sprops.format_script), &(sprops.format_country), &(sprops.format_variant), &(sprops.encoding))) { - ParseLocale(LC_MESSAGES, + ParseLocale(env, LC_MESSAGES, &(sprops.language), &(sprops.script), &(sprops.country), diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/native/sun/nio/ch/DatagramDispatcher.c --- a/src/solaris/native/sun/nio/ch/DatagramDispatcher.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/native/sun/nio/ch/DatagramDispatcher.c Fri Aug 24 09:29:17 2012 +0100 @@ -34,6 +34,7 @@ #include #include #include +#include #include "nio_util.h" #include diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/native/sun/nio/ch/Net.c --- a/src/solaris/native/sun/nio/ch/Net.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/solaris/native/sun/nio/ch/Net.c Fri Aug 24 09:29:17 2012 +0100 @@ -39,83 +39,6 @@ #include "nio_util.h" #include "nio.h" -/** - * Definitions for source-specific multicast to allow for building - * with older header files. - */ - -#ifdef __solaris__ - -#ifndef IP_BLOCK_SOURCE - -#define IP_BLOCK_SOURCE 0x15 -#define IP_UNBLOCK_SOURCE 0x16 -#define IP_ADD_SOURCE_MEMBERSHIP 0x17 -#define IP_DROP_SOURCE_MEMBERSHIP 0x18 - -#define MCAST_BLOCK_SOURCE 0x2b -#define MCAST_UNBLOCK_SOURCE 0x2c -#define MCAST_JOIN_SOURCE_GROUP 0x2d -#define MCAST_LEAVE_SOURCE_GROUP 0x2e - -#endif /* IP_BLOCK_SOURCE */ - -struct my_ip_mreq_source { - struct in_addr imr_multiaddr; - struct in_addr imr_sourceaddr; - struct in_addr imr_interface; -}; - -/* - * Use #pragma pack() construct to force 32-bit alignment on amd64. - */ -#if defined(amd64) -#pragma pack(4) -#endif - -struct my_group_source_req { - uint32_t gsr_interface; /* interface index */ - struct sockaddr_storage gsr_group; /* group address */ - struct sockaddr_storage gsr_source; /* source address */ -}; - -#if defined(amd64) -#pragma pack() -#endif - -#endif /* __solaris__ */ - - -#ifdef __linux__ - -#ifndef IP_BLOCK_SOURCE - -#define IP_BLOCK_SOURCE 38 -#define IP_UNBLOCK_SOURCE 37 -#define IP_ADD_SOURCE_MEMBERSHIP 39 -#define IP_DROP_SOURCE_MEMBERSHIP 40 - -#define MCAST_BLOCK_SOURCE 43 -#define MCAST_UNBLOCK_SOURCE 44 -#define MCAST_JOIN_SOURCE_GROUP 42 -#define MCAST_LEAVE_SOURCE_GROUP 45 - -#endif /* IP_BLOCK_SOURCE */ - -struct my_ip_mreq_source { - struct in_addr imr_multiaddr; - struct in_addr imr_interface; - struct in_addr imr_sourceaddr; -}; - -struct my_group_source_req { - uint32_t gsr_interface; /* interface index */ - struct sockaddr_storage gsr_group; /* group address */ - struct sockaddr_storage gsr_source; /* source address */ -}; - -#endif /* __linux__ */ - #ifdef _ALLBSD_SOURCE #ifndef IP_BLOCK_SOURCE @@ -155,7 +78,12 @@ struct sockaddr_storage gsr_source; /* source address */ }; -#endif /* _ALLBSD_SOURCE */ +#else /* _ALLBSD_SOURCE */ + +#define my_ip_mreq_source ip_mreq_source +#define my_group_source_req group_source_req + +#endif #define COPY_INET6_ADDRESS(env, source, target) \ @@ -576,8 +504,8 @@ optval = (void*)&mreq6; optlen = sizeof(mreq6); } else { -#if defined (__linux__) || defined(MACOSX) - /* Include-mode filtering broken on Mac OS & Linux at least to 2.6.24 */ +#ifdef MACOSX + /* no IPv6 include-mode filtering for now */ return IOS_UNAVAILABLE; #else initGroupSourceReq(env, group, index, source, &req); diff -r d15095dfd348 -r aa2c9ce06632 src/solaris/native/sun/nio/fs/MacOSXNativeDispatcher.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/solaris/native/sun/nio/fs/MacOSXNativeDispatcher.c Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#include "jni.h" +#include "jni_util.h" +#include "jvm.h" +#include "jlong.h" + +#include +#include + +#include + +JNIEXPORT jcharArray JNICALL +Java_sun_nio_fs_MacOSXNativeDispatcher_normalizepath(JNIEnv* env, jclass this, + jcharArray path, + jint form) +{ + jcharArray result = NULL; + char chars_buf[(PATH_MAX + 1) * 2]; // utf16 + zero padding + CFMutableStringRef csref = CFStringCreateMutable(NULL, 0); + if (csref == NULL) { + JNU_ThrowOutOfMemoryError(env, "native heap"); + } else { + char *chars = (char*)(*env)->GetPrimitiveArrayCritical(env, path, 0); + jsize len = (*env)->GetArrayLength(env, path); + CFStringAppendCharacters(csref, (const UniChar*)chars, len); + (*env)->ReleasePrimitiveArrayCritical(env, path, chars, 0); + CFStringNormalize(csref, form); + len = CFStringGetLength(csref); + if (len < PATH_MAX) { + if (CFStringGetCString(csref, chars_buf, sizeof(chars_buf), kCFStringEncodingUTF16)) { + result = (*env)->NewCharArray(env, len); + (*env)->SetCharArrayRegion(env, result, 0, len, (jchar*)&chars_buf); + } + } else { + int ulen = (len + 1) * 2; + chars = malloc(ulen); + if (chars == NULL) { + CFRelease(csref); + JNU_ThrowOutOfMemoryError(env, "native heap"); + return result; + } else { + if (CFStringGetCString(csref, chars, ulen, kCFStringEncodingUTF16)) { + result = (*env)->NewCharArray(env, len); + (*env)->SetCharArrayRegion(env, result, 0, len, (jchar*)chars); + } + free(chars); + } + } + CFRelease(csref); + } + return result; +} diff -r d15095dfd348 -r aa2c9ce06632 src/windows/bin/cmdtoargs.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/windows/bin/cmdtoargs.c Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,598 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + +/* + * Converts a single string command line to the traditional argc, argv. + * There are rules which govern the breaking of the the arguments, and + * these rules are embodied in the regression tests below, and duplicated + * in the jdk regression tests. + */ + +#ifndef IDE_STANDALONE +#include "java.h" +#include "jli_util.h" +#else /* IDE_STANDALONE */ +// The defines we need for stand alone testing +#include +#include +#include +#define JNI_TRUE TRUE +#define JNI_FALSE FALSE +#define JLI_MemRealloc realloc +#define JLI_StringDup _strdup +#define JLI_MemFree free +#define jboolean boolean +typedef struct { + char* arg; + boolean has_wildcard; +} StdArg ; +#endif +static StdArg *stdargs; +static int stdargc; + +static char* next_arg(char* cmdline, char* arg, jboolean* wildcard) { + + char* src = cmdline; + char* dest = arg; + jboolean separator = JNI_FALSE; + int quotes = 0; + int slashes = 0; + + char prev = 0; + char ch = 0; + int i; + jboolean done = JNI_FALSE; + + *wildcard = JNI_FALSE; + while ((ch = *src) != 0 && !done) { + switch (ch) { + case '"': + if (separator) { + done = JNI_TRUE; + break; + } + if (prev == '\\') { + for (i = 1; i < slashes; i += 2) { + *dest++ = prev; + } + if (slashes % 2 == 1) { + *dest++ = ch; + } else { + quotes++; + } + } else if (prev == '"' && quotes % 2 == 0) { + quotes++; + *dest++ = ch; // emit every other consecutive quote + } else if (quotes == 0) { + quotes++; // starting quote + } else { + quotes--; // matching quote + } + slashes = 0; + break; + + case '\\': + slashes++; + if (separator) { + done = JNI_TRUE; + separator = JNI_FALSE; + } + break; + + case ' ': + case '\t': + if (quotes % 2 == 1) { + *dest++ = ch; + } else { + separator = JNI_TRUE; + } + slashes = 0; + break; + + case '*': + case '?': + if (separator) { + done = JNI_TRUE; + separator = JNI_FALSE; + break; + } + if (quotes % 2 == 0) { + *wildcard = JNI_TRUE; + } + if (prev == '\\') { + *dest++ = prev; + } + *dest++ = ch; + break; + + default: + if (prev == '\\') { + for (i = 0 ; i < slashes ; i++) { + *dest++ = prev; + } + *dest++ = ch; + } else if (separator) { + done = JNI_TRUE; + } else { + *dest++ = ch; + } + slashes = 0; + } + + if (!done) { + prev = ch; + src++; + } + } + if (prev == '\\') { + for (i = 0; i < slashes; i++) { + *dest++ = prev; + } + } + *dest = 0; + return done ? src : NULL; +} + +int JLI_GetStdArgc() { + return stdargc; +} + +StdArg* JLI_GetStdArgs() { + return stdargs; +} + +void JLI_CmdToArgs(char* cmdline) { + int nargs = 0; + StdArg* argv = NULL; + jboolean wildcard = JNI_FALSE; + char* src = cmdline; + + // allocate arg buffer with sufficient space to receive the largest arg + char* arg = JLI_StringDup(cmdline); + + do { + src = next_arg(src, arg, &wildcard); + // resize to accommodate another Arg + argv = (StdArg*) JLI_MemRealloc(argv, (nargs+1) * sizeof(StdArg)); + argv[nargs].arg = JLI_StringDup(arg); + argv[nargs].has_wildcard = wildcard; + + nargs++; + } while (src != NULL); + + stdargc = nargs; + stdargs = argv; +} + +#ifdef IDE_STANDALONE +void doexit(int rv) { + printf("Hit any key to quit\n"); + int c = getchar(); + exit(rv); +} + +void doabort() { + doexit(1); +} + +class Vector { +public: + char* cmdline; + int argc; + char* argv[10]; + boolean wildcard[10]; + boolean enabled; + + Vector(){} + // Initialize our test vector with the program name, argv[0] + // and the single string command line. + Vector(char* pname, char* cline) { + argv[0] = pname; + wildcard[0] = FALSE; + cmdline = cline; + argc = 1; + enabled = TRUE; + } + + // add our expected strings, the program name has already been + // added so ignore that + void add(char* arg, boolean w) { + argv[argc] = arg; + wildcard[argc] = w; + argc++; + } + + void disable() { + enabled = FALSE; + } + + // validate the returned arguments with the expected arguments, using the + // new CmdToArgs method. + bool check() { + // "pgmname" rest of cmdline ie. pgmname + 2 double quotes + space + cmdline from windows + char* cptr = (char*) malloc(strlen(argv[0]) + sizeof(char) * 3 + strlen(cmdline) + 1); + _snprintf(cptr, MAX_PATH, "\"%s\" %s", argv[0], cmdline); + JLI_CmdToArgs(cptr); + free(cptr); + StdArg *kargv = JLI_GetStdArgs(); + int kargc = JLI_GetStdArgc(); + bool retval = true; + printf("\n===========================\n"); + printf("cmdline=%s\n", cmdline); + if (argc != kargc) { + printf("*** argument count does not match\n"); + printme(); + printtest(kargc, kargv); + doabort(); + } + for (int i = 0 ; i < argc && retval == true ; i++) { + if (strcmp(argv[i], kargv[i].arg) != 0) { + printf("*** argument at [%d] don't match\n got: %s\n exp: %s\n", + i, kargv[i].arg, argv[i]); + doabort(); + } + } + for (int i = 0 ; i < argc && retval == true ; i++) { + if (wildcard[i] != kargv[i].has_wildcard) { + printf("*** expansion flag at [%d] doesn't match\n got: %d\n exp: %d\n", + i, kargv[i].has_wildcard, wildcard[i]); + doabort(); + } + } + for (int i = 0 ; i < kargc ; i++) { + printf("k[%d]=%s\n", i, kargv[i].arg); + printf(" [%d]=%s\n", i, argv[i]); + } + return retval; + } + void printtest(int kargc, StdArg* kargv) { + for (int i = 0 ; i < kargc ; i++) { + printf("k[%d]=%s\n", i, kargv[i].arg); + } + } + void printme() { + for (int i = 0 ; i < argc ; i++) { + printf(" [%d]=%s\n", i, argv[i]); + } + } +}; + +void dotest(Vector** vectors) { + Vector* v = vectors[0]; + for (int i = 0 ; v != NULL;) { + if (v->enabled) { + v->check(); + } + v = vectors[++i]; + } +} + +#define MAXV 128 +int main(int argc, char* argv[]) { + + int n; + for (n=1; n < argc; n++) { + printf("%d %s\n", n, argv[n]); + } + if (n > 1) { + JLI_CmdToArgs(GetCommandLine()); + for (n = 0; n < stdargc; n++) { + printf(" [%d]=%s\n", n, stdargs[n].arg); + printf(" [%d]=%s\n", n, stdargs[n].has_wildcard ? "TRUE" : "FALSE"); + } + doexit(0); + } + + Vector *vectors[MAXV]; + + memset(vectors, 0, sizeof(vectors)); + int i = 0; + Vector* v = new Vector(argv[0], "abcd"); + v->add("abcd", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"a b c d\""); + v->add("a b c d", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "a\"b c d\"e"); + v->add("ab c de", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "ab\\\"cd"); + v->add("ab\"cd", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"a b c d\\\\\""); + v->add("a b c d\\", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "ab\\\\\\\"cd"); + v->add("ab\\\"cd", FALSE); + // v->disable(); + vectors[i++] = v; + + + // Windows tests + v = new Vector(argv[0], "a\\\\\\c"); + v->add("a\\\\\\c", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"a\\\\\\d\""); + v->add("a\\\\\\d", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"a b c\" d e"); + v->add("a b c", FALSE); + v->add("d", FALSE); + v->add("e", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"ab\\\"c\" \"\\\\\" d"); + v->add("ab\"c", FALSE); + v->add("\\", FALSE); + v->add("d", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "a\\\\\\c d\"e f\"g h"); + v->add("a\\\\\\c", FALSE); + v->add("de fg", FALSE); + v->add("h", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "a\\\\\\\"b c d"); + v->add("a\\\"b", FALSE); // XXX "a\\\\\\\"b" + v->add("c", FALSE); + v->add("d", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "a\\\\\\\\\"g c\" d e"); // XXX "a\\\\\\\\\"b c\" d e" + v->add("a\\\\\g c", FALSE); // XXX "a\\\\\\\\\"b c" + v->add("d", FALSE); + v->add("e", FALSE); + // v->disable(); + vectors[i++] = v; + + + // Additional tests + v = new Vector(argv[0], "\"a b c\"\""); + v->add("a b c\"", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"\"a b c\"\""); + v->add("a", FALSE); + v->add("b", FALSE); + v->add("c", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"\"\"a b c\"\"\""); + v->add("\"a b c\"", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"\"\"\"a b c\"\"\"\""); + v->add("\"a", FALSE); + v->add("b", FALSE); + v->add("c\"", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"\"\"\"\"a b c\"\"\"\"\""); + v->add("\"\"a b c\"\"", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"C:\\TEST A\\\\\""); + v->add("C:\\TEST A\\", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"\"C:\\TEST A\\\\\"\""); + v->add("C:\\TEST", FALSE); + v->add("A\\", FALSE); + // v->disable(); + vectors[i++] = v; + + + // test if a wildcard is present + v = new Vector(argv[0], "abc*def"); + v->add("abc*def", TRUE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"abc*def\""); + v->add("abc*def", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "*.abc"); + v->add("*.abc", TRUE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"*.abc\""); + v->add("*.abc", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "x.???"); + v->add("x.???", TRUE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\"x.???\""); + v->add("x.???", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "Debug\\*"); + v->add("Debug\\*", TRUE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "Debug\\f?a"); + v->add("Debug\\f?a", TRUE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "Debug\\?a.java"); + v->add("Debug\\?a.java", TRUE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "foo *.noexts"); + v->add("foo", FALSE); + v->add("*.noexts", TRUE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "X\\Y\\Z"); + v->add("X\\Y\\Z", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "\\X\\Y\\Z"); + v->add("\\X\\Y\\Z", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "a b"); + v->add("a", FALSE); + v->add("b", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "a\tb"); + v->add("a", FALSE); + v->add("b", FALSE); + // v->disable(); + vectors[i++] = v; + + + v = new Vector(argv[0], "a \t b"); + v->add("a", FALSE); + v->add("b", FALSE); + // v->disable(); + vectors[i++] = v; + + v = new Vector(argv[0], "*\\"); + v->add("*\\", TRUE); + // v->disable(); + vectors[i++] = v; + + v = new Vector(argv[0], "*/"); + v->add("*/", TRUE); + // v->disable(); + vectors[i++] = v; + + v = new Vector(argv[0], ".\\*"); + v->add(".\\*", TRUE); + // v->disable(); + vectors[i++] = v; + + v = new Vector(argv[0], "./*"); + v->add("./*", TRUE); + // v->disable(); + vectors[i++] = v; + + v = new Vector(argv[0], ".\\*"); + v->add(".\\*", TRUE); + // v->disable(); + vectors[i++] = v; + + v = new Vector(argv[0], ".//*"); + v->add(".//*", TRUE); + // v->disable(); + vectors[i++] = v; + + v = new Vector(argv[0], "..\\..\\*"); + v->add("..\\..\\*", TRUE); + // v->disable(); + vectors[i++] = v; + + v = new Vector(argv[0], "../../*"); + v->add("../../*", TRUE); + // v->disable(); + vectors[i++] = v; + + v = new Vector(argv[0], "..\\..\\"); + v->add("..\\..\\", FALSE); + // v->disable(); + vectors[i++] = v; + + v = new Vector(argv[0], "../../"); + v->add("../../", FALSE); + // v->disable(); + vectors[i++] = v; + + dotest(vectors); + printf("All tests pass [%d]\n", i); + doexit(0); +} +#endif /* IDE_STANDALONE */ diff -r d15095dfd348 -r aa2c9ce06632 src/windows/bin/java_md.c --- a/src/windows/bin/java_md.c Fri Aug 03 20:56:16 2012 +0100 +++ b/src/windows/bin/java_md.c Fri Aug 24 09:29:17 2012 +0100 @@ -1357,3 +1357,89 @@ { return JNI_FALSE; } + +/* + * At this point we have the arguments to the application, and we need to + * check with original stdargs in order to compare which of these truly + * needs expansion. cmdtoargs will specify this if it finds a bare + * (unquoted) argument containing a glob character(s) ie. * or ? + */ +jobjectArray +CreateApplicationArgs(JNIEnv *env, char **strv, int argc) +{ + int i, j, idx, tlen; + jobjectArray outArray, inArray; + char *ostart, *astart, **nargv; + jboolean needs_expansion = JNI_FALSE; + jmethodID mid; + int stdargc; + StdArg *stdargs; + jclass cls = GetLauncherHelperClass(env); + NULL_CHECK0(cls); + + if (argc == 0) { + return NewPlatformStringArray(env, strv, argc); + } + // the holy grail we need to compare with. + stdargs = JLI_GetStdArgs(); + stdargc = JLI_GetStdArgc(); + + // sanity check, this should never happen + if (argc > stdargc) { + JLI_TraceLauncher("Warning: app args is larger than the original, %d %d\n", argc, stdargc); + JLI_TraceLauncher("passing arguments as-is.\n"); + return NewPlatformStringArray(env, strv, argc); + } + + // sanity check, match the args we have, to the holy grail + idx = stdargc - argc; + ostart = stdargs[idx].arg; + astart = strv[0]; + // sanity check, ensure that the first argument of the arrays are the same + if (JLI_StrCmp(ostart, astart) != 0) { + // some thing is amiss the args don't match + JLI_TraceLauncher("Warning: app args parsing error\n"); + JLI_TraceLauncher("passing arguments as-is\n"); + return NewPlatformStringArray(env, strv, argc); + } + + // make a copy of the args which will be expanded in java if required. + nargv = (char **)JLI_MemAlloc(argc * sizeof(char*)); + for (i = 0, j = idx; i < argc; i++, j++) { + jboolean arg_expand = (JLI_StrCmp(stdargs[j].arg, strv[i]) == 0) + ? stdargs[j].has_wildcard + : JNI_FALSE; + if (needs_expansion == JNI_FALSE) + needs_expansion = arg_expand; + + // indicator char + String + NULL terminator, the java method will strip + // out the first character, the indicator character, so no matter what + // we add the indicator + tlen = 1 + JLI_StrLen(strv[i]) + 1; + nargv[i] = (char *) JLI_MemAlloc(tlen); + JLI_Snprintf(nargv[i], tlen, "%c%s", arg_expand ? 'T' : 'F', strv[i]); + JLI_TraceLauncher("%s\n", nargv[i]); + } + + if (!needs_expansion) { + // clean up any allocated memory and return back the old arguments + for (i = 0 ; i < argc ; i++) { + JLI_MemFree(nargv[i]); + } + JLI_MemFree(nargv); + return NewPlatformStringArray(env, strv, argc); + } + NULL_CHECK0(mid = (*env)->GetStaticMethodID(env, cls, + "expandArgs", + "([Ljava/lang/String;)[Ljava/lang/String;")); + + // expand the arguments that require expansion, the java method will strip + // out the indicator character. + inArray = NewPlatformStringArray(env, nargv, argc); + outArray = (*env)->CallStaticObjectMethod(env, cls, mid, inArray); + for (i = 0; i < argc; i++) { + JLI_MemFree(nargv[i]); + } + JLI_MemFree(nargv); + return outArray; +} diff -r d15095dfd348 -r aa2c9ce06632 src/windows/native/sun/windows/awt_TextArea.cpp --- a/src/windows/native/sun/windows/awt_TextArea.cpp Fri Aug 03 20:56:16 2012 +0100 +++ b/src/windows/native/sun/windows/awt_TextArea.cpp Fri Aug 24 09:29:17 2012 +0100 @@ -131,48 +131,13 @@ MsgRouting mr = mrDoDefault; switch (message) { - case WM_PRINTCLIENT: - { - FORMATRANGE fr; - HDC hPrinterDC = (HDC)wParam; - int nHorizRes = ::GetDeviceCaps(hPrinterDC, HORZRES); - int nVertRes = ::GetDeviceCaps(hPrinterDC, VERTRES); - int nLogPixelsX = ::GetDeviceCaps(hPrinterDC, LOGPIXELSX); - int nLogPixelsY = ::GetDeviceCaps(hPrinterDC, LOGPIXELSY); - - // Ensure the printer DC is in MM_TEXT mode. - ::SetMapMode ( hPrinterDC, MM_TEXT ); - - // Rendering to the same DC we are measuring. - ::ZeroMemory(&fr, sizeof(fr)); - fr.hdc = fr.hdcTarget = hPrinterDC; - // Set up the page. - fr.rcPage.left = fr.rcPage.top = 0; - fr.rcPage.right = (nHorizRes/nLogPixelsX) * 1440; // in twips - fr.rcPage.bottom = (nVertRes/nLogPixelsY) * 1440; - fr.rc.left = fr.rcPage.left; - fr.rc.top = fr.rcPage.top; - fr.rc.right = fr.rcPage.right; - fr.rc.bottom = fr.rcPage.bottom; - - // start printing from the first visible line - LRESULT nLine = SendMessage(EM_GETFIRSTVISIBLELINE, 0, 0); - LONG startCh = static_cast(SendMessage(EM_LINEINDEX, - (WPARAM)nLine, 0)); - fr.chrg.cpMin = startCh; - fr.chrg.cpMax = -1; - - SendMessage(EM_FORMATRANGE, TRUE, (LPARAM)&fr); - } - - break; case EM_SETCHARFORMAT: case WM_SETFONT: SetIgnoreEnChange(TRUE); break; } - retValue = AwtComponent::WindowProc(message, wParam, lParam); + retValue = AwtTextComponent::WindowProc(message, wParam, lParam); switch (message) { case EM_SETCHARFORMAT: diff -r d15095dfd348 -r aa2c9ce06632 src/windows/native/sun/windows/awt_TextComponent.cpp --- a/src/windows/native/sun/windows/awt_TextComponent.cpp Fri Aug 03 20:56:16 2012 +0100 +++ b/src/windows/native/sun/windows/awt_TextComponent.cpp Fri Aug 24 09:29:17 2012 +0100 @@ -215,6 +215,50 @@ return c; } +LRESULT +AwtTextComponent::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { + + switch (message) { + case WM_PRINTCLIENT: + { + FORMATRANGE fr; + HDC hPrinterDC = (HDC)wParam; + int nHorizRes = ::GetDeviceCaps(hPrinterDC, HORZRES); + int nVertRes = ::GetDeviceCaps(hPrinterDC, VERTRES); + int nLogPixelsX = ::GetDeviceCaps(hPrinterDC, LOGPIXELSX); + int nLogPixelsY = ::GetDeviceCaps(hPrinterDC, LOGPIXELSY); + + // Ensure the printer DC is in MM_TEXT mode. + ::SetMapMode ( hPrinterDC, MM_TEXT ); + + // Rendering to the same DC we are measuring. + ::ZeroMemory(&fr, sizeof(fr)); + fr.hdc = fr.hdcTarget = hPrinterDC; + // Set up the page. + fr.rcPage.left = fr.rcPage.top = 0; + fr.rcPage.right = (nHorizRes/nLogPixelsX) * 1440; // in twips + fr.rcPage.bottom = (nVertRes/nLogPixelsY) * 1440; + fr.rc.left = fr.rcPage.left; + fr.rc.top = fr.rcPage.top; + fr.rc.right = fr.rcPage.right; + fr.rc.bottom = fr.rcPage.bottom; + + // start printing from the first visible line + LRESULT nLine = SendMessage(EM_GETFIRSTVISIBLELINE, 0, 0); + LONG startCh = static_cast(SendMessage(EM_LINEINDEX, + (WPARAM)nLine, 0)); + fr.chrg.cpMin = startCh; + fr.chrg.cpMax = -1; + + SendMessage(EM_FORMATRANGE, TRUE, (LPARAM)&fr); + } + + break; + } + + return AwtComponent::WindowProc(message, wParam, lParam); +} + LONG AwtTextComponent::EditGetCharFromPos(POINT& pt) { return static_cast(SendMessage(EM_CHARFROMPOS, 0, reinterpret_cast(&pt))); diff -r d15095dfd348 -r aa2c9ce06632 src/windows/native/sun/windows/awt_TextComponent.h --- a/src/windows/native/sun/windows/awt_TextComponent.h Fri Aug 03 20:56:16 2012 +0100 +++ b/src/windows/native/sun/windows/awt_TextComponent.h Fri Aug 24 09:29:17 2012 +0100 @@ -50,6 +50,7 @@ static AwtTextComponent* Create(jobject self, jobject parent, BOOL isMultiline); virtual LPCTSTR GetClassName(); + LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam); int RemoveCR(WCHAR *pStr); diff -r d15095dfd348 -r aa2c9ce06632 test/ProblemList.txt --- a/test/ProblemList.txt Fri Aug 03 20:56:16 2012 +0100 +++ b/test/ProblemList.txt Fri Aug 24 09:29:17 2012 +0100 @@ -191,9 +191,6 @@ # 7079145 java/net/ipv6tests/UdpTest.java hang at IPv6 only data exchange java/net/ipv6tests/UdpTest.java linux-all -# 7081476 -java/net/InetSocketAddress/B6469803.java generic-all - # 7102670 java/net/InetAddress/CheckJNI.java linux-all @@ -231,9 +228,6 @@ # 6962637 java/io/File/MaxPathLength.java windows-all -# 7076644 -java/io/File/Basic.java windows-all - # 7145435 - Test needs AWT window server, does not work headless java/io/Serializable/resolveClass/deserializeButton/run.sh macosx-all @@ -271,9 +265,6 @@ # jdk_security -# 7177556 -com/sun/crypto/provider/KeyFactory/TestProviderLeak.java generic-all - # 7147060 com/sun/org/apache/xml/internal/security/transforms/ClassLoaderTest.java generic-all @@ -390,8 +381,4 @@ # 7041639, Solaris DSA keypair generation bug java/util/TimeZone/TimeZoneDatePermissionCheck.sh solaris-all -# 7150557 -java/util/prefs/RemoveReadOnlyNode.java macosx-all -java/util/prefs/RemoveUnregedListener.java macosx-all - ############################################################################ diff -r d15095dfd348 -r aa2c9ce06632 test/com/sun/jndi/ldap/InvalidLdapFilters.java --- a/test/com/sun/jndi/ldap/InvalidLdapFilters.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/com/sun/jndi/ldap/InvalidLdapFilters.java Fri Aug 24 09:29:17 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -171,7 +171,21 @@ // env.put(Context.SECURITY_CREDENTIALS,"root"); // create initial context - DirContext context = new InitialDirContext(env); + DirContext context = null; + int i = 0; + while (true) { + try { + context = new InitialDirContext(env); + break; + } catch (NamingException ne) { + // may be a connection or read timeout, try again + // no more than 5 times + if (i++ > 5) { + throw new Exception( + "Maybe timeout during context initialization", ne); + } + } + } // searching SearchControls scs = new SearchControls(); diff -r d15095dfd348 -r aa2c9ce06632 test/java/awt/Focus/OverrideRedirectWindowActivationTest/OverrideRedirectWindowActivationTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/awt/Focus/OverrideRedirectWindowActivationTest/OverrideRedirectWindowActivationTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6385277 + * @summary Tests that override redirect window gets activated on click. + * @author anton.tarasov@sun.com: area=awt.focus + * @library ../../regtesthelpers + * @build Util + * @run main OverrideRedirectWindowActivationTest + */ +import java.awt.*; +import java.awt.event.*; +import java.util.concurrent.Callable; +import javax.swing.SwingUtilities; +import sun.awt.SunToolkit; +import test.java.awt.regtesthelpers.Util; + +public class OverrideRedirectWindowActivationTest { + + private static Frame frame; + private static Window window; + private static Button fbutton; + private static Button wbutton; + private static Label label; + private static Robot robot; + private static SunToolkit toolkit; + + public static void main(String[] args) throws Exception { + + if ("sun.awt.motif.MToolkit".equals(Toolkit.getDefaultToolkit().getClass().getName())) { + System.out.println("No testing on Motif. Test passed."); + return; + } + + toolkit = (SunToolkit) Toolkit.getDefaultToolkit(); + robot = new Robot(); + robot.setAutoDelay(50); + + Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() { + + public void eventDispatched(AWTEvent e) { + System.out.println(e); + } + }, FocusEvent.FOCUS_EVENT_MASK | WindowEvent.WINDOW_FOCUS_EVENT_MASK); + + createAndShowWindow(); + toolkit.realSync(); + + createAndShowFrame(); + toolkit.realSync(); + + // click on Frame + clickOn(getClickPoint(frame)); + + if (!frame.isFocused()) { + throw new RuntimeException("Error: a frame couldn't be focused by click."); + } + + //click on Label in Window + clickOn(getClickPoint(label)); + + if (!window.isFocused()) { + throw new RuntimeException("Test failed: the window couldn't be activated by click!"); + } + + // bring focus back to the frame + clickOn(getClickPoint(fbutton)); + + if (!frame.isFocused()) { + throw new RuntimeException("Error: a frame couldn't be focused by click."); + } + + // Test 2. Verifies that clicking on a component of unfocusable Window + // won't activate it. + + window.setFocusableWindowState(false); + toolkit.realSync(); + + + clickOn(getClickPoint(label)); + + if (window.isFocused()) { + throw new RuntimeException("Test failed: unfocusable window got activated by click!"); + } + System.out.println("Test passed."); + + } + + private static void createAndShowWindow() { + + frame = new Frame("Test Frame"); + window = new Window(frame); + wbutton = new Button("wbutton"); + label = new Label("label"); + + window.setBounds(800, 200, 200, 100); + window.setLayout(new FlowLayout()); + window.add(wbutton); + window.add(label); + window.setVisible(true); + + } + + private static void createAndShowFrame() { + fbutton = new Button("fbutton"); + + frame.setBounds(800, 0, 200, 100); + frame.setLayout(new FlowLayout()); + frame.add(fbutton); + frame.setVisible(true); + + } + + static void clickOn(Point point) { + + robot.mouseMove(point.x, point.y); + + robot.mousePress(InputEvent.BUTTON1_MASK); + robot.mouseRelease(InputEvent.BUTTON1_MASK); + + toolkit.realSync(); + } + + static Point getClickPoint(Component c) { + Point p = c.getLocationOnScreen(); + Dimension d = c.getSize(); + return new Point(p.x + (int) (d.getWidth() / 2), p.y + (int) (d.getHeight() / 2)); + } + + static Point getClickPoint(Frame frame) { + Point p = frame.getLocationOnScreen(); + Dimension d = frame.getSize(); + return new Point(p.x + (int) (d.getWidth() / 2), p.y + (frame.getInsets().top / 2)); + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/java/awt/Window/Grab/GrabTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/awt/Window/Grab/GrabTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,212 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + @test + @bug 7124430 + @summary Tests that SunToolkit.grab API works + @author anton.tarasov@oracle.com: area=awt.toolkit + @library ../../regtesthelpers + @build Util + @run main GrabTest +*/ + +import java.awt.*; +import java.awt.event.*; +import test.java.awt.regtesthelpers.Util; + +public class GrabTest { + private static Frame f; + private static Frame f1; + private static Window w; + private static Button b; + + private static Robot robot; + private static sun.awt.SunToolkit tk; + + static volatile boolean ungrabbed; + static volatile boolean buttonPressed; + static volatile boolean windowPressed; + static volatile boolean framePressed; + + static volatile boolean passed = true; + + public static void main(String[] args) { + + Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() { + public void eventDispatched(AWTEvent e) { + System.out.println(e); + if (e instanceof sun.awt.UngrabEvent) { + ungrabbed = true; + } + } + }, sun.awt.SunToolkit.GRAB_EVENT_MASK); + + f = new Frame("Frame"); + f.setBounds(0, 0, 300, 300); + f.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + System.out.println(e); + framePressed = true; + } + }); + + f1 = new Frame("OtherFrame"); + f1.setBounds(700, 100, 200, 200); + + w = new Window(f); + w.setLayout(new FlowLayout()); + b = new Button("Press"); + b.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + System.out.println(e); + buttonPressed = true; + } + }); + w.add(b); + w.setBounds(400, 100, 200, 200); + w.setBackground(Color.blue); + w.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + System.out.println(e); + windowPressed = true; + } + }); + + f.setVisible(true); + w.setVisible(true); + + tk = (sun.awt.SunToolkit)Toolkit.getDefaultToolkit(); + + try { + robot = new Robot(); + } catch (AWTException ex) { + throw new RuntimeException(ex); + } + + Util.waitForIdle(robot); + + test(); + } + + public static void test() { + tk.grab(w); + + // 1. Check that button press doesn't cause ungrab + Util.clickOnComp(b, robot); + Util.waitForIdle(robot); + checkAndThrow(buttonPressed, "Error: Button can not be pressed"); + if (ungrabbed) { + passed = false; + tk.grab(w); + System.err.println("Failure: [1] Press inside of Window (on Button) caused ungrab"); + } + + // 2. Check that press on the window itself doesn't cause ungrab + Util.clickOnComp(w, robot); + Util.waitForIdle(robot); + checkAndThrow(windowPressed, "Error: Window can't be pressed"); + if (ungrabbed) { + passed = false; + tk.grab(w); + System.err.println("Failure: [2] Press inside of Window caused ungrab"); + } + + // 3. Check that press on the frame causes ungrab, event must be dispatched + Util.clickOnComp(f, robot); + Util.waitForIdle(robot); + checkAndThrow(framePressed, "Error: Frame can't be pressed"); + if (!ungrabbed) { + passed = false; + System.err.println("Failure: [3] Press inside of Frame didn't cause ungrab"); + } + ungrabbed = false; + tk.grab(w); + + // 4. Check that press on the frame's title causes ungrab + Util.clickOnTitle(f, robot); + Util.waitForIdle(robot); + if (!ungrabbed) { + passed = false; + System.err.println("Failure: [4] Press inside of Frame's title didn't cause ungrab"); + } + ungrabbed = false; + tk.grab(w); + + + // 5. Check that press on the other frame's title causes ungrab + f1.setVisible(true); + Util.waitForIdle(robot); + Util.clickOnTitle(f1, robot); + if (!ungrabbed) { + passed = false; + System.err.println("Failure: [5] Press inside of other Frame's title didn't cause ungrab"); + } + f.requestFocus(); // restore focus + Util.waitForIdle(robot); + if (!f.hasFocus()) { + System.err.println("Error: Frame can't be focused"); + } + ungrabbed = false; + tk.grab(w); + + + // 6. Check that press on the outside area causes ungrab + Point loc = f.getLocationOnScreen(); + robot.mouseMove(loc.x + 100, loc.y + f.getSize().height + 1); + Util.waitForIdle(robot); + robot.mousePress(InputEvent.BUTTON1_MASK); + robot.delay(50); + robot.mouseRelease(InputEvent.BUTTON1_MASK); + Util.waitForIdle(robot); + if (!ungrabbed) { + passed = false; + System.err.println("Failure: [6] Press on the outside area didn't cause ungrab"); + } + ungrabbed = false; + tk.grab(w); + + + // 7. Check that disposing the window causes ungrab + w.dispose(); + Util.waitForIdle(robot); + if (!ungrabbed) { + passed = false; + System.err.println("Failure: [7] Window disposal didn't cause ungrab"); + } + + if (passed) { + System.out.println("Test passed."); + } else { + throw new RuntimeException("Test failed."); + } + } + + public static void checkAndThrow(boolean condition, String msg) { + if (!condition) { + throw new RuntimeException(msg); + } + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/java/awt/event/TextEvent/TextEventSequenceTest/TextEventSequenceTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/awt/event/TextEvent/TextEventSequenceTest/TextEventSequenceTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4028580 + * @summary TextArea does not send TextEvent when setText. Does for insert + * @author kdm@sparc.spb.su: area= awt.TextAvent + * @run main TextEventSequenceTest + */ +import java.awt.*; +import java.awt.event.*; +import sun.awt.SunToolkit; + +public class TextEventSequenceTest { + + private static Frame f; + private static TextField tf; + private static TextArea t; + private static int cntEmptyStrings = 0; + private static int cntNonEmptyStrings = 0; + + public static void main(String[] args) { + + test("non-empty text string"); + test(""); + test(null); + } + + private static void test(String test) { + SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit(); + + createAndShowGUI(test); + toolkit.realSync(); + + initCounts(); + t.setText("Hello "); + toolkit.realSync(); + t.append("World! !"); + toolkit.realSync(); + t.insert("from Roger Pham", 13); + toolkit.realSync(); + t.replaceRange("Java Duke", 18, 28); + toolkit.realSync(); + checkCounts(0, 4); + + initCounts(); + t.setText(""); + toolkit.realSync(); + t.setText(""); + toolkit.realSync(); + t.setText(""); + toolkit.realSync(); + checkCounts(1, 0); + + initCounts(); + tf.setText("Hello There!"); + toolkit.realSync(); + checkCounts(0, 1); + + initCounts(); + tf.setText(""); + toolkit.realSync(); + tf.setText(""); + toolkit.realSync(); + tf.setText(""); + toolkit.realSync(); + checkCounts(1, 0); + + f.dispose(); + } + + private static void createAndShowGUI(String text) { + f = new Frame("TextEventSequenceTest"); + f.setLayout(new FlowLayout()); + + TextListener listener = new MyTextListener(); + + tf = new TextField(text); + tf.addTextListener(listener); + f.add(tf); + + t = new TextArea(text, 10, 30); + t.addTextListener(listener); + f.add(t); + + f.pack(); + f.setVisible(true); + } + + static class MyTextListener implements TextListener { + + public synchronized void textValueChanged(TextEvent e) { + TextComponent tc = (TextComponent) e.getSource(); + String text = tc.getText(); + if (text.length() == 0) { + cntEmptyStrings++; + } else { + cntNonEmptyStrings++; + } + } + } + + synchronized static void initCounts() { + cntEmptyStrings = 0; + cntNonEmptyStrings = 0; + } + + synchronized static void checkCounts(int empty, int nonempty) { + if (empty != cntEmptyStrings || nonempty != cntNonEmptyStrings) { + throw new RuntimeException( + String.format("Expected events: empty = %d, nonempty = %d, " + + "actual events: empty = %d, nonempty = %d", + empty, nonempty, cntEmptyStrings, cntNonEmptyStrings)); + } + } +} + diff -r d15095dfd348 -r aa2c9ce06632 test/java/beans/Performance/Test7122740.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/beans/Performance/Test7122740.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7122740 + * @summary Tests just a benchmark of PropertyDescriptor(String, Class) performance + * @author Sergey Malenkov + * @run main/manual Test7122740 + */ + +import java.beans.PropertyDescriptor; + +public class Test7122740 { + public static void main(String[] args) throws Exception { + long time = System.nanoTime(); + for (int i = 0; i < 1000; i++) { + new PropertyDescriptor("name", PropertyDescriptor.class); + new PropertyDescriptor("value", Concrete.class); + } + time -= System.nanoTime(); + System.out.println("Time (ms): " + (-time / 1000000)); + } + + public static class Abstract { + private T value; + public T getValue() { + return this.value; + } + public void setValue(T value) { + this.value = value; + } + } + + private static class Concrete extends Abstract { + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/java/beans/Performance/Test7184799.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/beans/Performance/Test7184799.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7184799 + * @summary Tests just a benchmark of Introspector.getBeanInfo(Class) performance + * @author Sergey Malenkov + * @run main/manual Test7184799 + */ + +import java.beans.Introspector; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; + +public class Test7184799 { + private static final Class[] TYPES = { + Class.class, + String.class, + Character.class, + Boolean.class, + Byte.class, + Short.class, + Integer.class, + Long.class, + Float.class, + Double.class, + Collection.class, + Set.class, + HashSet.class, + TreeSet.class, + LinkedHashSet.class, + Map.class, + HashMap.class, + TreeMap.class, + LinkedHashMap.class, + WeakHashMap.class, + ConcurrentHashMap.class, + Dictionary.class, + Exception.class, + }; + + public static void main(String[] args) throws Exception { + long time = System.nanoTime(); + for (Class type : TYPES) { + Introspector.getBeanInfo(type); + } + time -= System.nanoTime(); + System.out.println("Time (ms): " + (-time / 1000000)); + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/java/io/File/MacPathTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/io/File/MacPathTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 7130915 + * @summary Tests file path with nfc/nfd forms on MacOSX + * @build MacPathTest + * @run shell MacPathTest.sh + */ + +import java.io.*; +import java.text.*; +import java.util.*; + +public class MacPathTest { + + public static void main(String args[]) throws Throwable { + String osname = System.getProperty("os.name"); + if (!osname.contains("OS X") && !osname.contains("Darwin")) + return; + + // English + test("TestDir_apple", // test dir + "dir_macosx", // dir + "file_macosx"); // file + + // Japanese composite character + test("TestDir_\u30c8\u30a4\u30e4\u30cb\u30ca\u30eb/", + "dir_\u30a4\u30c1\u30b4\u306e\u30b1\u30fc\u30ad", + "file_\u30a4\u30c1\u30b4\u306e\u30b1\u30fc\u30ad"); + + // latin-1 supplementory + test("TestDir_K\u00f6rperlich\u00e4\u00df/", + "dir_Entt\u00e4uschung", + "file_Entt\u00e4uschung"); + + test("TestDir_K\u00f6rperlich\u00e4\u00df/", + "dir_Entt\u00c4uschung", + "file_Entt\u00c4uschung"); + + // Korean syblla + test("TestDir_\uac00\uac01\uac02", + "dir_\uac20\uac21\uac22", + "file_\uacc0\uacc1\uacc2"); + } + + private static void removeAll(File file) throws Throwable { + if (file.isDirectory()) { + for (File f : file.listFiles()) { + removeAll(f); + } + } + file.delete(); + } + + private static boolean equal(Object x, Object y) { + return x == null ? y == null : x.equals(y); + } + + private static boolean match(File target, File src) { + if (target.equals(src)) { + String fname = target.toString(); + System.out.printf(" ->matched : [%s], length=%d%n", fname, fname.length()); + return true; + } + return false; + } + + private static void open_read(String what, File file) throws Throwable { + try (FileInputStream fis = new FileInputStream(file)) { + byte[] bytes = new byte[10]; + fis.read(bytes); + System.out.printf(" %s:%s%n", what, new String(bytes)); + } + } + + private static void test(String testdir, String dname, String fname_nfc) + throws Throwable + { + String fname = null; + String dname_nfd = Normalizer.normalize(dname, Normalizer.Form.NFD); + String fname_nfd = Normalizer.normalize(fname_nfc, Normalizer.Form.NFD); + + System.out.printf("%n%n--------Testing...----------%n"); + File base = new File(testdir); + File dir = new File(base, dname); + File dir_nfd = new File(base, dname_nfd); + File file_nfc = new File(base, fname_nfc); + File file_nfd = new File(base, fname_nfd); + + System.out.printf("base :[%s][len=%d]%n", testdir, testdir.length()); + System.out.printf("dir :[%s][len=%d]%n", dname, dname.length()); + System.out.printf("fname_nfc :[%s][len=%d]%n", fname_nfc, fname_nfc.length()); + System.out.printf("fname_nfd :[%s][len=%d]%n", fname_nfd, fname_nfd.length()); + + fname = file_nfc.toString(); + System.out.printf("file_nfc ->[%s][len=%d]%n", fname, fname.length()); + fname = file_nfd.toString(); + System.out.printf("file_nfd ->[%s][len=%d]%n%n", fname, fname.length()); + + removeAll(base); + dir.mkdirs(); + + fname = dir.toString(); + System.out.printf(":Directory [%s][len=%d] created%n", fname, fname.length()); + + ////////////////////////////////////////////////////////////// + if (!dir.isDirectory() || !dir_nfd.isDirectory()) { + throw new RuntimeException("File.isDirectory() failed"); + } + + ////////////////////////////////////////////////////////////// + // write to via nfd + try (FileOutputStream fos = new FileOutputStream(file_nfd)) { + fos.write('n'); fos.write('f'); fos.write('d'); + } + open_read("read in with nfc (from nfd)", file_nfc); + file_nfd.delete(); + + ////////////////////////////////////////////////////////////// + // write to with nfc + try (FileOutputStream fos = new FileOutputStream(file_nfc)) { + fos.write('n'); fos.write('f'); fos.write('c'); + } + open_read("read in with nfd (from nfc)", file_nfd); + //file_nfc.delete(); + + ////////////////////////////////////////////////////////////// + boolean found_dir = false; + boolean found_file_nfc = false; + boolean found_file_nfd = false; + + for (File f : base.listFiles()) { + fname = f.toString(); + System.out.printf("Found : [%s], length=%d%n", fname, fname.length()); + found_dir |= match(dir, f); + found_file_nfc |= match(file_nfc, f); + found_file_nfd |= match(file_nfd, f); + } + + if (!found_dir || !found_file_nfc || !found_file_nfc) { + throw new RuntimeException("File.equal() failed"); + } + removeAll(base); + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/java/io/File/MacPathTest.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/io/File/MacPathTest.sh Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,39 @@ +#! /bin/sh + +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# +OS=`uname -s` +case "$OS" in + Darwin ) ;; + * ) + exit 0 + ;; +esac + +if [ "x$TESTJAVA" = x ]; then + TESTJAVA=$1; shift + TESTCLASSES=. +fi + +export LC_ALL=en_US.UTF-8 ;${TESTJAVA}/bin/java -cp ${TESTCLASSES} MacPathTest diff -r d15095dfd348 -r aa2c9ce06632 test/java/io/File/basic.sh --- a/test/java/io/File/basic.sh Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/io/File/basic.sh Fri Aug 24 09:29:17 2012 +0100 @@ -33,7 +33,16 @@ rm -rf x.Basic.* rm -f x.Basic.non printf "%s" "xyzzyN" > x.Basic.rw -touch x.Basic.ro; chmod ugo-w x.Basic.ro +touch x.Basic.ro +OS=`uname -s` +case "$OS" in + Windows_* | CYGWIN*) + attrib +R x.Basic.ro + ;; + *) + chmod ugo-w x.Basic.ro + ;; +esac mkdir x.Basic.dir if $TESTJAVA/bin/java $* -classpath "$TESTCLASSES" Basic; then [ -f x.Basic.rw ] && (echo "x.Basic.rw not deleted"; exit 1) diff -r d15095dfd348 -r aa2c9ce06632 test/java/lang/invoke/7157574/Test7157574.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/lang/invoke/7157574/Test7157574.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +/* +7157574 method handles returned by reflective lookup API sometimes have wrong receiver type + +When an inherited non-static field or method is looked up in a class C using Lookup.findVirtual(C...), etc., the JSR 292 API, the first argument of the resulting method handle must be the receiver ('this'), and must be the requested class (or more specific, in the case of findSpecial or a lookup of a protected method). + +But currently, if a supertype T defines the looked-up method or field and C inherits it, the returned method handle might have the more specific initial type T. + +The relevant javadoc (and 292 spec.) is as follows: + * The formal parameter {@code this} stands for the self-reference of type {@code C}; + * if it is present, it is always the leading argument to the method handle invocation. + * (In the case of some {@code protected} members, {@code this} may be + * restricted in type to the lookup class; see below.) + +Because of this bug, all of the assertions fail in the following example: +*/ + +/* @test + * @bug 7157574 + * @summary method handles returned by reflective lookup API sometimes have wrong receiver type + * + * @run main Test7157574 + */ + +import java.lang.invoke.*; +import static java.lang.invoke.MethodHandles.*; +import static java.lang.invoke.MethodType.*; +public class Test7157574 { + interface Intf { void ig1(); void ig2(); void ig3(); void ig4(); void m1(); } + static abstract class Super implements Intf { public abstract void m2(); public int f2; } + static abstract class Sub extends Super { } + public static void main(String... av) throws Throwable { + MethodHandle m1 = lookup().findVirtual(Sub.class, "m1", methodType(void.class)); + System.out.println(m1); + MethodHandle m2 = lookup().findVirtual(Sub.class, "m2", methodType(void.class)); + System.out.println(m2); + MethodHandle f2 = lookup().findGetter(Sub.class, "f2", int.class); + System.out.println(f2); + MethodHandle f2s = lookup().findSetter(Sub.class, "f2", int.class); + System.out.println(f2s); + MethodHandle chc = lookup().findVirtual(Sub.class, "hashCode", methodType(int.class)); + System.out.println(chc); + MethodHandle ihc = lookup().findVirtual(Intf.class, "hashCode", methodType(int.class)); + System.out.println(ihc); + assertEquals(Sub.class, m1.type().parameterType(0)); + assertEquals(Sub.class, m2.type().parameterType(0)); + assertEquals(Sub.class, f2.type().parameterType(0)); + assertEquals(Sub.class, f2s.type().parameterType(0)); + assertEquals(Sub.class, chc.type().parameterType(0)); + assertEquals(Intf.class, ihc.type().parameterType(0)); + // test the MHs on a concrete version of Sub + class C extends Sub { + public void m1() { this.f2 = -1; } + public void m2() { this.f2 = -2; } + // Pack the vtable of Intf with leading junk: + private void ig() { throw new RuntimeException(); } + public void ig1() { ig(); } + public void ig2() { ig(); } + public void ig3() { ig(); } + public void ig4() { ig(); } + } + testConcrete(new C(), m1, m2, f2, f2s, chc, ihc); + } + private static void testConcrete(Sub s, + MethodHandle m1, MethodHandle m2, + MethodHandle f2, MethodHandle f2s, + MethodHandle chc, MethodHandle ihc + ) throws Throwable { + s.f2 = 0; + m1.invokeExact(s); + assertEquals(-1, s.f2); + m2.invokeExact(s); + assertEquals(-2, s.f2); + s.f2 = 2; + assertEquals(2, (int) f2.invokeExact(s)); + f2s.invokeExact(s, 0); + assertEquals(0, s.f2); + assertEquals(s.hashCode(), (int) chc.invokeExact(s)); + assertEquals(s.hashCode(), (int) ihc.invokeExact((Intf)s)); + } + + private static void assertEquals(Object expect, Object observe) { + if (java.util.Objects.equals(expect, observe)) return; + String msg = ("expected "+expect+" but observed "+observe); + System.out.println("FAILED: "+msg); + throw new AssertionError(msg); + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/java/lang/invoke/InvokeGenericTest.java --- a/test/java/lang/invoke/InvokeGenericTest.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/lang/invoke/InvokeGenericTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -68,24 +68,6 @@ public InvokeGenericTest() { } - @Before - public void checkImplementedPlatform() { - boolean platformOK = false; - Properties properties = System.getProperties(); - String vers = properties.getProperty("java.vm.version"); - String name = properties.getProperty("java.vm.name"); - String arch = properties.getProperty("os.arch"); - if ((arch.equals("amd64") || arch.equals("i386") || arch.equals("x86") || - arch.equals("x86_64") || arch.equals("sparc") || arch.equals("sparcv9")) && - (name.contains("Client") || name.contains("Server")) - ) { - platformOK = true; - } else { - System.err.println("Skipping tests for unsupported platform: "+Arrays.asList(vers, name, arch)); - } - assumeTrue(platformOK); - } - String testName; static int allPosTests, allNegTests; int posTests, negTests; diff -r d15095dfd348 -r aa2c9ce06632 test/java/lang/invoke/JavaDocExamplesTest.java --- a/test/java/lang/invoke/JavaDocExamplesTest.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/lang/invoke/JavaDocExamplesTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -54,7 +54,6 @@ /** * @author jrose */ -@SuppressWarnings("LocalVariableHidesMemberVariable") public class JavaDocExamplesTest { /** Wrapper for running the JUnit tests in this module. * Put JUnit on the classpath! diff -r d15095dfd348 -r aa2c9ce06632 test/java/lang/invoke/MaxTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/lang/invoke/MaxTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @summary BoundMethodHandle tests with primitive types + * @compile MaxTest.java + * @run junit/othervm test.java.lang.invoke.MaxTest + */ + +package test.java.lang.invoke; + +import static org.junit.Assert.assertEquals; + +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; + +import org.junit.Test; + +public class MaxTest { + + static MethodHandles.Lookup LOOKUP = MethodHandles.lookup(); + + private MethodHandle getMax(Class t) throws Throwable { + return LOOKUP.findStatic(Math.class, "max", MethodType.methodType(t, t, t)); + } + + static int ITERATION_COUNT = 40000; + static { + String iterations = System.getProperty(MaxTest.class.getSimpleName() + ".ITERATION_COUNT"); + if (iterations == null) { + iterations = System.getProperty(MaxTest.class.getName() + ".ITERATION_COUNT"); + } + if (iterations != null) { + ITERATION_COUNT = Integer.parseInt(iterations); + } + } + + @Test + public void testMaxLong() throws Throwable { + final Class C = long.class; + final long P = 23L; + final long Q = 42L; + final long R = Math.max(P, Q); + for (int i = 0; i < ITERATION_COUNT; ++i) { + MethodHandle h = getMax(C); + assertEquals((long) h.invokeExact(P, Q), R); + MethodHandle bh = MethodHandles.insertArguments(h, 0, P); + assertEquals((long) bh.invokeExact(Q), R); + MethodHandle bbh = MethodHandles.insertArguments(bh, 0, Q); + assertEquals((long) bbh.invokeExact(), R); + MethodHandle b2h = MethodHandles.insertArguments(h, 1, Q); + assertEquals((long) b2h.invokeExact(P), R); + MethodHandle bb2h = MethodHandles.insertArguments(b2h, 0, P); + assertEquals((long) bb2h.invokeExact(), R); + } + } + + @Test + public void testMaxInt() throws Throwable { + final Class C = int.class; + final int P = 23; + final int Q = 42; + final int R = Math.max(P, Q); + for (int i = 0; i < ITERATION_COUNT; ++i) { + MethodHandle h = getMax(C); + assertEquals((int) h.invokeExact(P, Q), R); + MethodHandle bh = MethodHandles.insertArguments(h, 0, P); + assertEquals((int) bh.invokeExact(Q), R); + MethodHandle bbh = MethodHandles.insertArguments(bh, 0, Q); + assertEquals((int) bbh.invokeExact(), R); + MethodHandle b2h = MethodHandles.insertArguments(h, 1, Q); + assertEquals((int) b2h.invokeExact(P), R); + MethodHandle bb2h = MethodHandles.insertArguments(b2h, 0, P); + assertEquals((int) bb2h.invokeExact(), R); + } + } + + @Test + public void testMaxFloat() throws Throwable { + final Class C = float.class; + final float P = 23F; + final float Q = 42F; + final float R = Math.max(P, Q); + final float D = 0.1F; + for (int i = 0; i < ITERATION_COUNT; ++i) { + MethodHandle h = getMax(C); + assertEquals((float) h.invokeExact(P, Q), R, D); + MethodHandle bh = MethodHandles.insertArguments(h, 0, P); + assertEquals((float) bh.invokeExact(Q), R, D); + MethodHandle bbh = MethodHandles.insertArguments(bh, 0, Q); + assertEquals((float) bbh.invokeExact(), R, D); + MethodHandle b2h = MethodHandles.insertArguments(h, 1, Q); + assertEquals((float) b2h.invokeExact(P), R, D); + MethodHandle bb2h = MethodHandles.insertArguments(b2h, 0, P); + assertEquals((float) bb2h.invokeExact(), R, D); + } + } + + @Test + public void testMaxDouble() throws Throwable { + final Class C = double.class; + final double P = 23F; + final double Q = 42F; + final double R = Math.max(P, Q); + final double D = 0.1; + for (int i = 0; i < ITERATION_COUNT; ++i) { + MethodHandle h = getMax(C); + assertEquals((double) h.invokeExact(P, Q), R, D); + MethodHandle bh = MethodHandles.insertArguments(h, 0, P); + assertEquals((double) bh.invokeExact(Q), R, D); + MethodHandle bbh = MethodHandles.insertArguments(bh, 0, Q); + assertEquals((double) bbh.invokeExact(), R, D); + MethodHandle b2h = MethodHandles.insertArguments(h, 1, Q); + assertEquals((double) b2h.invokeExact(P), R, D); + MethodHandle bb2h = MethodHandles.insertArguments(b2h, 0, P); + assertEquals((double) bb2h.invokeExact(), R, D); + } + } + +} diff -r d15095dfd348 -r aa2c9ce06632 test/java/lang/invoke/MethodHandlesTest.java --- a/test/java/lang/invoke/MethodHandlesTest.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/lang/invoke/MethodHandlesTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -25,12 +25,13 @@ /* @test * @summary unit tests for java.lang.invoke.MethodHandles - * @compile -source 7 -target 7 MethodHandlesTest.java + * @compile MethodHandlesTest.java remote/RemoteExample.java * @run junit/othervm test.java.lang.invoke.MethodHandlesTest */ package test.java.lang.invoke; +import test.java.lang.invoke.remote.RemoteExample; import java.lang.invoke.*; import java.lang.invoke.MethodHandles.Lookup; import java.lang.reflect.*; @@ -57,8 +58,13 @@ // Set this true during development if you want to fast-forward to // a particular new, non-working test. Tests which are known to // work (or have recently worked) test this flag and return on true. - static boolean CAN_SKIP_WORKING = false; - //static { CAN_SKIP_WORKING = true; } + static final boolean CAN_SKIP_WORKING; + static { + String vstr = System.getProperty(THIS_CLASS.getSimpleName()+".CAN_SKIP_WORKING"); + if (vstr == null) + vstr = System.getProperty(THIS_CLASS.getName()+".CAN_SKIP_WORKING"); + CAN_SKIP_WORKING = Boolean.parseBoolean(vstr); + } // Set 'true' to do about 15x fewer tests, especially those redundant with RicochetTest. // This might be useful with -Xcomp stress tests that compile all method handles. @@ -71,62 +77,6 @@ } finally { printCounts(); verbosity -= 9; } } - // current failures - @Test //@Ignore("failure in call to makeRawRetypeOnly in ToGeneric") - public void testFail_1() throws Throwable { - // AMH.: IllegalArgumentException: bad adapter (conversion=0xfffab300): adapter pushes too many parameters - testSpreadArguments(int.class, 0, 6); - } - @Test //@Ignore("failure in JVM when expanding the stack using asm stub for _adapter_spread_args") - public void testFail_2() throws Throwable { - // if CONV_OP_IMPLEMENTED_MASK includes OP_SPREAD_ARGS, this crashes: - testSpreadArguments(Object.class, 0, 2); - } - @Test //@Ignore("IllArgEx failure in call to ToGeneric.make") - public void testFail_3() throws Throwable { - // ToGeneric.: UnsupportedOperationException: NYI: primitive parameters must follow references; entryType = (int,java.lang.Object)java.lang.Object - testSpreadArguments(int.class, 1, 2); - } - @Test //@Ignore("IllArgEx failure in call to ToGeneric.make") - public void testFail_4() throws Throwable { - // ToGeneric.: UnsupportedOperationException: NYI: primitive parameters must follow references; entryType = (int,java.lang.Object)java.lang.Object - testCollectArguments(int.class, 1, 2); - } - @Test //@Ignore("cannot collect leading primitive types") - public void testFail_5() throws Throwable { - // ToGeneric.: UnsupportedOperationException: NYI: primitive parameters must follow references; entryType = (int,java.lang.Object)java.lang.Object - testInvokers(MethodType.genericMethodType(2).changeParameterType(0, int.class)); - } - @Test //@Ignore("should not insert arguments beyond MethodHandlePushLimit") - public void testFail_6() throws Throwable { - // ValueConversions.varargsArray: UnsupportedOperationException: NYI: cannot form a varargs array of length 13 - testInsertArguments(0, 0, MAX_ARG_INCREASE+10); - } - @Test //@Ignore("permuteArguments has trouble with double slots") - public void testFail_7() throws Throwable { - testPermuteArguments(new Object[]{10, 200L}, - new Class[]{Integer.class, long.class}, - new int[]{1,0}); - testPermuteArguments(new Object[]{10, 200L, 5000L}, - new Class[]{Integer.class, long.class, long.class}, - new int[]{2,0,1}); //rot - testPermuteArguments(new Object[]{10, 200L, 5000L}, - new Class[]{Integer.class, long.class, long.class}, - new int[]{1,2,0}); //rot - testPermuteArguments(new Object[]{10, 200L, 5000L}, - new Class[]{Integer.class, long.class, long.class}, - new int[]{2,1,0}); //swap - testPermuteArguments(new Object[]{10, 200L, 5000L}, - new Class[]{Integer.class, long.class, long.class}, - new int[]{0,1,2,2}); //dup - testPermuteArguments(new Object[]{10, 200L, 5000L}, - new Class[]{Integer.class, long.class, long.class}, - new int[]{2,0,1,2}); - testPermuteArguments(new Object[]{10, 200L, 5000L}, - new Class[]{Integer.class, long.class, long.class}, - new int[]{2,2,0,1}); - //testPermuteArguments(4, Integer.class, 2, long.class, 6); - } static final int MAX_ARG_INCREASE = 3; public MethodHandlesTest() { @@ -180,7 +130,7 @@ static Object logEntry(String name, Object... args) { return Arrays.asList(name, Arrays.asList(args)); } - static Object called(String name, Object... args) { + public static Object called(String name, Object... args) { Object entry = logEntry(name, args); calledLog.add(entry); return entry; @@ -280,6 +230,8 @@ { param = c; break; } } } + if (param.isInterface() && param.isAssignableFrom(List.class)) + return Arrays.asList("#"+nextArg()); if (param.isInterface() || param.isAssignableFrom(String.class)) return "#"+nextArg(); else @@ -399,6 +351,8 @@ static final Lookup PRIVATE = MethodHandles.lookup(); // This lookup is good for package-private members but not private ones. static final Lookup PACKAGE = PackageSibling.lookup(); + // This lookup is good for public members and protected members of PubExample + static final Lookup SUBCLASS = RemoteExample.lookup(); // This lookup is good only for public members. static final Lookup PUBLIC = MethodHandles.publicLookup(); @@ -412,9 +366,11 @@ @Override public String toString() { return name; } public void v0() { called("v0", this); } + protected void pro_v0() { called("pro_v0", this); } void pkg_v0() { called("pkg_v0", this); } private void pri_v0() { called("pri_v0", this); } public static void s0() { called("s0"); } + protected static void pro_s0() { called("pro_s0"); } static void pkg_s0() { called("pkg_s0"); } private static void pri_s0() { called("pri_s0"); } @@ -434,12 +390,21 @@ // for testing findConstructor: public Example(String x, int y) { this.name = x+y; called("Example.", x, y); } public Example(int x, String y) { this.name = x+y; called("Example.", x, y); } + public Example(int x, int y) { this.name = x+""+y; called("Example.", x, y); } + public Example(int x, long y) { this.name = x+""+y; called("Example.", x, y); } + public Example(int x, float y) { this.name = x+""+y; called("Example.", x, y); } + public Example(int x, double y) { this.name = x+""+y; called("Example.", x, y); } + public Example(int x, int y, int z) { this.name = x+""+y+""+z; called("Example.", x, y, z); } + public Example(int x, int y, int z, int a) { this.name = x+""+y+""+z+""+a; called("Example.", x, y, z, a); } static final Lookup EXAMPLE = MethodHandles.lookup(); // for testing findSpecial } static final Lookup EXAMPLE = Example.EXAMPLE; public static class PubExample extends Example { - public PubExample() { super("PubExample#"+nextArg()); } + public PubExample() { this("PubExample"); } + protected PubExample(String prefix) { super(prefix+"#"+nextArg()); } + protected void pro_v0() { called("Pub/pro_v0", this); } + protected static void pro_s0() { called("Pub/pro_s0"); } } static class SubExample extends Example { @Override public void v0() { called("Sub/v0", this); } @@ -457,12 +422,14 @@ @Override public String toString() { return name; } } } + static interface SubIntExample extends IntExample { } static final Object[][][] ACCESS_CASES = { - { { false, PUBLIC }, { false, PACKAGE }, { false, PRIVATE }, { false, EXAMPLE } }, //[0]: all false - { { false, PUBLIC }, { false, PACKAGE }, { true, PRIVATE }, { true, EXAMPLE } }, //[1]: only PRIVATE - { { false, PUBLIC }, { true, PACKAGE }, { true, PRIVATE }, { true, EXAMPLE } }, //[2]: PUBLIC false - { { true, PUBLIC }, { true, PACKAGE }, { true, PRIVATE }, { true, EXAMPLE } }, //[3]: all true + { { false, PUBLIC }, { false, SUBCLASS }, { false, PACKAGE }, { false, PRIVATE }, { false, EXAMPLE } }, //[0]: all false + { { false, PUBLIC }, { false, SUBCLASS }, { false, PACKAGE }, { true, PRIVATE }, { true, EXAMPLE } }, //[1]: only PRIVATE + { { false, PUBLIC }, { false, SUBCLASS }, { true, PACKAGE }, { true, PRIVATE }, { true, EXAMPLE } }, //[2]: PUBLIC false + { { false, PUBLIC }, { true, SUBCLASS }, { true, PACKAGE }, { true, PRIVATE }, { true, EXAMPLE } }, //[3]: subclass OK + { { true, PUBLIC }, { true, SUBCLASS }, { true, PACKAGE }, { true, PRIVATE }, { true, EXAMPLE } }, //[4]: all true }; static Object[][] accessCases(Class defc, String name, boolean isSpecial) { @@ -471,11 +438,13 @@ cases = ACCESS_CASES[1]; // PRIVATE only } else if (name.contains("pkg_") || !Modifier.isPublic(defc.getModifiers())) { cases = ACCESS_CASES[2]; // not PUBLIC + } else if (name.contains("pro_")) { + cases = ACCESS_CASES[3]; // PUBLIC class, protected member } else { - assertTrue(name.indexOf('_') < 0); + assertTrue(name.indexOf('_') < 0 || name.contains("fin_")); boolean pubc = Modifier.isPublic(defc.getModifiers()); if (pubc) - cases = ACCESS_CASES[3]; // all access levels + cases = ACCESS_CASES[4]; // all access levels else cases = ACCESS_CASES[2]; // PACKAGE but not PUBLIC } @@ -487,6 +456,13 @@ return accessCases(defc, name, false); } + static Lookup maybeMoveIn(Lookup lookup, Class defc) { + if (lookup == PUBLIC || lookup == SUBCLASS || lookup == PACKAGE) + // external views stay external + return lookup; + return lookup.in(defc); + } + @Test public void testFindStatic() throws Throwable { if (CAN_SKIP_WORKING) return; @@ -495,6 +471,8 @@ testFindStatic(Example.class, void.class, "s0"); testFindStatic(Example.class, void.class, "pkg_s0"); testFindStatic(Example.class, void.class, "pri_s0"); + testFindStatic(Example.class, void.class, "pro_s0"); + testFindStatic(PubExample.class, void.class, "Pub/pro_s0"); testFindStatic(Example.class, Object.class, "s1", Object.class); testFindStatic(Example.class, Object.class, "s2", int.class); @@ -505,6 +483,7 @@ testFindStatic(Example.class, Object.class, "s7", float.class, double.class); testFindStatic(false, PRIVATE, Example.class, void.class, "bogus"); + testFindStatic(false, PRIVATE, Example.class, void.class, "v0"); } void testFindStatic(Class defc, Class ret, String name, Class... params) throws Throwable { @@ -517,14 +496,16 @@ } void testFindStatic(boolean positive, Lookup lookup, Class defc, Class ret, String name, Class... params) throws Throwable { countTest(positive); + String methodName = name.substring(1 + name.indexOf('/')); // foo/bar => foo MethodType type = MethodType.methodType(ret, params); MethodHandle target = null; Exception noAccess = null; try { if (verbosity >= 4) System.out.println("lookup via "+lookup+" of "+defc+" "+name+type); - target = lookup.in(defc).findStatic(defc, name, type); + target = maybeMoveIn(lookup, defc).findStatic(defc, methodName, type); } catch (ReflectiveOperationException ex) { noAccess = ex; + if (verbosity >= 5) ex.printStackTrace(System.out); if (name.contains("bogus")) assertTrue(noAccess instanceof NoSuchMethodException); else @@ -537,7 +518,7 @@ assertEquals(positive ? "positive test" : "negative test erroneously passed", positive, target != null); if (!positive) return; // negative test failed as expected assertEquals(type, target.type()); - assertNameStringContains(target, name); + assertNameStringContains(target, methodName); Object[] args = randomArgs(params); printCalled(target, name, args); target.invokeWithArguments(args); @@ -571,7 +552,12 @@ testFindVirtual(Example.class, Object.class, "v2", Object.class, int.class); testFindVirtual(Example.class, Object.class, "v2", int.class, Object.class); testFindVirtual(Example.class, Object.class, "v2", int.class, int.class); + testFindVirtual(Example.class, void.class, "pro_v0"); + testFindVirtual(PubExample.class, void.class, "Pub/pro_v0"); + testFindVirtual(false, PRIVATE, Example.class, Example.class, void.class, "bogus"); + testFindVirtual(false, PRIVATE, Example.class, Example.class, void.class, "s0"); + // test dispatch testFindVirtual(SubExample.class, SubExample.class, void.class, "Sub/v0"); testFindVirtual(SubExample.class, Example.class, void.class, "Sub/v0"); @@ -602,9 +588,10 @@ Exception noAccess = null; try { if (verbosity >= 4) System.out.println("lookup via "+lookup+" of "+defc+" "+name+type); - target = lookup.in(defc).findVirtual(defc, methodName, type); + target = maybeMoveIn(lookup, defc).findVirtual(defc, methodName, type); } catch (ReflectiveOperationException ex) { noAccess = ex; + if (verbosity >= 5) ex.printStackTrace(System.out); if (name.contains("bogus")) assertTrue(noAccess instanceof NoSuchMethodException); else @@ -616,12 +603,20 @@ if (positive && noAccess != null) throw noAccess; assertEquals(positive ? "positive test" : "negative test erroneously passed", positive, target != null); if (!positive) return; // negative test failed as expected - Class[] paramsWithSelf = cat(array(Class[].class, (Class)defc), params); + Class selfc = defc; + // predict receiver type narrowing: + if (lookup == SUBCLASS && + name.contains("pro_") && + selfc.isAssignableFrom(lookup.lookupClass())) { + selfc = lookup.lookupClass(); + if (name.startsWith("Pub/")) name = "Rem/"+name.substring(4); + } + Class[] paramsWithSelf = cat(array(Class[].class, (Class)selfc), params); MethodType typeWithSelf = MethodType.methodType(ret, paramsWithSelf); assertEquals(typeWithSelf, target.type()); assertNameStringContains(target, methodName); Object[] argsWithSelf = randomArgs(paramsWithSelf); - if (rcvc != defc) argsWithSelf[0] = randomArg(rcvc); + if (selfc.isAssignableFrom(rcvc) && rcvc != selfc) argsWithSelf[0] = randomArg(rcvc); printCalled(target, name, argsWithSelf); target.invokeWithArguments(argsWithSelf); assertCalled(name, argsWithSelf); @@ -635,6 +630,7 @@ startTest("findSpecial"); testFindSpecial(SubExample.class, Example.class, void.class, "v0"); testFindSpecial(SubExample.class, Example.class, void.class, "pkg_v0"); + testFindSpecial(RemoteExample.class, PubExample.class, void.class, "Pub/pro_v0"); // Do some negative testing: testFindSpecial(false, EXAMPLE, SubExample.class, Example.class, void.class, "bogus"); testFindSpecial(false, PRIVATE, SubExample.class, Example.class, void.class, "bogus"); @@ -647,23 +643,34 @@ void testFindSpecial(Class specialCaller, Class defc, Class ret, String name, Class... params) throws Throwable { - testFindSpecial(true, EXAMPLE, specialCaller, defc, ret, name, params); - testFindSpecial(true, PRIVATE, specialCaller, defc, ret, name, params); - testFindSpecial(false, PACKAGE, specialCaller, defc, ret, name, params); - testFindSpecial(false, PUBLIC, specialCaller, defc, ret, name, params); + if (specialCaller == RemoteExample.class) { + testFindSpecial(false, EXAMPLE, specialCaller, defc, ret, name, params); + testFindSpecial(false, PRIVATE, specialCaller, defc, ret, name, params); + testFindSpecial(false, PACKAGE, specialCaller, defc, ret, name, params); + testFindSpecial(true, SUBCLASS, specialCaller, defc, ret, name, params); + testFindSpecial(false, PUBLIC, specialCaller, defc, ret, name, params); + return; + } + testFindSpecial(true, EXAMPLE, specialCaller, defc, ret, name, params); + testFindSpecial(true, PRIVATE, specialCaller, defc, ret, name, params); + testFindSpecial(false, PACKAGE, specialCaller, defc, ret, name, params); + testFindSpecial(false, SUBCLASS, specialCaller, defc, ret, name, params); + testFindSpecial(false, PUBLIC, specialCaller, defc, ret, name, params); } void testFindSpecial(boolean positive, Lookup lookup, Class specialCaller, Class defc, Class ret, String name, Class... params) throws Throwable { countTest(positive); + String methodName = name.substring(1 + name.indexOf('/')); // foo/bar => foo MethodType type = MethodType.methodType(ret, params); MethodHandle target = null; Exception noAccess = null; try { if (verbosity >= 4) System.out.println("lookup via "+lookup+" of "+defc+" "+name+type); - if (verbosity >= 5) System.out.println(" lookup => "+lookup.in(specialCaller)); - target = lookup.in(specialCaller).findSpecial(defc, name, type, specialCaller); + if (verbosity >= 5) System.out.println(" lookup => "+maybeMoveIn(lookup, specialCaller)); + target = maybeMoveIn(lookup, specialCaller).findSpecial(defc, methodName, type, specialCaller); } catch (ReflectiveOperationException ex) { noAccess = ex; + if (verbosity >= 5) ex.printStackTrace(System.out); if (name.contains("bogus")) assertTrue(noAccess instanceof NoSuchMethodException); else @@ -680,7 +687,7 @@ assertEquals(type, target.type().dropParameterTypes(0,1)); Class[] paramsWithSelf = cat(array(Class[].class, (Class)specialCaller), params); MethodType typeWithSelf = MethodType.methodType(ret, paramsWithSelf); - assertNameStringContains(target, name); + assertNameStringContains(target, methodName); Object[] args = randomArgs(paramsWithSelf); printCalled(target, name, args); target.invokeWithArguments(args); @@ -693,7 +700,13 @@ startTest("findConstructor"); testFindConstructor(true, EXAMPLE, Example.class); testFindConstructor(true, EXAMPLE, Example.class, int.class); + testFindConstructor(true, EXAMPLE, Example.class, int.class, int.class); + testFindConstructor(true, EXAMPLE, Example.class, int.class, long.class); + testFindConstructor(true, EXAMPLE, Example.class, int.class, float.class); + testFindConstructor(true, EXAMPLE, Example.class, int.class, double.class); testFindConstructor(true, EXAMPLE, Example.class, String.class); + testFindConstructor(true, EXAMPLE, Example.class, int.class, int.class, int.class); + testFindConstructor(true, EXAMPLE, Example.class, int.class, int.class, int.class, int.class); } void testFindConstructor(boolean positive, Lookup lookup, Class defc, Class... params) throws Throwable { @@ -757,9 +770,10 @@ Exception noAccess = null; try { if (verbosity >= 4) System.out.println("lookup via "+lookup+" of "+defc+" "+name+type); - target = lookup.in(defc).bind(receiver, methodName, type); + target = maybeMoveIn(lookup, defc).bind(receiver, methodName, type); } catch (ReflectiveOperationException ex) { noAccess = ex; + if (verbosity >= 5) ex.printStackTrace(System.out); if (name.contains("bogus")) assertTrue(noAccess instanceof NoSuchMethodException); else @@ -786,6 +800,7 @@ if (CAN_SKIP_WORKING) return; startTest("unreflect"); testUnreflect(Example.class, true, void.class, "s0"); + testUnreflect(Example.class, true, void.class, "pro_s0"); testUnreflect(Example.class, true, void.class, "pkg_s0"); testUnreflect(Example.class, true, void.class, "pri_s0"); @@ -804,6 +819,9 @@ testUnreflect(Example.class, false, Object.class, "v2", Object.class, int.class); testUnreflect(Example.class, false, Object.class, "v2", int.class, Object.class); testUnreflect(Example.class, false, Object.class, "v2", int.class, int.class); + + // Test a public final member in another package: + testUnreflect(RemoteExample.class, false, void.class, "Rem/fin_v0"); } void testUnreflect(Class defc, boolean isStatic, Class ret, String name, Class... params) throws Throwable { @@ -820,8 +838,9 @@ boolean positive, Lookup lookup, Class defc, Class rcvc, Class ret, String name, Class... params) throws Throwable { countTest(positive); + String methodName = name.substring(1 + name.indexOf('/')); // foo/bar => foo MethodType type = MethodType.methodType(ret, params); - Method rmethod = defc.getDeclaredMethod(name, params); + Method rmethod = defc.getDeclaredMethod(methodName, params); MethodHandle target = null; Exception noAccess = null; boolean isStatic = (rcvc == null); @@ -829,11 +848,12 @@ try { if (verbosity >= 4) System.out.println("lookup via "+lookup+" of "+defc+" "+name+type); if (isSpecial) - target = lookup.in(specialCaller).unreflectSpecial(rmethod, specialCaller); + target = maybeMoveIn(lookup, specialCaller).unreflectSpecial(rmethod, specialCaller); else - target = lookup.in(defc).unreflect(rmethod); + target = maybeMoveIn(lookup, defc).unreflect(rmethod); } catch (ReflectiveOperationException ex) { noAccess = ex; + if (verbosity >= 5) ex.printStackTrace(System.out); if (name.contains("bogus")) assertTrue(noAccess instanceof NoSuchMethodException); else @@ -960,7 +980,7 @@ } } - static final int TEST_UNREFLECT = 1, TEST_FIND_FIELD = 2, TEST_FIND_STATIC = 3, TEST_SETTER = 0x10; + static final int TEST_UNREFLECT = 1, TEST_FIND_FIELD = 2, TEST_FIND_STATIC = 3, TEST_SETTER = 0x10, TEST_BOUND = 0x20, TEST_NPE = 0x40; static boolean testModeMatches(int testMode, boolean isStatic) { switch (testMode) { case TEST_FIND_STATIC: return isStatic; @@ -972,16 +992,20 @@ @Test public void testUnreflectGetter() throws Throwable { + if (CAN_SKIP_WORKING) return; startTest("unreflectGetter"); testGetter(TEST_UNREFLECT); } @Test public void testFindGetter() throws Throwable { + if (CAN_SKIP_WORKING) return; startTest("findGetter"); testGetter(TEST_FIND_FIELD); + testGetter(TEST_FIND_FIELD | TEST_BOUND); } @Test public void testFindStaticGetter() throws Throwable { + if (CAN_SKIP_WORKING) return; startTest("findStaticGetter"); testGetter(TEST_FIND_STATIC); } @@ -990,6 +1014,8 @@ for (Object[] c : HasFields.CASES) { boolean positive = (c[1] != Error.class); testGetter(positive, lookup, c[0], c[1], testMode); + if (positive) + testGetter(positive, lookup, c[0], c[1], testMode | TEST_NPE); } testGetter(true, lookup, new Object[]{ true, System.class, "out", java.io.PrintStream.class }, @@ -1005,12 +1031,15 @@ testAccessor(positive, lookup, fieldRef, value, testMode); } - public void testAccessor(boolean positive, MethodHandles.Lookup lookup, + public void testAccessor(boolean positive0, MethodHandles.Lookup lookup, Object fieldRef, Object value, int testMode0) throws Throwable { if (verbosity >= 4) - System.out.println("testAccessor"+Arrays.asList(positive, lookup, fieldRef, value, testMode0)); + System.out.println("testAccessor"+Arrays.deepToString(new Object[]{positive0, lookup, fieldRef, value, testMode0})); boolean isGetter = ((testMode0 & TEST_SETTER) == 0); - int testMode = testMode0 & ~TEST_SETTER; + boolean doBound = ((testMode0 & TEST_BOUND) != 0); + boolean testNPE = ((testMode0 & TEST_NPE) != 0); + int testMode = testMode0 & ~(TEST_SETTER | TEST_BOUND | TEST_NPE); + boolean positive = positive0 && !testNPE; boolean isStatic; Class fclass; String fname; @@ -1035,6 +1064,7 @@ } if (!testModeMatches(testMode, isStatic)) return; if (f == null && testMode == TEST_UNREFLECT) return; + if (testNPE && isStatic) return; countTest(positive); MethodType expType; if (isGetter) @@ -1045,7 +1075,7 @@ Exception noAccess = null; MethodHandle mh; try { - switch (testMode0) { + switch (testMode0 & ~(TEST_BOUND | TEST_NPE)) { case TEST_UNREFLECT: mh = lookup.unreflectGetter(f); break; case TEST_FIND_FIELD: mh = lookup.findGetter(fclass, fname, ftype); break; case TEST_FIND_STATIC: mh = lookup.findStaticGetter(fclass, fname, ftype); break; @@ -1061,6 +1091,7 @@ } catch (ReflectiveOperationException ex) { mh = null; noAccess = ex; + if (verbosity >= 5) ex.printStackTrace(System.out); if (fname.contains("bogus")) assertTrue(noAccess instanceof NoSuchFieldException); else @@ -1070,15 +1101,19 @@ System.out.println("find"+(isStatic?"Static":"")+(isGetter?"Getter":"Setter")+" "+fclass.getName()+"."+fname+"/"+ftype +" => "+mh +(noAccess == null ? "" : " !! "+noAccess)); - if (positive && noAccess != null) throw new RuntimeException(noAccess); - assertEquals(positive ? "positive test" : "negative test erroneously passed", positive, mh != null); - if (!positive) return; // negative test failed as expected + if (positive && !testNPE && noAccess != null) throw new RuntimeException(noAccess); + assertEquals(positive0 ? "positive test" : "negative test erroneously passed", positive0, mh != null); + if (!positive && !testNPE) return; // negative access test failed as expected assertEquals((isStatic ? 0 : 1)+(isGetter ? 0 : 1), mh.type().parameterCount()); assertSame(mh.type(), expType); - assertNameStringContains(mh, fname); + //assertNameStringContains(mh, fname); // This does not hold anymore with LFs HasFields fields = new HasFields(); + HasFields fieldsForMH = fields; + if (testNPE) fieldsForMH = null; // perturb MH argument to elicit expected error + if (doBound) + mh = mh.bindTo(fieldsForMH); Object sawValue; Class vtype = ftype; if (ftype != int.class) vtype = Object.class; @@ -1094,19 +1129,28 @@ if (f != null && f.getDeclaringClass() == HasFields.class) { assertEquals(f.get(fields), value); // clean to start with } + Throwable caughtEx = null; if (isGetter) { Object expValue = value; for (int i = 0; i <= 1; i++) { - if (isStatic) { - if (ftype == int.class) - sawValue = (int) mh.invokeExact(); // do these exactly - else - sawValue = mh.invokeExact(); - } else { - if (ftype == int.class) - sawValue = (int) mh.invokeExact((Object) fields); - else - sawValue = mh.invokeExact((Object) fields); + sawValue = null; // make DA rules happy under try/catch + try { + if (isStatic || doBound) { + if (ftype == int.class) + sawValue = (int) mh.invokeExact(); // do these exactly + else + sawValue = mh.invokeExact(); + } else { + if (ftype == int.class) + sawValue = (int) mh.invokeExact((Object) fieldsForMH); + else + sawValue = mh.invokeExact((Object) fieldsForMH); + } + } catch (RuntimeException ex) { + if (ex instanceof NullPointerException && testNPE) { + caughtEx = ex; + break; + } } assertEquals(sawValue, expValue); if (f != null && f.getDeclaringClass() == HasFields.class @@ -1121,16 +1165,23 @@ } else { for (int i = 0; i <= 1; i++) { Object putValue = randomArg(ftype); - if (isStatic) { - if (ftype == int.class) - mh.invokeExact((int)putValue); // do these exactly - else - mh.invokeExact(putValue); - } else { - if (ftype == int.class) - mh.invokeExact((Object) fields, (int)putValue); - else - mh.invokeExact((Object) fields, putValue); + try { + if (isStatic || doBound) { + if (ftype == int.class) + mh.invokeExact((int)putValue); // do these exactly + else + mh.invokeExact(putValue); + } else { + if (ftype == int.class) + mh.invokeExact((Object) fieldsForMH, (int)putValue); + else + mh.invokeExact((Object) fieldsForMH, putValue); + } + } catch (RuntimeException ex) { + if (ex instanceof NullPointerException && testNPE) { + caughtEx = ex; + break; + } } if (f != null && f.getDeclaringClass() == HasFields.class) { assertEquals(f.get(fields), putValue); @@ -1140,21 +1191,33 @@ if (f != null && f.getDeclaringClass() == HasFields.class) { f.set(fields, value); // put it back } + if (testNPE) { + if (caughtEx == null || !(caughtEx instanceof NullPointerException)) + throw new RuntimeException("failed to catch NPE exception"+(caughtEx == null ? " (caughtEx=null)" : ""), caughtEx); + caughtEx = null; // nullify expected exception + } + if (caughtEx != null) { + throw new RuntimeException("unexpected exception", caughtEx); + } } @Test public void testUnreflectSetter() throws Throwable { + if (CAN_SKIP_WORKING) return; startTest("unreflectSetter"); testSetter(TEST_UNREFLECT); } @Test public void testFindSetter() throws Throwable { + if (CAN_SKIP_WORKING) return; startTest("findSetter"); testSetter(TEST_FIND_FIELD); + testSetter(TEST_FIND_FIELD | TEST_BOUND); } @Test public void testFindStaticSetter() throws Throwable { + if (CAN_SKIP_WORKING) return; startTest("findStaticSetter"); testSetter(TEST_FIND_STATIC); } @@ -1164,6 +1227,8 @@ for (Object[] c : HasFields.CASES) { boolean positive = (c[1] != Error.class); testSetter(positive, lookup, c[0], c[1], testMode); + if (positive) + testSetter(positive, lookup, c[0], c[1], testMode | TEST_NPE); } for (int isStaticN = 0; isStaticN <= 1; isStaticN++) { testSetter(false, lookup, @@ -1178,34 +1243,84 @@ @Test public void testArrayElementGetter() throws Throwable { + if (CAN_SKIP_WORKING) return; startTest("arrayElementGetter"); testArrayElementGetterSetter(false); } @Test public void testArrayElementSetter() throws Throwable { + if (CAN_SKIP_WORKING) return; startTest("arrayElementSetter"); testArrayElementGetterSetter(true); } + private static final int TEST_ARRAY_NONE = 0, TEST_ARRAY_NPE = 1, TEST_ARRAY_OOB = 2, TEST_ARRAY_ASE = 3; + public void testArrayElementGetterSetter(boolean testSetter) throws Throwable { - testArrayElementGetterSetter(new Object[10], testSetter); - testArrayElementGetterSetter(new String[10], testSetter); - testArrayElementGetterSetter(new boolean[10], testSetter); - testArrayElementGetterSetter(new byte[10], testSetter); - testArrayElementGetterSetter(new char[10], testSetter); - testArrayElementGetterSetter(new short[10], testSetter); - testArrayElementGetterSetter(new int[10], testSetter); - testArrayElementGetterSetter(new float[10], testSetter); - testArrayElementGetterSetter(new long[10], testSetter); - testArrayElementGetterSetter(new double[10], testSetter); + testArrayElementGetterSetter(testSetter, TEST_ARRAY_NONE); + } + + @Test + public void testArrayElementErrors() throws Throwable { + if (CAN_SKIP_WORKING) return; + startTest("arrayElementErrors"); + testArrayElementGetterSetter(false, TEST_ARRAY_NPE); + testArrayElementGetterSetter(true, TEST_ARRAY_NPE); + testArrayElementGetterSetter(false, TEST_ARRAY_OOB); + testArrayElementGetterSetter(true, TEST_ARRAY_OOB); + testArrayElementGetterSetter(new Object[10], true, TEST_ARRAY_ASE); + testArrayElementGetterSetter(new Example[10], true, TEST_ARRAY_ASE); + testArrayElementGetterSetter(new IntExample[10], true, TEST_ARRAY_ASE); } - public void testArrayElementGetterSetter(Object array, boolean testSetter) throws Throwable { - countTest(true); - if (verbosity > 2) System.out.println("array type = "+array.getClass().getComponentType().getName()+"["+Array.getLength(array)+"]"); + public void testArrayElementGetterSetter(boolean testSetter, int negTest) throws Throwable { + testArrayElementGetterSetter(new String[10], testSetter, negTest); + testArrayElementGetterSetter(new Iterable[10], testSetter, negTest); + testArrayElementGetterSetter(new Example[10], testSetter, negTest); + testArrayElementGetterSetter(new IntExample[10], testSetter, negTest); + testArrayElementGetterSetter(new Object[10], testSetter, negTest); + testArrayElementGetterSetter(new boolean[10], testSetter, negTest); + testArrayElementGetterSetter(new byte[10], testSetter, negTest); + testArrayElementGetterSetter(new char[10], testSetter, negTest); + testArrayElementGetterSetter(new short[10], testSetter, negTest); + testArrayElementGetterSetter(new int[10], testSetter, negTest); + testArrayElementGetterSetter(new float[10], testSetter, negTest); + testArrayElementGetterSetter(new long[10], testSetter, negTest); + testArrayElementGetterSetter(new double[10], testSetter, negTest); + } + + public void testArrayElementGetterSetter(Object array, boolean testSetter, int negTest) throws Throwable { + boolean positive = (negTest == TEST_ARRAY_NONE); + int length = java.lang.reflect.Array.getLength(array); Class arrayType = array.getClass(); Class elemType = arrayType.getComponentType(); + Object arrayToMH = array; + // this stanza allows negative tests to make argument perturbations: + switch (negTest) { + case TEST_ARRAY_NPE: + arrayToMH = null; + break; + case TEST_ARRAY_OOB: + assert(length > 0); + arrayToMH = java.lang.reflect.Array.newInstance(elemType, 0); + break; + case TEST_ARRAY_ASE: + assert(testSetter && !elemType.isPrimitive()); + if (elemType == Object.class) + arrayToMH = new StringBuffer[length]; // very random subclass of Object! + else if (elemType == Example.class) + arrayToMH = new SubExample[length]; + else if (elemType == IntExample.class) + arrayToMH = new SubIntExample[length]; + else + return; // can't make an ArrayStoreException test + assert(arrayType.isInstance(arrayToMH)) + : Arrays.asList(arrayType, arrayToMH.getClass(), testSetter, negTest); + break; + } + countTest(positive); + if (verbosity > 2) System.out.println("array type = "+array.getClass().getComponentType().getName()+"["+length+"]"+(positive ? "" : " negative test #"+negTest+" using "+Arrays.deepToString(new Object[]{arrayToMH}))); MethodType expType = !testSetter ? MethodType.methodType(elemType, arrayType, int.class) : MethodType.methodType(void.class, arrayType, int.class, elemType); @@ -1214,25 +1329,29 @@ : MethodHandles.arrayElementSetter(arrayType); assertSame(mh.type(), expType); if (elemType != int.class && elemType != boolean.class) { - // FIXME: change Integer.class and (Integer) below to int.class and (int) below. - MethodType gtype = mh.type().generic().changeParameterType(1, Integer.class); + MethodType gtype = mh.type().generic().changeParameterType(1, int.class); if (testSetter) gtype = gtype.changeReturnType(void.class); mh = mh.asType(gtype); } Object sawValue, expValue; List model = array2list(array); - int length = Array.getLength(array); + Throwable caughtEx = null; for (int i = 0; i < length; i++) { // update array element Object random = randomArg(elemType); model.set(i, random); if (testSetter) { - if (elemType == int.class) - mh.invokeExact((int[]) array, i, (int)random); - else if (elemType == boolean.class) - mh.invokeExact((boolean[]) array, i, (boolean)random); - else - mh.invokeExact(array, (Integer)i, random); + try { + if (elemType == int.class) + mh.invokeExact((int[]) arrayToMH, i, (int)random); + else if (elemType == boolean.class) + mh.invokeExact((boolean[]) arrayToMH, i, (boolean)random); + else + mh.invokeExact(arrayToMH, i, random); + } catch (RuntimeException ex) { + caughtEx = ex; + break; + } assertEquals(model, array2list(array)); } else { Array.set(array, i, random); @@ -1247,16 +1366,39 @@ sawValue = Array.get(array, i); if (!testSetter) { expValue = sawValue; - if (elemType == int.class) - sawValue = (int) mh.invokeExact((int[]) array, i); - else if (elemType == boolean.class) - sawValue = (boolean) mh.invokeExact((boolean[]) array, i); - else - sawValue = mh.invokeExact(array, (Integer)i); + try { + if (elemType == int.class) + sawValue = (int) mh.invokeExact((int[]) arrayToMH, i); + else if (elemType == boolean.class) + sawValue = (boolean) mh.invokeExact((boolean[]) arrayToMH, i); + else + sawValue = mh.invokeExact(arrayToMH, i); + } catch (RuntimeException ex) { + caughtEx = ex; + break; + } assertEquals(sawValue, expValue); assertEquals(model, array2list(array)); } } + if (!positive) { + if (caughtEx == null) + throw new RuntimeException("failed to catch exception for negTest="+negTest); + // test the kind of exception + Class reqType = null; + switch (negTest) { + case TEST_ARRAY_ASE: reqType = ArrayStoreException.class; break; + case TEST_ARRAY_OOB: reqType = ArrayIndexOutOfBoundsException.class; break; + case TEST_ARRAY_NPE: reqType = NullPointerException.class; break; + default: assert(false); + } + if (reqType.isInstance(caughtEx)) { + caughtEx = null; // nullify expected exception + } + } + if (caughtEx != null) { + throw new RuntimeException("unexpected exception", caughtEx); + } } List array2list(Object array) { @@ -1363,6 +1505,8 @@ @Test public void testVarargsCollector() throws Throwable { + if (CAN_SKIP_WORKING) return; + startTest("varargsCollector"); MethodHandle vac0 = PRIVATE.findStatic(MethodHandlesTest.class, "called", MethodType.methodType(Object.class, String.class, Object[].class)); vac0 = vac0.bindTo("vac"); @@ -1375,7 +1519,7 @@ } } - @Test + @Test // SLOW public void testPermuteArguments() throws Throwable { if (CAN_SKIP_WORKING) return; startTest("permuteArguments"); @@ -1514,7 +1658,7 @@ } - @Test + @Test // SLOW public void testSpreadArguments() throws Throwable { if (CAN_SKIP_WORKING) return; startTest("spreadArguments"); @@ -1522,7 +1666,7 @@ if (verbosity >= 3) System.out.println("spreadArguments "+argType); for (int nargs = 0; nargs < 50; nargs++) { - if (CAN_TEST_LIGHTLY && nargs > 7) break; + if (CAN_TEST_LIGHTLY && nargs > 11) break; for (int pos = 0; pos <= nargs; pos++) { if (CAN_TEST_LIGHTLY && pos > 2 && pos < nargs-2) continue; if (nargs > 10 && pos > 4 && pos < nargs-4 && pos % 10 != 3) @@ -1608,7 +1752,7 @@ } } - @Test + @Test // SLOW public void testCollectArguments() throws Throwable { if (CAN_SKIP_WORKING) return; startTest("collectArguments"); @@ -1616,7 +1760,7 @@ if (verbosity >= 3) System.out.println("collectArguments "+argType); for (int nargs = 0; nargs < 50; nargs++) { - if (CAN_TEST_LIGHTLY && nargs > 7) break; + if (CAN_TEST_LIGHTLY && nargs > 11) break; for (int pos = 0; pos <= nargs; pos++) { if (CAN_TEST_LIGHTLY && pos > 2 && pos < nargs-2) continue; if (nargs > 10 && pos > 4 && pos < nargs-4 && pos % 10 != 3) @@ -1650,12 +1794,12 @@ assertArrayEquals(collectedArgs, returnValue); } - @Test + @Test // SLOW public void testInsertArguments() throws Throwable { if (CAN_SKIP_WORKING) return; startTest("insertArguments"); for (int nargs = 0; nargs < 50; nargs++) { - if (CAN_TEST_LIGHTLY && nargs > 7) break; + if (CAN_TEST_LIGHTLY && nargs > 11) break; for (int ins = 0; ins <= nargs; ins++) { if (nargs > 10 && ins > 4 && ins < nargs-4 && ins % 10 != 3) continue; @@ -1677,7 +1821,7 @@ List argsToPass = new ArrayList<>(resList); List argsToInsert = argsToPass.subList(pos, pos + ins); if (verbosity >= 3) - System.out.println("insert: "+argsToInsert+" into "+target); + System.out.println("insert: "+argsToInsert+" @"+pos+" into "+target); @SuppressWarnings("cast") // cast to spread Object... is helpful MethodHandle target2 = MethodHandles.insertArguments(target, pos, (Object[]/*...*/) argsToInsert.toArray()); @@ -1840,7 +1984,7 @@ assertEquals(resList, res2List); } - @Test + @Test // SLOW public void testInvokers() throws Throwable { if (CAN_SKIP_WORKING) return; startTest("exactInvoker, genericInvoker, varargsInvoker, dynamicInvoker"); @@ -2109,7 +2253,7 @@ if (CAN_SKIP_WORKING) return; startTest("catchException"); for (int nargs = 0; nargs < 40; nargs++) { - if (CAN_TEST_LIGHTLY && nargs > 7) break; + if (CAN_TEST_LIGHTLY && nargs > 11) break; for (int throwMode = 0; throwMode < THROW_MODE_LIMIT; throwMode++) { testCatchException(int.class, new ClassCastException("testing"), throwMode, nargs); if (CAN_TEST_LIGHTLY && nargs > 3) continue; @@ -2237,8 +2381,10 @@ assertSame(thrown, caught); } - @Test + //@Test public void testInterfaceCast() throws Throwable { + //if (CAN_SKIP_WORKING) return; + startTest("interfaceCast"); for (Class ctype : new Class[]{ Object.class, String.class, CharSequence.class, Number.class, Iterable.class}) { testInterfaceCast(ctype, false, false); testInterfaceCast(ctype, true, false); @@ -2279,11 +2425,12 @@ } } - @Test + @Test // SLOW public void testCastFailure() throws Throwable { if (CAN_SKIP_WORKING) return; startTest("testCastFailure"); testCastFailure("cast/argument", 11000); + if (CAN_TEST_LIGHTLY) return; testCastFailure("unbox/argument", 11000); testCastFailure("cast/return", 11000); testCastFailure("unbox/return", 11000); @@ -2380,7 +2527,7 @@ if (verbosity > 2) System.out.println("caught "+ex); if (verbosity > 3) - ex.printStackTrace(); + ex.printStackTrace(System.out); assertTrue(true); // all is well } } @@ -2444,7 +2591,7 @@ @Test public void testAsInterfaceInstance() throws Throwable { if (CAN_SKIP_WORKING) return; - startTest("testAsInterfaceInstance"); + startTest("asInterfaceInstance"); Lookup lookup = MethodHandles.lookup(); // test typical case: Runnable.run { @@ -2550,7 +2697,7 @@ } else { assertNotSame("must pass undeclared checked exception with wrapping", ex, ex1); if (!(ex1 instanceof UndeclaredThrowableException) || ex1.getCause() != ex) { - ex1.printStackTrace(); + ex1.printStackTrace(System.out); } assertSame(ex, ex1.getCause()); UndeclaredThrowableException utex = (UndeclaredThrowableException) ex1; @@ -2630,6 +2777,8 @@ } } // Local abbreviated copy of sun.invoke.util.ValueConversions +// This guy tests access from outside the same package member, but inside +// the package itself. class ValueConversions { private static final Lookup IMPL_LOOKUP = MethodHandles.lookup(); private static final Object[] NO_ARGS_ARRAY = {}; diff -r d15095dfd348 -r aa2c9ce06632 test/java/lang/invoke/PrivateInvokeTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/lang/invoke/PrivateInvokeTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,376 @@ +/* + * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @summary white-box testing of method handle sub-primitives + * @run junit test.java.lang.invoke.PrivateInvokeTest + */ + +package test.java.lang.invoke; + +import java.lang.invoke.*; +import static java.lang.invoke.MethodHandles.*; +import static java.lang.invoke.MethodType.*; +import java.lang.reflect.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.junit.*; +import static org.junit.Assert.*; + +public class PrivateInvokeTest { + // Utility functions + private static final Lookup LOOKUP = lookup(); + private static final Class THIS_CLASS = PrivateInvokeTest.class; + private static final int + REF_NONE = 0, // null value + REF_getField = 1, + REF_getStatic = 2, + REF_putField = 3, + REF_putStatic = 4, + REF_invokeVirtual = 5, + REF_invokeStatic = 6, + REF_invokeSpecial = 7, + REF_newInvokeSpecial = 8, + REF_invokeInterface = 9, + REF_LIMIT = 10, + REF_MH_invokeBasic = REF_NONE;; + private static final String[] REF_KIND_NAMES = { + "MH::invokeBasic", + "REF_getField", "REF_getStatic", "REF_putField", "REF_putStatic", + "REF_invokeVirtual", "REF_invokeStatic", "REF_invokeSpecial", + "REF_newInvokeSpecial", "REF_invokeInterface" + }; + private int verbose; + //{ verbose = 99; } // for debugging + { + String vstr = System.getProperty(THIS_CLASS.getSimpleName()+".verbose"); + if (vstr == null) + vstr = System.getProperty(THIS_CLASS.getName()+".verbose"); + if (vstr == null) + vstr = System.getProperty("test.verbose"); + if (vstr != null) verbose = Integer.parseInt(vstr); + } + private static int referenceKind(Method m) { + if (Modifier.isStatic(m.getModifiers())) + return REF_invokeStatic; + else if (m.getDeclaringClass().isInterface()) + return REF_invokeInterface; + else if (Modifier.isFinal(m.getModifiers()) || + Modifier.isFinal(m.getDeclaringClass().getModifiers())) + return REF_invokeSpecial; + else + return REF_invokeVirtual; + } + private static MethodType basicType(MethodType mtype) { + MethodType btype = mtype.erase(); + if (btype.hasPrimitives()) { + for (int i = -1; i < mtype.parameterCount(); i++) { + Class type = (i < 0 ? mtype.returnType() : mtype.parameterType(i)); + if (type == boolean.class || + type == byte.class || + type == char.class || + type == short.class) { + type = int.class; + if (i < 0) + btype = btype.changeReturnType(type); + else + btype = btype.changeParameterType(i, type); + } + } + } + return btype; + } + private static Method getMethod(Class defc, String name, Class... ptypes) { + try { + return defc.getDeclaredMethod(name, ptypes); + } catch (NoSuchMethodException ex) { + } + try { + return defc.getMethod(name, ptypes); + } catch (NoSuchMethodException ex) { + throw new IllegalArgumentException(ex); + } + } + private static MethodHandle unreflect(Method m) { + try { + MethodHandle mh = LOOKUP.unreflect(m); + if (Modifier.isTransient(m.getModifiers())) + mh = mh.asFixedArity(); // remove varargs wrapper + return mh; + } catch (IllegalAccessException ex) { + throw new IllegalArgumentException(ex); + } + } + private static final Lookup DIRECT_INVOKER_LOOKUP; + private static final Class MEMBER_NAME_CLASS; + private static final MethodHandle MH_INTERNAL_MEMBER_NAME; + private static final MethodHandle MH_DEBUG_STRING; + static { + try { + // This is white box testing. Use reflection to grab private implementation bits. + String magicName = "IMPL_LOOKUP"; + Field magicLookup = MethodHandles.Lookup.class.getDeclaredField(magicName); + // This unit test will fail if a security manager is installed. + magicLookup.setAccessible(true); + // Forbidden fruit... + DIRECT_INVOKER_LOOKUP = (Lookup) magicLookup.get(null); + MEMBER_NAME_CLASS = Class.forName("java.lang.invoke.MemberName", false, MethodHandle.class.getClassLoader()); + MH_INTERNAL_MEMBER_NAME = DIRECT_INVOKER_LOOKUP + .findVirtual(MethodHandle.class, "internalMemberName", methodType(MEMBER_NAME_CLASS)) + .asType(methodType(Object.class, MethodHandle.class)); + MH_DEBUG_STRING = DIRECT_INVOKER_LOOKUP + .findVirtual(MethodHandle.class, "debugString", methodType(String.class)); + } catch (ReflectiveOperationException ex) { + throw new InternalError(ex); + } + } + private Object internalMemberName(MethodHandle mh) { + try { + return MH_INTERNAL_MEMBER_NAME.invokeExact(mh); + } catch (Throwable ex) { + throw new InternalError(ex); + } + } + private String debugString(MethodHandle mh) { + try { + return (String) MH_DEBUG_STRING.invokeExact(mh); + } catch (Throwable ex) { + throw new InternalError(ex); + } + } + private static MethodHandle directInvoker(int refKind, MethodType mtype) { + return directInvoker(REF_KIND_NAMES[refKind], mtype); + } + private static MethodHandle directInvoker(String name, MethodType mtype) { + boolean isStatic; + mtype = mtype.erase(); + if (name.startsWith("MH::")) { + isStatic = false; + name = strip("MH::", name); + } else if (name.startsWith("REF_")) { + isStatic = true; + name = strip("REF_", name); + if (name.startsWith("invoke")) + name = "linkTo"+strip("invoke", name); + mtype = mtype.appendParameterTypes(MEMBER_NAME_CLASS); + } else { + throw new AssertionError("name="+name); + } + //System.out.println("directInvoker = "+name+mtype); + try { + if (isStatic) + return DIRECT_INVOKER_LOOKUP + .findStatic(MethodHandle.class, name, mtype); + else + return DIRECT_INVOKER_LOOKUP + .findVirtual(MethodHandle.class, name, mtype); + } catch (ReflectiveOperationException ex) { + throw new IllegalArgumentException(ex); + } + } + private Object invokeWithArguments(Method m, Object... args) { + Object recv = null; + if (!Modifier.isStatic(m.getModifiers())) { + recv = args[0]; + args = pop(1, args); + } + try { + return m.invoke(recv, args); + } catch (IllegalAccessException|IllegalArgumentException|InvocationTargetException ex) { + throw new IllegalArgumentException(ex); + } + } + private Object invokeWithArguments(MethodHandle mh, Object... args) { + try { + return mh.invokeWithArguments(args); + } catch (Throwable ex) { + throw new IllegalArgumentException(ex); + } + } + private int counter; + private Object makeArgument(Class type) { + final String cname = type.getSimpleName(); + final int n = ++counter; + final int nn = (n << 10) + 13; + if (type.isAssignableFrom(String.class)) { + return "<"+cname+"#"+nn+">"; + } + if (type == THIS_CLASS) return this.withCounter(nn); + if (type == Integer.class || type == int.class) return nn; + if (type == Character.class || type == char.class) return (char)(n % 100+' '); + if (type == Byte.class || type == byte.class) return (byte)-(n % 100); + if (type == Long.class || type == long.class) return (long)nn; + throw new IllegalArgumentException("don't know how to make argument of type: "+type); + } + private Object[] makeArguments(Class... ptypes) { + Object[] args = new Object[ptypes.length]; + for (int i = 0; i < args.length; i++) + args[i] = makeArgument(ptypes[i]); + return args; + } + private Object[] makeArguments(MethodType mtype) { + return makeArguments(mtype.parameterArray()); + } + private Object[] pop(int n, Object[] args) { + if (n >= 0) + return Arrays.copyOfRange(args, n, args.length); + else + return Arrays.copyOfRange(args, 0, args.length+n); + } + private Object[] pushAtFront(Object arg1, Object[] args) { + Object[] res = new Object[1+args.length]; + res[0] = arg1; + System.arraycopy(args, 0, res, 1, args.length); + return res; + } + private Object[] pushAtBack(Object[] args, Object argN) { + Object[] res = new Object[1+args.length]; + System.arraycopy(args, 0, res, 0, args.length); + res[args.length] = argN; + return res; + } + private static String strip(String prefix, String s) { + assert(s.startsWith(prefix)); + return s.substring(prefix.length()); + } + + private final int[] refKindTestCounts = new int[REF_KIND_NAMES.length]; + @After + public void printCounts() { + ArrayList zeroes = new ArrayList<>(); + for (int i = 0; i < refKindTestCounts.length; i++) { + final int count = refKindTestCounts[i]; + final String name = REF_KIND_NAMES[i]; + if (count == 0) { + if (name != null) zeroes.add(name); + continue; + } + if (verbose >= 0) + System.out.println("test count for "+name+" : "+count); + else if (name != null) + zeroes.add(name); + } + if (verbose >= 0) + System.out.println("test counts zero for "+zeroes); + } + + // Test subjects + public static String makeString(Object x) { return "makeString("+x+")"; } + public static String dupString(String x) { return "("+x+"+"+x+")"; } + public static String intString(int x) { return "intString("+x+")"; } + public static String byteString(byte x) { return "byteString("+x+")"; } + public static String longString(String x, long y, String z) { return "longString("+x+y+z+")"; } + + public final String toString() { + return "<"+getClass().getSimpleName()+"#"+counter+">"; + } + public final String hello() { return "hello from "+this; } + private PrivateInvokeTest withCounter(int counter) { + PrivateInvokeTest res = new PrivateInvokeTest(); + res.counter = counter; + return res; + } + + public static void main(String... av) throws Throwable { + new PrivateInvokeTest().run(); + } + public void run() throws Throwable { + testFirst(); + testInvokeDirect(); + } + + @Test + public void testFirst() throws Throwable { + if (true) return; // nothing here + try { + System.out.println("start of testFirst"); + } finally { + System.out.println("end of testFirst"); + } + } + + @Test + public void testInvokeDirect() { + testInvokeDirect(getMethod(THIS_CLASS, "hello")); + testInvokeDirect(getMethod(Object.class, "toString")); + testInvokeDirect(getMethod(Comparable.class, "compareTo", Object.class)); + testInvokeDirect(getMethod(THIS_CLASS, "makeString", Object.class)); + testInvokeDirect(getMethod(THIS_CLASS, "dupString", String.class)); + testInvokeDirect(getMethod(THIS_CLASS, "intString", int.class)); + testInvokeDirect(getMethod(THIS_CLASS, "byteString", byte.class)); + testInvokeDirect(getMethod(THIS_CLASS, "longString", String.class, long.class, String.class)); + } + + void testInvokeDirect(Method m) { + final int refKind = referenceKind(m); + testInvokeDirect(m, refKind); + testInvokeDirect(m, REF_MH_invokeBasic); + } + void testInvokeDirect(Method m, int refKind) { + if (verbose >= 1) + System.out.println("testInvoke m="+m+" : "+REF_KIND_NAMES[refKind]); + final MethodHandle mh = unreflect(m); + Object[] args = makeArguments(mh.type()); + Object res1 = invokeWithArguments(m, args); + // res1 comes from java.lang.reflect.Method::invoke + if (verbose >= 1) + System.out.println("m"+Arrays.asList(args)+" => "+res1); + // res2 comes from java.lang.invoke.MethodHandle::invoke + Object res2 = invokeWithArguments(mh, args); + assertEquals(res1, res2); + MethodType mtype = mh.type(); + testInvokeVia("DMH invoker", refKind, directInvoker(refKind, mtype), mh, res1, args); + MethodType etype = mtype.erase(); + if (etype != mtype) { + // Try a detuned invoker. + testInvokeVia("erased DMH invoker", refKind, directInvoker(refKind, etype), mh, res1, args); + } + MethodType btype = basicType(mtype); + if (btype != mtype && btype != etype) { + // Try a detuned invoker. + testInvokeVia("basic DMH invoker", refKind, directInvoker(refKind, btype), mh, res1, args); + } + if (false) { + // this can crash the JVM + testInvokeVia("generic DMH invoker", refKind, directInvoker(refKind, mtype.generic()), mh, res1, args); + } + refKindTestCounts[refKind] += 1; + } + + void testInvokeVia(String kind, int refKind, MethodHandle invoker, MethodHandle mh, Object res1, Object... args) { + Object[] args1; + if (refKind == REF_MH_invokeBasic) + args1 = pushAtFront(mh, args); + else + args1 = pushAtBack(args, internalMemberName(mh)); + if (verbose >= 2) { + System.out.println(kind+" invoker="+invoker+" mh="+debugString(mh)+" args="+Arrays.asList(args1)); + } + Object res3 = invokeWithArguments(invoker, args1); + assertEquals(res1, res3); + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/java/lang/invoke/ThrowExceptionsTest.java --- a/test/java/lang/invoke/ThrowExceptionsTest.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/lang/invoke/ThrowExceptionsTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -222,7 +222,7 @@ return savedEx; } - private static void assertEquals(Object x, Object y) { + private static void assertEquals(Object x, Object y) { if (x == y || x != null && x.equals(y)) return; throw new RuntimeException(x+" != "+y); } diff -r d15095dfd348 -r aa2c9ce06632 test/java/lang/invoke/remote/RemoteExample.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/lang/invoke/remote/RemoteExample.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,40 @@ +/* + * Copyright 2009-2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ +package test.java.lang.invoke.remote; + +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodHandles.Lookup; +import test.java.lang.invoke.MethodHandlesTest; + +/** + * Out-of-package access into protected members of test.java.lang.invoke.remote.MethodHandle.PubExample. + */ +public class RemoteExample extends MethodHandlesTest.PubExample { + public RemoteExample() { super("RemoteExample"); } + public static Lookup lookup() { return MethodHandles.lookup(); } + public final void fin_v0() { MethodHandlesTest.called("Rem/fin_v0", this); } + protected void pro_v0() { MethodHandlesTest.called("Rem/pro_v0", this); } + protected static void pro_s0() { MethodHandlesTest.called("Rem/pro_s0"); } +} diff -r d15095dfd348 -r aa2c9ce06632 test/java/net/DatagramPacket/ReuseBuf.java --- a/test/java/net/DatagramPacket/ReuseBuf.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/net/DatagramPacket/ReuseBuf.java Fri Aug 24 09:29:17 2012 +0100 @@ -29,7 +29,6 @@ * @summary DatagramPacket spec needs clarification (reuse buf) */ import java.net.*; -import java.io.*; public class ReuseBuf { static String msgs[] = {"Hello World", "Java", "Good Bye"}; @@ -74,7 +73,7 @@ DatagramPacket dp = new DatagramPacket(b,b.length); for (int i = 0; i < msgs.length; i++) { ds.send(new DatagramPacket(msgs[i].getBytes(),msgs[i].length(), - InetAddress.getByName("LocalHost"), + InetAddress.getLocalHost(), port)); ds.receive(dp); if (!msgs[i].equals(new String(dp.getData(), dp.getOffset(), dp.getLength()))) { diff -r d15095dfd348 -r aa2c9ce06632 test/java/nio/channels/AsynchronousChannelGroup/AsExecutor.java --- a/test/java/nio/channels/AsynchronousChannelGroup/AsExecutor.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/nio/channels/AsynchronousChannelGroup/AsExecutor.java Fri Aug 24 09:29:17 2012 +0100 @@ -37,24 +37,30 @@ .withFixedThreadPool(5, factory); AsynchronousChannelGroup group2 = AsynchronousChannelGroup .withCachedThreadPool(Executors.newCachedThreadPool(factory), 0); + AsynchronousChannelGroup group3 = AsynchronousChannelGroup + .withThreadPool(Executors.newFixedThreadPool(10, factory)); try { // execute simple tasks testSimpleTask(group1); testSimpleTask(group2); + testSimpleTask(group3); // install security manager and test again System.setSecurityManager( new SecurityManager() ); testSimpleTask(group1); testSimpleTask(group2); + testSimpleTask(group3); // attempt to execute tasks that run with only frames from boot // class loader on the stack. testAttackingTask(group1); testAttackingTask(group2); + testAttackingTask(group3); } finally { group1.shutdown(); group2.shutdown(); + group3.shutdown(); } } diff -r d15095dfd348 -r aa2c9ce06632 test/java/nio/channels/AsynchronousChannelGroup/Basic.java --- a/test/java/nio/channels/AsynchronousChannelGroup/Basic.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/nio/channels/AsynchronousChannelGroup/Basic.java Fri Aug 24 09:29:17 2012 +0100 @@ -51,98 +51,135 @@ miscTests(); } + static void testShutdownWithNoChannels(ExecutorService pool, + AsynchronousChannelGroup group) + throws Exception + { + group.shutdown(); + if (!group.isShutdown()) + throw new RuntimeException("Group should be shutdown"); + // group should terminate quickly + boolean terminated = group.awaitTermination(3, TimeUnit.SECONDS); + if (!terminated) + throw new RuntimeException("Group should have terminated"); + if (pool != null && !pool.isTerminated()) + throw new RuntimeException("Executor should have terminated"); + } + + static void testShutdownWithChannels(ExecutorService pool, + AsynchronousChannelGroup group) + throws Exception + { + + // create channel that is bound to group + AsynchronousChannel ch; + switch (rand.nextInt(2)) { + case 0 : ch = AsynchronousSocketChannel.open(group); break; + case 1 : ch = AsynchronousServerSocketChannel.open(group); break; + default : throw new AssertionError(); + } + group.shutdown(); + if (!group.isShutdown()) + throw new RuntimeException("Group should be shutdown"); + + // last channel so should terminate after this channel is closed + ch.close(); + + // group should terminate quickly + boolean terminated = group.awaitTermination(3, TimeUnit.SECONDS); + if (!terminated) + throw new RuntimeException("Group should have terminated"); + if (pool != null && !pool.isTerminated()) + throw new RuntimeException("Executor should have terminated"); + } + static void shutdownTests() throws Exception { System.out.println("-- test shutdown --"); // test shutdown with no channels in groups - for (int i=0; i<500; i++) { - ExecutorService pool = null; - AsynchronousChannelGroup group; - if (rand.nextBoolean()) { - pool = Executors.newCachedThreadPool(); - group = AsynchronousChannelGroup.withCachedThreadPool(pool, rand.nextInt(5)); - } else { - int nThreads = 1 + rand.nextInt(8); - group = AsynchronousChannelGroup.withFixedThreadPool(nThreads, threadFactory); - } - group.shutdown(); - if (!group.isShutdown()) - throw new RuntimeException("Group should be shutdown"); - // group should terminate quickly - boolean terminated = group.awaitTermination(3, TimeUnit.SECONDS); - if (!terminated) - throw new RuntimeException("Group should have terminated"); - if (pool != null && !pool.isTerminated()) - throw new RuntimeException("Executor should have terminated"); + for (int i = 0; i < 100; i++) { + ExecutorService pool = Executors.newCachedThreadPool(); + AsynchronousChannelGroup group = AsynchronousChannelGroup + .withCachedThreadPool(pool, rand.nextInt(5)); + testShutdownWithNoChannels(pool, group); + } + for (int i = 0; i < 100; i++) { + int nThreads = 1 + rand.nextInt(8); + AsynchronousChannelGroup group = AsynchronousChannelGroup + .withFixedThreadPool(nThreads, threadFactory); + testShutdownWithNoChannels(null, group); + } + for (int i = 0; i < 100; i++) { + ExecutorService pool = Executors.newCachedThreadPool(); + AsynchronousChannelGroup group = AsynchronousChannelGroup + .withThreadPool(pool); + testShutdownWithNoChannels(pool, group); } - // shutdown with channel in group - for (int i=0; i<500; i++) { - ExecutorService pool = null; - AsynchronousChannelGroup group; - if (rand.nextBoolean()) { - pool = Executors.newCachedThreadPool(); - group = AsynchronousChannelGroup.withCachedThreadPool(pool, rand.nextInt(10)); - } else { - int nThreads = 1 + rand.nextInt(8); - group = AsynchronousChannelGroup.withFixedThreadPool(nThreads, threadFactory); - } - // create channel that is bound to group - AsynchronousChannel ch; - switch (rand.nextInt(2)) { - case 0 : ch = AsynchronousSocketChannel.open(group); break; - case 1 : ch = AsynchronousServerSocketChannel.open(group); break; - default : throw new AssertionError(); - } - group.shutdown(); - if (!group.isShutdown()) - throw new RuntimeException("Group should be shutdown"); + // test shutdown with channel in group + for (int i = 0; i < 100; i++) { + ExecutorService pool = Executors.newCachedThreadPool(); + AsynchronousChannelGroup group = AsynchronousChannelGroup + .withCachedThreadPool(pool, rand.nextInt(10)); + testShutdownWithChannels(pool, group); + } + for (int i = 0; i < 100; i++) { + int nThreads = 1 + rand.nextInt(8); + AsynchronousChannelGroup group = AsynchronousChannelGroup + .withFixedThreadPool(nThreads, threadFactory); + testShutdownWithChannels(null, group); + } + for (int i = 0; i < 100; i++) { + ExecutorService pool = Executors.newCachedThreadPool(); + AsynchronousChannelGroup group = AsynchronousChannelGroup + .withThreadPool(pool); + testShutdownWithChannels(pool, group); + } + } - // last channel so should terminate after this channel is closed - ch.close(); + static void testShutdownNow(ExecutorService pool, + AsynchronousChannelGroup group) + throws Exception + { + // I/O in progress + AsynchronousServerSocketChannel ch = AsynchronousServerSocketChannel + .open(group).bind(new InetSocketAddress(0)); + ch.accept(); - // group should terminate quickly - boolean terminated = group.awaitTermination(3, TimeUnit.SECONDS); - if (!terminated) - throw new RuntimeException("Group should have terminated"); - if (pool != null && !pool.isTerminated()) - throw new RuntimeException("Executor should have terminated"); - } + // forceful shutdown + group.shutdownNow(); + + // shutdownNow is required to close all channels + if (ch.isOpen()) + throw new RuntimeException("Channel should be closed"); + + boolean terminated = group.awaitTermination(3, TimeUnit.SECONDS); + if (!terminated) + throw new RuntimeException("Group should have terminated"); + if (pool != null && !pool.isTerminated()) + throw new RuntimeException("Executor should have terminated"); } static void shutdownNowTests() throws Exception { System.out.println("-- test shutdownNow --"); - for (int i=0; i< 10; i++) { - ExecutorService pool = null; - AsynchronousChannelGroup group; - if (rand.nextBoolean()) { - pool = Executors.newCachedThreadPool(); - group = AsynchronousChannelGroup + for (int i = 0; i < 10; i++) { + ExecutorService pool = pool = Executors.newCachedThreadPool(); + AsynchronousChannelGroup group = AsynchronousChannelGroup .withCachedThreadPool(pool, rand.nextInt(5)); - } else { - int nThreads = 1 + rand.nextInt(8); - group = AsynchronousChannelGroup + testShutdownNow(pool, group); + } + for (int i = 0; i < 10; i++) { + int nThreads = 1 + rand.nextInt(8); + AsynchronousChannelGroup group = AsynchronousChannelGroup .withFixedThreadPool(nThreads, threadFactory); - } - - // I/O in progress - AsynchronousServerSocketChannel ch = AsynchronousServerSocketChannel - .open(group).bind(new InetSocketAddress(0)); - ch.accept(); - - // forceful shutdown - group.shutdownNow(); - - // shutdownNow is required to close all channels - if (ch.isOpen()) - throw new RuntimeException("Channel should be closed"); - - boolean terminated = group.awaitTermination(3, TimeUnit.SECONDS); - if (!terminated) - throw new RuntimeException("Group should have terminated"); - if (pool != null && !pool.isTerminated()) - throw new RuntimeException("Executor should have terminated"); + testShutdownNow(null, group); + } + for (int i = 0; i < 10; i++) { + ExecutorService pool = Executors.newCachedThreadPool(); + AsynchronousChannelGroup group = AsynchronousChannelGroup + .withThreadPool(pool); + testShutdownNow(pool, group); } } @@ -245,5 +282,10 @@ throw new RuntimeException("NPE expected"); } catch (NullPointerException x) { } + try { + AsynchronousChannelGroup.withThreadPool(null); + throw new RuntimeException("NPE expected"); + } catch (NullPointerException e) { + } } } diff -r d15095dfd348 -r aa2c9ce06632 test/java/nio/channels/AsynchronousChannelGroup/Restart.java --- a/test/java/nio/channels/AsynchronousChannelGroup/Restart.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/nio/channels/AsynchronousChannelGroup/Restart.java Fri Aug 24 09:29:17 2012 +0100 @@ -71,17 +71,23 @@ testRestart(group, 100); group.shutdown(); - // group with custom thread pool + // group with cached thread pool ExecutorService pool = Executors.newCachedThreadPool(factory); group = AsynchronousChannelGroup.withCachedThreadPool(pool, rand.nextInt(5)); testRestart(group, 100); group.shutdown(); + // group with custom thread pool + group = AsynchronousChannelGroup + .withThreadPool(Executors.newFixedThreadPool(1+rand.nextInt(5), factory)); + testRestart(group, 100); + group.shutdown(); + // give time for threads to terminate Thread.sleep(3000); int actual = exceptionCount.get(); - if (actual != 200) - throw new RuntimeException(actual + " exceptions, expected: " + 200); + if (actual != 300) + throw new RuntimeException(actual + " exceptions, expected: " + 300); } static void testRestart(AsynchronousChannelGroup group, int count) diff -r d15095dfd348 -r aa2c9ce06632 test/java/nio/channels/AsynchronousSocketChannel/Leaky.java --- a/test/java/nio/channels/AsynchronousSocketChannel/Leaky.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/nio/channels/AsynchronousSocketChannel/Leaky.java Fri Aug 24 09:29:17 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,9 +22,9 @@ */ /* @test - * @bug 4607272 6999915 + * @bug 4607272 6999915 7185340 * @summary Unit test for AsynchronousSocketChannel - * @run main/othervm -XX:+DisableExplicitGC -XX:MaxDirectMemorySize=64m Leaky + * @run main/othervm -XX:+DisableExplicitGC -XX:MaxDirectMemorySize=75m Leaky */ import java.nio.ByteBuffer; diff -r d15095dfd348 -r aa2c9ce06632 test/java/nio/channels/DatagramChannel/MulticastSendReceiveTests.java --- a/test/java/nio/channels/DatagramChannel/MulticastSendReceiveTests.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/nio/channels/DatagramChannel/MulticastSendReceiveTests.java Fri Aug 24 09:29:17 2012 +0100 @@ -22,10 +22,11 @@ */ /* @test - * @bug 4527345 7026376 + * @bug 4527345 7026376 6633549 * @summary Unit test for DatagramChannel's multicast support * @build MulticastSendReceiveTests NetworkConfiguration * @run main MulticastSendReceiveTests + * @run main/othervm -Djava.net.preferIPv4Stack=true MulticastSendReceiveTests */ import java.nio.ByteBuffer; @@ -186,6 +187,10 @@ id = sendDatagram(source, nif, group, port); receiveDatagram(dc, source, id); } catch (UnsupportedOperationException x) { + String os = System.getProperty("os.name"); + // Exclude-mode filtering supported on these platforms so UOE should never be thrown + if (os.equals("SunOS") || os.equals("Linux")) + throw x; System.out.println("Exclude-mode filtering not supported!"); } @@ -212,6 +217,10 @@ id = sendDatagram(source, nif, group, port); receiveDatagram(dc, source, id); } catch (UnsupportedOperationException x) { + String os = System.getProperty("os.name"); + // Include-mode filtering supported on these platforms so UOE should never be thrown + if (os.equals("SunOS") || os.equals("Linux")) + throw x; System.out.println("Include-mode filtering not supported!"); } } diff -r d15095dfd348 -r aa2c9ce06632 test/java/nio/charset/Charset/NIOCharsetAvailabilityTest.java --- a/test/java/nio/charset/Charset/NIOCharsetAvailabilityTest.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/nio/charset/Charset/NIOCharsetAvailabilityTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -68,6 +68,11 @@ charsets.remove(Class.forName("sun.nio.cs.ext.ISO2022")); charsets.remove(Class.forName("sun.nio.cs.ext.ISO2022_CN_GB")); charsets.remove(Class.forName("sun.nio.cs.ext.ISO2022_CN_CNS")); + charsets.remove(Class.forName("sun.nio.cs.ext.JIS_X_0208_Solaris")); + charsets.remove(Class.forName("sun.nio.cs.ext.JIS_X_0208_MS932")); + charsets.remove(Class.forName("sun.nio.cs.ext.JIS_X_0212_MS5022X")); + charsets.remove(Class.forName("sun.nio.cs.ext.JIS_X_0212_Solaris")); + charsets.remove(Class.forName("sun.nio.cs.ext.JIS_X_0208_MS5022X")); // report the charsets that are implemented but not available iter = charsets.iterator(); diff -r d15095dfd348 -r aa2c9ce06632 test/java/nio/file/Path/MacPathTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/nio/file/Path/MacPathTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,177 @@ +/* + * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 7130915 + * @summary Tests file path with nfc/nfd forms on MacOSX + * @library ../ + * @build MacPathTest + * @run shell MacPathTest.sh + */ + +import java.nio.file.*; +import java.nio.file.attribute.*; +import java.text.*; +import java.util.*; +import java.util.regex.*; + +public class MacPathTest { + + public static void main(String args[]) throws Throwable { + String osname = System.getProperty("os.name"); + if (!osname.contains("OS X") && !osname.contains("Darwin")) + return; + System.out.printf("sun.jnu.encoding=%s, file.encoding=%s%n", + System.getProperty("file.encoding"), + System.getProperty("sun.jnu.encoding")); + // English + test("TestDir_apple", // test dir + "dir_macosx", // dir + "file_macosx"); // file + + // Japanese composite character + test("TestDir_\u30c8\u30a4\u30e4\u30cb\u30ca\u30eb/", + "dir_\u30a4\u30c1\u30b4\u306e\u30b1\u30fc\u30ad", + "file_\u30a4\u30c1\u30b4\u306e\u30b1\u30fc\u30ad"); + + // latin-1 supplementory + test("TestDir_K\u00f6rperlich\u00e4\u00df/", + "dir_Entt\u00e4uschung", + "file_Entt\u00e4uschung"); + + test("TestDir_K\u00f6rperlich\u00e4\u00df/", + "dir_Entt\u00c4uschung", + "file_Entt\u00c4uschung"); + + // Korean syblla + test("TestDir_\uac00\uac01\uac02", + "dir_\uac20\uac21\uac22", + "file_\uacc0\uacc1\uacc2"); + } + + private static boolean equal(Object x, Object y) { + return x == null ? y == null : x.equals(y); + } + + private static boolean match(Path target, Path src) { + String fname = target.toString(); + System.out.printf(" --> Trying [%s], length=%d...", fname, fname.length()); + if (target.equals(src)) { + System.out.println(" MATCHED!"); + return true; + } else { + System.out.println(" NOT MATCHED!"); + } + return false; + } + + private static void test(String testdir, String dname, String fname_nfc) + throws Throwable + { + String fname = null; + String dname_nfd = Normalizer.normalize(dname, Normalizer.Form.NFD); + String fname_nfd = Normalizer.normalize(fname_nfc, Normalizer.Form.NFD); + + System.out.printf("%n%n--------Testing...----------%n"); + Path bpath = Paths.get(testdir); + Path dpath = Paths.get(testdir, dname); + Path dpath_nfd = Paths.get(testdir, dname_nfd); + Path fpath_nfc = Paths.get(testdir, fname_nfc); + Path fpath_nfd = Paths.get(testdir, fname_nfd); + + if (Files.exists(bpath)) + TestUtil.removeAll(bpath); + Files.createDirectories(dpath); + + fname = dpath.toString(); + System.out.printf(":Directory [%s][len=%d] created%n", fname, fname.length()); + + ////////////////////////////////////////////////////////////// + if (!Files.isDirectory(dpath) || !Files.isDirectory(dpath_nfd)) { + throw new RuntimeException("Files.isDirectory(...) failed"); + } + + ////////////////////////////////////////////////////////////// + // write out with nfd, read in with nfc + case + Files.write(fpath_nfd, new byte[] { 'n', 'f', 'd'}); + System.out.println(" read in with nfc (from nfd):" + new String(Files.readAllBytes(fpath_nfc))); + + // check attrs with nfc + case + Set pfp = Files.getPosixFilePermissions(fpath_nfd); + if (!equal(pfp, Files.getPosixFilePermissions(fpath_nfc)) ) { + throw new RuntimeException("Files.getPosixfilePermission(...) failed"); + } + Files.delete(fpath_nfd); + + // write out with nfc, read in with nfd + case + Files.write(fpath_nfc, new byte[] { 'n', 'f', 'c'}); + System.out.println(" read in with nfd (from nfc):" + new String(Files.readAllBytes(fpath_nfd))); + + // check attrs with nfc + case + pfp = Files.getPosixFilePermissions(fpath_nfc); + if (!equal(pfp, Files.getPosixFilePermissions(fpath_nfd))) { + throw new RuntimeException("Files.getPosixfilePermission(...) failed"); + } + ////////////////////////////////////////////////////////////// + boolean found_dir = false; + boolean found_file_nfc = false; + boolean found_file_nfd = false; + try (DirectoryStream stream = Files.newDirectoryStream(bpath)) { + for (Path path: stream) { + fname = path.toString(); + System.out.printf("Found : [%s], length=%d%n", fname, fname.length()); + found_dir |= match(dpath, path); + found_file_nfc |= match(fpath_nfc, path); + found_file_nfd |= match(fpath_nfd, path); + } + } + if (!found_dir || !found_file_nfc || !found_file_nfd) { + throw new RuntimeException("File.equal() failed"); + } + // glob + String glob = "*" + fname_nfd.substring(2); // remove leading "FI" from "FILE..." + System.out.println("glob=" + glob); + boolean globmatched = false; + try (DirectoryStream stream = Files.newDirectoryStream(bpath, glob)) { + for (Path path: stream) { + fname = path.toString(); + System.out.printf("PathMatch : [%s], length=%d%n", fname, fname.length()); + globmatched |= match(fpath_nfc, path); + } + } + if (!globmatched) { + //throw new RuntimeException("path matcher failed"); + // it appears we have a regex.anon_eq bug in hangul syllable handling + System.out.printf("pathmatcher failed, glob=[%s]%n", glob); + System.out.printf(" -> fname_nfd.matches(fname_nfc)=%b%n", + Pattern.compile(fname_nfd, Pattern.CANON_EQ) + .matcher(fname_nfc) + .matches()); + System.out.printf(" -> fname_nfc.matches(fname_nfd)=%b%n", + Pattern.compile(fname_nfc, Pattern.CANON_EQ) + .matcher(fname_nfd) + .matches()); + } + TestUtil.removeAll(bpath); + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/java/nio/file/Path/MacPathTest.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/nio/file/Path/MacPathTest.sh Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,39 @@ +#! /bin/sh + +# +# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# +OS=`uname -s` +case "$OS" in + Darwin ) ;; + * ) + exit 0 + ;; +esac + +if [ "x$TESTJAVA" = x ]; then + TESTJAVA=$1; shift + TESTCLASSES=. +fi + +export LC_ALL=en_US.UTF-8; ${TESTJAVA}/bin/java -cp ${TESTCLASSES} MacPathTest diff -r d15095dfd348 -r aa2c9ce06632 test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java --- a/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java Fri Aug 24 09:29:17 2012 +0100 @@ -45,30 +45,23 @@ import java.util.Properties; class Callback extends UnicastRemoteObject implements CallbackInterface { - - public static int num_deactivated = 0; + public int num_deactivated = 0; - public Callback() throws RemoteException { super(); } - - public void inc() throws RemoteException { - incNumDeactivated(); - } + public Callback() throws RemoteException { super(); } - public synchronized int getNumDeactivated() throws RemoteException { - return(num_deactivated); - } + public synchronized void inc() throws RemoteException { + num_deactivated++; + } - public synchronized void incNumDeactivated() { - num_deactivated++; - } - + public synchronized int getNumDeactivated() throws RemoteException { + return num_deactivated; + } } public class UnregisterGroup extends Activatable implements ActivateMe, Runnable { - private static Exception exception = null; private static String error = null; private static boolean done = false; @@ -104,36 +97,47 @@ } /** - * Thread to deactivate object. First attempts to make object - * inactive (via the inactive method). If that fails (the - * object may still have pending/executing calls), then - * unexport the object forcibly. + * Thread to deactivate object. Get the callback object from the registry, + * call inc() on it, and finally call deactivate(). The call to + * deactivate() causes this JVM to be destroyed, so anything following + * might not be executed. */ public void run() { + String regPortStr = System.getProperty("unregisterGroup.port"); + int regPort = -1; - ActivationLibrary.deactivate(this, getID()); - System.err.println("\tActivationLibrary.deactivate returned"); + if (regPortStr != null) { + regPort = Integer.parseInt(regPortStr); + } try { CallbackInterface cobj = - (CallbackInterface)Naming.lookup("//:" + registryPort + "/Callback"); + (CallbackInterface)Naming.lookup("//:" + regPort + "/Callback"); cobj.inc(); + System.err.println("cobj.inc called and returned ok"); } catch (Exception e) { System.err.println("cobj.inc exception"); e.printStackTrace(); } + ActivationLibrary.deactivate(this, getID()); + System.err.println("\tActivationLibrary.deactivate returned"); } - public static void main(String[] args) { - - Registry registry; - + public static void main(String[] args) throws RemoteException { System.err.println("\nRegression test for bug 4134233\n"); - TestLibrary.suggestSecurityManager("java.rmi.RMISecurityManager"); RMID rmid = null; + // Create registry and export callback object so they're + // available to the objects that are activated below. + // TODO: see if we can use RMID's registry instead of + // creating one here. + Registry registry = TestLibrary.createRegistryOnUnusedPort(); + registryPort = TestLibrary.getRegistryPort(registry); + Callback robj = new Callback(); + registry.rebind("Callback", robj); + try { RMID.removeLog(); rmid = RMID.createRMID(); @@ -149,8 +153,7 @@ TestParams.defaultGroupPolicy); p.put("java.security.manager", TestParams.defaultSecurityManager); - - //final int NUM_OBJECTS = 10; + p.put("unregisterGroup.port", Integer.toString(registryPort)); Thread t = new Thread() { public void run () { @@ -219,8 +222,6 @@ } else { System.err.println("Test passed"); } - - } catch (Exception e) { TestLibrary.bomb("test failed", e); } finally { @@ -233,13 +234,6 @@ // Wait for the object deactivation to take place first try { - - // create reg and export callback object - registry = TestLibrary.createRegistryOnUnusedPort(); - registryPort = TestLibrary.getRegistryPort(registry); - Callback robj = new Callback(); - registry.bind("Callback", robj); - //get the callback object int maxwait=30; int nd = robj.getNumDeactivated(); diff -r d15095dfd348 -r aa2c9ce06632 test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy --- a/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy Fri Aug 24 09:29:17 2012 +0100 @@ -7,4 +7,5 @@ // test needs to communicate with the activation system permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "unregisterGroup.port", "read"; }; diff -r d15095dfd348 -r aa2c9ce06632 test/java/rmi/activation/ActivationSystem/unregisterGroup/rmid.security.policy --- a/test/java/rmi/activation/ActivationSystem/unregisterGroup/rmid.security.policy Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/rmi/activation/ActivationSystem/unregisterGroup/rmid.security.policy Fri Aug 24 09:29:17 2012 +0100 @@ -1,4 +1,5 @@ grant { permission com.sun.rmi.rmid.ExecOptionPermission "-Djava.security.manager=default"; permission com.sun.rmi.rmid.ExecOptionPermission "-Djava.security.policy=*"; + permission com.sun.rmi.rmid.ExecOptionPermission "-DunregisterGroup.port=*"; }; diff -r d15095dfd348 -r aa2c9ce06632 test/java/rmi/activation/ActivationSystem/unregisterGroup/security.policy --- a/test/java/rmi/activation/ActivationSystem/unregisterGroup/security.policy Fri Aug 03 20:56:16 2012 +0100 +++ b/test/java/rmi/activation/ActivationSystem/unregisterGroup/security.policy Fri Aug 24 09:29:17 2012 +0100 @@ -33,4 +33,10 @@ // test needs to export rmid and communicate with objects on arbitrary ports permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + + // required for test to get the registry port + permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.registry"; + permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.server"; + permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport"; + permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.transport.tcp"; }; diff -r d15095dfd348 -r aa2c9ce06632 test/java/util/zip/TotalInOut.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/util/zip/TotalInOut.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 7188852 + * @summary Test De/Inflater.getBytesRead/Written() + */ + +import java.io.*; +import java.util.*; +import java.util.zip.*; + + +public class TotalInOut { + static final int BUF_SIZE= 1 * 1024 * 1024; + + static void realMain (String[] args) throws Throwable { + long dataSize = 128L * 1024L * 1024L; // 128MB + if (args.length > 0 && "large".equals(args[0])) + dataSize = 5L * 1024L * 1024L * 1024L; // 5GB + + Deflater deflater = new Deflater(); + Inflater inflater = new Inflater(); + + byte[] dataIn = new byte[BUF_SIZE]; + byte[] dataOut = new byte[BUF_SIZE]; + byte[] tmp = new byte[BUF_SIZE]; + + Random r = new Random(); + r.nextBytes(dataIn); + long bytesReadDef = 0; + long bytesWrittenDef = 0; + long bytesReadInf = 0; + long bytesWrittenInf = 0; + + deflater.setInput(dataIn, 0, dataIn.length); + while (bytesReadDef < dataSize || bytesWrittenInf < dataSize) { + int len = r.nextInt(BUF_SIZE/2) + BUF_SIZE / 2; + if (deflater.needsInput()) { + bytesReadDef += dataIn.length; + check(bytesReadDef == deflater.getBytesRead()); + deflater.setInput(dataIn, 0, dataIn.length); + } + int n = deflater.deflate(tmp, 0, len); + bytesWrittenDef += n; + check(bytesWrittenDef == deflater.getBytesWritten()); + + inflater.setInput(tmp, 0, n); + bytesReadInf += n; + while (!inflater.needsInput()) { + bytesWrittenInf += inflater.inflate(dataOut, 0, dataOut.length); + check(bytesWrittenInf == inflater.getBytesWritten()); + } + check(bytesReadInf == inflater.getBytesRead()); + } + } + + //--------------------- Infrastructure --------------------------- + static volatile int passed = 0, failed = 0; + static void pass() {passed++;} + static void pass(String msg) {System.out.println(msg); passed++;} + static void fail() {failed++; Thread.dumpStack();} + static void fail(String msg) {System.out.println(msg); fail();} + static void unexpected(Throwable t) {failed++; t.printStackTrace();} + static void unexpected(Throwable t, String msg) { + System.out.println(msg); failed++; t.printStackTrace();} + static boolean check(boolean cond) {if (cond) pass(); else fail(); return cond;} + static void equal(Object x, Object y) { + if (x == null ? y == null : x.equals(y)) pass(); + else fail(x + " not equal to " + y);} + public static void main(String[] args) throws Throwable { + try {realMain(args);} catch (Throwable t) {unexpected(t);} + System.out.println("\nPassed = " + passed + " failed = " + failed); + if (failed > 0) throw new AssertionError("Some tests failed");} +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/invoke/util/ValueConversionsTest.java --- a/test/sun/invoke/util/ValueConversionsTest.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/invoke/util/ValueConversionsTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -122,36 +122,6 @@ } @Test - public void testUnboxRaw() throws Throwable { - //System.out.println("unboxRaw"); - for (Wrapper w : Wrapper.values()) { - if (w == Wrapper.OBJECT) continue; // skip this; no raw form - //System.out.println(w); - for (int n = -5; n < 10; n++) { - Object box = w.wrap(n); - long expResult = w.unwrapRaw(box); - Object box2 = w.wrapRaw(expResult); - assertEquals(box, box2); - MethodHandle unboxer = ValueConversions.unboxRaw(w.primitiveType()); - long result = -1; - switch (w) { - case INT: result = (int) unboxer.invokeExact(box); break; - case LONG: result = (long) unboxer.invokeExact(box); break; - case FLOAT: result = (int) unboxer.invokeExact(box); break; - case DOUBLE: result = (long) unboxer.invokeExact(box); break; - case CHAR: result = (int) unboxer.invokeExact(box); break; - case BYTE: result = (int) unboxer.invokeExact(box); break; - case SHORT: result = (int) unboxer.invokeExact(box); break; - case BOOLEAN: result = (int) unboxer.invokeExact(box); break; - case VOID: result = (int) unboxer.invokeExact(box); break; - } - assertEquals("(w,n,box)="+Arrays.asList(w,n,box), - expResult, result); - } - } - } - - @Test public void testBox() throws Throwable { //System.out.println("box"); for (Wrapper w : Wrapper.values()) { @@ -180,65 +150,6 @@ } @Test - public void testBoxRaw() throws Throwable { - //System.out.println("boxRaw"); - for (Wrapper w : Wrapper.values()) { - if (w == Wrapper.VOID) continue; // skip this; no unboxed form - if (w == Wrapper.OBJECT) continue; // skip this; no raw form - //System.out.println(w); - for (int n = -5; n < 10; n++) { - Object box = w.wrap(n); - long raw = w.unwrapRaw(box); - Object expResult = box; - MethodHandle boxer = ValueConversions.boxRaw(w.primitiveType()); - Object result = null; - switch (w) { - case INT: result = boxer.invokeExact((int)raw); break; - case LONG: result = boxer.invokeExact(raw); break; - case FLOAT: result = boxer.invokeExact((int)raw); break; - case DOUBLE: result = boxer.invokeExact(raw); break; - case CHAR: result = boxer.invokeExact((int)raw); break; - case BYTE: result = boxer.invokeExact((int)raw); break; - case SHORT: result = boxer.invokeExact((int)raw); break; - case BOOLEAN: result = boxer.invokeExact((int)raw); break; - } - assertEquals("(dst,src,n,box)="+Arrays.asList(w,w,n,box), - expResult, result); - } - } - } - - @Test - public void testReboxRaw() throws Throwable { - //System.out.println("reboxRaw"); - for (Wrapper w : Wrapper.values()) { - Wrapper pw = Wrapper.forPrimitiveType(w.rawPrimitiveType()); - if (w == Wrapper.VOID) continue; // skip this; no unboxed form - if (w == Wrapper.OBJECT) continue; // skip this; no raw form - //System.out.println(w); - for (int n = -5; n < 10; n++) { - Object box = w.wrap(n); - Object raw = pw.wrap(w.unwrapRaw(box)); - Object expResult = box; - MethodHandle boxer = ValueConversions.rebox(w.primitiveType()); - Object result = null; - switch (w) { - case INT: result = boxer.invokeExact(raw); break; - case LONG: result = boxer.invokeExact(raw); break; - case FLOAT: result = boxer.invokeExact(raw); break; - case DOUBLE: result = boxer.invokeExact(raw); break; - case CHAR: result = boxer.invokeExact(raw); break; - case BYTE: result = boxer.invokeExact(raw); break; - case SHORT: result = boxer.invokeExact(raw); break; - case BOOLEAN: result = boxer.invokeExact(raw); break; - } - assertEquals("(dst,src,n,box)="+Arrays.asList(w,w,n,box), - expResult, result); - } - } - } - - @Test public void testCast() throws Throwable { //System.out.println("cast"); Class[] types = { Object.class, Serializable.class, String.class, Number.class, Integer.class }; @@ -281,6 +192,91 @@ } @Test + public void testConvert() throws Throwable { + //System.out.println("convert"); + for (long tval = 0, ctr = 0;;) { + if (++ctr > 99999) throw new AssertionError("too many test values"); + // next test value: + //System.out.println(Long.toHexString(tval)); // prints 3776 test patterns + tval = nextTestValue(tval); + if (tval == 0) { + //System.out.println("test value count = "+ctr); // 3776 = 8*59*8 + break; // repeat + } + } + for (Wrapper src : Wrapper.values()) { + for (Wrapper dst : Wrapper.values()) { + testConvert(src, dst, 0); + } + } + } + static void testConvert(Wrapper src, Wrapper dst, long tval) throws Throwable { + //System.out.println(src+" => "+dst); + boolean testSingleCase = (tval != 0); + final long tvalInit = tval; + MethodHandle conv = ValueConversions.convertPrimitive(src, dst); + MethodType convType; + if (src == Wrapper.VOID) + convType = MethodType.methodType(dst.primitiveType() /* , void */); + else + convType = MethodType.methodType(dst.primitiveType(), src.primitiveType()); + assertEquals(convType, conv.type()); + MethodHandle converter = conv.asType(conv.type().changeReturnType(Object.class)); + for (;;) { + long n = tval; + Object testValue = src.wrap(n); + Object expResult = dst.cast(testValue, dst.primitiveType()); + Object result; + switch (src) { + case INT: result = converter.invokeExact((int)n); break; + case LONG: result = converter.invokeExact(/*long*/n); break; + case FLOAT: result = converter.invokeExact((float)n); break; + case DOUBLE: result = converter.invokeExact((double)n); break; + case CHAR: result = converter.invokeExact((char)n); break; + case BYTE: result = converter.invokeExact((byte)n); break; + case SHORT: result = converter.invokeExact((short)n); break; + case OBJECT: result = converter.invokeExact((Object)n); break; + case BOOLEAN: result = converter.invokeExact((n & 1) != 0); break; + case VOID: result = converter.invokeExact(); break; + default: throw new AssertionError(); + } + assertEquals("(src,dst,n,testValue)="+Arrays.asList(src,dst,"0x"+Long.toHexString(n),testValue), + expResult, result); + if (testSingleCase) break; + // next test value: + tval = nextTestValue(tval); + if (tval == tvalInit) break; // repeat + } + } + static long tweakSign(long x) { + // Assuming that x is mostly zeroes, make those zeroes follow bit #62 (just below the sign). + // This function is self-inverse. + final long MID_SIGN_BIT = 62; + long sign = -((x >>> MID_SIGN_BIT) & 1); // all ones or all zeroes + long flip = (sign >>> -MID_SIGN_BIT); // apply the sign below the mid-bit + return x ^ flip; + } + static long nextTestValue(long x) { + // Produce 64 bits with three component bitfields: [ high:3 | mid:58 | low:3 ]. + // The high and low fields vary through all possible bit patterns. + // The middle field is either all zero or has a single bit set. + // For better coverage of the neighborhood of zero, an internal sign bit is xored downward also. + long ux = tweakSign(x); // unsign the middle field + final long LOW_BITS = 3, LOW_BITS_MASK = (1L << LOW_BITS)-1; + final long HIGH_BITS = 3, HIGH_BITS_MASK = ~(-1L >>> HIGH_BITS); + if ((ux & LOW_BITS_MASK) != LOW_BITS_MASK) { + ++ux; + } else { + ux &= ~LOW_BITS_MASK; + long midBit = (ux & ~HIGH_BITS_MASK); + if (midBit == 0) + midBit = (1L< arrayType) throws Throwable { - System.out.println(arrayType.getSimpleName()); + //System.out.println(arrayType.getSimpleName()); Class elemType = arrayType.getComponentType(); int MIN = START_ARITY; int MAX = MAX_ARITY-2; // 253+1 would cause parameter overflow with 'this' added diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/DoubleByteDecoder.java --- a/test/sun/nio/cs/OLD/DoubleByteDecoder.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/nio/cs/OLD/DoubleByteDecoder.java Fri Aug 24 09:29:17 2012 +0100 @@ -26,7 +26,6 @@ /* */ -//package sun.nio.cs.ext; import java.nio.ByteBuffer; import java.nio.CharBuffer; diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/DoubleByteEncoder.java --- a/test/sun/nio/cs/OLD/DoubleByteEncoder.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/nio/cs/OLD/DoubleByteEncoder.java Fri Aug 24 09:29:17 2012 +0100 @@ -26,7 +26,6 @@ /* */ -//package sun.nio.cs.ext; import java.nio.ByteBuffer; import java.nio.CharBuffer; @@ -95,7 +94,7 @@ try { while (sp < sl) { char c = sa[sp]; - if (Surrogate.is(c)) { + if (Character.isSurrogate(c)) { if (sgp.parse(c, sa, sp, sl) < 0) return sgp.error(); if (sl - sp < 2) @@ -153,7 +152,7 @@ try { while (src.hasRemaining()) { char c = src.get(); - if (Surrogate.is(c)) { + if (Character.isSurrogate(c)) { int surr; if ((surr = sgp.parse(c, src)) < 0) return sgp.error(); diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/EUC_JP_LINUX_OLD.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/EUC_JP_LINUX_OLD.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,367 @@ +/* + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + +import java.nio.*; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.CoderResult; +import sun.nio.cs.HistoricallyNamedCharset; +import sun.nio.cs.Surrogate; + +public class EUC_JP_LINUX_OLD + extends Charset + implements HistoricallyNamedCharset +{ + public EUC_JP_LINUX_OLD() { + super("x-euc-jp-linux_OLD", null); + } + + public String historicalName() { + return "EUC_JP_LINUX"; + } + + public boolean contains(Charset cs) { + return ((cs instanceof JIS_X_0201_OLD) + || (cs.name().equals("US-ASCII")) + || (cs instanceof EUC_JP_LINUX_OLD)); + } + + public CharsetDecoder newDecoder() { + return new Decoder(this); + } + + public CharsetEncoder newEncoder() { + return new Encoder(this); + } + + private static class Decoder extends CharsetDecoder { + JIS_X_0201_OLD.Decoder decoderJ0201; + protected final char REPLACE_CHAR='\uFFFD'; + + private static final int start = 0xa1; + private static final int end = 0xfe; + private static final short[] jis0208Index1 = + JIS_X_0208_Decoder.getIndex1(); + private static final String[] jis0208Index2 = + JIS_X_0208_Decoder.getIndex2(); + + private Decoder(Charset cs) { + super(cs, 1.0f, 1.0f); + decoderJ0201 = new JIS_X_0201_OLD.Decoder(cs); + } + + protected char convSingleByte(int b) { + if (b < 0 || b > 0x7f) + return REPLACE_CHAR; + return decoderJ0201.decode(b); + } + + protected char decodeDouble(int byte1, int byte2) { + if (byte1 == 0x8e) { + return decoderJ0201.decode(byte2 - 256); + } + + if (((byte1 < 0) || (byte1 > jis0208Index1.length)) + || ((byte2 < start) || (byte2 > end))) + return REPLACE_CHAR; + + int n = (jis0208Index1[byte1 - 0x80] & 0xf) * (end - start + 1) + + (byte2 - start); + return jis0208Index2[jis0208Index1[byte1 - 0x80] >> 4].charAt(n); + } + + private CoderResult decodeArrayLoop(ByteBuffer src, + CharBuffer dst) + { + byte[] sa = src.array(); + int sp = src.arrayOffset() + src.position(); + int sl = src.arrayOffset() + src.limit(); + assert (sp <= sl); + sp = (sp <= sl ? sp : sl); + + char[] da = dst.array(); + int dp = dst.arrayOffset() + dst.position(); + int dl = dst.arrayOffset() + dst.limit(); + assert (dp <= dl); + dp = (dp <= dl ? dp : dl); + + int b1 = 0, b2 = 0; + int inputSize = 0; + char outputChar = REPLACE_CHAR; // U+FFFD; + + try { + while (sp < sl) { + b1 = sa[sp] & 0xff; + inputSize = 1; + if ((b1 & 0x80) == 0) { + outputChar = (char)b1; + } + else { // Multibyte char + if ((b1 & 0xff) == 0x8f) { // JIS0212 + if (sp + 3 > sl) + return CoderResult.UNDERFLOW; + inputSize = 3; + return CoderResult.unmappableForLength(inputSize); // substitute + } else { + // JIS0208 + if (sp + 2 > sl) + return CoderResult.UNDERFLOW; + b2 = sa[sp + 1] & 0xff; + inputSize = 2; + outputChar = decodeDouble(b1, b2); + } + } + if (outputChar == REPLACE_CHAR) { // can't be decoded + return CoderResult.unmappableForLength(inputSize); + } + if (dp + 1 > dl) + return CoderResult.OVERFLOW; + da[dp++] = outputChar; + sp += inputSize; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(sp - src.arrayOffset()); + dst.position(dp - dst.arrayOffset()); + } + } + + private CoderResult decodeBufferLoop(ByteBuffer src, + CharBuffer dst) + { + int mark = src.position(); + char outputChar = REPLACE_CHAR; // U+FFFD; + + try { + while (src.hasRemaining()) { + int b1 = src.get() & 0xff; + int inputSize = 1; + + if ((b1 & 0x80) == 0) { + outputChar = (char)b1; + } else { // Multibyte char + + if ((b1 & 0xff) == 0x8f) { // JIS0212 not supported + if (src.remaining() < 2) + return CoderResult.UNDERFLOW; + return CoderResult.unmappableForLength(3); + } else { + // JIS0208 + if (src.remaining() < 1) + return CoderResult.UNDERFLOW; + int b2 = src.get() & 0xff; + inputSize++; + outputChar = decodeDouble(b1, b2); + } + } + + if (outputChar == REPLACE_CHAR) + return CoderResult.unmappableForLength(inputSize); + if (dst.remaining() < 1) + return CoderResult.OVERFLOW; + dst.put(outputChar); + mark += inputSize; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(mark); + } + } + + protected CoderResult decodeLoop(ByteBuffer src, + CharBuffer dst) + { + if (src.hasArray() && dst.hasArray()) + return decodeArrayLoop(src, dst); + else + return decodeBufferLoop(src, dst); + } + } + + + private static class Encoder extends CharsetEncoder { + + JIS_X_0201_OLD.Encoder encoderJ0201; + + private final Surrogate.Parser sgp = new Surrogate.Parser(); + private static final short[] jis0208Index1 = + JIS_X_0208_Encoder.getIndex1(); + private static final String[] jis0208Index2 = + JIS_X_0208_Encoder.getIndex2(); + + private Encoder(Charset cs) { + super(cs, 2.0f, 2.0f); + encoderJ0201 = new JIS_X_0201_OLD.Encoder(cs); + } + + public boolean canEncode(char c) { + byte[] encodedBytes = new byte[2]; + + if (encodeSingle(c, encodedBytes) == 0) { //doublebyte + if (encodeDouble(c) == 0) + return false; + } + return true; + } + + protected int encodeSingle(char inputChar, byte[] outputByte) { + byte b; + + if (inputChar == 0) { + outputByte[0] = (byte)0; + return 1; + } + + if ((b = encoderJ0201.encode(inputChar)) == 0) + return 0; + + if (b > 0 && b < 128) { + outputByte[0] = b; + return 1; + } + outputByte[0] = (byte)0x8e; + outputByte[1] = b; + return 2; + } + + protected int encodeDouble(char ch) { + int offset = jis0208Index1[((ch & 0xff00) >> 8 )] << 8; + int r = jis0208Index2[offset >> 12].charAt((offset & 0xfff) + (ch & 0xff)); + if (r != 0) + return r + 0x8080; + return r; + } + + private CoderResult encodeArrayLoop(CharBuffer src, + ByteBuffer dst) + { + char[] sa = src.array(); + int sp = src.arrayOffset() + src.position(); + int sl = src.arrayOffset() + src.limit(); + assert (sp <= sl); + sp = (sp <= sl ? sp : sl); + byte[] da = dst.array(); + int dp = dst.arrayOffset() + dst.position(); + int dl = dst.arrayOffset() + dst.limit(); + assert (dp <= dl); + dp = (dp <= dl ? dp : dl); + + final byte[] outputByte = new byte[2]; + + try { + while (sp < sl) { + char c = sa[sp]; + + if (Character.isSurrogate(c)) { + if (sgp.parse(c, sa, sp, sl) < 0) + return sgp.error(); + return sgp.unmappableResult(); + } + + int outputSize = encodeSingle(c, outputByte); + if (outputSize == 0) { // DoubleByte + int ncode = encodeDouble(c); + if (ncode != 0 && ((ncode & 0xFF0000) == 0)) { + outputByte[0] = (byte) ((ncode & 0xff00) >> 8); + outputByte[1] = (byte) (ncode & 0xff); + outputSize = 2; + } else { + return CoderResult.unmappableForLength(1); + } + } + + if (dl - dp < outputSize) + return CoderResult.OVERFLOW; + // Put the byte in the output buffer + for (int i = 0; i < outputSize; i++) { + da[dp++] = outputByte[i]; + } + sp++; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(sp - src.arrayOffset()); + dst.position(dp - dst.arrayOffset()); + } + } + + private CoderResult encodeBufferLoop(CharBuffer src, + ByteBuffer dst) + { + final byte[] outputByte = new byte[4]; + int mark = src.position(); + + try { + while (src.hasRemaining()) { + char c = src.get(); + if (Character.isSurrogate(c)) { + if (sgp.parse(c, src) < 0) + return sgp.error(); + return sgp.unmappableResult(); + } + + int outputSize = encodeSingle(c, outputByte); + if (outputSize == 0) { // DoubleByte + int ncode = encodeDouble(c); + if (ncode != 0 ) { + if ((ncode & 0xFF0000) == 0) { + outputByte[0] = (byte) ((ncode & 0xff00) >> 8); + outputByte[1] = (byte) (ncode & 0xff); + outputSize = 2; + } + } else { + return CoderResult.unmappableForLength(1); + } + } + + if (dst.remaining() < outputSize) + return CoderResult.OVERFLOW; + + // Put the byte in the output buffer + for (int i = 0; i < outputSize; i++) { + dst.put(outputByte[i]); + } + mark++; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(mark); + } + } + + protected CoderResult encodeLoop(CharBuffer src, + ByteBuffer dst) + { + if (src.hasArray() && dst.hasArray()) + return encodeArrayLoop(src, dst); + else + return encodeBufferLoop(src, dst); + } + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/EUC_JP_OLD.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/EUC_JP_OLD.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,420 @@ +/* + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.CoderResult; +import sun.nio.cs.HistoricallyNamedCharset; +import sun.nio.cs.Surrogate; + +public class EUC_JP_OLD + extends Charset + implements HistoricallyNamedCharset +{ + public EUC_JP_OLD() { + super("EUC-JP_OLD", null); + } + + public String historicalName() { + return "EUC_JP"; + } + + public boolean contains(Charset cs) { + return ((cs.name().equals("US-ASCII")) + || (cs instanceof JIS_X_0201_OLD) + || (cs instanceof JIS_X_0208_OLD) + || (cs instanceof JIS_X_0212_OLD) + || (cs instanceof EUC_JP_OLD)); + } + + public CharsetDecoder newDecoder() { + return new Decoder(this); + } + + public CharsetEncoder newEncoder() { + + // Need to force the replacement byte to 0x3f + // because JIS_X_0208_Encoder defines its own + // alternative 2 byte substitution to permit it + // to exist as a self-standing Encoder + + byte[] replacementBytes = { (byte)0x3f }; + return new Encoder(this).replaceWith(replacementBytes); + } + + + static class Decoder extends JIS_X_0208_Decoder { + + JIS_X_0201_OLD.Decoder decoderJ0201; + JIS_X_0212_Decoder decoderJ0212; + + private static final short[] j0208Index1 = + JIS_X_0208_Decoder.getIndex1(); + private static final String[] j0208Index2 = + JIS_X_0208_Decoder.getIndex2(); + + protected Decoder(Charset cs) { + super(cs); + decoderJ0201 = new JIS_X_0201_OLD.Decoder(cs); + decoderJ0212 = new JIS_X_0212_Decoder(cs); + start = 0xa1; + end = 0xfe; + } + protected char decode0212(int byte1, int byte2) { + return decoderJ0212.decodeDouble(byte1, byte2); + } + + protected char decodeDouble(int byte1, int byte2) { + if (byte1 == 0x8e) { + return decoderJ0201.decode(byte2 - 256); + } + // Fix for bug 4121358 - similar fix for bug 4117820 put + // into ByteToCharDoubleByte.getUnicode() + if (((byte1 < 0) || (byte1 > getIndex1().length)) + || ((byte2 < start) || (byte2 > end))) + return REPLACE_CHAR; + + int n = (j0208Index1[byte1 - 0x80] & 0xf) * (end - start + 1) + + (byte2 - start); + return j0208Index2[j0208Index1[byte1 - 0x80] >> 4].charAt(n); + } + + private CoderResult decodeArrayLoop(ByteBuffer src, + CharBuffer dst) + { + byte[] sa = src.array(); + int sp = src.arrayOffset() + src.position(); + int sl = src.arrayOffset() + src.limit(); + assert (sp <= sl); + sp = (sp <= sl ? sp : sl); + + char[] da = dst.array(); + int dp = dst.arrayOffset() + dst.position(); + int dl = dst.arrayOffset() + dst.limit(); + assert (dp <= dl); + dp = (dp <= dl ? dp : dl); + + int b1 = 0, b2 = 0; + int inputSize = 0; + char outputChar = REPLACE_CHAR; // U+FFFD; + + try { + while (sp < sl) { + b1 = sa[sp] & 0xff; + inputSize = 1; + + if ((b1 & 0x80) == 0) { + outputChar = (char)b1; + } + else { // Multibyte char + if ((b1 & 0xff) == 0x8f) { // JIS0212 + if (sp + 3 > sl) + return CoderResult.UNDERFLOW; + b1 = sa[sp + 1] & 0xff; + b2 = sa[sp + 2] & 0xff; + inputSize += 2; + outputChar = decode0212(b1-0x80, b2-0x80); + } else { + // JIS0208 + if (sp + 2 > sl) + return CoderResult.UNDERFLOW; + b2 = sa[sp + 1] & 0xff; + inputSize++; + outputChar = decodeDouble(b1, b2); + } + } + if (outputChar == REPLACE_CHAR) { // can't be decoded + return CoderResult.unmappableForLength(inputSize); + } + if (dp + 1 > dl) + return CoderResult.OVERFLOW; + da[dp++] = outputChar; + sp += inputSize; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(sp - src.arrayOffset()); + dst.position(dp - dst.arrayOffset()); + } + } + + private CoderResult decodeBufferLoop(ByteBuffer src, + CharBuffer dst) + { + int mark = src.position(); + int b1 = 0, b2 = 0; + int inputSize = 0; + + char outputChar = REPLACE_CHAR; // U+FFFD; + + try { + while (src.hasRemaining()) { + b1 = src.get() & 0xff; + inputSize = 1; + + if ((b1 & 0x80) == 0) { + outputChar = (char)b1; + } else { // Multibyte char + if ((b1 & 0xff) == 0x8f) { // JIS0212 + if (src.remaining() < 2) + return CoderResult.UNDERFLOW; + b1 = src.get() & 0xff; + b2 = src.get() & 0xff; + inputSize += 2; + outputChar = decode0212(b1-0x80, b2-0x80); + } else { + // JIS0208 + if (src.remaining() < 1) + return CoderResult.UNDERFLOW; + b2 = src.get() & 0xff; + inputSize++; + outputChar = decodeDouble(b1, b2); + } + } + + if (outputChar == REPLACE_CHAR) { + return CoderResult.unmappableForLength(inputSize); + } + if (dst.remaining() < 1) + return CoderResult.OVERFLOW; + dst.put(outputChar); + mark += inputSize; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(mark); + } + } + + // Make some protected methods public for use by JISAutoDetect + public CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) { + if (src.hasArray() && dst.hasArray()) + return decodeArrayLoop(src, dst); + else + return decodeBufferLoop(src, dst); + } + public void implReset() { + super.implReset(); + } + public CoderResult implFlush(CharBuffer out) { + return super.implFlush(out); + } + } + + + static class Encoder extends JIS_X_0208_Encoder { + + JIS_X_0201_OLD.Encoder encoderJ0201; + JIS_X_0212_Encoder encoderJ0212; + + private static final short[] j0208Index1 = + JIS_X_0208_Encoder.getIndex1(); + private static final String[] j0208Index2 = + JIS_X_0208_Encoder.getIndex2(); + + private final Surrogate.Parser sgp = new Surrogate.Parser(); + + protected Encoder(Charset cs) { + super(cs, 3.0f, 3.0f); + encoderJ0201 = new JIS_X_0201_OLD.Encoder(cs); + encoderJ0212 = new JIS_X_0212_Encoder(cs); + } + + public boolean canEncode(char c) { + byte[] encodedBytes = new byte[3]; + + if (encodeSingle(c, encodedBytes) == 0) { //doublebyte + if (encodeDouble(c) == 0) + return false; + } + return true; + } + + protected int encodeSingle(char inputChar, byte[] outputByte) { + byte b; + + if (inputChar == 0) { + outputByte[0] = (byte)0; + return 1; + } + + if ((b = encoderJ0201.encode(inputChar)) == 0) + return 0; + + if (b > 0 && b < 128) { + outputByte[0] = b; + return 1; + } + + outputByte[0] = (byte)0x8e; + outputByte[1] = b; + return 2; + } + + protected int encodeDouble(char ch) { + int offset = j0208Index1[((ch & 0xff00) >> 8 )] << 8; + int r = j0208Index2[offset >> 12].charAt((offset & 0xfff) + + (ch & 0xff)); + if (r != 0) + return r + 0x8080; + r = encoderJ0212.encodeDouble(ch); + if (r == 0) + return r; + return r + 0x8F8080; + } + + private CoderResult encodeArrayLoop(CharBuffer src, + ByteBuffer dst) + { + char[] sa = src.array(); + int sp = src.arrayOffset() + src.position(); + int sl = src.arrayOffset() + src.limit(); + assert (sp <= sl); + sp = (sp <= sl ? sp : sl); + byte[] da = dst.array(); + int dp = dst.arrayOffset() + dst.position(); + int dl = dst.arrayOffset() + dst.limit(); + assert (dp <= dl); + dp = (dp <= dl ? dp : dl); + + int outputSize = 0; + byte[] outputByte; + int inputSize = 0; // Size of input + byte[] tmpBuf = new byte[3]; + + try { + while (sp < sl) { + outputByte = tmpBuf; + char c = sa[sp]; + + if (Character.isSurrogate(c)) { + if (sgp.parse(c, sa, sp, sl) < 0) + return sgp.error(); + return sgp.unmappableResult(); + } + + outputSize = encodeSingle(c, outputByte); + + if (outputSize == 0) { // DoubleByte + int ncode = encodeDouble(c); + if (ncode != 0 ) { + if ((ncode & 0xFF0000) == 0) { + outputByte[0] = (byte) ((ncode & 0xff00) >> 8); + outputByte[1] = (byte) (ncode & 0xff); + outputSize = 2; + } else { + outputByte[0] = (byte) 0x8f; + outputByte[1] = (byte) ((ncode & 0xff00) >> 8); + outputByte[2] = (byte) (ncode & 0xff); + outputSize = 3; + } + } else { + return CoderResult.unmappableForLength(1); + } + } + if (dl - dp < outputSize) + return CoderResult.OVERFLOW; + // Put the byte in the output buffer + for (int i = 0; i < outputSize; i++) { + da[dp++] = outputByte[i]; + } + sp++; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(sp - src.arrayOffset()); + dst.position(dp - dst.arrayOffset()); + } + } + + private CoderResult encodeBufferLoop(CharBuffer src, + ByteBuffer dst) + { + int outputSize = 0; + byte[] outputByte; + int inputSize = 0; // Size of input + byte[] tmpBuf = new byte[3]; + + int mark = src.position(); + + try { + while (src.hasRemaining()) { + outputByte = tmpBuf; + char c = src.get(); + if (Character.isSurrogate(c)) { + if (sgp.parse(c, src) < 0) + return sgp.error(); + return sgp.unmappableResult(); + } + + outputSize = encodeSingle(c, outputByte); + if (outputSize == 0) { // DoubleByte + int ncode = encodeDouble(c); + if (ncode != 0 ) { + if ((ncode & 0xFF0000) == 0) { + outputByte[0] = (byte) ((ncode & 0xff00) >> 8); + outputByte[1] = (byte) (ncode & 0xff); + outputSize = 2; + } else { + outputByte[0] = (byte) 0x8f; + outputByte[1] = (byte) ((ncode & 0xff00) >> 8); + outputByte[2] = (byte) (ncode & 0xff); + outputSize = 3; + } + } else { + return CoderResult.unmappableForLength(1); + } + } + + if (dst.remaining() < outputSize) + return CoderResult.OVERFLOW; + // Put the byte in the output buffer + for (int i = 0; i < outputSize; i++) { + dst.put(outputByte[i]); + } + mark++; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(mark); + } + } + + protected CoderResult encodeLoop(CharBuffer src, + ByteBuffer dst) + { + if (src.hasArray() && dst.hasArray()) + return encodeArrayLoop(src, dst); + else + return encodeBufferLoop(src, dst); + } + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/EUC_JP_Open_OLD.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/EUC_JP_Open_OLD.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,175 @@ +/* + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.CoderResult; +import sun.nio.cs.HistoricallyNamedCharset; +import sun.nio.cs.Surrogate; + +public class EUC_JP_Open_OLD + extends Charset + implements HistoricallyNamedCharset +{ + public EUC_JP_Open_OLD() { + super("x-eucJP-Open_OLD", null); + } + + public String historicalName() { + return "EUC_JP_Solaris"; + } + + public boolean contains(Charset cs) { + return ((cs.name().equals("US-ASCII")) + || (cs instanceof JIS_X_0201_OLD) + || (cs instanceof EUC_JP_OLD)); + } + + public CharsetDecoder newDecoder() { + return new Decoder(this); + } + + public CharsetEncoder newEncoder() { + + // Need to force the replacement byte to 0x3f + // because JIS_X_0208_Encoder defines its own + // alternative 2 byte substitution to permit it + // to exist as a self-standing Encoder + + byte[] replacementBytes = { (byte)0x3f }; + return new Encoder(this).replaceWith(replacementBytes); + } + + private static class Decoder extends EUC_JP_OLD.Decoder { + JIS_X_0201_OLD.Decoder decoderJ0201; + JIS_X_0212_Solaris_Decoder decodeMappingJ0212; + JIS_X_0208_Solaris_Decoder decodeMappingJ0208; + + private static final short[] j0208Index1 = + JIS_X_0208_Solaris_Decoder.getIndex1(); + private static final String[] j0208Index2 = + JIS_X_0208_Solaris_Decoder.getIndex2(); + private static final int start = 0xa1; + private static final int end = 0xfe; + + protected final char REPLACE_CHAR='\uFFFD'; + + private Decoder(Charset cs) { + super(cs); + decoderJ0201 = new JIS_X_0201_OLD.Decoder(cs); + decodeMappingJ0212 = new JIS_X_0212_Solaris_Decoder(cs); + } + + + protected char decode0212(int byte1, int byte2) { + return decodeMappingJ0212.decodeDouble(byte1, byte2); + + } + + protected char decodeDouble(int byte1, int byte2) { + if (byte1 == 0x8e) { + return decoderJ0201.decode(byte2 - 256); + } + + if (((byte1 < 0) + || (byte1 > j0208Index1.length)) + || ((byte2 < start) + || (byte2 > end))) + return REPLACE_CHAR; + + char result = super.decodeDouble(byte1, byte2); + if (result != '\uFFFD') { + return result; + } else { + int n = (j0208Index1[byte1 - 0x80] & 0xf) * + (end - start + 1) + + (byte2 - start); + return j0208Index2[j0208Index1[byte1 - 0x80] >> 4].charAt(n); + } + } + } + + + private static class Encoder extends EUC_JP_OLD.Encoder { + + JIS_X_0201_OLD.Encoder encoderJ0201; + JIS_X_0212_Solaris_Encoder encoderJ0212; + + private static final short[] j0208Index1 = + JIS_X_0208_Solaris_Encoder.getIndex1(); + private static final String[] j0208Index2 = + JIS_X_0208_Solaris_Encoder.getIndex2(); + + private final Surrogate.Parser sgp = new Surrogate.Parser(); + + private Encoder(Charset cs) { + super(cs); + encoderJ0201 = new JIS_X_0201_OLD.Encoder(cs); + encoderJ0212 = new JIS_X_0212_Solaris_Encoder(cs); + } + + protected int encodeSingle(char inputChar, byte[] outputByte) { + byte b; + + if (inputChar == 0) { + outputByte[0] = (byte)0; + return 1; + } + + if ((b = encoderJ0201.encode(inputChar)) == 0) + return 0; + + if (b > 0 && b < 128) { + outputByte[0] = b; + return 1; + } + + outputByte[0] = (byte)0x8e; + outputByte[1] = b; + return 2; + } + + protected int encodeDouble(char ch) { + int r = super.encodeDouble(ch); + if (r != 0) { + return r; + } + else { + int offset = j0208Index1[((ch & 0xff00) >> 8 )] << 8; + r = j0208Index2[offset >> 12].charAt((offset & 0xfff) + + (ch & 0xFF)); + if (r > 0x7500) + return 0x8F8080 + encoderJ0212.encodeDouble(ch); + } + return (r==0 ? 0: r + 0x8080); + } + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/JIS_X_0201_OLD.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/JIS_X_0201_OLD.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,223 @@ +/* + * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + + +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; + +public class JIS_X_0201_OLD + extends Charset +{ + + public JIS_X_0201_OLD() { + super("JIS_X0201_OLD", null); + } + + public boolean contains(Charset cs) { + return ((cs.name().equals("US-ASCII")) + || (cs instanceof JIS_X_0201_OLD)); + } + + public CharsetDecoder newDecoder() { + return new Decoder(this); + } + + public CharsetEncoder newEncoder() { + return new Encoder(this); + } + + public static class Decoder extends SingleByteDecoder { + + public Decoder(Charset cs) { + super(cs, byteToCharTable); + } + + private final static String byteToCharTable = + + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x80 - 0x87 + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x88 - 0x8F + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x90 - 0x97 + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x98 - 0x9F + "\uFFFD\uFF61\uFF62\uFF63\uFF64\uFF65\uFF66\uFF67" + // 0xA0 - 0xA7 + "\uFF68\uFF69\uFF6A\uFF6B\uFF6C\uFF6D\uFF6E\uFF6F" + // 0xA8 - 0xAF + "\uFF70\uFF71\uFF72\uFF73\uFF74\uFF75\uFF76\uFF77" + // 0xB0 - 0xB7 + "\uFF78\uFF79\uFF7A\uFF7B\uFF7C\uFF7D\uFF7E\uFF7F" + // 0xB8 - 0xBF + "\uFF80\uFF81\uFF82\uFF83\uFF84\uFF85\uFF86\uFF87" + // 0xC0 - 0xC7 + "\uFF88\uFF89\uFF8A\uFF8B\uFF8C\uFF8D\uFF8E\uFF8F" + // 0xC8 - 0xCF + "\uFF90\uFF91\uFF92\uFF93\uFF94\uFF95\uFF96\uFF97" + // 0xD0 - 0xD7 + "\uFF98\uFF99\uFF9A\uFF9B\uFF9C\uFF9D\uFF9E\uFF9F" + // 0xD8 - 0xDF + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xE0 - 0xE7 + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xE8 - 0xEF + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xF0 - 0xF7 + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xF8 - 0xFF + "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 + "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F + "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 + "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F + "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 + "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F + "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 + "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F + "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 + "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F + "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 + "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F + "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 + "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F + "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 + "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F + } + + public static class Encoder extends SingleByteEncoder { + + public Encoder(Charset cs) { + super(cs, index1, index2, 0xFF00, 0x00FF, 8); + } + + private final static String index2 = + + "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + + "\b\t\n\u000B\f\r\u000E\u000F" + + "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + + "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + + "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + + "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + + "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + + "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + + "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + + "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + + "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + + "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + + "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + + "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + + "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + + "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\\\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u007E\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8" + + "\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0" + + "\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8" + + "\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0" + + "\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8" + + "\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0" + + "\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8" + + "\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; + + private final static short index1[] = { + 0, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 360, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 519, + }; + } + +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/JIS_X_0208_Decoder.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/JIS_X_0208_Decoder.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,1009 @@ +/* + * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + + +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; + +public class JIS_X_0208_Decoder extends DoubleByteDecoder +{ + public JIS_X_0208_Decoder(Charset cs) { + super(cs, + index1, + index2, + 0x21, + 0x7E); + } + + private final static String innerIndex0= + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u3000\u3001"+ + "\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01"+ + "\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F"+ + "\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006"+ + "\u3007\u30FC\u2014\u2010\uFF0F\uFF3C\u301C\u2016"+ + "\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08"+ + "\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008"+ + "\u3009\u300A\u300B\u300C\u300D\u300E\u300F\u3010"+ + "\u3011\uFF0B\u2212\u00B1\u00D7\u00F7\uFF1D\u2260"+ + "\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640"+ + "\u00B0\u2032\u2033\u2103\uFFE5\uFF04\u00A2\u00A3"+ + "\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605"+ + "\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3"+ + "\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191"+ + "\u2193\u3013\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2208\u220B\u2286"+ + "\u2287\u2282\u2283\u222A\u2229\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2227\u2228\u00AC"+ + "\u21D2\u21D4\u2200\u2203\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2220"+ + "\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B"+ + "\u221A\u223D\u221D\u2235\u222B\u222C\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u212B\u2030\u266F"+ + "\u266D\u266A\u2020\u2021\u00B6\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\u25EF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15\uFF16"+ + "\uFF17\uFF18\uFF19\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26"+ + "\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E"+ + "\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36"+ + "\uFF37\uFF38\uFF39\uFF3A\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46"+ + "\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E"+ + "\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56"+ + "\uFF57\uFF58\uFF59\uFF5A\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048"+ + "\u3049\u304A\u304B\u304C\u304D\u304E\u304F\u3050"+ + "\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058"+ + "\u3059\u305A\u305B\u305C\u305D\u305E\u305F\u3060"+ + "\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068"+ + "\u3069\u306A\u306B\u306C\u306D\u306E\u306F\u3070"+ + "\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078"+ + "\u3079\u307A\u307B\u307C\u307D\u307E\u307F\u3080"+ + "\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088"+ + "\u3089\u308A\u308B\u308C\u308D\u308E\u308F\u3090"+ + "\u3091\u3092\u3093\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u30A1\u30A2"+ + "\u30A3\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA"+ + "\u30AB\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2"+ + "\u30B3\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA"+ + "\u30BB\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2"+ + "\u30C3\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA"+ + "\u30CB\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2"+ + "\u30D3\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA"+ + "\u30DB\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2"+ + "\u30E3\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA"+ + "\u30EB\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2"+ + "\u30F3\u30F4\u30F5\u30F6\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\u0391\u0392\u0393\u0394"+ + "\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C"+ + "\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5"+ + "\u03A6\u03A7\u03A8\u03A9\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\u03B1\u03B2\u03B3\u03B4"+ + "\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC"+ + "\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C4\u03C5"+ + "\u03C6\u03C7\u03C8\u03C9\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\u0410\u0411\u0412\u0413\u0414\u0415"+ + "\u0401\u0416\u0417\u0418\u0419\u041A\u041B\u041C"+ + "\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424"+ + "\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C"+ + "\u042D\u042E\u042F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\u0430\u0431\u0432\u0433\u0434\u0435"+ + "\u0451\u0436\u0437\u0438\u0439\u043A\u043B\u043C"+ + "\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444"+ + "\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C"+ + "\u044D\u044E\u044F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C"+ + "\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B"+ + "\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F"+ + "\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u4E9C\u5516"+ + "\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475"+ + "\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6"+ + "\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B"+ + "\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89"+ + "\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5"+ + "\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01"+ + "\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F"+ + "\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02"+ + "\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1"+ + "\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B"+ + "\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15"+ + "\u98F2\u6DEB\u80E4\u852D\u9662\u9670\u96A0\u97FB"+ + "\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F"+ + "\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504"+ + "\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F"+ + "\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6"+ + "\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29"+ + "\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED"+ + "\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2"+ + "\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6"+ + "\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159"+ + "\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B"+ + "\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965"+ + "\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B"+ + "\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B"+ + "\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA"+ + "\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE"+ + "\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F"+ + "\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C"+ + "\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1"+ + "\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629"+ + "\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211"+ + "\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913"+ + "\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB"+ + "\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"+ + "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75"+ + "\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916"+ + "\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB"+ + "\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3"+ + "\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1"+ + "\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A"+ + "\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66"+ + "\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F"+ + "\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B"+ + "\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6"+ + "\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC"+ + "\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208"+ + "\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8"+ + "\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB"+ + "\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562"+ + "\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97"+ + "\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21"+ + "\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC"+ + "\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3"+ + "\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C"+ + "\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858"+ + "\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09"+ + "\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7"+ + "\u65E2\u671F\u68CB\u68C4\u6A5F\u5E30\u6BC5\u6C17"+ + "\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F"+ + "\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C"+ + "\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC"+ + "\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70"+ + "\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58"+ + "\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650"+ + "\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE"+ + "\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078"+ + "\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7"+ + "\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20"+ + "\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8"+ + "\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171"+ + "\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1"+ + "\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B"+ + "\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E"+ + "\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D"+ + "\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81"+ + "\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D"+ + "\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F"+ + "\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036"+ + "\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6"+ + "\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076"+ + "\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"; + + private final static String innerIndex1= + "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688"+ + "\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB"+ + "\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2"+ + "\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951"+ + "\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A"+ + "\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C"+ + "\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63"+ + "\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287"+ + "\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A"+ + "\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039"+ + "\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805"+ + "\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29"+ + "\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9"+ + "\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855"+ + "\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B"+ + "\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650"+ + "\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1"+ + "\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA"+ + "\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237"+ + "\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449"+ + "\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A"+ + "\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4"+ + "\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9"+ + "\u52FE\u539A\u53E3\u5411\u540E\u5589\u5751\u57A2"+ + "\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78"+ + "\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8"+ + "\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897"+ + "\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687"+ + "\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015"+ + "\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C"+ + "\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F"+ + "\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B"+ + "\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F"+ + "\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60"+ + "\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8"+ + "\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE"+ + "\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7"+ + "\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506"+ + "\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50"+ + "\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D"+ + "\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1"+ + "\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826"+ + "\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264"+ + "\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A"+ + "\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C"+ + "\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56"+ + "\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"+ + "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1"+ + "\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09"+ + "\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6"+ + "\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178"+ + "\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F"+ + "\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9"+ + "\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307"+ + "\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B"+ + "\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2"+ + "\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE"+ + "\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D"+ + "\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB"+ + "\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033"+ + "\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B"+ + "\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931"+ + "\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F"+ + "\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E"+ + "\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E"+ + "\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F"+ + "\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B"+ + "\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B"+ + "\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152"+ + "\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC"+ + "\u9700\u56DA\u53CE\u5468\u5B97\u5C31\u5DDE\u4FEE"+ + "\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2"+ + "\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F"+ + "\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145"+ + "\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26"+ + "\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E"+ + "\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB"+ + "\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC"+ + "\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1"+ + "\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9"+ + "\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8"+ + "\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664"+ + "\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546"+ + "\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F"+ + "\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284"+ + "\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E"+ + "\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C"+ + "\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0"+ + "\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549"+ + "\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE"+ + "\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08"+ + "\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22"+ + "\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573"+ + "\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"+ + "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6"+ + "\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507"+ + "\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B"+ + "\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E"+ + "\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB"+ + "\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875"+ + "\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663"+ + "\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017"+ + "\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B"+ + "\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E"+ + "\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E"+ + "\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A"+ + "\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2"+ + "\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674"+ + "\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE"+ + "\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D"+ + "\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D"+ + "\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D"+ + "\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207"+ + "\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC"+ + "\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360"+ + "\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813"+ + "\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D"+ + "\u65CB\u7A7F\u7BAD\u7DDA\u7E4A\u7FA8\u817A\u821B"+ + "\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD"+ + "\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168"+ + "\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA"+ + "\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956"+ + "\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061"+ + "\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE"+ + "\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C"+ + "\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD"+ + "\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF"+ + "\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB"+ + "\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF"+ + "\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074"+ + "\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F"+ + "\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176"+ + "\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6"+ + "\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0"+ + "\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53"+ + "\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B"+ + "\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B"+ + "\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0"+ + "\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353"+ + "\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422"+ + "\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"+ + "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA"+ + "\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39"+ + "\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1"+ + "\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6"+ + "\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696"+ + "\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B"+ + "\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718"+ + "\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010"+ + "\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99"+ + "\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B"+ + "\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457"+ + "\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33"+ + "\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2"+ + "\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178"+ + "\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802"+ + "\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3"+ + "\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A"+ + "\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C"+ + "\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A"+ + "\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD"+ + "\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A"+ + "\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A"+ + "\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247"+ + "\u8A02\u8AE6\u8E44\u9013\u90B8\u912D\u91D8\u9F0E"+ + "\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069"+ + "\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244"+ + "\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C"+ + "\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530"+ + "\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92"+ + "\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD"+ + "\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012"+ + "\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858"+ + "\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771"+ + "\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F"+ + "\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6"+ + "\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46"+ + "\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8"+ + "\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E"+ + "\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07"+ + "\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4"+ + "\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934"+ + "\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F"+ + "\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7"+ + "\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E"+ + "\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357"+ + "\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9"+ + "\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"; + + private final static String innerIndex2= + "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1"+ + "\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5"+ + "\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC"+ + "\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2"+ + "\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2"+ + "\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3"+ + "\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC"+ + "\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973"+ + "\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F"+ + "\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF"+ + "\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD"+ + "\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1"+ + "\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551"+ + "\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10"+ + "\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4"+ + "\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C"+ + "\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554"+ + "\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812"+ + "\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE"+ + "\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249"+ + "\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891"+ + "\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F"+ + "\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787"+ + "\u6BD8\u7435\u7709\u7F8E\u9F3B\u67CA\u7A17\u5339"+ + "\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5"+ + "\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E"+ + "\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968"+ + "\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7"+ + "\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C"+ + "\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D"+ + "\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C"+ + "\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26"+ + "\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C"+ + "\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8"+ + "\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9"+ + "\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17"+ + "\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674"+ + "\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B"+ + "\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63"+ + "\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73"+ + "\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511"+ + "\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4"+ + "\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217"+ + "\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42"+ + "\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9"+ + "\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0"+ + "\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"+ + "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C"+ + "\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD"+ + "\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8"+ + "\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2"+ + "\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E"+ + "\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2"+ + "\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86"+ + "\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469"+ + "\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE"+ + "\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52"+ + "\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4"+ + "\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513"+ + "\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C"+ + "\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720"+ + "\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B"+ + "\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7"+ + "\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF"+ + "\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F"+ + "\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728"+ + "\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E"+ + "\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6"+ + "\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79"+ + "\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453"+ + "\u6109\u6108\u6CB9\u7652\u8AED\u8F38\u552F\u4F51"+ + "\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6"+ + "\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950"+ + "\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915"+ + "\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C"+ + "\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A"+ + "\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000"+ + "\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A"+ + "\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0"+ + "\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B"+ + "\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB"+ + "\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8"+ + "\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678"+ + "\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41"+ + "\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D"+ + "\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21"+ + "\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD"+ + "\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818"+ + "\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433"+ + "\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99"+ + "\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA"+ + "\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A"+ + "\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2"+ + "\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"+ + "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2"+ + "\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C"+ + "\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E"+ + "\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6"+ + "\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0"+ + "\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900"+ + "\u6E7E\u7897\u8155\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u5F0C\u4E10"+ + "\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56"+ + "\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E"+ + "\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE"+ + "\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF"+ + "\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47"+ + "\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91"+ + "\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8"+ + "\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028"+ + "\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029"+ + "\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703"+ + "\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080"+ + "\u509A\u5085\u50B4\u50B2\u50C9\u50CA\u50B3\u50C2"+ + "\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5"+ + "\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121"+ + "\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C"+ + "\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182"+ + "\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196"+ + "\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1"+ + "\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0"+ + "\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B"+ + "\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F"+ + "\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269"+ + "\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288"+ + "\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1"+ + "\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3"+ + "\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310"+ + "\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338"+ + "\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E"+ + "\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0"+ + "\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9"+ + "\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401"+ + "\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429"+ + "\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477"+ + "\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486"+ + "\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"+ + "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6"+ + "\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539"+ + "\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557"+ + "\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F"+ + "\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9"+ + "\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4"+ + "\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9"+ + "\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B"+ + "\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0"+ + "\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC"+ + "\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7"+ + "\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B"+ + "\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737"+ + "\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788"+ + "\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA"+ + "\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6"+ + "\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B"+ + "\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F"+ + "\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3"+ + "\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF"+ + "\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A"+ + "\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938"+ + "\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962"+ + "\u5960\u5967\u596C\u5969\u5978\u5981\u599D\u4F5E"+ + "\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9"+ + "\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40"+ + "\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC"+ + "\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9"+ + "\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0"+ + "\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55"+ + "\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78"+ + "\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7"+ + "\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5"+ + "\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D"+ + "\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46"+ + "\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62"+ + "\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB"+ + "\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9"+ + "\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17"+ + "\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19"+ + "\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76"+ + "\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD"+ + "\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6"+ + "\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11"+ + "\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57"+ + "\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A"+ + "\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"; + + private final static String innerIndex3= + "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8"+ + "\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE"+ + "\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29"+ + "\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51"+ + "\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83"+ + "\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99"+ + "\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4"+ + "\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019"+ + "\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026"+ + "\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A"+ + "\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B"+ + "\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B"+ + "\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0"+ + "\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D"+ + "\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103"+ + "\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128"+ + "\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142"+ + "\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174"+ + "\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199"+ + "\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB"+ + "\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6"+ + "\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA"+ + "\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209"+ + "\u620D\u620C\u6214\u621B\u621E\u6221\u622A\u622E"+ + "\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B"+ + "\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293"+ + "\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF"+ + "\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2"+ + "\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302"+ + "\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F"+ + "\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389"+ + "\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6"+ + "\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406"+ + "\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467"+ + "\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9"+ + "\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8"+ + "\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3"+ + "\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD"+ + "\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535"+ + "\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D"+ + "\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A"+ + "\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4"+ + "\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772"+ + "\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C"+ + "\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667"+ + "\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689"+ + "\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"+ + "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9"+ + "\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727"+ + "\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746"+ + "\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9"+ + "\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7"+ + "\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE"+ + "\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C"+ + "\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3"+ + "\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD"+ + "\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5"+ + "\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908"+ + "\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7"+ + "\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9"+ + "\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6"+ + "\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E"+ + "\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D"+ + "\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3"+ + "\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7"+ + "\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8"+ + "\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05"+ + "\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1"+ + "\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47"+ + "\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D"+ + "\u6AA0\u6A84\u6AA2\u6AA3\u6A97\u8617\u6ABB\u6AC3"+ + "\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA"+ + "\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16"+ + "\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47"+ + "\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61"+ + "\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98"+ + "\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1"+ + "\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC"+ + "\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B"+ + "\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D"+ + "\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90"+ + "\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE"+ + "\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F"+ + "\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33"+ + "\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59"+ + "\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5"+ + "\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8"+ + "\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE"+ + "\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23"+ + "\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E"+ + "\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9"+ + "\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5"+ + "\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC"+ + "\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"+ + "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80"+ + "\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E"+ + "\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9"+ + "\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1"+ + "\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F"+ + "\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030"+ + "\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1"+ + "\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9"+ + "\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166"+ + "\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195"+ + "\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4"+ + "\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF"+ + "\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232"+ + "\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274"+ + "\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7"+ + "\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2"+ + "\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C"+ + "\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E"+ + "\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375"+ + "\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5"+ + "\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432"+ + "\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469"+ + "\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7"+ + "\u74CA\u74CF\u74D4\u73F1\u74E0\u74E3\u74E7\u74E9"+ + "\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503"+ + "\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526"+ + "\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546"+ + "\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576"+ + "\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A"+ + "\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD"+ + "\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3"+ + "\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2"+ + "\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621"+ + "\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646"+ + "\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667"+ + "\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683"+ + "\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0"+ + "\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2"+ + "\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708"+ + "\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B"+ + "\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765"+ + "\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E"+ + "\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7"+ + "\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C"+ + "\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886"+ + "\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1"+ + "\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"+ + "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919"+ + "\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955"+ + "\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA"+ + "\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC"+ + "\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F"+ + "\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49"+ + "\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88"+ + "\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6"+ + "\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF"+ + "\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6"+ + "\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18"+ + "\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04"+ + "\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67"+ + "\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D"+ + "\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB"+ + "\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11"+ + "\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3"+ + "\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F"+ + "\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40"+ + "\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75"+ + "\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8"+ + "\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5"+ + "\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2"+ + "\u7CF4\u7CF6\u7CFA\u7D06\u7D02\u7D1C\u7D15\u7D0A"+ + "\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73"+ + "\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93"+ + "\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3"+ + "\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC"+ + "\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB"+ + "\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31"+ + "\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35"+ + "\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56"+ + "\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B"+ + "\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C"+ + "\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C"+ + "\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51"+ + "\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67"+ + "\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94"+ + "\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE"+ + "\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4"+ + "\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004"+ + "\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F"+ + "\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062"+ + "\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F"+ + "\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190"+ + "\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6"+ + "\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"; + + private final static String innerIndex4= + "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E"+ + "\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182"+ + "\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0"+ + "\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9"+ + "\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0"+ + "\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207"+ + "\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233"+ + "\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262"+ + "\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E"+ + "\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3"+ + "\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB"+ + "\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334"+ + "\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F"+ + "\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2"+ + "\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373"+ + "\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE"+ + "\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0"+ + "\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB"+ + "\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD"+ + "\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435"+ + "\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB"+ + "\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF"+ + "\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC"+ + "\u8540\u8563\u8558\u8548\u8541\u8602\u854B\u8555"+ + "\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594"+ + "\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9"+ + "\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC"+ + "\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622"+ + "\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667"+ + "\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6"+ + "\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4"+ + "\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706"+ + "\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9"+ + "\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A"+ + "\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768"+ + "\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F"+ + "\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB"+ + "\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0"+ + "\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811"+ + "\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827"+ + "\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B"+ + "\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882"+ + "\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0"+ + "\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD"+ + "\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C"+ + "\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941"+ + "\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"+ + "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E"+ + "\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6"+ + "\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA"+ + "\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10"+ + "\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52"+ + "\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82"+ + "\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3"+ + "\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4"+ + "\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C"+ + "\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33"+ + "\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F"+ + "\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C"+ + "\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93"+ + "\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C"+ + "\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82"+ + "\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98"+ + "\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6"+ + "\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB"+ + "\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E"+ + "\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73"+ + "\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6"+ + "\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC"+ + "\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42"+ + "\u8E35\u8E30\u8E34\u8E4A\u8E47\u8E49\u8E4C\u8E50"+ + "\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76"+ + "\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A"+ + "\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0"+ + "\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3"+ + "\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12"+ + "\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33"+ + "\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46"+ + "\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F"+ + "\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA"+ + "\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015"+ + "\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035"+ + "\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049"+ + "\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8"+ + "\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F"+ + "\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB"+ + "\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158"+ + "\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182"+ + "\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0"+ + "\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB"+ + "\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215"+ + "\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295"+ + "\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A"+ + "\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"+ + "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C"+ + "\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394"+ + "\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD"+ + "\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407"+ + "\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452"+ + "\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470"+ + "\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F"+ + "\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0"+ + "\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA"+ + "\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC"+ + "\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642"+ + "\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F"+ + "\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA"+ + "\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9"+ + "\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5"+ + "\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F"+ + "\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E"+ + "\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764"+ + "\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C"+ + "\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8"+ + "\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB"+ + "\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F"+ + "\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F"+ + "\u984B\u986B\u986F\u9870\u9871\u9874\u9873\u98AA"+ + "\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB"+ + "\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E"+ + "\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949"+ + "\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997"+ + "\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD"+ + "\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8"+ + "\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45"+ + "\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57"+ + "\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD"+ + "\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE"+ + "\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4"+ + "\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22"+ + "\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F"+ + "\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58"+ + "\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0"+ + "\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1"+ + "\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2"+ + "\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06"+ + "\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24"+ + "\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60"+ + "\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08"+ + "\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F"+ + "\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"+ + "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89"+ + "\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2"+ + "\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2"+ + "\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A"+ + "\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B"+ + "\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8"+ + "\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4"+ + "\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4"+ + "\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08"+ + "\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54"+ + "\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A"+ + "\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7"+ + "\u9059\u7464\u51DC\u7199\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD"; + + private final static short index1[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + + private final static String index2[] = { + innerIndex0, + innerIndex1, + innerIndex2, + innerIndex3, + innerIndex4 + }; + + + protected char convSingleByte(int b) { + return REPLACE_CHAR; + } + + static short[] getIndex1() { + return index1; + } + + static String[] getIndex2() { + return index2; + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/JIS_X_0208_Encoder.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/JIS_X_0208_Encoder.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,3122 @@ +/* + * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + + +import java.nio.charset.Charset; +import java.nio.charset.CharsetEncoder; + +public class JIS_X_0208_Encoder extends DoubleByteEncoder +{ + + /* + * default replacement defined merely for pseudo + * charset x-JIS-X-0208 to instantiate with a + * decodeable replacement byte sequence + * JIS X 0208(1987) 0x2129 maps to FULLWIDTH QUESTION MARK + * + */ + + private static byte[] repl = { (byte)0x21, (byte)0x29 }; + + public JIS_X_0208_Encoder(Charset cs) { + super(cs, + index1, + index2 , + repl + ); + } + public JIS_X_0208_Encoder(Charset cs, float avg, float max) { + super(cs, + index1, + index2 , + repl, + avg, + max + ); + } + + protected int encodeSingle(char inputChar) { + return -1; + } + + static short[] getIndex1() { + return index1; + } + + static String[] getIndex2() { + return index2; + } + + private final static String innerIndex0= + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2171\u2172\u0000\u0000\u0000\u2178"+ + "\u212F\u0000\u0000\u0000\u224C\u0000\u0000\u0000"+ + "\u216B\u215E\u0000\u0000\u212D\u0000\u2279\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u215F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u2160"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u2621\u2622\u2623\u2624\u2625\u2626\u2627"+ + "\u2628\u2629\u262A\u262B\u262C\u262D\u262E\u262F"+ + "\u2630\u2631\u0000\u2632\u2633\u2634\u2635\u2636"+ + "\u2637\u2638\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u2641\u2642\u2643\u2644\u2645\u2646\u2647"+ + "\u2648\u2649\u264A\u264B\u264C\u264D\u264E\u264F"+ + "\u2650\u2651\u0000\u2652\u2653\u2654\u2655\u2656"+ + "\u2657\u2658\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u2727\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u2721\u2722\u2723\u2724\u2725\u2726\u2728\u2729"+ + "\u272A\u272B\u272C\u272D\u272E\u272F\u2730\u2731"+ + "\u2732\u2733\u2734\u2735\u2736\u2737\u2738\u2739"+ + "\u273A\u273B\u273C\u273D\u273E\u273F\u2740\u2741"+ + "\u2751\u2752\u2753\u2754\u2755\u2756\u2758\u2759"+ + "\u275A\u275B\u275C\u275D\u275E\u275F\u2760\u2761"+ + "\u2762\u2763\u2764\u2765\u2766\u2767\u2768\u2769"+ + "\u276A\u276B\u276C\u276D\u276E\u276F\u2770\u2771"+ + "\u0000\u2757\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u213E\u0000\u0000\u0000\u213D\u0000\u2142\u0000"+ + "\u2146\u2147\u0000\u0000\u2148\u2149\u0000\u0000"+ + "\u2277\u2278\u0000\u0000\u0000\u2145\u2144\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u2273\u0000\u216C\u216D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u2228\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u216E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u2272\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u222B\u222C\u222A\u222D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u224D\u0000\u224E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u224F\u0000\u225F\u2250\u0000\u0000\u0000\u2260"+ + "\u223A\u0000\u0000\u223B\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u215D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2265\u0000\u0000\u2267\u2167\u0000"+ + "\u225C\u0000\u0000\u0000\u0000\u0000\u0000\u224A"+ + "\u224B\u2241\u2240\u2269\u226A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u2168\u2268\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u2266\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2262\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u2162\u2261\u0000\u0000\u0000\u0000\u2165\u2166"+ + "\u0000\u0000\u2263\u2264\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u223E\u223F\u0000\u0000\u223C\u223D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u225D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u225E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u2821\u282C\u2822\u282D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u2823\u0000\u0000\u282E"+ + "\u2824\u0000\u0000\u282F\u2826\u0000\u0000\u2831"+ + "\u2825\u0000\u0000\u2830\u2827\u283C\u0000\u0000"+ + "\u2837\u0000\u0000\u2832\u2829\u283E\u0000\u0000"+ + "\u2839\u0000\u0000\u2834\u2828\u0000\u0000\u2838"+ + "\u283D\u0000\u0000\u2833\u282A\u0000\u0000\u283A"+ + "\u283F\u0000\u0000\u2835\u282B\u0000\u0000\u283B"+ + "\u0000\u0000\u2840\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u2836\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u2223\u2222\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2225\u2224\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u2227\u2226\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u2221\u217E"+ + "\u0000\u0000\u0000\u217B\u0000\u0000\u217D\u217C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u227E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u217A\u2179\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u216A\u0000\u2169\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2276\u0000\u0000\u2275\u0000\u2274"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u2121\u2122\u2123\u2137\u0000\u2139\u213A\u213B"+ + "\u2152\u2153\u2154\u2155\u2156\u2157\u2158\u2159"+ + "\u215A\u215B\u2229\u222E\u214C\u214D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u2141\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u2421\u2422\u2423\u2424\u2425\u2426\u2427"+ + "\u2428\u2429\u242A\u242B\u242C\u242D\u242E\u242F"+ + "\u2430\u2431\u2432\u2433\u2434\u2435\u2436\u2437"+ + "\u2438\u2439\u243A\u243B\u243C\u243D\u243E\u243F"+ + "\u2440\u2441\u2442\u2443\u2444\u2445\u2446\u2447"+ + "\u2448\u2449\u244A\u244B\u244C\u244D\u244E\u244F"+ + "\u2450\u2451\u2452\u2453\u2454\u2455\u2456\u2457"+ + "\u2458\u2459\u245A\u245B\u245C\u245D\u245E\u245F"+ + "\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467"+ + "\u2468\u2469\u246A\u246B\u246C\u246D\u246E\u246F"+ + "\u2470\u2471\u2472\u2473\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u212B\u212C\u2135\u2136\u0000"+ + "\u0000\u2521\u2522\u2523\u2524\u2525\u2526\u2527"+ + "\u2528\u2529\u252A\u252B\u252C\u252D\u252E\u252F"+ + "\u2530\u2531\u2532\u2533\u2534\u2535\u2536\u2537"+ + "\u2538\u2539\u253A\u253B\u253C\u253D\u253E\u253F"+ + "\u2540\u2541\u2542\u2543\u2544\u2545\u2546\u2547"+ + "\u2548\u2549\u254A\u254B\u254C\u254D\u254E\u254F"+ + "\u2550\u2551\u2552\u2553\u2554\u2555\u2556\u2557"+ + "\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F"+ + "\u2560\u2561\u2562\u2563\u2564\u2565\u2566\u2567"+ + "\u2568\u2569\u256A\u256B\u256C\u256D\u256E\u256F"+ + "\u2570\u2571\u2572\u2573\u2574\u2575\u2576\u0000"+ + "\u0000\u0000\u0000\u2126\u213C\u2133\u2134\u0000"+ + "\u306C\u437A\u0000\u3C37\u0000\u0000\u0000\u4B7C"+ + "\u3E66\u3B30\u3E65\u323C\u0000\u4954\u4D3F\u0000"+ + "\u5022\u312F\u0000\u0000\u336E\u5023\u4024\u5242"+ + "\u3556\u4A3A\u0000\u0000\u0000\u0000\u3E67\u0000"+ + "\u0000\u4E3E\u0000\u0000\u0000\u0000\u4A42\u0000"+ + "\u0000\u0000\u5024\u0000\u0000\u4366\u0000\u0000"+ + "\u0000\u5025\u367A\u0000\u0000\u0000\u5026\u0000"+ + "\u345D\u4330\u0000\u3C67\u5027\u0000\u0000\u5028"+ + "\u0000\u0000\u5029\u4735\u0000\u3557\u0000\u0000"+ + "\u0000\u0000\u0000\u4737\u0000\u4663\u3843\u4B33"+ + "\u0000\u0000\u0000\u0000\u0000\u6949\u502A\u3E68"+ + "\u502B\u3235\u0000\u0000\u0000\u3665\u3870\u4C69"+ + "\u0000\u0000\u5626\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4D70\u0000\u467D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3425\u0000"+ + "\u3535\u0000\u502C\u0000\u0000\u502D\u4E3B\u0000"+ + "\u4D3D\u4168\u502F\u3B76\u4673\u0000\u5032\u0000"+ + "\u0000\u313E\u385F\u0000\u385E\u3066\u0000\u0000"+ + "\u4F4B\u4F4A\u0000\u3A33\u3021\u0000\u5033\u5034"+ + "\u5035\u4B34\u5036\u0000\u3872\u3067\u4B72\u0000"+ + "\u357C\u0000\u0000\u357D\u357E\u4462\u4E3C\u0000"+ + "\u5037\u0000\u0000\u5038\u0000\u0000\u5039\u0000"+ + "\u0000\u0000\u3F4D\u0000\u0000\u0000\u0000\u0000"+ + "\u3D3A\u3F4E\u503E\u0000\u503C\u0000\u503D\u3558"+ + "\u0000\u0000\u3A23\u3270\u0000\u503B\u503A\u4A29"+ + "\u0000\u0000\u0000\u0000\u3B46\u3B45\u423E\u503F"+ + "\u4955\u4067\u0000\u0000\u0000\u2138\u5040\u5042"+ + "\u0000\u0000\u0000\u4265\u4E61\u304A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5041\u323E\u0000"+ + "\u3644\u0000\u4367\u0000\u0000\u0000\u376F\u5043"+ + "\u0000\u0000\u0000\u4724\u0000\u0000\u0000\u0000"+ + "\u0000\u346B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5044\u304B\u0000\u0000\u3860\u346C\u497A"+ + "\u4832\u3559\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3271\u0000\u5067\u4541\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u476C"+ + "\u5046\u0000\u0000\u0000\u483C\u0000\u4E62\u0000"+ + "\u3F2D\u0000\u3B47\u0000\u3B77\u3240\u0000\u0000"+ + "\u0000\u0000\u0000\u4451\u0000\u0000\u4322\u504A"+ + "\u0000\u0000\u0000\u0000\u0000\u304C\u4463\u3D3B"+ + "\u3A34\u4D24\u0000\u424E\u0000\u323F\u0000\u5049"+ + "\u0000\u4D3E\u5045\u5047\u3A6E\u5048\u5524\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5050\u0000\u0000\u0000\u0000\u0000\u5053"+ + "\u5051\u0000\u0000\u3242\u0000\u4A3B\u504B\u0000"+ + "\u0000\u0000\u0000\u504F\u3873\u0000\u0000\u3B48"+ + "\u0000\u0000\u0000\u3426\u0000\u0000\u5054\u0000"+ + "\u504C\u0000\u0000\u4E63\u0000\u3B78\u0000\u504D"+ + "\u0000\u5052\u0000\u0000\u0000\u0000\u5055\u0000"+ + "\u504E\u0000\u0000\u3621\u0000\u304D\u0000\u0000"+ + "\u3622\u3241\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5525\u0000\u4B79\u496E\u3874"+ + "\u0000\u0000\u0000\u0000\u0000\u3F2F\u4E37\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4A58"+ + "\u0000\u0000\u3738\u4225\u3264\u0000\u0000\u0000"+ + "\u0000\u0000\u3D53\u0000\u0000\u0000\u5059\u0000"+ + "\u505E\u505C\u0000\u0000\u5057\u0000\u0000\u422F"+ + "\u505A\u0000\u505D\u505B\u0000\u4A5D\u0000\u5058"+ + "\u0000\u3F2E\u0000\u4B73\u505F\u5060\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3D24\u506D"+ + "\u0000\u0000\u0000\u4750\u0000\u4936\u5068\u0000"+ + "\u4A70\u0000\u3236\u0000\u0000\u0000\u506C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5066\u506F\u0000"+ + "\u0000\u4152\u0000\u3844\u0000\u475C\u0000\u6047"+ + "\u0000\u506E\u455D\u0000\u5063\u0000\u3876\u0000"+ + "\u0000\u3875\u5061\u0000\u0000\u0000\u0000\u3C5A"+ + "\u0000\u5069\u0000\u4A6F\u434D\u5065\u3771\u0000"+ + "\u5062\u506A\u5064\u4E51\u506B\u4F41\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3666\u0000"+ + "\u0000\u3770\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5070\u0000\u0000\u0000\u5071"+ + "\u5075\u304E\u0000\u0000\u0000\u0000\u0000\u4A50"+ + "\u5074\u0000\u0000\u0000\u0000\u5073\u5077\u0000"+ + "\u0000\u0000\u5076\u0000\u4464\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3772\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5078\u0000\u0000\u0000"+ + "\u0000\u0000\u3C45\u0000\u4226\u4465\u3676\u0000"+ + "\u5079\u0000\u0000\u0000\u0000\u3536\u0000\u0000"+ + "\u507A\u0000\u0000\u0000\u0000\u507C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4B35\u0000\u0000"+ + "\u0000\u3766\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3B31\u4877\u507B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3A45\u4D43\u0000\u0000"+ + "\u0000\u0000\u507E\u5123\u507D\u3A44\u0000\u3D7D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3739\u0000"+ + "\u0000\u0000\u5124\u0000\u0000\u364F\u0000\u0000"+ + "\u0000\u5121\u5122\u0000\u0000\u462F\u0000\u417C"+ + "\u0000\u3623\u0000\u0000\u0000\u4B4D\u5125\u0000"+ + "\u0000\u0000\u4E3D\u0000\u0000\u0000\u5126\u0000"+ + "\u0000\u0000\u0000\u5129\u0000\u5127\u0000\u414E"+ + "\u0000\u0000\u0000\u0000\u0000\u5128\u512A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u512C\u0000\u0000"+ + "\u0000\u512B\u0000\u4A48\u0000\u0000\u0000\u0000"+ + "\u3537\u512E\u512F\u0000\u322F\u0000\u0000\u0000"+ + "\u0000\u512D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3C74\u0000\u5132\u5131\u5130\u0000"+ + "\u5056\u0000\u5133\u0000\u0000\u0000\u0000\u3D7E"+ + "\u0000\u5134\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4D25\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4C59\u0000\u0000\u0000\u0000\u5136"+ + "\u0000\u0000\u5135\u5138\u5137\u0000\u0000\u5139"+ + "\u513A\u3074\u0000\u3835\u373B\u3D3C\u437B\u3624"+ + "\u4068\u3877\u0000\u396E\u513C\u4C48\u4546\u0000"+ + "\u3B79\u0000\u513B\u0000\u513D\u0000\u0000\u0000"+ + "\u0000\u0000\u455E\u0000\u3375\u0000\u0000\u0000"+ + "\u0000\u0000\u513E\u0000\u0000\u467E\u0000\u0000"+ + "\u4134\u5140\u5141\u482C\u3878\u4F3B\u5142\u0000"+ + "\u0000\u3626\u0000\u0000\u0000\u4A3C\u4236\u3671"+ + "\u4535\u0000\u0000\u0000\u3773\u0000\u0000\u0000"+ + "\u5143\u0000\u5144\u0000\u0000\u4662\u315F\u0000"+ + "\u0000\u5147\u3A7D\u0000\u5146\u3A46\u0000\u5148"+ + "\u666E\u5149\u4B41\u514A\u0000\u514B\u514C\u3E69"+ + "\u0000\u3C4C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3427\u0000\u514F\u0000\u514D\u4C3D\u514E\u0000"+ + "\u495A\u5150\u5151\u5152\u455F\u0000\u0000\u0000"+ + "\u5156\u5154\u5155\u5153\u3A63\u5157\u4C6A\u4E64"+ + "\u0000\u0000\u0000\u0000\u0000\u5158\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4028\u5159\u3D5A\u0000"+ + "\u0000\u515A\u0000\u437C\u4E3F\u4560\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5245\u0000"+ + "\u0000\u0000\u0000\u515B\u7425\u3645\u0000\u0000"+ + "\u515C\u4B5E\u0000\u0000\u0000\u0000\u3D68\u427C"+ + "\u0000\u515E\u4664\u0000\u0000\u515F\u0000\u0000"+ + "\u5160\u332E\u0000\u0000\u0000\u5161\u3627\u0000"+ + "\u464C\u317A\u3D50\u0000\u0000\u4821\u5162\u0000"+ + "\u4561\u0000\u0000\u3F4F\u5163\u0000\u4A2C\u405A"+ + "\u3422\u0000\u3429\u5164\u0000\u0000\u5166\u0000"+ + "\u0000\u373A\u0000\u0000\u5165\u0000\u0000\u4E73"+ + "\u0000\u0000\u0000\u0000\u0000\u3D69\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u483D\u4A4C\u0000\u5167"+ + "\u0000\u4D78\u5168\u0000\u0000\u0000\u5169\u0000"+ + "\u457E\u0000\u0000\u516A\u0000\u0000\u4029\u3A7E"+ + "\u3774\u516B\u3B49\u396F\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4466\u516D\u0000\u0000\u4227"+ + "\u0000\u0000\u3A6F\u516E\u516F\u4130\u0000\u516C"+ + "\u0000\u0000\u0000\u0000\u5171\u0000\u4B36\u0000"+ + "\u0000\u0000\u0000\u3964\u0000\u0000\u5170\u0000"+ + "\u0000\u0000\u0000\u3775\u3A5E\u476D\u0000\u0000"+ + "\u0000\u5174\u5172\u0000\u0000\u0000\u0000\u497B"+ + "\u3E6A\u517B\u3364\u5175\u5173\u414F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5177\u0000\u5176"+ + "\u0000\u0000\u0000\u3344\u0000\u0000\u0000\u3760"+ + "\u517C\u4E2D\u0000\u0000\u0000\u5178\u0000\u0000"+ + "\u0000\u517D\u517A\u0000\u5179\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4E4F\u0000\u0000\u0000\u3879"+ + "\u3243\u0000\u0000\u4E74\u0000\u0000\u0000\u0000"+ + "\u0000\u3D75\u4558\u3965\u5222\u5223\u0000\u0000"+ + "\u0000\u4E65\u0000\u0000\u4F2B\u5225\u0000\u0000"+ + "\u0000\u387A\u0000\u0000\u5224\u0000\u332F\u0000"+ + "\u0000\u5226\u0000\u4B56\u0000\u443C\u0000\u4D26"+ + "\u0000\u4A59\u0000\u0000\u0000\u5227\u0000\u0000"+ + "\u0000\u0000\u7055\u0000\u0000\u4630\u0000\u5228"+ + "\u342A\u4C33\u0000\u0000\u0000\u3E21\u5229\u4A67"+ + "\u522D\u0000\u402A\u522A\u3650\u0000\u522B\u342B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u372E\u522E\u0000\u522F\u0000\u0000"+ + "\u5230\u5231\u3C5B\u0000\u0000\u0000\u387B\u4C5E"; + + private final static String innerIndex1= + "\u0000\u4C68\u4677\u0000\u0000\u4A71\u5232\u0000"+ + "\u5233\u0000\u0000\u0000\u0000\u5235\u0000\u5237"+ + "\u5236\u0000\u0000\u0000\u0000\u5238\u323D\u4B4C"+ + "\u0000\u3A7C\u5239\u0000\u0000\u4159\u0000\u0000"+ + "\u3E22\u3629\u0000\u523A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u485B\u0000\u0000\u0000\u0000\u523B"+ + "\u0000\u523C\u0000\u523D\u0000\u0000\u0000\u0000"+ + "\u523E\u4924\u3668\u3065\u0000\u0000\u0000\u463F"+ + "\u523F\u3D3D\u0000\u4069\u0000\u5241\u5240\u3E23"+ + "\u3861\u5243\u483E\u0000\u0000\u5244\u0000\u0000"+ + "\u0000\u485C\u4234\u426E\u3628\u0000\u0000\u466E"+ + "\u4331\u0000\u476E\u0000\u4B4E\u0000\u5246\u0000"+ + "\u406A\u0000\u0000\u0000\u0000\u0000\u3735\u0000"+ + "\u0000\u5247\u0000\u0000\u0000\u0000\u5248\u312C"+ + "\u3075\u346D\u0000\u4228\u3551\u4D71\u0000\u524B"+ + "\u3237\u0000\u0000\u524A\u0000\u0000\u0000\u362A"+ + "\u0000\u0000\u524C\u0000\u4C71\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u524D\u0000"+ + "\u4E52\u0000\u387C\u0000\u0000\u0000\u0000\u3836"+ + "\u524E\u0000\u0000\u0000\u0000\u5250\u524F\u0000"+ + "\u3F5F\u3139\u0000\u0000\u0000\u315E\u5251\u0000"+ + "\u5252\u0000\u0000\u3837\u0000\u0000\u5253\u0000"+ + "\u0000\u0000\u0000\u356E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3B32\u5254\u0000\u0000\u0000\u0000"+ + "\u4B74\u3A35\u355A\u4D27\u4150\u483F\u3C7D\u0000"+ + "\u0000\u0000\u0000\u0000\u3D47\u0000\u3C68\u3C75"+ + "\u0000\u3D76\u0000\u4840\u0000\u0000\u0000\u5257"+ + "\u0000\u3143\u4151\u387D\u3845\u3667\u0000\u0000"+ + "\u525B\u4321\u427E\u362B\u3E24\u525C\u525A\u3244"+ + "\u4266\u3C38\u3B4B\u3126\u0000\u0000\u3370\u3966"+ + "\u3B4A\u0000\u525D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u525E\u0000\u3549\u3346\u0000\u0000\u0000"+ + "\u3967\u3548\u445F\u3125\u4631\u4C3E\u3921\u4D79"+ + "\u4547\u387E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u372F\u0000\u5267\u0000\u3663"+ + "\u4B4A\u0000\u0000\u0000\u0000\u0000\u485D\u0000"+ + "\u0000\u5266\u0000\u345E\u5261\u5262\u5264\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5265\u0000"+ + "\u355B\u3F61\u0000\u4A2D\u5263\u525F\u3863\u0000"+ + "\u5260\u0000\u4F24\u0000\u0000\u0000\u4A72\u0000"+ + "\u4468\u3862\u3970\u0000\u0000\u0000\u5268\u0000"+ + "\u0000\u465D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u526C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3C7E\u0000\u3C76\u0000\u0000\u0000\u0000\u0000"+ + "\u526F\u526D\u0000\u4C23\u0000\u526A\u5273\u526E"+ + "\u0000\u0000\u0000\u5271\u3846\u4C3F\u0000\u0000"+ + "\u5272\u0000\u0000\u0000\u5274\u0000\u5276\u0000"+ + "\u0000\u0000\u0000\u3A70\u4F42\u0000\u526B\u5269"+ + "\u5275\u0000\u5270\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5278\u0000\u5323\u527A\u0000\u0000"+ + "\u527E\u0000\u0000\u5321\u527B\u0000\u0000\u533E"+ + "\u0000\u0000\u3A69\u3331\u0000\u0000\u0000\u0000"+ + "\u5279\u0000\u0000\u0000\u5325\u3076\u5324\u0000"+ + "\u3025\u494A\u5322\u0000\u527C\u0000\u0000\u5277"+ + "\u527D\u3A48\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5326\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3077\u532F\u0000\u0000\u5327\u5328\u0000"+ + "\u3E25\u4B69\u0000\u0000\u0000\u532D\u532C\u0000"+ + "\u0000\u0000\u452F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u532E\u0000\u0000\u532B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3134\u0000\u3A36\u3F30"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5329"+ + "\u4562\u0000\u0000\u0000\u532A\u0000\u3022\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5334\u4D23"+ + "\u0000\u3E27\u0000\u533A\u0000\u0000\u0000\u0000"+ + "\u5339\u5330\u0000\u0000\u0000\u0000\u4243\u0000"+ + "\u5331\u0000\u0000\u0000\u426F\u5336\u3E26\u0000"+ + "\u0000\u0000\u0000\u0000\u5333\u0000\u0000\u4C64"+ + "\u0000\u0000\u0000\u373C\u0000\u0000\u5337\u5338"+ + "\u0000\u0000\u0000\u0000\u5335\u533B\u0000\u0000"+ + "\u0000\u0000\u0000\u5332\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5341\u5346\u0000\u5342\u0000"+ + "\u533D\u0000\u0000\u5347\u4131\u0000\u0000\u5349"+ + "\u0000\u3922\u533F\u437D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5343\u533C\u342D\u0000\u346E\u3365\u5344\u5340"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3776"+ + "\u534A\u5348\u4153\u354A\u362C\u0000\u5345\u0000"+ + "\u3674\u0000\u0000\u0000\u0000\u0000\u3144\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u534E\u534C\u0000\u5427"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5351\u0000\u0000\u0000"+ + "\u0000\u0000\u534B\u0000\u534F\u0000\u0000\u534D"+ + "\u0000\u0000\u0000\u3B4C\u5350\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5353"+ + "\u0000\u5358\u0000\u0000\u0000\u5356\u5355\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4332\u0000"+ + "\u0000\u3245\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5352\u0000\u5354\u3E28"+ + "\u3133\u0000\u0000\u5357\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u325E\u0000\u0000\u0000\u0000\u0000\u5362"+ + "\u0000\u3E7C\u535E\u0000\u535C\u0000\u535D\u0000"+ + "\u535F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u313D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4139\u0000\u5359\u0000"+ + "\u535A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u337A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5361\u0000\u0000\u0000"+ + "\u346F\u0000\u5364\u5360\u5363\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4A2E\u0000\u0000\u0000"+ + "\u4655\u0000\u4838\u0000\u0000\u0000\u0000\u0000"+ + "\u5366\u0000\u0000\u0000\u0000\u0000\u5365\u3345"+ + "\u0000\u0000\u5367\u0000\u0000\u0000\u0000\u536A"+ + "\u0000\u0000\u0000\u0000\u5369\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5368\u0000\u4739\u0000\u0000\u536B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u536C\u0000"+ + "\u0000\u0000\u0000\u0000\u536E\u0000\u536D\u0000"+ + "\u0000\u0000\u0000\u0000\u5370\u0000\u0000\u0000"+ + "\u5373\u5371\u536F\u5372\u0000\u0000\u0000\u0000"+ + "\u5374\u0000\u0000\u0000\u0000\u0000\u5375\u0000"+ + "\u0000\u5376\u0000\u5377\u0000\u0000\u0000\u5378"+ + "\u5145\u0000\u3C7C\u3B4D\u0000\u0000\u3273\u0000"+ + "\u3078\u0000\u0000\u4344\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5379\u0000"+ + "\u3A24\u0000\u304F\u3F5E\u0000\u0000\u0000\u0000"+ + "\u0000\u537A\u3847\u0000\u0000\u3971\u0000\u537C"+ + "\u537B\u0000\u0000\u4A60\u537D\u0000\u0000\u0000"+ + "\u5421\u537E\u0000\u5422\u0000\u5423\u0000\u3777"+ + "\u0000\u0000\u3160\u5424\u0000\u0000\u5426\u0000"+ + "\u5425\u0000\u0000\u0000\u5428\u0000\u0000\u455A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5429\u3035"+ + "\u3A5F\u0000\u0000\u0000\u0000\u373D\u0000\u0000"+ + "\u434F\u0000\u0000\u0000\u0000\u0000\u0000\u542A"+ + "\u542B\u0000\u0000\u542D\u0000\u0000\u0000\u0000"+ + "\u542E\u0000\u3A64\u0000\u0000\u0000\u0000\u3651"+ + "\u0000\u0000\u4B37\u0000\u0000\u0000\u542C\u542F"+ + "\u3A41\u3923\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5433\u0000\u0000\u3A25\u0000\u4333\u0000"+ + "\u0000\u5430\u445A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5434"+ + "\u0000\u0000\u3F62\u0000\u0000\u0000\u0000\u0000"+ + "\u5432\u5435\u0000\u373F\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5436\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5437\u0000\u3924\u3340\u5439\u0000\u0000\u0000"+ + "\u0000\u0000\u543A\u0000\u0000\u0000\u0000\u0000"+ + "\u543B\u0000\u0000\u5438\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5431\u0000\u0000\u543C\u0000\u0000\u543D\u0000"+ + "\u0000\u0000\u0000\u4B64\u0000\u0000\u3E6B\u0000"+ + "\u0000\u0000\u543F\u5440\u543E\u0000\u5442\u0000"+ + "\u0000\u0000\u0000\u0000\u4738\u0000\u0000\u3068"+ + "\u4956\u0000\u0000\u5443\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3E7D\u0000\u0000\u3C39"+ + "\u0000\u475D\u3470\u0000\u3A6B\u0000\u0000\u0000"+ + "\u4B59\u0000\u4632\u0000\u0000\u3778\u424F\u0000"+ + "\u0000\u0000\u5441\u5444\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4244\u0000\u0000"+ + "\u0000\u5445\u0000\u0000\u0000\u5446\u0000\u0000"+ + "\u0000\u5448\u0000\u0000\u4469\u0000\u0000\u0000"+ + "\u0000\u0000\u342E\u0000\u0000\u0000\u0000\u7421"+ + "\u3161\u4A73\u0000\u0000\u3E6C\u4548\u0000\u0000"+ + "\u0000\u0000\u3A66\u0000\u0000\u544E\u0000\u0000"+ + "\u4A3D\u4E5D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3274\u544A\u0000\u0000\u0000\u0000"+ + "\u0000\u413A\u544D\u0000\u4563\u0000\u0000\u4549"+ + "\u4564\u4839\u444D\u0000\u0000\u0000\u3A49\u0000"+ + "\u0000\u0000\u5449\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3176\u0000\u4536\u0000\u0000\u0000\u0000"+ + "\u544B\u0000\u5447\u0000\u0000\u3F50\u0000\u0000"+ + "\u0000\u544F\u0000\u0000\u0000\u0000\u3D4E\u0000"+ + "\u0000\u0000\u0000\u362D\u0000\u5450\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A68\u0000\u0000\u0000\u417D"+ + "\u0000\u0000\u0000\u0000\u4446\u0000\u0000\u5452"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4B4F\u0000\u0000\u5453\u0000\u0000\u5458\u0000"+ + "\u0000\u0000\u0000\u4A2F\u0000\u0000\u0000\u0000"+ + "\u5457\u5451\u5454\u5456\u0000\u0000\u3A26\u0000"+ + "\u0000\u4A49\u0000\u0000\u0000\u5459\u0000\u4345"+ + "\u0000\u0000\u3275\u0000\u3E6D\u0000\u0000\u0000"+ + "\u0000\u545B\u0000\u545A\u0000\u3968\u0000\u545C"+ + "\u545E\u545D\u0000\u0000\u5460\u0000\u5455\u5462"+ + "\u0000\u0000\u0000\u0000\u5461\u545F\u0000\u0000"+ + "\u0000\u0000\u0000\u3B4E\u3F51\u0000\u4154\u5463"+ + "\u403C\u306D\u4764\u0000\u0000\u0000\u0000\u445B"+ + "\u0000\u5465\u5464\u5466\u5467\u5468\u0000\u0000"+ + "\u0000\u0000\u5469\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4A51\u546A\u0000\u0000\u0000\u0000\u3246"+ + "\u546B\u0000\u0000\u0000\u0000\u4D3C\u3330\u0000"+ + "\u5249\u3D48\u423F\u546C\u4C6B\u0000\u0000\u0000"+ + "\u0000\u0000\u4C34\u0000\u0000\u546E\u0000\u4267"+ + "\u0000\u4537\u4240\u4957\u546F\u5470\u317B\u0000"+ + "\u0000\u3C3A\u5471\u0000\u0000\u0000\u0000\u3050"+ + "\u5472\u0000\u0000\u0000\u0000\u0000\u5473\u0000"+ + "\u0000\u0000\u0000\u0000\u3162\u0000\u0000\u3471"+ + "\u4660\u4A74\u0000\u0000\u0000\u0000\u5477\u4155"+ + "\u5476\u3740\u0000\u0000\u4B5B\u5475\u0000\u4565"+ + "\u5479\u0000\u5478\u0000\u0000\u0000\u0000\u0000"+ + "\u547B\u0000\u547A\u0000\u0000\u317C\u0000\u547C"+ + "\u3E29\u547E\u4325\u0000\u547D\u0000\u4A33\u0000"+ + "\u0000\u0000\u0000\u3D77\u455B\u0000\u0000\u0000"+ + "\u5521\u0000\u0000\u0000\u0000\u3925\u0000\u0000"+ + "\u0000\u5522\u4721\u485E\u4C51\u0000\u0000\u0000"+ + "\u0000\u0000\u4725\u0000\u0000\u552B\u0000\u0000"+ + "\u0000\u0000\u0000\u3538\u0000\u0000\u4D45\u0000"+ + "\u0000\u4C2F\u0000\u562C\u0000\u5523\u0000\u0000"+ + "\u0000\u0000\u0000\u5526\u0000\u4245\u0000\u0000"+ + "\u4B38\u0000\u0000\u0000\u454A\u0000\u0000\u0000"+ + "\u0000\u0000\u5527\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4B65\u0000\u3A4A\u0000\u0000\u3E2A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5528\u0000"+ + "\u0000\u3B50\u0000\u3B4F\u0000\u0000\u0000\u0000"+ + "\u3039\u3848\u0000\u402B\u3051\u0000\u0000\u0000"+ + "\u0000\u552C\u552D\u0000\u552A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3138\u342F\u0000"+ + "\u5529\u0000\u4C45\u4931\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3028\u0000"+ + "\u0000\u0000\u0000\u3079\u0000\u0000\u0000\u3B51"+ + "\u0000\u3052\u0000\u3023\u0000\u0000\u0000\u0000"+ + "\u0000\u5532\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5530\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4C3C\u0000\u5533\u0000\u5531\u0000\u0000\u552F"+ + "\u3F31\u0000\u0000\u0000\u0000\u552E\u0000\u0000"+ + "\u0000\u4A5A\u0000\u0000\u0000\u0000\u0000\u3864"+ + "\u0000\u0000\u0000\u0000\u0000\u5537\u5538\u0000"+ + "\u0000\u0000\u0000\u0000\u3E2B\u0000\u0000\u0000"+ + "\u5534\u4F2C\u0000\u0000\u0000\u0000\u474C\u0000"+ + "\u0000\u5536\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3A27\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5539\u0000\u0000\u0000\u4958\u0000"+ + "\u0000\u0000\u553A\u0000\u5535\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4C3B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u475E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u553B\u4932\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u553C\u5540\u553D\u0000"+ + "\u0000\u3247\u553F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3C3B\u0000\u553E\u3779\u0000\u0000\u0000"+ + "\u554C\u0000\u0000\u0000\u0000\u0000\u5545\u5542"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4364\u0000\u5541\u0000\u0000\u5543\u0000"+ + "\u0000\u5544\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5546\u5547\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3472\u0000\u5549\u5548\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u554A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3E6E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u554D\u0000\u445C\u0000\u0000\u0000"+ + "\u3145\u0000\u554B\u0000\u0000\u0000\u554E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u554F\u0000"+ + "\u5552\u0000\u0000\u5550\u0000\u5551\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3B52\u5553\u0000\u0000\u3926\u5554\u0000\u3B7A"+ + "\u4238\u0000\u5555\u5556\u3B5A\u3927\u0000\u4C52"+ + "\u0000\u0000\u0000\u3528\u3849\u5557\u3358\u0000"+ + "\u0000\u5558\u0000\u4239\u0000\u0000\u0000\u0000"+ + "\u5559\u5623\u0000\u555A\u0000\u555B\u0000\u0000"+ + "\u555C\u0000\u555E\u0000\u0000\u0000\u0000\u0000"+ + "\u555F\u0000\u0000\u5560\u0000\u4270\u0000\u3127"+ + "\u3C69\u3042\u0000\u4157\u3430\u3C35\u0000\u3928"+ + "\u0000\u0000\u0000\u0000\u0000\u4566\u0000\u3D21"+ + "\u3431\u4368\u446A\u3038\u3539\u4A75\u0000\u3C42"+ + "\u0000\u0000\u3552\u406B\u3C3C\u4D28\u5561\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u355C\u0000"+ + "\u3A4B\u0000\u0000\u3332\u3163\u3E2C\u3248\u0000"+ + "\u5562\u4D46\u0000\u0000\u0000\u0000\u0000\u3D49"+ + "\u0000\u0000\u3C64\u5563\u3473\u4652\u4C29\u5564"+ + "\u0000\u5565\u0000\u0000\u4959\u0000\u0000\u0000"+ + "\u5567\u0000\u3428\u3677\u5566\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3432\u0000\u3F32\u556B\u3B21"+ + "\u0000\u3249\u556A\u0000\u5568\u556C\u5569\u472B"+ + "\u5C4D\u3F33\u0000\u556D\u0000\u0000\u4E40\u0000"+ + "\u556E\u0000\u0000\u5570\u0000\u437E\u556F\u0000"+ + "\u4023\u0000\u3B7B\u0000\u0000\u0000\u4250\u3C77"+ + "\u0000\u4975\u406C\u0000\u3C4D\u5571\u3E2D\u5572"+ + "\u5573\u3053\u423A\u3F52\u0000\u5574\u4633\u3E2E"+ + "\u0000\u3E2F\u0000\u5575\u0000\u0000\u406D\u0000"+ + "\u0000\u0000\u3E30\u0000\u0000\u0000\u0000\u0000"+ + "\u5576\u0000\u5577\u0000\u4C60\u0000\u0000\u0000"+ + "\u5578\u0000\u0000\u0000\u0000\u3646\u0000\u0000"+ + "\u0000\u3D22\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5579\u557A\u3C5C\u3F2C\u4674\u3F54\u4878\u4722"+ + "\u3649\u557B\u0000\u0000\u0000\u356F\u557C\u0000"+ + "\u367E\u0000\u464F\u3230\u0000\u3B53\u557D\u5622"+ + "\u5621\u367D\u0000\u557E\u0000\u4538\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4230\u0000"+ + "\u454B\u3C48\u0000\u0000\u4158\u4D7A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5624\u0000\u5625\u4656"+ + "\u0000\u3B33\u0000\u0000\u0000\u0000\u5627\u0000"+ + "\u0000\u5628\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5629\u0000\u0000\u0000"+ + "\u3474\u562A\u0000\u0000\u562B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u322C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u413B\u3464\u0000\u562D\u4C28\u0000\u0000\u0000"+ + "\u0000\u4252\u0000\u3359\u0000\u0000\u562F\u5631"+ + "\u345F\u0000\u0000\u562E\u5630\u0000\u5633\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5632\u0000\u5634"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5635\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u463D\u362E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3265\u5636\u563B\u0000\u0000\u5639\u0000\u4A77"+ + "\u4A76\u0000\u0000\u0000\u0000\u0000\u4567\u0000"+ + "\u0000\u0000\u5638\u3D54\u0000\u5637\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3F72"+ + "\u0000\u0000\u0000\u563C\u0000\u0000\u3A6A\u0000"+ + "\u0000\u5642\u0000\u0000\u5643\u563D\u3333\u563E"+ + "\u5647\u5646\u5645\u5641\u0000\u0000\u0000\u5640"+ + "\u0000\u0000\u5644\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4A78\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u564B\u5648\u0000\u564A\u0000"+ + "\u4D72\u0000\u5649\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u563F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3F73\u0000\u0000\u564C\u0000\u0000\u3A37"+ + "\u0000\u0000\u0000\u564D\u0000\u0000\u564E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5651\u0000\u5650\u0000\u0000\u564F"+ + "\u0000\u0000\u0000\u4568\u563A\u0000\u0000\u0000"+ + "\u5657\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5653\u0000\u0000"+ + "\u0000\u0000\u5652\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5654\u0000\u5655\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5658"+ + "\u0000\u0000\u4E66\u0000\u5659\u5656\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u565A\u0000\u0000\u3460\u565B\u0000\u0000"+ + "\u0000\u0000\u565D\u565C\u0000\u0000\u565E\u0000"+ + "\u0000\u0000\u0000\u565F\u0000\u406E\u3D23\u0000"+ + "\u0000\u3D64\u0000\u4163\u0000\u3929\u3A38\u392A"+ + "\u3570\u0000\u0000\u5660\u0000\u0000\u3A39\u0000"+ + "\u0000\u384A\u5661\u4C26\u4743\u5662\u0000\u392B"+ + "\u0000\u0000\u0000\u342C\u0000\u4327\u3652\u0000"+ + "\u0000\u0000\u3B54\u495B\u0000\u0000\u4841\u0000"+ + "\u0000\u0000\u0000\u5663\u3475\u0000\u0000\u0000"+ + "\u0000\u5666\u0000\u0000\u0000\u0000\u4421\u0000"+ + "\u0000\u5665\u5664\u5667\u0000\u446B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3F63\u0000\u0000"+ + "\u0000\u0000\u0000\u3B55\u0000\u404A\u0000\u4253"+ + "\u3522\u0000\u0000\u4422\u0000\u0000\u5668\u5669"+ + "\u3E6F\u0000\u0000\u0000\u0000\u4B39\u0000\u0000"+ + "\u566C\u0000\u0000\u566B\u566A\u497D\u0000\u5673"+ + "\u0000\u0000\u0000\u0000\u4B5A\u0000\u566D\u0000"+ + "\u0000\u0000\u0000\u0000\u566F\u4B6B\u0000\u566E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5670"+ + "\u0000\u4828\u5671\u4A3E\u5672\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3433\u4A3F\u472F\u5674\u5675\u0000"+ + "\u392C\u3434\u5676\u3838\u4D44\u4D29\u3476\u5678"+ + "\u0000\u4423\u0000\u392D\u3E31\u0000\u0000\u485F"+ + "\u0000\u0000\u3E32\u0000\u0000\u0000\u0000\u3D78"+ + "\u0000\u0000\u0000\u0000\u0000\u446C\u4A79\u4539"+ + "\u0000\u0000\u392E\u0000\u495C\u0000\u0000\u0000"+ + "\u5679\u0000\u0000\u0000\u0000\u0000\u4559\u3A42"+ + "\u0000\u0000\u0000\u384B\u0000\u446D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3043\u3D6E\u392F"+ + "\u4D47\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u567A\u567B\u4751\u0000\u0000\u0000\u0000"+ + "\u567C\u4E77\u4F2D\u0000\u0000\u0000\u0000\u567E"+ + "\u567D\u0000\u0000\u3347\u0000\u0000\u5721\u0000"+ + "\u0000\u0000\u5724\u5725\u0000\u5723\u0000\u4940"+ + "\u3E33\u5727\u5726\u5722\u0000\u0000\u0000\u0000"+ + "\u5728\u5729\u0000\u0000\u572A\u0000\u0000\u0000"+ + "\u572D\u572B\u0000\u572C\u572E\u0000\u3164\u446E"+ + "\u572F\u0000\u377A\u3276\u4736\u0000\u5730\u467B"+ + "\u0000\u4A5B\u0000\u5731\u4F2E\u0000\u0000\u0000"+ + "\u0000\u5732\u4A40\u5735\u5021\u5031\u0000\u3C30"+ + "\u4675\u5736\u0000\u355D\u4424\u307A\u5737\u4A26"+ + "\u3930\u0000\u0000\u4350\u0000\u0000\u0000\u446F"+ + "\u0000\u0000\u0000\u0000\u0000\u4C6F\u3839\u384C"+ + "\u0000\u5738\u0000\u0000\u0000\u5739\u0000\u573F"+ + "\u0000\u3C65\u0000\u0000\u0000\u4425\u0000\u362F"+ + "\u573A\u0000\u0000\u0000\u492B\u0000\u4346\u0000"+ + "\u0000\u573B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u573C\u0000\u3630\u0000\u573D\u0000\u573E\u0000"+ + "\u0000\u5740\u0000\u4576\u0000\u0000\u5741\u5742"+ + "\u0000\u5743\u0000\u0000\u5734\u5733\u0000\u0000"+ + "\u0000\u5744\u3741\u0000\u0000\u0000\u4927\u0000"+ + "\u0000\u3A4C\u4937\u4426\u494B\u5745\u0000\u0000"+ + "\u3E34\u3146\u0000\u5746\u0000\u0000\u0000\u5747"+ + "\u0000\u4C72\u0000\u0000\u4860\u0000\u0000\u574A"+ + "\u317D\u402C\u5749\u5748\u3742\u4254\u0000\u574E"+ + "\u574C\u0000\u574B\u4E27\u3865\u0000\u0000\u0000"+ + "\u3D79\u574D\u454C\u3D3E\u0000\u0000\u0000\u4640"+ + "\u5751\u5750\u0000\u0000\u0000\u0000\u574F\u0000"+ + "\u5752\u3866\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5753\u497C\u3D5B\u0000\u0000\u5754\u4879\u0000"+ + "\u0000\u0000\u0000\u4641\u4427\u0000\u0000\u0000"+ + "\u0000\u4530\u0000\u0000\u5755\u352B\u0000\u0000"+ + "\u0000\u0000\u0000\u3F34\u0000\u492C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3477\u4726\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5756\u3B56"+ + "\u4B3A\u4B3B\u0000\u0000\u317E\u575B\u0000\u0000"+ + "\u4369\u0000\u0000\u0000\u5758\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3277\u0000\u0000\u0000\u0000"+ + "\u582D\u575A\u0000\u0000\u0000\u4730\u0000\u0000"+ + "\u5759\u0000\u0000\u5757\u0000\u397A\u0000\u575D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5763\u5769"+ + "\u5761\u0000\u455C\u0000\u0000\u5766\u495D\u0000"+ + "\u0000\u5760\u0000\u5765\u4E67\u3B57\u0000\u0000"+ + "\u4255\u575E\u0000\u0000\u0000\u355E\u5768\u402D"+ + "\u3165\u5762\u3278\u5767\u0000\u0000\u0000\u3631"+ + "\u0000\u5764\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u576A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u576C\u5776\u5774\u0000\u0000\u5771\u0000"+ + "\u0000\u0000\u5770\u4E78\u0000\u5772\u0000\u0000"+ + "\u3632\u0000\u3931\u0000\u0000\u3D7A\u0000\u0000"+ + "\u0000\u5779\u576B\u0000\u0000\u0000\u0000\u576F"+ + "\u575F\u0000\u327A\u5773\u5775\u4351\u0000\u0000"+ + "\u3A28\u3238\u576D\u5778\u5777\u3633\u0000\u4229"+ + "\u3366\u0000\u0000\u0000\u0000\u3743\u0000\u576E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u577A\u0000\u577D\u5821\u0000\u0000\u0000"+ + "\u0000\u3C3D\u0000\u5827\u4470\u577B\u0000\u0000"+ + "\u0000\u0000\u5825\u0000\u3279\u0000\u5823\u5824"+ + "\u0000\u0000\u577E\u5822\u0000\u0000\u0000\u3867"+ + "\u4D2A\u0000\u0000\u3435\u0000\u0000\u3159\u5826"+ + "\u0000\u473A\u302D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4861\u575C\u582C\u5830\u4C65\u0000"+ + "\u5829\u0000\u0000\u0000\u4569\u582E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3E70\u582F\u4657"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4F47\u0000\u582B\u0000\u0000\u0000\u0000"+ + "\u5831\u0000\u397B\u0000\u404B\u0000\u0000\u3054"+ + "\u582A\u5828\u0000\u415A\u0000\u0000\u0000\u577C"+ + "\u3B34\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4246\u583D\u0000\u415B\u5838\u0000\u5835\u5836"+ + "\u0000\u3C66\u5839\u583C\u0000\u0000\u0000\u0000"+ + "\u5837\u3D25\u0000\u583A\u0000\u0000\u5834\u0000"+ + "\u4C7C\u4C7B\u0000\u0000\u0000\u583E\u583F\u3055"+ + "\u0000\u0000\u0000\u0000\u0000\u5833\u0000\u0000"+ + "\u0000\u0000\u3672\u3026\u0000\u0000\u0000\u3436"+ + "\u0000\u583B\u0000\u0000\u0000\u0000\u0000\u5843"+ + "\u5842\u0000\u0000\u0000\u5847\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5848\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5846\u5849\u5841\u5845"+ + "\u0000\u0000\u584A\u0000\u584B\u0000\u0000\u5840"+ + "\u3B7C\u0000\u5844\u4256\u3932\u5832\u3F35\u0000"+ + "\u0000\u0000\u0000\u5858\u0000\u4A69\u0000\u0000"+ + "\u584E\u584F\u5850\u0000\u0000\u5857\u0000\u5856"+ + "\u0000\u0000\u4B7D\u3437\u0000\u5854\u0000\u3745"+ + "\u3334\u0000\u0000\u5851\u0000\u0000\u4E38\u5853"+ + "\u3056\u5855\u0000\u584C\u5852\u5859\u3744\u584D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4D5D\u0000"+ + "\u0000\u0000\u4D2B\u0000\u0000\u0000\u0000\u585C"+ + "\u0000\u0000\u5860\u0000\u0000\u0000\u417E\u0000"+ + "\u4E79\u5861\u0000\u0000\u585E\u0000\u585B\u0000"+ + "\u0000\u585A\u585F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4A30\u0000\u0000\u4634"+ + "\u0000\u3746\u0000\u5862\u585D\u0000\u5863\u0000"+ + "\u0000\u0000\u377B\u0000\u0000\u0000\u3231\u0000"+ + "\u0000\u0000\u586B\u0000\u0000\u0000\u3438\u0000"+ + "\u0000\u0000\u0000\u5869\u0000\u0000\u586A\u3A29"+ + "\u5868\u5866\u5865\u586C\u5864\u586E\u0000\u0000"+ + "\u327B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5870\u0000\u0000\u586F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4428\u0000\u5873\u0000\u5871\u5867"+ + "\u377C\u0000\u5872\u0000\u5876\u5875\u5877\u5874"+ + "\u5878\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5879\u587A\u4A6A\u0000\u587C\u587B\u3D3F\u0000"+ + "\u402E\u3266\u327C\u0000\u587D\u0000\u303F\u0000"+ + "\u0000\u0000\u404C\u587E\u0000\u6C43\u5921\u3761"+ + "\u0000\u5922\u0000\u0000\u0000\u0000\u406F\u0000"+ + "\u0000\u0000\u5923\u0000\u0000\u0000\u5924\u353A"+ + "\u5925\u0000\u5926\u5927\u4257\u0000\u0000\u0000"+ + "\u384D\u0000\u0000\u4C61\u0000\u0000\u0000\u4B3C"+ + "\u3D6A\u5928\u0000\u0000\u0000\u0000\u0000\u4070"+ + "\u6E3D\u4862\u0000\u3C6A\u0000\u3A4D\u5929\u0000"+ + "\u0000\u0000\u0000\u4247\u0000\u4A27\u0000\u0000"+ + "\u4271\u0000\u0000\u592C\u0000\u0000\u592A\u0000"+ + "\u592D\u0000\u0000\u592B\u0000\u0000\u0000\u0000"+ + "\u592E\u0000\u0000\u0000\u0000\u0000\u4A31\u0000"+ + "\u0000\u3037\u0000\u0000\u0000\u0000\u495E\u0000"+ + "\u0000\u4863\u0000\u0000\u592F\u0000\u5932\u3E35"+ + "\u353B\u0000\u5930\u5937\u3E36\u0000\u0000\u0000"+ + "\u0000\u5931\u4744\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4D5E\u5933\u5934\u5938\u456A\u5935\u3933"+ + "\u405E\u0000\u0000\u5946\u4834\u0000\u4272\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4864\u5A2D\u0000\u0000\u0000"+ + "\u0000\u4A7A\u0000\u0000\u0000\u4471\u0000\u0000"+ + "\u0000\u4B75\u0000\u593B\u3221\u436A\u0000\u0000"+ + "\u0000\u0000\u5944\u0000\u0000\u4334\u593E\u5945"+ + "\u5940\u5947\u5943\u0000\u5942\u476F\u0000\u593C"+ + "\u327D\u593A\u3571\u4273\u5936\u0000\u0000\u5939"+ + "\u3934\u405B\u0000\u3E37\u5941\u4752\u0000\u0000"+ + "\u3572\u3348\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3367\u3F21\u5949\u594E"+ + "\u0000\u594A\u0000\u377D\u0000\u594F\u3B22\u3969"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3D26\u593D"; + + private final static String innerIndex2= + "\u0000\u3B7D\u594C\u0000\u0000\u0000\u0000\u3B58"+ + "\u594D\u3044\u0000\u0000\u5948\u0000\u0000\u0000"+ + "\u0000\u4429\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3573\u0000\u0000\u0000\u0000\u0000\u3634"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u594B"+ + "\u3027\u0000\u0000\u3A43\u0000\u0000\u0000\u3F36"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4472\u0000\u0000\u4854\u5951\u415E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u422A\u0000\u0000\u3B2B\u5952\u0000\u5954"+ + "\u5950\u0000\u0000\u0000\u0000\u4A61\u0000\u443D"+ + "\u0000\u0000\u0000\u0000\u415C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4A7B"+ + "\u3C4E\u5960\u0000\u595F\u0000\u0000\u3F78\u0000"+ + "\u0000\u0000\u377E\u0000\u0000\u0000\u5959\u3E39"+ + "\u0000\u0000\u4668\u4731\u0000\u0000\u0000\u0000"+ + "\u5957\u0000\u0000\u415D\u0000\u0000\u0000\u0000"+ + "\u3C78\u595C\u0000\u0000\u3E38\u0000\u5956\u595B"+ + "\u0000\u0000\u4753\u0000\u0000\u0000\u5955\u0000"+ + "\u3721\u0000\u0000\u335D\u0000\u0000\u0000\u595D"+ + "\u4E2B\u3A4E\u4335\u595A\u0000\u405C\u0000\u3935"+ + "\u3F64\u3166\u413C\u5958\u3545\u0000\u0000\u0000"+ + "\u0000\u0000\u3747\u0000\u444F\u595E\u0000\u0000"+ + "\u0000\u0000\u0000\u415F\u0000\u0000\u5961\u0000"+ + "\u5963\u0000\u0000\u4237\u5969\u0000\u5964\u0000"+ + "\u0000\u5966\u0000\u0000\u0000\u0000\u0000\u4941"+ + "\u4473\u0000\u5967\u0000\u0000\u0000\u4D2C\u0000"+ + "\u0000\u0000\u4D48\u3439\u0000\u0000\u0000\u0000"+ + "\u0000\u302E\u0000\u5965\u0000\u0000\u0000\u0000"+ + "\u0000\u5962\u0000\u0000\u0000\u0000\u3478\u0000"+ + "\u0000\u0000\u0000\u0000\u3167\u0000\u5968\u0000"+ + "\u0000\u0000\u4D49\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u596C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u423B\u0000\u5973"+ + "\u0000\u0000\u0000\u596D\u0000\u0000\u596A\u5971"+ + "\u0000\u0000\u0000\u0000\u5953\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u596E\u0000"+ + "\u5972\u0000\u0000\u0000\u4842\u456B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u596B\u0000\u596F\u0000"+ + "\u0000\u0000\u3748\u0000\u0000\u0000\u3A71\u0000"+ + "\u0000\u0000\u405D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5977\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4526\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5974"+ + "\u0000\u4B60\u0000\u0000\u0000\u0000\u0000\u5975"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5976\u0000"+ + "\u4C4E\u0000\u4022\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3762\u0000\u0000\u0000\u0000"+ + "\u597D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3B35\u597A\u0000\u5979\u0000\u0000"+ + "\u0000\u0000\u4732\u0000\u0000\u0000\u4635\u0000"+ + "\u0000\u0000\u0000\u0000\u4531\u597B\u0000\u0000"+ + "\u0000\u597C\u0000\u496F\u0000\u4745\u3B23\u0000"+ + "\u4071\u0000\u4B50\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3349\u0000\u5A25\u597E\u0000\u0000\u0000"+ + "\u0000\u4D4A\u5A27\u0000\u0000\u5A23\u0000\u5A24"+ + "\u0000\u0000\u0000\u0000\u0000\u4160\u0000\u0000"+ + "\u0000\u0000\u5A22\u0000\u593F\u0000\u0000\u0000"+ + "\u5A26\u0000\u5A21\u0000\u0000\u0000\u0000\u0000"+ + "\u5A2B\u5A2C\u4527\u5A2E\u0000\u0000\u3B24\u5A29"+ + "\u0000\u0000\u0000\u0000\u353C\u0000\u0000\u5A2F"+ + "\u0000\u5A28\u5A33\u0000\u5A32\u0000\u5A31\u0000"+ + "\u0000\u0000\u5A34\u0000\u0000\u5A36\u3E71\u0000"+ + "\u5A35\u0000\u0000\u0000\u0000\u5A39\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5A37\u0000\u0000\u0000\u5A38\u5970\u0000\u0000"+ + "\u0000\u0000\u0000\u5A3B\u5A3A\u0000\u0000\u0000"+ + "\u0000\u0000\u5978\u5A3C\u5A30\u0000\u0000\u3B59"+ + "\u0000\u0000\u0000\u0000\u5A3D\u5A3E\u5A40\u5A3F"+ + "\u5A41\u327E\u0000\u3936\u0000\u0000\u4A7C\u402F"+ + "\u0000\u0000\u0000\u0000\u0000\u384E\u0000\u0000"+ + "\u5A43\u0000\u0000\u0000\u0000\u5A46\u0000\u4952"+ + "\u0000\u355F\u0000\u0000\u0000\u5A45\u5A44\u4754"+ + "\u5A47\u3635\u0000\u0000\u0000\u5A49\u5A48\u0000"+ + "\u0000\u0000\u343A\u3B36\u0000\u0000\u4658\u0000"+ + "\u0000\u0000\u0000\u0000\u3749\u0000\u0000\u0000"+ + "\u3F74\u0000\u5A4A\u0000\u4030\u4528\u0000\u495F"+ + "\u5A4B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5A4C\u5A4D\u0000\u0000\u0000\u4A38"+ + "\u555D\u4046\u0000\u0000\u494C\u0000\u3A58\u0000"+ + "\u4865\u4843\u0000\u0000\u0000\u0000\u0000\u454D"+ + "\u0000\u4E41\u0000\u5A4F\u3C50\u0000\u0000\u5A50"+ + "\u0000\u3036\u0000\u0000\u3654\u404D\u0000\u4960"+ + "\u0000\u0000\u0000\u5A51\u3B42\u4347\u0000\u3B5B"+ + "\u3F37\u0000\u0000\u0000\u0000\u0000\u0000\u5A52"+ + "\u0000\u4A7D\u0000\u0000\u3177\u3B5C\u0000\u0000"+ + "\u0000\u5A55\u0000\u5A53\u5A56\u4E39\u5A54\u0000"+ + "\u0000\u0000\u0000\u407B\u5A57\u0000\u0000\u4232"+ + "\u0000\u0000\u5A58\u0000\u0000\u0000\u0000\u347A"+ + "\u0000\u5A5A\u0000\u5A59\u0000\u0000\u0000\u0000"+ + "\u5A5B\u5A5C\u347B\u0000\u0000\u467C\u4336\u356C"+ + "\u3B5D\u4161\u0000\u0000\u3D5C\u3030\u0000\u0000"+ + "\u0000\u5A5D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3222\u5A61\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3937\u5A60\u0000\u0000\u3A2B\u3E3A"+ + "\u0000\u0000\u5A5F\u0000\u3E3B\u0000\u4C40\u3A2A"+ + "\u0000\u0000\u0000\u3057\u404E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5A66\u0000\u0000\u4031"+ + "\u3147\u0000\u0000\u0000\u0000\u3D55\u0000\u4B66"+ + "\u3A72\u0000\u0000\u0000\u0000\u3E3C\u0000\u4027"+ + "\u0000\u0000\u0000\u0000\u5A65\u5A63\u5A64\u0000"+ + "\u0000\u0000\u0000\u0000\u436B\u0000\u0000\u5B26"+ + "\u0000\u5A6A\u3B7E\u3938\u5A68\u0000\u0000\u0000"+ + "\u0000\u5A69\u0000\u3F38\u0000\u0000\u0000\u5A67"+ + "\u0000\u0000\u3B2F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5A6C\u5A6B\u5A70"+ + "\u0000\u0000\u5A71\u0000\u5A6D\u0000\u3322\u5A6E"+ + "\u5A6F\u4855\u0000\u0000\u0000\u0000\u4961\u374A"+ + "\u5A72\u0000\u0000\u0000\u4032\u0000\u3E3D\u0000"+ + "\u0000\u0000\u4352\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3647\u0000\u5A73\u5A77\u0000\u0000\u324B"+ + "\u5A74\u5A76\u0000\u0000\u0000\u0000\u5A75\u0000"+ + "\u0000\u3D6B\u0000\u0000\u0000\u0000\u4348\u3045"+ + "\u5A78\u0000\u0000\u0000\u0000\u5A79\u0000\u0000"+ + "\u0000\u0000\u442A\u0000\u0000\u0000\u4E71\u0000"+ + "\u0000\u0000\u0000\u3B43\u0000\u0000\u4A6B\u0000"+ + "\u0000\u0000\u0000\u0000\u4B3D\u0000\u0000\u0000"+ + "\u5B22\u5A7B\u0000\u0000\u5A7E\u0000\u5A7D\u0000"+ + "\u0000\u5A7A\u0000\u0000\u5B21\u0000\u0000\u465E"+ + "\u0000\u5A7C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5B23\u0000"+ + "\u0000\u3D6C\u5B24\u0000\u4D4B\u4778\u0000\u0000"+ + "\u5B25\u0000\u0000\u0000\u0000\u0000\u5B27\u0000"+ + "\u0000\u5B28\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5B29\u0000\u364A\u3148\u3939\u5B2A\u0000\u5B2B"+ + "\u3D71\u4162\u0000\u0000\u5258\u413E\u413D\u4258"+ + "\u3A47\u0000\u0000\u5072\u0000\u0000\u0000\u0000"+ + "\u376E\u4D2D\u0000\u4A7E\u0000\u497E\u0000\u5B2C"+ + "\u0000\u0000\u0000\u0000\u3A73\u443F\u5B2D\u4F2F"+ + "\u0000\u0000\u0000\u4B3E\u0000\u442B\u5B2E\u347C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5B2F\u5B30"+ + "\u4C5A\u0000\u4C24\u4B76\u4B5C\u3B25\u5B32\u0000"+ + "\u0000\u3C6B\u0000\u0000\u4B51\u0000\u5B34\u5B37"+ + "\u5B36\u0000\u3479\u0000\u0000\u3560\u0000\u5B33"+ + "\u0000\u5B35\u0000\u0000\u0000\u0000\u5B38\u0000"+ + "\u0000\u3F79\u0000\u0000\u0000\u0000\u4D7B\u3049"+ + "\u3A60\u423C\u0000\u3C5D\u0000\u0000\u3E73\u0000"+ + "\u0000\u5B3B\u0000\u0000\u454E\u0000\u5B39\u422B"+ + "\u5B3A\u3E72\u4C5D\u5B3C\u5B3D\u4D68\u0000\u0000"+ + "\u0000\u0000\u5B42\u0000\u0000\u393A\u0000\u4755"+ + "\u5B3F\u456C\u5A5E\u5A62\u0000\u354F\u0000\u4747"+ + "\u0000\u0000\u0000\u0000\u5B41\u0000\u3E3E\u4844"+ + "\u0000\u0000\u0000\u0000\u0000\u5B47\u0000\u487A"+ + "\u0000\u5B3E\u0000\u5B44\u5B43\u0000\u0000\u0000"+ + "\u404F\u0000\u0000\u0000\u0000\u4B6D\u0000\u4E53"+ + "\u0000\u0000\u4B67\u0000\u324C\u3B5E\u0000\u0000"+ + "\u4F48\u5B46\u3F75\u0000\u0000\u0000\u5B45\u0000"+ + "\u0000\u5B40\u0000\u0000\u0000\u0000\u0000\u384F"+ + "\u0000\u0000\u0000\u5B4C\u5B4A\u0000\u324D\u5B48"+ + "\u5B4E\u5B54\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4248\u0000\u0000\u4A41\u0000\u5B56\u0000"+ + "\u0000\u0000\u4922\u0000\u0000\u0000\u5B55\u4770"+ + "\u4B3F\u343B\u0000\u4077\u3D40\u0000\u0000\u0000"+ + "\u4453\u0000\u4D2E\u0000\u0000\u5B51\u5B50\u0000"+ + "\u0000\u0000\u5B52\u0000\u5B4F\u0000\u0000\u5B57"+ + "\u0000\u5B4D\u0000\u0000\u5B4B\u0000\u5B53\u5B49"+ + "\u0000\u436C\u0000\u4C78\u3C46\u3A74\u0000\u0000"+ + "\u0000\u0000\u0000\u3A3A\u0000\u0000\u4B6F\u3341"+ + "\u0000\u0000\u444E\u464A\u3149\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4072\u0000\u0000\u4034\u372A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5B59\u0000"+ + "\u0000\u393B\u337C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5B5B\u3374\u5B61\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5B5E\u0000\u4073\u0000\u0000\u0000"+ + "\u334B\u3A2C\u0000\u0000\u334A\u3A4F\u0000\u0000"+ + "\u5B5C\u3765\u374B\u456D\u0000\u0000\u5B5A\u0000"+ + "\u3046\u0000\u0000\u0000\u0000\u5B5D\u5B5F\u0000"+ + "\u364D\u372C\u0000\u343C\u354B\u0000\u0000\u0000"+ + "\u0000\u5B62\u0000\u0000\u3A79\u4B71\u0000\u3B37"+ + "\u0000\u0000\u0000\u5B63\u0000\u0000\u0000\u4930"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5B6F\u0000\u3233\u5B64"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5B75\u5B65"+ + "\u0000\u4E42\u0000\u5B6C\u0000\u475F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5B74\u0000\u5B67"+ + "\u0000\u0000\u0000\u3034\u5B69\u0000\u0000\u393C"+ + "\u0000\u0000\u0000\u5B6B\u0000\u5B6A\u0000\u5B66"+ + "\u5B71\u0000\u3E3F\u0000\u0000\u0000\u546D\u3868"+ + "\u4D7C\u0000\u0000\u0000\u0000\u5B68\u0000\u4474"+ + "\u3323\u3A2D\u0000\u5B60\u0000\u5B70\u3361\u0000"+ + "\u0000\u5B6E\u5B72\u0000\u456E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u347E\u0000\u5C32\u0000"+ + "\u0000\u4C49\u5B77\u347D\u0000\u5B7E\u0000\u0000"+ + "\u0000\u0000\u4B40\u0000\u5C21\u5C23\u0000\u5C27"+ + "\u5B79\u0000\u432A\u0000\u0000\u0000\u0000\u456F"+ + "\u5C2B\u5B7C\u0000\u5C28\u0000\u0000\u0000\u5C22"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3F39\u5C2C"+ + "\u0000\u0000\u4033\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5C2A\u343D\u0000\u0000\u0000\u0000\u0000"+ + "\u4F50\u5B76\u0000\u0000\u5C26\u3058\u0000\u0000"+ + "\u5B78\u0000\u0000\u4C3A\u5B7D\u3F22\u4447\u5B73"+ + "\u0000\u0000\u5C25\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3F7A\u5C2F\u3371\u3821\u0000\u0000\u0000"+ + "\u0000\u5C31\u5B7A\u5C30\u0000\u5C29\u5B7B\u0000"+ + "\u5C2D\u0000\u5C2E\u0000\u0000\u0000\u0000\u0000"+ + "\u5C3F\u0000\u0000\u0000\u464E\u0000\u5C24\u0000"+ + "\u0000\u5C3B\u0000\u0000\u0000\u5C3D\u0000\u4458"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4D4C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4976\u5C38\u424A\u0000\u0000"+ + "\u0000\u5C3E\u413F\u0000\u5C35\u5C42\u5C41\u0000"+ + "\u466F\u5C40\u466A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5C44\u5C37\u0000\u3648\u5C3A\u3D5D"+ + "\u0000\u0000\u0000\u4760\u5C3C\u364B\u0000\u5C34"+ + "\u5C36\u5C33\u0000\u0000\u4F30\u335A\u5C39\u0000"+ + "\u0000\u5C43\u3335\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3A67\u0000\u0000\u0000\u315D\u0000"+ + "\u0000\u5C54\u0000\u0000\u4F31\u5C57\u0000\u0000"+ + "\u0000\u0000\u0000\u3F3A\u5C56\u0000\u0000\u0000"+ + "\u5C55\u0000\u0000\u0000\u0000\u0000\u0000\u5C52"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5C46\u0000"+ + "\u0000\u5C63\u5C45\u0000\u5C58\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5C50\u0000\u0000\u5C4B\u5C48"+ + "\u0000\u5C49\u0000\u5C51\u0000\u0000\u0000\u7422"+ + "\u0000\u0000\u5C4E\u393D\u4448\u4164\u5C4C\u0000"+ + "\u5C47\u0000\u0000\u5C4A\u0000\u0000\u0000\u0000"+ + "\u4D4D\u4B6A\u0000\u0000\u0000\u5C4F\u5C59\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5C61"+ + "\u5C5A\u0000\u0000\u5C67\u0000\u5C65\u0000\u0000"+ + "\u0000\u0000\u5C60\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5C5F\u0000\u4450\u0000\u4165\u0000\u5C5D"+ + "\u0000\u0000\u5C5B\u0000\u0000\u5C62\u0000\u0000"+ + "\u0000\u0000\u5C68\u4875\u5C6E\u0000\u0000\u0000"+ + "\u0000\u0000\u5C69\u5C6C\u5C66\u0000\u0000\u4374"+ + "\u0000\u4938\u0000\u5C5C\u0000\u0000\u5C64\u3E40"+ + "\u0000\u4C4F\u5C78\u5C6B\u0000\u0000\u0000\u0000"+ + "\u0000\u3822\u3223\u335F\u0000\u0000\u5C53\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3E41\u5C70\u0000"+ + "\u5C77\u3C79\u3372\u0000\u0000\u432E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5C6D\u0000\u0000\u5C72"+ + "\u5C76\u0000\u0000\u3636\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u354C\u5C74\u0000\u0000\u0000\u0000\u0000\u3521"+ + "\u0000\u464B\u5C73\u0000\u0000\u0000\u5C75\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5C6F\u0000\u0000\u0000\u0000\u0000"+ + "\u5C71\u0000\u0000\u0000\u0000\u0000\u0000\u3360"+ + "\u4349\u0000\u0000\u0000\u5C7C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5C7A\u3869\u0000"+ + "\u5C79\u0000\u0000\u0000\u0000\u0000\u0000\u5D21"+ + "\u0000\u0000\u0000\u0000\u5B58\u0000\u0000\u0000"+ + "\u5C7B\u0000\u5C7D\u5C7E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5D2C\u0000\u5D28\u0000\u5B6D\u0000"+ + "\u0000\u0000\u0000\u5D27\u0000\u0000\u0000\u0000"+ + "\u5D26\u0000\u0000\u5D23\u0000\u0000\u0000\u0000"+ + "\u0000\u5C6A\u5D25\u5D24\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5D2A\u0000\u4F26\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5D2D\u367B\u0000\u0000\u5D29\u5D2B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4827\u0000\u5D2E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5D32\u5D2F\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4D73\u5D30\u0000\u0000"+ + "\u0000\u0000\u5C5E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5D33\u0000\u0000\u0000\u5D34\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3135\u0000\u5D36"+ + "\u3767\u3C21\u0000\u3655\u0000\u0000\u0000\u3224"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4D5F\u0000\u0000\u0000\u0000\u5D38"+ + "\u5D37\u5D3A\u353D\u0000\u0000\u3656\u343E\u0000"+ + "\u0000\u0000\u0000\u5D3D\u0000\u0000\u0000\u5D3C"+ + "\u0000\u5D3E\u0000\u0000\u324E\u0000\u4337\u0000"+ + "\u5D3F\u0000\u0000\u343F\u5D41\u0000\u0000\u0000"+ + "\u0000\u5D40\u0000\u5D42\u0000\u0000\u0000\u5D43"+ + "\u0000\u5D44\u3B5F\u4035\u3A21\u0000\u4970\u0000"+ + "\u0000\u4A62\u4F44\u0000\u0000\u0000\u0000\u3B75"+ + "\u0000\u0000\u0000\u3A50\u4E72\u0000\u0000\u0000"+ + "\u5D45\u5D46\u0000\u3B60\u0000\u0000\u0000\u5D47"+ + "\u5D48\u0000\u0000\u5D4A\u5D49\u0000\u4B58\u0000"+ + "\u0000\u3D5E\u3C6C\u3B44\u0000\u5D4B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5D4D\u3F23\u0000"+ + "\u5D4C\u0000\u0000\u0000\u0000\u0000\u5D4E\u0000"+ + "\u0000\u0000\u0000\u0000\u5D4F\u0000\u0000\u0000"+ + "\u0000\u0000\u5D50\u5D51\u0000\u0000\u0000\u5D52"+ + "\u0000\u5D54\u5D53\u5D55\u3225\u434A\u0000\u5D56"+ + "\u0000\u0000\u3B26\u334C\u5D57\u0000\u0000\u4542"+ + "\u544C\u0000\u0000\u0000\u0000\u3523\u5D58\u0000"+ + "\u0000\u0000\u0000\u5D59\u0000\u4A6C\u4B68\u0000"+ + "\u0000\u0000\u4647\u5D5A\u4866\u0000\u0000\u0000"+ + "\u487B\u0000\u0000\u4C53\u0000\u0000\u0000\u5D5B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5D5D\u5D5C\u0000\u0000\u5D5F"+ + "\u0000\u0000\u0000\u5D5E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5D61\u0000\u0000\u0000\u0000\u0000\u0000\u3B61"+ + "\u0000\u4C31\u0000\u5D62\u5D63\u0000\u0000\u3524"+ + "\u0000\u0000\u0000\u5D64\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5D66\u5D65\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3F65\u0000\u0000\u4939"+ + "\u314A\u0000\u0000\u0000\u0000\u0000\u4845\u0000"+ + "\u4475\u3D41\u3561\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4846\u0000"+ + "\u3C2E\u0000\u0000\u0000\u0000\u5D68\u0000\u3440"+ + "\u0000\u0000\u3178\u0000\u0000\u4672\u5D67\u393E"+ + "\u4353\u0000\u5D69\u0000\u0000\u0000\u0000\u0000"+ + "\u5D71\u0000\u5D6A\u0000\u0000\u0000\u0000\u0000"+ + "\u4241\u0000\u3562\u5D72\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3768\u0000\u0000\u3525\u5D70\u0000"+ + "\u0000\u5D6E\u5D6B\u4D60\u0000\u0000\u0000\u0000"+ + "\u4440\u0000\u0000\u0000\u4659\u5D6C\u0000\u0000"+ + "\u5D74\u0000\u5D73\u3723\u0000\u0000\u322D\u0000"+ + "\u0000\u3A3B\u5D6D\u5D6F\u0000\u0000\u0000\u0000"+ + "\u0000\u4B57\u4274\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4B77\u0000\u0000\u5D7C\u0000"+ + "\u0000\u5D7D\u0000\u324F\u0000\u0000\u0000\u0000"+ + "\u4A28\u4C7D\u5E21\u3C23\u3E42\u5D78\u5D7E\u3168"+ + "\u0000\u3637\u0000\u0000\u5D75\u5D7A\u0000\u0000"+ + "\u0000\u4074\u4771\u0000\u4867\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5D77\u0000\u4B21\u0000\u5D79"+ + "\u0000\u5E24\u0000\u5E22\u0000\u5D7B\u0000\u0000"+ + "\u0000\u4B22\u4748\u3563\u0000\u4525\u0000\u0000"+ + "\u436D\u0000\u5E25\u0000\u0000\u0000\u0000\u5E23"+ + "\u4259\u5D76\u0000\u314B\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4D4E\u5E30\u0000\u0000\u0000"+ + "\u0000\u0000\u5E2F\u0000\u0000\u0000\u0000\u4076"+ + "\u0000\u5E2C\u0000\u4D6C\u0000\u0000\u4636\u5E26"+ + "\u0000\u0000\u0000\u0000\u0000\u4445\u0000\u0000"+ + "\u0000\u314C\u393F\u5E29\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3D27\u5E2E\u0000\u5E2D\u5E28\u0000"+ + "\u5E2B\u0000\u0000\u3368\u0000\u5E2A\u4749\u0000"+ + "\u0000\u4E2E\u0000\u0000\u3E74\u4075\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5E36\u5E34\u0000\u494D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5E31\u5E33\u0000\u313A\u0000"+ + "\u0000\u3940\u4F32\u0000\u333D\u0000\u4962\u0000"+ + "\u0000\u0000\u0000\u0000\u4D61\u0000\u0000\u3324"+ + "\u3F3B\u5E35\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5E3A\u0000\u0000"+ + "\u3E43\u0000\u0000\u0000\u4D30\u0000\u5E37\u0000"+ + "\u0000\u0000\u0000\u5E32\u0000\u5E38\u0000\u0000"+ + "\u0000\u4E5E\u0000\u4573\u4642\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3336"+ + "\u0000\u0000\u3155\u0000\u0000\u5E3E\u0000\u0000"+ + "\u5E41\u0000\u0000\u0000\u4E43\u0000\u0000\u0000"+ + "\u4D64\u0000\u0000\u0000\u0000\u5E48\u5E42\u5E3F"+ + "\u0000\u0000\u0000\u4E54\u5E45\u0000\u0000\u0000"+ + "\u0000\u3D4A\u5E47\u0000\u0000\u5E4C\u0000\u0000"+ + "\u4571\u5E4A\u0000\u0000\u0000\u0000\u5E44\u0000"+ + "\u0000\u4338\u0000\u0000\u5E4B\u0000\u5E40\u0000"+ + "\u5E46\u0000\u5E4D\u307C\u5E43\u0000\u5E4E\u0000"+ + "\u0000\u3F3C\u0000\u3D5F\u0000\u4A25\u0000\u3A2E"+ + "\u0000\u5E3B\u5E49\u453A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4036\u0000\u3369"+ + "\u3A51\u3E44\u5E3D\u3D42\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u374C\u0000\u5E3C\u0000\u0000"+ + "\u0000\u5E52\u3D6D\u383A\u0000\u5E61\u0000\u5E5B"+ + "\u3574\u454F\u0000\u5E56\u5E5F\u302F\u3132\u0000"+ + "\u0000\u3239\u0000\u5E58\u422C\u5E4F\u5E51\u3941"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5E62\u0000\u5E5D\u0000\u0000\u0000\u5E55\u0000"+ + "\u0000\u0000\u0000\u5E5C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4C2B\u0000\u0000\u5E5A\u5E5E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3850\u0000"+ + "\u3E45\u0000\u0000\u4339\u0000\u0000\u0000\u5E54"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4D2F"+ + "\u0000\u0000\u0000\u5E57\u0000\u0000\u5E50\u4572"+ + "\u0000\u0000\u5E53\u0000\u0000\u0000\u5E59\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4F51\u3C3E"+ + "\u4B7E\u0000\u5E63\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u482E\u0000\u0000\u5E6F"+ + "\u383B\u0000\u0000\u0000\u0000\u0000\u3D60\u0000"+ + "\u5E65\u0000\u0000\u0000\u4E2F\u3942\u0000\u5E72"+ + "\u0000\u0000\u306E\u0000\u0000\u5E70\u0000\u0000"+ + "\u0000\u0000\u5E64\u0000\u0000\u0000\u0000\u5E6A"+ + "\u0000\u0000\u5E6C\u0000\u0000\u0000\u4D4F\u5E67"+ + "\u0000\u0000\u452E\u0000\u0000\u5E69\u0000\u0000"+ + "\u0000\u0000\u5E71\u0000\u5E6B\u4C47\u0000\u0000"+ + "\u0000\u5E66\u0000\u3C22\u5E7E\u0000\u0000\u0000"+ + "\u0000\u336A\u0000\u5E68\u5E6D\u5E6E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u426C\u425A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5E76\u0000\u0000\u5E7C"+ + "\u0000\u0000\u5E7A\u0000\u4529\u0000\u0000\u5F23"+ + "\u5E77\u0000\u0000\u0000\u0000\u0000\u5E78\u5E60"+ + "\u0000\u3579\u493A\u0000\u0000\u0000\u3C3F\u0000"+ + "\u0000\u3977\u0000\u0000\u0000\u0000\u0000\u4F33"+ + "\u0000\u5E74\u0000\u5F22\u3169\u4166\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4779\u0000\u3441\u4E7A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4C21\u4452\u0000\u0000\u0000"+ + "\u0000\u5E7B\u5E7D\u0000\u0000\u0000\u0000\u0000"+ + "\u4132\u0000\u0000\u0000\u0000\u0000\u5F21\u5E79"+ + "\u0000\u5E73\u0000\u0000\u0000\u3443\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3769\u0000\u0000\u0000"+ + "\u5F2F\u0000\u0000\u5F2A\u4078\u0000\u0000\u3363"+ + "\u0000\u0000\u0000\u0000\u3D61\u0000\u5F33\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5F2C\u442C\u5F29"+ + "\u4459\u0000\u0000\u0000\u5F4C\u0000\u0000\u0000"+ + "\u5F26\u0000\u5F25\u0000\u5F2E\u0000\u0000\u0000"+ + "\u5F28\u5F27\u5F2D\u0000\u4021\u0000\u5F24\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5F30\u0000"+ + "\u0000\u5F31\u0000\u0000\u0000\u0000\u0000\u3442"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5F36\u0000\u5F35\u5F37\u0000\u0000\u0000"+ + "\u0000\u0000\u5F3A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4543\u0000\u5F34\u0000\u0000\u0000\u0000"+ + "\u0000\u5F38\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3763\u4279\u5F32\u473B\u0000\u0000\u5F39\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5F3E\u5F3C\u0000\u0000"+ + "\u5F3F\u0000\u0000\u5F42\u0000\u0000\u0000\u5F3B"+ + "\u396A\u4728\u0000\u0000\u5E39\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4D74\u5F3D\u0000\u5F41\u4275"+ + "\u0000\u5F40\u0000\u5F2B\u0000\u0000\u6F69\u0000"+ + "\u0000\u0000\u5F45\u0000\u0000\u0000\u5F49\u0000"+ + "\u0000\u5F47\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5F43\u0000\u5F44\u0000\u0000\u0000\u5F48"+ + "\u0000\u5F46\u0000\u0000\u0000\u494E\u0000\u0000"+ + "\u5F4E\u0000\u5F4B\u5F4A\u0000\u5F4D\u4654\u5F4F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4375\u426D"+ + "\u0000\u0000\u0000\u0000\u4025\u0000\u0000\u0000"+ + "\u5F50\u0000\u5F52\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5F51\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5E75\u0000\u0000\u0000"+ + "\u0000\u5F53\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4667\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5F54\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3250\u0000\u0000\u0000\u4574"+ + "\u3325\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3564\u0000\u0000\u0000\u3C5E\u3A52\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4F27\u3F66\u0000\u0000\u0000\u316A\u0000"+ + "\u0000\u0000\u5F56\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5F55\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5F59\u433A\u5F5C\u5F57"+ + "\u0000\u0000\u0000\u5F5B\u0000\u0000\u0000\u0000"+ + "\u5F5A\u4540\u3059\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4E75\u0000\u0000\u5F5E\u0000\u0000\u0000\u3128"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5F60\u0000\u0000\u0000\u5F5F\u0000\u5F5D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5F58\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4B23\u0000\u0000\u0000\u5F62\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5F61\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u316B\u0000\u0000\u0000"+ + "\u0000\u5F64\u4A32\u0000\u5F63\u0000\u0000\u0000"+ + "\u0000\u4C35\u0000\u0000\u0000\u0000\u3E47\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4133\u0000"+ + "\u0000\u0000\u0000\u0000\u3E46\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4E7B\u0000\u0000\u5F6A\u0000\u4079\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5F66\u5F6B\u0000"+ + "\u0000\u316C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5F69\u0000\u4761\u5F65\u5F68\u3E48"+ + "\u0000\u4851\u0000\u0000\u5F6C\u0000\u3C51\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u407A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5F6F\u0000\u0000\u0000"+ + "\u5F67\u0000\u3727\u0000\u0000\u0000\u0000\u5F6D"+ + "\u0000\u0000\u0000\u0000\u4D50\u5F70\u0000\u0000"+ + "\u0000\u7426\u0000\u0000\u0000\u0000\u0000\u3D4F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5F71\u0000\u0000\u0000\u5F72\u0000\u0000\u0000"+ + "\u0000\u472E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5F74\u0000\u0000\u0000\u0000\u5F75\u0000"+ + "\u0000\u0000\u0000\u4733\u0000\u0000\u0000\u0000"+ + "\u4575\u5F77\u0000\u0000\u0000\u0000\u5F79\u0000"+ + "\u4E55\u0000\u5F76\u0000\u5F78\u316D\u0000\u5F73"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u535B"+ + "\u5F7A\u0000\u0000\u0000\u0000\u4167\u3B38\u5F7C"+ + "\u0000\u0000\u0000\u0000\u5F7B\u3F24\u5259\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5F7D\u0000\u0000"+ + "\u0000\u6021\u0000\u5F6E\u5F7E\u0000\u0000\u6022"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u477A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6023\u0000\u0000"+ + "\u6024\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6025\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6026\u0000\u445E\u0000\u6028\u6027\u0000\u0000"+ + "\u6029\u0000\u602A\u0000\u0000\u3C5F\u4963\u0000"+ + "\u0000\u0000\u4C6C\u602B\u602C\u4156\u3C24\u602D"+ + "\u602E\u0000\u0000\u0000\u0000\u0000\u602F\u4A52"+ + "\u4847\u0000\u0000\u6030\u4757\u0000\u0000\u0000"+ + "\u0000\u0000\u442D\u0000\u0000\u0000\u0000\u0000"+ + "\u6031\u3267\u0000\u356D\u0000\u4C46\u0000\u4C36"+ + "\u0000\u3234\u4F34\u0000\u0000\u0000\u0000\u4B52"+ + "\u0000\u4A2A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4037\u0000\u6032\u0000\u0000\u0000"+ + "\u0000\u4643\u0000\u0000\u0000\u3823\u6033\u0000"+ + "\u3A54\u6035\u6034\u0000\u0000\u0000\u0000\u6036"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6037\u0000\u0000\u0000\u6038\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u353E\u0000\u6039\u0000\u0000\u0000\u0000\u603A"+ + "\u0000\u0000\u0000\u0000\u3824\u0000\u0000\u4848"+ + "\u0000\u0000\u603C\u0000\u0000\u0000\u3E75\u0000"+ + "\u0000\u603B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3638\u603D\u603F\u0000\u603E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6040\u0000"+ + "\u3851\u0000\u6041\u0000\u0000\u0000\u0000\u3669"+ + "\u0000\u4140\u0000\u397D\u0000\u0000\u0000\u0000"+ + "\u6043\u6044\u6042\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3C6D\u0000\u0000\u4648\u3639\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6046"+ + "\u432C\u6045\u0000\u0000\u4F35\u4762\u0000\u0000"; + + private final static String innerIndex3= + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6049\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u604B\u6048"+ + "\u0000\u0000\u0000\u4C54\u604A\u604C\u0000\u4E44"+ + "\u0000\u0000\u0000\u0000\u0000\u6050\u0000\u0000"+ + "\u0000\u604F\u4376\u472D\u0000\u0000\u3825\u604E"+ + "\u0000\u0000\u0000\u0000\u604D\u0000\u4D31\u4D32"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6051\u316E"+ + "\u0000\u0000\u0000\u0000\u3976\u3B62\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6052\u6053"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6055"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3D43\u0000\u0000\u0000\u0000"+ + "\u6057\u0000\u6056\u0000\u0000\u0000\u0000\u0000"+ + "\u6058\u0000\u334D\u0000\u0000\u605A\u0000\u0000"+ + "\u6059\u0000\u605C\u605B\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u383C\u0000\u0000\u4E28"+ + "\u0000\u364C\u0000\u3226\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u366A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3461\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4E68\u605E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6060\u0000\u0000\u0000\u0000"+ + "\u6061\u0000\u3251\u0000\u0000\u0000\u0000\u0000"+ + "\u605D\u0000\u3B39\u0000\u0000\u4441\u605F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6064\u0000"+ + "\u3C6E\u0000\u0000\u0000\u0000\u6062\u0000\u0000"+ + "\u0000\u0000\u373E\u0000\u0000\u4849\u6063\u0000"+ + "\u0000\u607E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6069\u0000\u0000\u0000\u0000\u0000\u383D\u0000"+ + "\u0000\u0000\u0000\u3565\u0000\u6066\u4D7D\u0000"+ + "\u0000\u4E30\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4276\u0000\u0000\u6068\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u606A\u4E56\u3657\u487C\u474A\u0000"+ + "\u0000\u0000\u606B\u0000\u0000\u0000\u0000\u606D"+ + "\u0000\u6070\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u606C\u0000\u0000"+ + "\u0000\u606F\u386A\u314D\u6071\u0000\u3F70\u606E"+ + "\u4E5C\u0000\u0000\u6074\u7424\u0000\u0000\u0000"+ + "\u0000\u6072\u6075\u0000\u0000\u0000\u0000\u6067"+ + "\u6073\u0000\u0000\u3A3C\u0000\u0000\u6076\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6077\u0000"+ + "\u0000\u0000\u0000\u4D7E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6078\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6079\u0000"+ + "\u0000\u0000\u6065\u0000\u0000\u0000\u0000\u607A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3444\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3C25\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u607B\u0000\u0000\u0000\u0000\u607C"+ + "\u0000\u0000\u0000\u0000\u607D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u313B\u0000\u0000\u0000"+ + "\u6121\u0000\u493B\u6122\u0000\u0000\u3424\u6123"+ + "\u0000\u6124\u0000\u0000\u0000\u0000\u6125\u0000"+ + "\u6127\u6128\u6126\u0000\u0000\u0000\u4953\u612A"+ + "\u6129\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u612C\u612B\u612D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u612E\u6130\u612F\u0000"+ + "\u0000\u3979\u0000\u6132\u0000\u6131\u0000\u0000"+ + "\u3445\u0000\u3F53\u0000\u453C\u0000\u6133\u4038"+ + "\u0000\u0000\u0000\u3B3A\u0000\u3179\u6134\u0000"+ + "\u4D51\u0000\u0000\u4A63\u6135\u0000\u0000\u0000"+ + "\u4544\u4D33\u3943\u3F3D\u0000\u0000\u0000\u434B"+ + "\u5234\u0000\u442E\u3268\u6136\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6137\u0000\u613C\u0000"+ + "\u0000\u613A\u6139\u5A42\u3326\u6138\u0000\u305A"+ + "\u0000\u482A\u0000\u0000\u484A\u0000\u0000\u0000"+ + "\u0000\u4E31\u613D\u613B\u435C\u4026\u0000\u0000"+ + "\u482B\u0000\u492D\u0000\u613F\u4E2C\u374D\u6140"+ + "\u0000\u613E\u4856\u6141\u0000\u6142\u0000\u0000"+ + "\u305B\u0000\u0000\u3E76\u6147\u0000\u6144\u466D"+ + "\u6143\u0000\u0000\u0000\u0000\u0000\u0000\u3526"+ + "\u0000\u0000\u614A\u0000\u0000\u0000\u6145\u6146"+ + "\u0000\u6149\u6148\u4925\u0000\u0000\u4142\u4141"+ + "\u0000\u353F\u0000\u0000\u614B\u0000\u0000\u0000"+ + "\u0000\u0000\u614C\u0000\u0000\u614D\u0000\u0000"+ + "\u0000\u0000\u0000\u614F\u0000\u614E\u0000\u0000"+ + "\u0000\u0000\u0000\u3156\u0000\u0000\u0000\u0000"+ + "\u0000\u6157\u4868\u6151\u0000\u6153\u0000\u0000"+ + "\u6155\u3F3E\u0000\u0000\u6156\u6154\u3C40\u0000"+ + "\u0000\u0000\u6150\u6152\u0000\u4942\u0000\u3E49"+ + "\u0000\u0000\u6159\u0000\u0000\u6158\u0000\u0000"+ + "\u0000\u0000\u615A\u0000\u3C26\u3A2F\u0000\u0000"+ + "\u4577\u615B\u0000\u444B\u0000\u0000\u615D\u0000"+ + "\u0000\u0000\u4E21\u615C\u0000\u0000\u0000\u0000"+ + "\u0000\u4169\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6162\u0000\u6164\u6165\u4354\u0000\u0000\u0000"+ + "\u0000\u0000\u6163\u0000\u6160\u0000\u615E\u615F"+ + "\u0000\u6161\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6168\u0000\u6166\u0000\u6167\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6169"+ + "\u616B\u616C\u616D\u0000\u616E\u0000\u0000\u616A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6170\u0000\u0000\u0000\u616F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6171\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4E45\u0000\u0000\u0000\u6174\u6172"+ + "\u6173\u0000\u0000\u0000\u3462\u0000\u0000\u0000"+ + "\u0000\u0000\u4C7E\u0000\u0000\u0000\u4A4A\u0000"+ + "\u6176\u0000\u0000\u0000\u6175\u0000\u0000\u0000"+ + "\u0000\u6177\u6178\u0000\u0000\u0000\u0000\u617C"+ + "\u6179\u617A\u617B\u0000\u617D\u0000\u0000\u0000"+ + "\u617E\u0000\u6221\u0000\u0000\u0000\u6222\u0000"+ + "\u6223\u0000\u482F\u4550\u6224\u4772\u4934\u0000"+ + "\u6225\u0000\u0000\u6226\u452A\u0000\u3327\u3944"+ + "\u6227\u0000\u0000\u6228\u0000\u0000\u6229\u0000"+ + "\u3B29\u0000\u0000\u622B\u0000\u0000\u622A\u0000"+ + "\u0000\u622C\u622D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4869\u0000"+ + "\u622E\u0000\u0000\u0000\u622F\u0000\u0000\u7369"+ + "\u6230\u6231\u6232\u0000\u0000\u0000\u0000\u3B2E"+ + "\u0000\u0000\u6233\u4756\u0000\u0000\u4B5F\u0000"+ + "\u314E\u0000\u3157\u0000\u0000\u6234\u0000\u0000"+ + "\u0000\u0000\u6236\u0000\u0000\u0000\u6235\u4570"+ + "\u0000\u0000\u0000\u4039\u5D39\u0000\u6237\u4C41"+ + "\u0000\u6238\u0000\u3446\u4857\u6239\u0000\u623A"+ + "\u0000\u0000\u623B\u0000\u0000\u0000\u4C5C\u0000"+ + "\u0000\u0000\u4C55\u0000\u443E\u0000\u0000\u0000"+ + "\u416A\u0000\u0000\u623D\u0000\u0000\u3D62\u0000"+ + "\u0000\u3E4A\u0000\u0000\u6240\u0000\u0000\u623F"+ + "\u623E\u487D\u0000\u3447\u3829\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6246\u0000\u0000\u6243\u3F3F"+ + "\u4C32\u0000\u0000\u0000\u6242\u6244\u6245\u0000"+ + "\u0000\u6241\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6247"+ + "\u6248\u0000\u442F\u0000\u3463\u0000\u0000\u0000"+ + "\u4365\u0000\u0000\u0000\u0000\u0000\u0000\u6249"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u624A\u624D\u0000\u0000\u0000\u0000"+ + "\u0000\u3F67\u0000\u4644\u0000\u624E\u4B53\u0000"+ + "\u624B\u0000\u0000\u624C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6251\u0000\u0000\u0000\u0000\u6250\u624F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6253\u0000\u0000\u6252\u0000"+ + "\u0000\u6254\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6256\u0000"+ + "\u6255\u0000\u0000\u0000\u0000\u4A4D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3D56\u4E46\u0000\u0000"+ + "\u6257\u0000\u0000\u4637\u0000\u0000\u6258\u0000"+ + "\u0000\u6259\u0000\u625D\u625B\u625C\u0000\u625A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u625E"+ + "\u0000\u0000\u0000\u0000\u0000\u625F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6260"+ + "\u0000\u0000\u6261\u4C37\u6262\u0000\u0000\u0000"+ + "\u0000\u0000\u4C70\u6263\u0000\u434E\u0000\u476A"+ + "\u0000\u366B\u0000\u0000\u0000\u433B\u6264\u363A"+ + "\u0000\u0000\u0000\u4050\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6265\u0000\u0000\u0000"+ + "\u0000\u0000\u3A3D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6266\u0000\u0000\u0000"+ + "\u0000\u0000\u6267\u0000\u3826\u3A55\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6269\u0000\u0000\u0000\u0000\u4556\u3A56\u354E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4B24\u0000\u474B\u0000\u0000\u0000"+ + "\u0000\u0000\u4557\u0000\u0000\u0000\u0000\u395C"+ + "\u0000\u0000\u0000\u0000\u0000\u626B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3E4B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4E32\u3945\u0000\u0000\u3827"+ + "\u0000\u0000\u4823\u0000\u626D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u626F\u0000\u0000\u0000"+ + "\u0000\u386B\u0000\u0000\u0000\u0000\u626E\u4476"+ + "\u0000\u0000\u0000\u0000\u6271\u3337\u626C\u0000"+ + "\u0000\u486A\u0000\u3130\u0000\u3A6C\u0000\u4F52"+ + "\u0000\u0000\u6270\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6272\u0000\u0000\u0000\u4A4B"+ + "\u0000\u4059\u6274\u0000\u0000\u0000\u0000\u6275"+ + "\u0000\u0000\u0000\u0000\u0000\u6273\u0000\u0000"+ + "\u0000\u0000\u334E\u0000\u627B\u0000\u627A\u0000"+ + "\u0000\u3C27\u0000\u0000\u0000\u627C\u6277\u0000"+ + "\u0000\u0000\u627D\u6278\u0000\u0000\u0000\u0000"+ + "\u4858\u6276\u0000\u0000\u6279\u0000\u0000\u0000"+ + "\u0000\u0000\u6322\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6321"+ + "\u4B61\u0000\u0000\u0000\u627E\u0000\u0000\u306B"+ + "\u0000\u0000\u0000\u0000\u6324\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6323\u0000\u0000"+ + "\u0000\u3E4C\u0000\u0000\u0000\u0000\u0000\u6325"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4143\u0000"+ + "\u0000\u6327\u6326\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6328\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6268\u0000"+ + "\u0000\u0000\u626A\u632A\u6329\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3C28\u0000\u4E69\u0000\u3C52\u0000"+ + "\u632B\u3737\u0000\u0000\u0000\u0000\u0000\u3540"+ + "\u3527\u3B63\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4D34\u0000\u0000\u6331\u0000\u6330\u4144\u632D"+ + "\u0000\u0000\u632F\u0000\u0000\u3D4B\u3F40\u632E"+ + "\u632C\u0000\u472A\u0000\u0000\u3E4D\u0000\u0000"+ + "\u493C\u0000\u0000\u0000\u0000\u3A57\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4578"+ + "\u0000\u0000\u6332\u0000\u0000\u0000\u0000\u6333"+ + "\u6349\u3658\u0000\u0000\u4F3D\u4135\u0000\u0000"+ + "\u0000\u0000\u6334\u0000\u0000\u3252\u4477\u4A21"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6335\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u357A\u6336"+ + "\u0000\u0000\u6338\u0000\u0000\u0000\u6339\u0000"+ + "\u4729\u0000\u0000\u633A\u0000\u0000\u0000\u0000"+ + "\u0000\u633B\u633C\u0000\u0000\u3659\u3253\u4645"+ + "\u3D28\u3B64\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u633D\u0000\u3D29\u0000\u0000\u0000\u0000"+ + "\u0000\u324A\u4943\u0000\u0000\u633E\u0000\u0000"+ + "\u486B\u0000\u0000\u0000\u0000\u0000\u0000\u4145"+ + "\u0000\u6341\u0000\u6342\u4769\u0000\u3F41\u633F"+ + "\u0000\u4361\u0000\u0000\u6340\u0000\u0000\u0000"+ + "\u3E4E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u305C\u0000\u0000\u0000\u0000"+ + "\u3529\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6343\u0000\u0000\u4478\u0000\u6344\u4047\u0000"+ + "\u0000\u0000\u0000\u0000\u4C2D\u0000\u0000\u4923"+ + "\u6345\u6346\u4355\u0000\u4E47\u0000\u0000\u6348"+ + "\u6347\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3C6F\u0000"+ + "\u0000\u634A\u3070\u0000\u0000\u0000\u0000\u634D"+ + "\u0000\u0000\u0000\u634B\u3254\u374E\u634C\u3946"+ + "\u3972\u0000\u4A66\u634E\u0000\u0000\u4B54\u0000"+ + "\u0000\u6350\u0000\u0000\u0000\u4051\u314F\u323A"+ + "\u302C\u0000\u0000\u0000\u0000\u0000\u0000\u634F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6351\u6352\u3E77\u0000\u0000\u0000\u0000"+ + "\u0000\u6353\u0000\u334F\u0000\u0000\u0000\u0000"+ + "\u6355\u0000\u0000\u0000\u376A\u0000\u3566\u0000"+ + "\u0000\u6356\u3675\u0000\u0000\u6357\u0000\u407C"+ + "\u0000\u464D\u0000\u4060\u3A75\u0000\u0000\u0000"+ + "\u6358\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4362\u416B\u0000\u635A\u635C\u6359"+ + "\u635B\u0000\u0000\u0000\u0000\u0000\u0000\u3722"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u635D\u3726\u0000\u0000\u0000\u3567\u4D52"+ + "\u635F\u0000\u0000\u0000\u0000\u0000\u6360\u0000"+ + "\u0000\u0000\u312E\u0000\u0000\u0000\u0000\u6363"+ + "\u0000\u0000\u0000\u3376\u6362\u6361\u0000\u6365"+ + "\u635E\u0000\u6366\u4E29\u0000\u6367\u0000\u6368"+ + "\u0000\u0000\u5474\u636A\u0000\u6369\u0000\u0000"+ + "\u0000\u636B\u636C\u0000\u4E35\u636D\u0000\u706F"+ + "\u3E4F\u636E\u636F\u3D57\u0000\u4638\u6370\u0000"+ + "\u0000\u0000\u4328\u0000\u0000\u6371\u0000\u433C"+ + "\u6372\u0000\u0000\u0000\u0000\u0000\u3625\u0000"+ + "\u513F\u435D\u3C33\u0000\u0000\u0000\u0000\u3448"+ + "\u0000\u0000\u6373\u0000\u6422\u0000\u6376\u0000"+ + "\u3568\u0000\u6375\u6424\u0000\u0000\u0000\u6374"+ + "\u0000\u3E50\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6378\u6379\u0000\u452B\u0000\u0000\u637A\u0000"+ + "\u335E\u0000\u0000\u0000\u0000\u3F5A\u4964\u0000"+ + "\u637C\u0000\u0000\u0000\u4268\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6377\u0000\u637B\u637D\u0000"+ + "\u0000\u3A7B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6426\u492E\u0000"+ + "\u4826\u4579\u0000\u365A\u6425\u6423\u0000\u4835"+ + "\u637E\u435E\u457B\u0000\u457A\u0000\u3A76\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6438\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6428\u0000\u642A"+ + "\u0000\u0000\u0000\u0000\u642D\u0000\u642E\u0000"+ + "\u642B\u642C\u0000\u0000\u6429\u6427\u0000\u0000"+ + "\u0000\u0000\u6421\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4A4F\u3255"+ + "\u0000\u0000\u0000\u6435\u0000\u6432\u0000\u6437"+ + "\u0000\u0000\u6436\u0000\u4773\u4C27\u0000\u3B3B"+ + "\u6430\u6439\u6434\u0000\u6433\u642F\u0000\u6431"+ + "\u0000\u3449\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u433D\u0000\u0000\u407D\u0000\u0000"+ + "\u0000\u4822\u0000\u0000\u643E\u0000\u0000\u0000"+ + "\u4824\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4061\u643B\u0000\u0000\u484F\u0000\u643F\u4A53"+ + "\u0000\u435B\u0000\u643A\u643C\u0000\u0000\u643D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6440\u0000\u0000"+ + "\u3C44\u0000\u0000\u0000\u4646\u6445\u6444\u0000"+ + "\u0000\u6441\u0000\u0000\u0000\u4F36\u0000\u0000"+ + "\u0000\u0000\u0000\u644A\u0000\u0000\u644E\u644B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6447\u0000\u0000\u0000\u0000\u0000\u0000\u6448"+ + "\u0000\u0000\u0000\u0000\u0000\u644D\u0000\u0000"+ + "\u0000\u6442\u5255\u6449\u6443\u0000\u0000\u644C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6452"+ + "\u0000\u344A\u0000\u644F\u0000\u0000\u0000\u6450"+ + "\u0000\u0000\u6451\u6454\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6453"+ + "\u4876\u0000\u0000\u0000\u0000\u6455\u4E7C\u4A6D"+ + "\u645A\u0000\u0000\u6457\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6456\u4052\u0000\u6459"+ + "\u645B\u0000\u0000\u0000\u6458\u0000\u645F\u0000"+ + "\u645C\u0000\u0000\u0000\u0000\u0000\u0000\u645D"+ + "\u6446\u0000\u0000\u0000\u645E\u6460\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6461\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A46\u0000\u6462\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4C62\u0000"+ + "\u0000\u364E\u3729\u6463\u0000\u0000\u0000\u0000"+ + "\u0000\u4A34\u0000\u3F68\u0000\u4C30\u0000\u0000"+ + "\u6464\u0000\u4E33\u0000\u0000\u4774\u0000\u4146"+ + "\u4734\u0000\u0000\u3D4D\u0000\u0000\u0000\u3040"+ + "\u0000\u6469\u6467\u0000\u6465\u3421\u0000\u3E51"+ + "\u646A\u0000\u0000\u6468\u0000\u6466\u646E\u0000"+ + "\u0000\u646D\u646C\u646B\u0000\u0000\u0000\u0000"+ + "\u0000\u646F\u0000\u0000\u0000\u6470\u403A\u0000"+ + "\u6471\u0000\u6473\u0000\u0000\u6472\u0000\u0000"+ + "\u0000\u0000\u3852\u0000\u0000\u0000\u4138\u0000"+ + "\u0000\u0000\u6475\u0000\u0000\u0000\u457C\u0000"+ + "\u6474\u0000\u0000\u0000\u6476\u0000\u4A35\u416C"+ + "\u3947\u0000\u6477\u0000\u0000\u0000\u0000\u4E48"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6479"+ + "\u0000\u0000\u647A\u0000\u647B\u0000\u647C\u0000"+ + "\u3B65\u0000\u647D\u374F\u0000\u0000\u356A\u0000"+ + "\u352A\u0000\u6521\u0000\u4C73\u3948\u647E\u0000"+ + "\u0000\u0000\u6524\u4C66\u0000\u473C\u0000\u0000"+ + "\u4933\u0000\u0000\u0000\u3D63\u6523\u0000\u3C53"+ + "\u3949\u3B66\u3569\u4A36\u6522\u0000\u0000\u0000"+ + "\u4147\u4B42\u3A77\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3B67\u445D\u0000\u6527\u4E5F"+ + "\u3A59\u0000\u6528\u3F42\u0000\u652A\u0000\u0000"+ + "\u0000\u3E52\u3A30\u0000\u0000\u0000\u0000\u6529"+ + "\u0000\u0000\u3D2A\u383E\u4148\u6525\u652B\u0000"+ + "\u0000\u0000\u0000\u6526\u3750\u0000\u652E\u6532"+ + "\u376B\u0000\u0000\u0000\u0000\u0000\u652D\u0000"+ + "\u0000\u0000\u0000\u6536\u0000\u0000\u394A\u0000"+ + "\u0000\u4D6D\u303C\u6533\u0000\u0000\u356B\u0000"+ + "\u6530\u0000\u0000\u0000\u0000\u0000\u6531\u0000"+ + "\u0000\u457D\u652F\u652C\u0000\u3328\u4064\u0000"+ + "\u0000\u3828\u0000\u0000\u0000\u6538\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6535\u0000\u0000\u0000\u0000\u0000\u6537"+ + "\u0000\u0000\u0000\u6534\u0000\u0000\u0000\u0000"+ + "\u0000\u3751\u4233\u6539\u416E\u0000\u0000\u6546"+ + "\u0000\u0000\u6542\u653C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6540\u3C7A\u305D\u653B\u6543"+ + "\u6547\u394B\u4C56\u0000\u4456\u653D\u0000\u0000"+ + "\u6545\u0000\u653A\u433E\u0000\u653F\u303D\u4C4A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u653E"+ + "\u0000\u0000\u365B\u486C\u0000\u0000\u0000\u416D"+ + "\u0000\u4E50\u3D6F\u0000\u0000\u656E\u0000\u0000"+ + "\u6548\u0000\u407E\u0000\u6544\u6549\u654B\u0000"+ + "\u4479\u654E\u0000\u0000\u654A\u0000\u0000\u0000"+ + "\u4A54\u344B\u0000\u0000\u4C4B\u0000\u0000\u305E"+ + "\u0000\u0000\u654D\u0000\u4E7D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u654C\u0000\u0000\u0000\u0000"+ + "\u0000\u316F\u0000\u0000\u466C\u654F\u0000\u0000"+ + "\u0000\u6556\u6550\u6557\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6553\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u477B\u0000\u0000\u3C4A\u6555"+ + "\u0000\u6552\u6558\u6551\u0000\u0000\u3D44\u0000"+ + "\u0000\u0000\u0000\u4B25\u0000\u0000\u3D4C\u0000"+ + "\u0000\u6554\u6560\u0000\u0000\u655C\u0000\u655F"+ + "\u0000\u655D\u6561\u655B\u0000\u6541\u4053\u0000"+ + "\u0000\u484B\u0000\u655E\u0000\u0000\u6559\u0000"+ + "\u0000\u0000\u4121\u3752\u0000\u3D2B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3F25\u4136\u6564\u0000"+ + "\u0000\u6566\u6567\u0000\u0000\u6563\u6565\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u655A\u6562"+ + "\u0000\u656A\u6569\u0000\u0000\u4B7A\u0000\u0000"+ + "\u372B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6568\u0000\u656C\u656B\u656F\u0000\u6571"+ + "\u0000\u0000\u3B3C\u656D\u0000\u0000\u0000\u0000"+ + "\u6572\u6573\u0000\u0000\u6574\u0000\u657A\u453B"+ + "\u6576\u0000\u6575\u6577\u6578\u0000\u6579\u0000"+ + "\u0000\u0000\u0000\u657B\u657C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u344C\u0000"+ + "\u657D\u0000\u657E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6621\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6622\u6623\u6624\u0000"+ + "\u6625\u6626\u0000\u0000\u6628\u6627\u0000\u0000"+ + "\u6629\u0000\u0000\u0000\u0000\u0000\u0000\u662A"+ + "\u662B\u0000\u0000\u0000\u0000\u0000\u0000\u662E"+ + "\u662C\u662D\u3A61\u3753\u0000\u0000\u4356\u0000"+ + "\u4833\u0000\u3D70\u0000\u0000\u474D\u0000\u486D"+ + "\u662F\u586D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6630\u6632\u0000\u4D65\u6631\u6634"+ + "\u6633\u0000\u4D53\u0000\u6635\u0000\u487E\u0000"+ + "\u0000\u0000\u0000\u0000\u6636\u0000\u0000\u0000"+ + "\u0000\u0000\u6639\u0000\u0000\u6638\u6637\u0000"+ + "\u0000\u0000\u0000\u663A\u3732\u0000\u0000\u0000"+ + "\u4122\u3541\u0000\u0000\u0000\u0000\u663E\u663B"+ + "\u0000\u0000\u663C\u0000\u0000\u0000\u663F\u0000"+ + "\u6640\u663D\u0000\u0000\u0000\u3129\u0000\u0000"+ + "\u0000\u3227\u0000\u0000\u0000\u6642\u6643\u0000"+ + "\u0000\u0000\u6644\u0000\u4D62\u0000\u0000\u0000"+ + "\u0000\u0000\u3D2C\u0000\u6646\u6645\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3F69\u6647\u0000\u0000\u0000\u0000\u6648\u0000"+ + "\u0000\u6649\u0000\u3465\u0000\u0000\u0000\u0000"+ + "\u344D\u0000\u0000\u664A\u0000\u0000\u0000\u0000"+ + "\u0000\u664B\u0000\u4B5D\u4D63\u0000\u0000\u0000"+ + "\u4D54\u4F37\u0000\u394D\u664E\u3C54\u664D\u0000"+ + "\u0000\u0000\u0000\u664F\u3C29\u0000\u0000\u0000"+ + "\u4251\u0000\u6650\u0000\u0000\u394C\u0000\u4C57"+ + "\u6651\u6652\u0000\u0000\u6653\u0000\u0000\u0000"+ + "\u0000\u6654\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6655\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3C2A\u0000\u0000\u4C6D\u0000"+ + "\u0000\u0000\u0000\u6657\u0000\u433F\u0000\u6656"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6659\u0000"+ + "\u0000\u0000\u6658\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u665A\u0000\u0000\u0000\u403B\u0000"+ + "\u665B\u0000\u665C\u0000\u0000\u0000\u4A39\u665D"+ + "\u0000\u416F\u665E\u0000\u0000\u0000\u0000\u0000"+ + "\u665F\u0000\u0000\u0000\u0000\u0000\u0000\u4E7E"+ + "\u6662\u0000\u6661\u6660\u4430\u0000\u6663\u3F26"+ + "\u0000\u6664\u0000\u0000\u0000\u6665\u4F38\u6666"+ + "\u0000\u0000\u0000\u0000\u6667\u6669\u6668\u4825"+ + "\u0000\u4679\u0000\u4F3E\u4829\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u666B\u0000\u0000\u3E53\u0000"+ + "\u492A\u0000\u666C\u666A\u0000\u344E\u0000\u0000"+ + "\u0000\u3854\u3B68\u0000\u0000\u486E\u0000\u0000"+ + "\u0000\u382A\u4B43\u0000\u666F\u666D\u0000\u394E"+ + "\u0000\u394F\u3069\u0000\u3A68\u0000\u0000\u0000"+ + "\u0000\u0000\u4759\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u305F\u6674\u0000\u4340\u0000"+ + "\u0000\u0000\u0000\u0000\u4758\u0000\u425B\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6676\u0000"+ + "\u0000\u6672\u6675\u6670\u0000\u6673\u4B26\u0000"+ + "\u0000\u3855\u0000\u0000\u307D\u6671\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6678"+ + "\u0000\u6679\u0000\u0000\u4639\u0000\u0000\u0000"+ + "\u363B\u0000\u0000\u0000\u6726\u473D\u0000\u0000"+ + "\u0000\u0000\u3B69\u0000\u0000\u363C\u4048\u4F46"+ + "\u4C2E\u6677\u4054\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3553\u667A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u667C\u0000\u0000\u0000\u0000"+ + "\u0000\u667B\u0000\u0000\u0000\u0000\u0000\u667D"+ + "\u0000\u4326\u0000\u473E\u0000\u0000\u0000\u0000"+ + "\u0000\u4431\u0000\u0000\u0000\u0000\u6723\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6722\u0000"+ + "\u0000\u0000\u0000\u667E\u0000\u0000\u3F55\u0000"+ + "\u4965\u6725\u0000\u6724\u3950\u4F53\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6735"+ + "\u0000\u0000\u0000\u0000\u0000\u6729\u672A\u0000"+ + "\u0000\u0000\u0000\u3C70\u0000\u0000\u6728\u0000"+ + "\u3978\u6727\u0000\u0000\u672B\u0000\u0000\u0000"+ + "\u4432\u4A22\u4123\u0000\u0000\u0000\u0000\u425C"+ + "\u672F\u0000\u6730\u672C\u0000\u0000\u0000\u0000"+ + "\u672D\u0000\u672E\u0000\u0000\u0000\u0000\u3951"+ + "\u0000\u0000\u0000\u6736\u0000\u6732\u0000\u0000"+ + "\u0000\u0000\u4966\u0000\u4B6C\u4928\u0000\u0000"+ + "\u6731\u0000\u0000\u6734\u6733\u0000\u0000\u0000"+ + "\u4B44\u6737\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6738\u0000\u0000\u4137\u0000\u6739\u0000\u0000"+ + "\u673B\u0000\u673F\u0000\u0000\u673C\u673A\u473F"+ + "\u673D\u0000\u673E\u0000\u0000\u0000\u3232\u0000"+ + "\u6745\u6740\u0000\u0000\u0000\u6741\u0000\u0000"+ + "\u0000\u6742\u0000\u4221\u0000\u0000\u0000\u0000"+ + "\u6744\u6743\u6746\u0000\u0000\u0000\u0000\u6747"+ + "\u6748\u0000\u0000\u3F43\u0000\u3269\u0000\u6749"+ + "\u4E57\u0000\u3C2B\u0000\u0000\u3D2D\u0000\u0000"+ + "\u0000\u0000\u0000\u3B6A\u4357\u0000\u0000\u0000"+ + "\u0000\u0000\u674A\u674B\u3131\u0000\u674C\u0000"+ + "\u0000\u674D\u674E\u0000\u0000\u674F\u0000\u6750"+ + "\u363D\u5A2A\u6751\u0000\u4065\u6752\u3C4B\u0000"+ + "\u6753\u0000\u5030\u0000\u0000\u0000\u6754\u4A5E"+ + "\u345C\u0000\u0000\u4124\u3D58\u0000\u4971\u3D2E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6755\u3952\u6756\u484C\u0000\u6764\u0000"+ + "\u0000\u0000\u0000\u6758\u0000\u4249\u4775\u383F"+ + "\u6757\u4125\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6759\u0000\u0000\u0000\u0000\u0000\u0000\u447A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u675B\u675A\u675D\u0000\u0000\u675C\u0000\u675E"+ + "\u0000\u0000\u6760\u0000\u675F\u0000\u344F\u0000"+ + "\u6761\u0000\u6762\u6763\u0000\u0000\u3A31\u4E49"+ + "\u0000\u6765\u3F27\u0000\u0000\u0000\u3170\u6766"+ + "\u6767\u0000\u0000\u0000\u0000\u0000\u6768\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3072\u0000\u6769\u0000\u0000"+ + "\u0000\u0000\u676A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4967\u0000\u0000\u0000\u3C47\u0000\u676C"+ + "\u0000\u0000\u0000\u0000\u0000\u3329\u3032\u0000"+ + "\u0000\u0000\u0000\u676B\u676E\u474E\u0000\u3F44"+ + "\u0000\u3256\u0000\u4B27\u0000\u0000\u0000\u0000"+ + "\u375D\u365C\u0000\u676D\u0000\u326A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3423\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3171\u6772\u4E6A\u425D\u0000\u0000\u4944"+ + "\u0000\u677E\u0000\u3257\u677C\u0000\u677A\u6771"+ + "\u0000\u676F\u0000\u6770\u0000\u3C63\u366C\u4377"+ + "\u0000\u0000\u0000\u4651\u0000\u0000\u0000\u0000"+ + "\u0000\u3151\u0000\u6774\u6773\u0000\u0000\u0000"+ + "\u0000\u6779\u6775\u6778\u0000\u0000\u0000\u0000"; + + private final static String innerIndex4= + "\u0000\u0000\u4C50\u6777\u3258\u337D\u677B\u0000"+ + "\u0000\u677D\u0000\u0000\u0000\u0000\u3754\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6823\u682C"+ + "\u682D\u0000\u0000\u0000\u302B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6834\u0000\u0000\u0000\u0000"+ + "\u3071\u0000\u0000\u682B\u0000\u0000\u0000\u682A"+ + "\u0000\u6825\u6824\u0000\u6822\u6821\u4363\u0000"+ + "\u427B\u6827\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6826\u0000\u0000\u0000\u0000\u6829\u0000\u0000"+ + "\u0000\u4170\u3755\u0000\u0000\u0000\u0000\u3141"+ + "\u6828\u0000\u3953\u0000\u0000\u0000\u0000\u0000"+ + "\u4171\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u683A\u0000\u683B\u0000\u3259"+ + "\u0000\u0000\u0000\u322E\u6838\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u682E\u0000\u6836"+ + "\u0000\u683D\u6837\u0000\u0000\u0000\u6835\u0000"+ + "\u0000\u0000\u0000\u6776\u0000\u0000\u6833\u0000"+ + "\u0000\u0000\u682F\u0000\u0000\u0000\u3450\u6831"+ + "\u683C\u0000\u6832\u0000\u0000\u0000\u0000\u0000"+ + "\u683E\u0000\u6830\u477C\u0000\u0000\u0000\u0000"+ + "\u0000\u4D69\u0000\u0000\u0000\u6839\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u684F\u0000\u0000"+ + "\u0000\u6847\u0000\u0000\u0000\u3F7B\u0000\u0000"+ + "\u0000\u0000\u3546\u0000\u365D\u0000\u6842\u0000"+ + "\u0000\u0000\u0000\u325B\u0000\u0000\u3E54\u0000"+ + "\u6845\u0000\u0000\u0000\u3A5A\u0000\u0000\u4551"+ + "\u684A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4A6E\u0000\u6841\u0000\u0000\u0000\u325A"+ + "\u3856\u4929\u684B\u0000\u683F\u0000\u0000\u6848"+ + "\u0000\u0000\u0000\u6852\u0000\u6843\u0000\u0000"+ + "\u0000\u0000\u0000\u6844\u463A\u0000\u0000\u6849"+ + "\u0000\u0000\u0000\u6846\u4B28\u684C\u3060\u0000"+ + "\u0000\u0000\u0000\u6840\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u684E\u0000\u684D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u476B\u6854\u0000\u685F\u0000\u0000\u0000"+ + "\u0000\u337E\u0000\u0000\u0000\u6862\u0000\u0000"+ + "\u6850\u0000\u0000\u0000\u6855\u4D6E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u685E\u0000"+ + "\u0000\u4D55\u0000\u0000\u0000\u0000\u4E2A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4378"+ + "\u0000\u0000\u0000\u336B\u0000\u0000\u0000\u0000"+ + "\u0000\u4972\u6864\u4621\u0000\u0000\u3031\u0000"+ + "\u0000\u685D\u0000\u6859\u4172\u6853\u685B\u6860"+ + "\u0000\u472C\u0000\u0000\u0000\u302A\u0000\u6858"+ + "\u0000\u6861\u4978\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u685C\u0000\u6857\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3E55\u0000\u0000\u0000\u0000"+ + "\u3D2F\u0000\u0000\u0000\u3C2C\u0000\u0000\u0000"+ + "\u0000\u4C58\u0000\u0000\u4947\u0000\u0000\u6867"+ + "\u0000\u6870\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u685A\u0000\u0000"+ + "\u0000\u0000\u3377\u0000\u0000\u0000\u0000\u0000"+ + "\u3E78\u6865\u0000\u686A\u4173\u0000\u0000\u6866"+ + "\u0000\u686D\u0000\u0000\u435F\u0000\u686E\u0000"+ + "\u0000\u4D56\u6863\u3338\u0000\u6869\u0000\u0000"+ + "\u686C\u4C2C\u0000\u0000\u0000\u0000\u686F\u0000"+ + "\u0000\u6868\u686B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4B29\u0000\u4F21\u0000"+ + "\u0000\u0000\u0000\u0000\u6873\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u687A\u0000\u0000\u6872"+ + "\u3C43\u0000\u0000\u0000\u0000\u0000\u6851\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4A4E\u0000\u4C22\u6879\u6878\u0000\u6874"+ + "\u6875\u0000\u3136\u0000\u0000\u0000\u0000\u6877"+ + "\u0000\u6871\u0000\u0000\u0000\u0000\u4455\u0000"+ + "\u0000\u0000\u0000\u0000\u6876\u307E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4222\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4A43\u0000\u0000"+ + "\u687B\u6921\u0000\u4859\u0000\u0000\u0000\u0000"+ + "\u687E\u3E56\u3C49\u6923\u0000\u0000\u363E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6924\u0000\u4979"+ + "\u687D\u0000\u6856\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u687C\u0000\u0000\u0000\u0000"+ + "\u4F4F\u4622\u4973\u0000\u0000\u692B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6931"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6932\u0000"+ + "\u6925\u0000\u0000\u0000\u4776\u0000\u0000\u692F"+ + "\u6927\u0000\u6929\u0000\u0000\u0000\u0000\u0000"+ + "\u6933\u6928\u0000\u0000\u692C\u0000\u0000\u3172"+ + "\u0000\u4665\u0000\u692D\u6930\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6926\u0000\u4126\u0000"+ + "\u692A\u3B27\u3F45\u3730\u4C74\u0000\u4C79\u3D72"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6937\u6935\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4F4E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6934\u0000\u0000\u0000\u4D75\u0000\u6936"+ + "\u6938\u0000\u0000\u0000\u0000\u6939\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u693C\u693A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4623\u693B\u0000\u0000"+ + "\u0000\u484D\u692E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3D73"+ + "\u0000\u693D\u6942\u4174\u0000\u0000\u6941\u0000"+ + "\u0000\u0000\u6922\u0000\u0000\u0000\u6943\u4149"+ + "\u0000\u0000\u693E\u6940\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u693F\u0000\u0000\u5D31\u5D22"+ + "\u0000\u0000\u6945\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6944\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4D76\u0000\u623C"+ + "\u6946\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6947"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6948\u3857\u0000"+ + "\u3554\u0000\u0000\u0000\u694A\u515D\u0000\u0000"+ + "\u0000\u0000\u3575\u0000\u4E3A\u0000\u3673\u694B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u694C"+ + "\u0000\u0000\u0000\u436E\u0000\u0000\u0000\u0000"+ + "\u0000\u694D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u467A\u0000\u303A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3263\u6952\u6953\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u694E\u0000\u3B3D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u694F\u4742\u0000\u0000\u0000"+ + "\u0000\u6950\u6951\u695B\u0000\u0000\u0000\u6955"+ + "\u6958\u0000\u0000\u0000\u0000\u0000\u6954\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6956\u0000\u6957\u3C58"+ + "\u0000\u6959\u0000\u4341\u0000\u3756\u3342\u0000"+ + "\u0000\u0000\u0000\u0000\u695C\u0000\u0000\u0000"+ + "\u0000\u333F\u0000\u6961\u0000\u0000\u695D\u6960"+ + "\u0000\u0000\u0000\u0000\u483A\u0000\u0000\u0000"+ + "\u0000\u695E\u0000\u0000\u695F\u4948\u485A\u6962"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u427D\u696C\u0000\u6968\u0000\u0000\u326B\u0000"+ + "\u6966\u0000\u4B2A\u6967\u0000\u0000\u6964\u0000"+ + "\u6965\u696A\u696D\u0000\u0000\u696B\u0000\u0000"+ + "\u0000\u6969\u6963\u0000\u0000\u0000\u0000\u0000"+ + "\u4358\u0000\u6974\u0000\u4C2A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6972\u0000\u0000"+ + "\u0000\u6973\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u696E\u0000\u0000\u6970"+ + "\u0000\u0000\u0000\u6971\u0000\u0000\u0000\u696F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4066\u0000\u4F39\u6978\u0000\u6979\u0000"+ + "\u0000\u0000\u0000\u6A21\u0000\u3F2A\u0000\u697B"+ + "\u0000\u697E\u0000\u0000\u0000\u0000\u0000\u6976"+ + "\u6975\u0000\u0000\u6A22\u0000\u0000\u325C\u0000"+ + "\u697C\u0000\u6A23\u0000\u0000\u0000\u697D\u0000"+ + "\u0000\u0000\u0000\u0000\u697A\u0000\u4433\u0000"+ + "\u6977\u0000\u0000\u0000\u0000\u0000\u0000\u4768"+ + "\u0000\u0000\u6A27\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4D3B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6A26"+ + "\u0000\u0000\u6A25\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6A2E\u0000\u0000\u0000\u6A28"+ + "\u0000\u0000\u0000\u6A30\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4D66\u6A33\u0000\u6A2A\u0000\u0000"+ + "\u6A2B\u0000\u0000\u0000\u6A2F\u0000\u6A32\u6A31"+ + "\u0000\u0000\u0000\u6A29\u0000\u0000\u0000\u0000"+ + "\u6A2C\u0000\u6A3D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6A36\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6A34"+ + "\u0000\u0000\u6A35\u0000\u0000\u0000\u6A3A\u6A3B"+ + "\u0000\u332A\u0000\u3542\u0000\u0000\u6A39\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6A24\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6A38\u6A3C\u6A37"+ + "\u0000\u6A3E\u0000\u0000\u0000\u6A40\u6A3F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6A42\u6A41\u695A\u0000\u0000\u0000\u6A46"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6A43\u0000\u0000\u0000\u0000\u6A44\u0000"+ + "\u0000\u6A45\u0000\u6A47\u0000\u0000\u0000\u0000"+ + "\u376C\u0000\u6A49\u0000\u6A48\u0000\u3D30\u0000"+ + "\u0000\u0000\u0000\u0000\u3954\u5E27\u0000\u0000"+ + "\u0000\u0000\u6A4A\u3D51\u0000\u0000\u0000\u3339"+ + "\u0000\u6A4B\u0000\u3152\u0000\u3E57\u6A4C\u0000"+ + "\u0000\u3955\u6A4D\u3061\u0000\u0000\u0000\u0000"+ + "\u493D\u0000\u0000\u6A4E\u0000\u0000\u0000\u0000"+ + "\u3F6A\u0000\u6A55\u0000\u0000\u6A52\u0000\u436F"+ + "\u0000\u0000\u0000\u0000\u0000\u6A53\u6A50\u365E"+ + "\u0000\u6A4F\u6A56\u0000\u0000\u0000\u0000\u0000"+ + "\u3736\u0000\u0000\u425E\u0000\u6A5C\u0000\u0000"+ + "\u0000\u0000\u6A58\u0000\u0000\u0000\u4235\u6A57"+ + "\u0000\u6A5A\u0000\u0000\u0000\u0000\u6A51\u0000"+ + "\u0000\u0000\u6A5B\u0000\u6A5D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u486F\u0000\u0000\u6A59\u0000"+ + "\u6A5E\u6A60\u0000\u0000\u3853\u6A54\u0000\u3041"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6A5F"+ + "\u0000\u3A5B\u4E76\u6A61\u6A62\u4175\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4E22"+ + "\u0000\u0000\u0000\u0000\u6A63\u4D35\u0000\u0000"+ + "\u6A64\u6A65\u0000\u0000\u4A64\u6A66\u0000\u3A40"+ + "\u0000\u4E23\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6A6B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6A6C\u3E58\u6A6A\u0000\u0000\u0000"+ + "\u4D67\u6A67\u0000\u0000\u6A69\u403D\u3F7E\u0000"+ + "\u0000\u0000\u6A68\u0000\u6A6D\u0000\u0000\u4A23"+ + "\u0000\u0000\u6A6F\u0000\u6A6E\u0000\u0000\u0000"+ + "\u336C\u0000\u4B2B\u6A70\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6A7C\u6A72\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6A73\u0000\u0000"+ + "\u0000\u0000\u6A74\u6A75\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6A79\u0000"+ + "\u6A7A\u0000\u0000\u6A78\u0000\u0000\u0000\u0000"+ + "\u0000\u6A76\u0000\u6A71\u6A77\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6A7B\u7037\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3228\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6A7E\u365F"+ + "\u6A7D\u0000\u0000\u0000\u6B22\u0000\u6B21\u0000"+ + "\u0000\u0000\u6B24\u0000\u0000\u6B23\u0000\u6B25"+ + "\u0000\u0000\u3D31\u0000\u6B26\u0000\u0000\u6B27"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6B28\u403E"+ + "\u0000\u4D57\u0000\u6B29\u0000\u0000\u4A24\u4746"+ + "\u6B2A\u0000\u6B2B\u382B\u0000\u0000\u0000\u352C"+ + "\u0000\u0000\u0000\u6B2C\u0000\u0000\u3B6B\u4741"+ + "\u6B2D\u0000\u3350\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6B2E\u0000\u0000\u0000\u0000\u6B30\u4D77"+ + "\u0000\u6B2F\u3F46\u0000\u6B31\u0000\u0000\u6B32"+ + "\u0000\u0000\u6B33\u3451\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6B34\u0000\u0000\u6B35\u0000\u6B36"+ + "\u6B37\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3351\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6B38\u0000\u6B39\u6B3A\u0000\u0000"+ + "\u0000\u0000\u0000\u3272\u0000\u0000\u3F28\u6B3B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6B3C\u0000\u0000\u0000"+ + "\u6B3D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3840\u0000\u447B\u6B3E\u0000\u0000\u0000\u0000"+ + "\u3757\u0000\u3F56\u0000\u6B41\u0000\u4624\u0000"+ + "\u6B40\u0000\u0000\u3731\u0000\u0000\u6B3F\u4277"+ + "\u352D\u0000\u0000\u6B42\u0000\u6B43\u0000\u3E59"+ + "\u0000\u0000\u0000\u376D\u0000\u6B44\u0000\u0000"+ + "\u0000\u0000\u4B2C\u0000\u0000\u405F\u0000\u0000"+ + "\u0000\u3576\u0000\u4C75\u414A\u0000\u6B45\u0000"+ + "\u0000\u0000\u3F47\u4370\u3E5A\u0000\u0000\u0000"+ + "\u0000\u6B46\u0000\u0000\u0000\u0000\u6B49\u0000"+ + "\u6B4A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3A3E\u4242\u6B48\u0000\u3E5B\u493E\u0000\u0000"+ + "\u0000\u0000\u0000\u6B47\u0000\u0000\u3B6C\u0000"+ + "\u3153\u0000\u6B4E\u3758\u0000\u0000\u3B6E\u0000"+ + "\u0000\u3B6D\u0000\u4F4D\u6B4D\u6B4C\u4127\u0000"+ + "\u354D\u4F43\u333A\u3E5C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6B4B\u0000\u0000\u0000"+ + "\u0000\u0000\u6B50\u0000\u6B51\u6B4F\u0000\u3858"+ + "\u0000\u4D40\u0000\u0000\u3B6F\u4727\u0000\u0000"+ + "\u0000\u6B54\u0000\u4040\u0000\u4342\u0000\u0000"+ + "\u4D36\u0000\u6B57\u0000\u0000\u0000\u386C\u0000"+ + "\u403F\u6B53\u0000\u6B58\u386D\u6B55\u6B56\u0000"+ + "\u6B52\u0000\u0000\u0000\u4062\u4649\u0000\u0000"+ + "\u432F\u0000\u325D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4870\u0000\u0000\u3543\u0000\u0000\u4434"+ + "\u0000\u0000\u6B5B\u0000\u6B59\u0000\u0000\u434C"+ + "\u0000\u0000\u0000\u4041\u3452\u6B5A\u0000\u3F5B"+ + "\u0000\u0000\u4E4A\u0000\u0000\u0000\u4F40\u0000"+ + "\u0000\u0000\u6B5C\u6B67\u4435\u0000\u6B66\u0000"+ + "\u6B63\u6B6B\u6B64\u0000\u6B60\u0000\u447C\u6B5F"+ + "\u0000\u0000\u0000\u6B5D\u0000\u4D21\u3B70\u0000"+ + "\u0000\u6B61\u0000\u6B5E\u0000\u0000\u0000\u6B65"+ + "\u3D74\u0000\u3841\u0000\u0000\u0000\u427A\u0000"+ + "\u4B45\u315A\u3062\u0000\u4625\u0000\u0000\u6B69"+ + "\u0000\u0000\u0000\u0000\u6B68\u0000\u4666\u0000"+ + "\u6B6D\u0000\u0000\u0000\u6B62\u0000\u6B6C\u6B6E"+ + "\u0000\u382C\u6B6A\u3956\u0000\u3C55\u0000\u0000"+ + "\u6B6F\u4D58\u0000\u0000\u0000\u0000\u6B72\u0000"+ + "\u6B75\u0000\u0000\u6B73\u4935\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6B70\u0000\u0000\u0000\u0000"+ + "\u0000\u3660\u0000\u0000\u0000\u0000\u6B74\u0000"+ + "\u0000\u6B76\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6B7A\u0000\u0000\u6B77\u0000\u6B79\u6B78"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6B7B\u0000"+ + "\u3C31\u0000\u6B7D\u6B7C\u4968\u0000\u0000\u6C21"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3759\u0000"+ + "\u0000\u0000\u0000\u6B7E\u6C22\u0000\u0000\u6C23"+ + "\u3544\u6641\u3E79\u0000\u6C24\u0000\u0000\u386E"+ + "\u0000\u0000\u0000\u0000\u0000\u6C25\u0000\u0000"+ + "\u6C26\u0000\u0000\u3B3E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5A4E\u0000\u6C27\u0000\u6C28\u0000"+ + "\u3D32\u0000\u6C29\u6C2A\u0000\u0000\u6C2B\u0000"+ + "\u0000\u6C2C\u6C2D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u432B"+ + "\u0000\u0000\u6C2E\u0000\u0000\u0000\u0000\u6C30"+ + "\u0000\u6C2F\u0000\u0000\u0000\u0000\u4626\u0000"+ + "\u6C31\u0000\u4B2D\u0000\u6C32\u0000\u6C33\u0000"+ + "\u6C34\u0000\u0000\u0000\u0000\u6C35\u0000\u0000"+ + "\u0000\u0000\u465A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3E5D\u6C36\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u396B\u502E\u6C37\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6C38\u493F\u6C39\u0000\u6C41\u0000\u0000\u0000"+ + "\u0000\u0000\u6C3A\u0000\u0000\u6C3C\u0000\u0000"+ + "\u0000\u6C3B\u6C3D\u0000\u4B46\u6C3E\u6C3F\u0000"+ + "\u0000\u0000\u0000\u0000\u6C40\u0000\u0000\u0000"+ + "\u6C42\u0000\u0000\u0000\u0000\u332D\u4467\u0000"+ + "\u4969\u3A62\u3957\u0000\u0000\u0000\u0000\u494F"+ + "\u325F\u484E\u6C45\u3453\u4055\u6C44\u6C49\u4379"+ + "\u4C63\u0000\u6C47\u6C48\u352E\u0000\u6C4A\u4763"+ + "\u425F\u0000\u0000\u4871\u453D\u6C46\u0000\u4B47"+ + "\u326C\u6C4C\u4F28\u4442\u4F45\u0000\u0000\u3B71"+ + "\u6C4B\u0000\u4231\u0000\u0000\u6C5C\u4128\u0000"+ + "\u0000\u4678\u0000\u4950\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6C4F\u3B3F\u3B72\u0000\u3E5E\u0000"+ + "\u4765\u0000\u382D\u6C4E\u6C4D\u0000\u496A\u0000"+ + "\u0000\u0000\u3C41\u0000\u0000\u4552\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6C51\u6C52\u3958\u6C50\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6C53\u6C54\u0000\u6C56"+ + "\u4223\u0000\u6C55\u3466\u0000\u6C58\u0000\u6C57"+ + "\u6C59\u0000\u0000\u6C5B\u6C5D\u0000\u6C5E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4056\u0000\u3C4F\u6C5F"+ + "\u0000\u0000\u0000\u3352\u0000\u6C60\u0000\u0000"+ + "\u4176\u6C61\u0000\u6C62\u496B\u0000\u0000\u352F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6C63\u0000\u0000\u0000\u4436\u0000\u0000"+ + "\u0000\u0000\u315B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6C64\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3C71\u0000\u0000\u0000\u0000"+ + "\u3F76\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u422D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6C67\u0000\u0000\u0000\u6C66\u0000"+ + "\u0000\u0000\u6C65\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6C6D\u6C6B\u0000\u0000\u6C68"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6C6A\u0000"+ + "\u0000\u0000\u6C69\u6C6C\u0000\u3577\u0000\u6C70"+ + "\u0000\u4057\u0000\u6C71\u0000\u0000\u0000\u0000"+ + "\u3859\u0000\u6C6E\u6C6F\u0000\u0000\u0000\u4F29"+ + "\u0000\u0000\u0000\u4437\u0000\u4129\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6C72\u0000\u0000\u6C75"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6C73\u6C74\u4D59\u0000\u0000\u0000\u0000\u4627"+ + "\u6C78\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6C76\u6C77\u6C79"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6D29\u0000\u0000\u0000\u0000\u0000"+ + "\u6C7C\u0000\u0000\u0000\u6C7D\u6C7B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6C7A\u0000\u447D\u0000\u0000\u6D21"+ + "\u6D25\u6D22\u6C7E\u0000\u6D23\u0000\u0000\u0000"+ + "\u6D24\u0000\u0000\u0000\u0000\u6D2B\u0000\u0000"+ + "\u0000\u6D26\u0000\u0000\u0000\u0000\u0000\u4058"+ + "\u6D28\u0000\u0000\u6D2A\u6D27\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6D2D\u0000\u3D33\u0000\u6D2C\u0000"+ + "\u0000\u0000\u0000\u0000\u6D2E\u0000\u0000\u0000"+ + "\u0000\u6D2F\u0000\u0000\u6D32\u6D31\u0000\u6D30"+ + "\u0000\u0000\u6D34\u6D33\u0000\u4C76\u0000\u0000"+ + "\u0000\u6D36\u0000\u6D35\u6D37\u0000\u0000\u0000"+ + "\u0000\u6D38\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6D3A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6D39\u3F48\u6D3B\u0000\u0000\u366D"+ + "\u6D3C\u6D3E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6D3F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6D40\u6D3D\u0000"+ + "\u6D41\u0000\u3C56\u6D42\u3530\u3733\u0000\u0000"+ + "\u0000\u0000\u382E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6D43\u0000\u0000\u0000\u4670"+ + "\u0000\u0000\u453E\u6D44\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6D47\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3C34\u0000\u0000\u6D46\u6D45\u375A\u6D48\u0000"+ + "\u0000\u0000\u0000\u3353\u0000\u6D4A\u0000\u0000"+ + "\u0000\u3A5C\u6D49\u0000\u6D52\u0000\u0000\u0000"+ + "\u0000\u0000\u6D4C\u6D4E\u4A65\u6D4B\u0000\u0000"+ + "\u0000\u6D4D\u0000\u6D51\u6D4F\u3531\u0000\u6D50"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6D53\u0000"+ + "\u0000\u475A\u4E58\u0000\u0000\u0000\u0000\u3D34"+ + "\u0000\u0000\u0000\u6D54\u0000\u0000\u0000\u0000"+ + "\u4D22\u6D56\u0000\u6D55\u0000\u0000\u6D59\u4D41"+ + "\u0000\u0000\u6D58\u0000\u336D\u6D57\u6D5C\u0000"+ + "\u0000\u6D5B\u0000\u0000\u6D5A\u4532\u6D5D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6D5E"+ + "\u0000\u0000\u0000\u0000\u6D5F\u0000\u0000\u396C"+ + "\u0000\u3725\u6D60\u6D61\u6D62\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3F49\u6D63\u0000\u3C2D\u6D64"+ + "\u0000\u0000\u0000\u6D65\u0000\u0000\u0000\u5221"+ + "\u517E\u0000\u0000\u0000\u0000\u6D66\u6570\u6D67"+ + "\u4324\u3F2B\u4740\u0000\u0000\u0000\u0000\u6D68"+ + "\u0000\u0000\u4A55\u4454\u397E\u0000\u0000\u4329"+ + "\u0000\u0000\u312A\u0000\u4B78\u3F57\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u375E\u0000"+ + "\u0000\u3661\u0000\u0000\u4A56\u0000\u0000\u0000"+ + "\u0000\u0000\u6D69\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6D6B\u0000\u0000\u6D6A\u3260\u0000"+ + "\u0000\u4676\u6D6C\u4777\u0000\u4533\u0000\u6D6D"+ + "\u3D52\u0000\u0000\u0000\u6D6F\u0000\u0000\u4C42"+ + "\u6D7E\u6D71\u6D72\u0000\u0000\u4449\u0000\u0000"+ + "\u4260\u4177\u0000\u4628\u0000\u6D70\u3555\u0000"+ + "\u0000\u0000\u0000\u6D79\u0000\u6D76\u6E25\u4629"+ + "\u4360\u6D73\u0000\u447E\u4553\u6D74\u6D78\u3F60"+ + "\u0000\u4767\u444C\u0000\u0000\u4042\u6D77\u422E"+ + "\u4224\u6D75\u3029\u4F22\u0000\u0000\u0000\u6D7A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4261\u0000"+ + "\u0000\u3D35\u3F4A\u0000\u0000\u6D7C\u6D7B\u0000"+ + "\u306F\u6D7D\u0000\u0000\u492F\u0000\u6E27\u0000"+ + "\u0000\u465B\u3F6B\u0000\u0000\u4359\u0000\u3678"+ + "\u0000\u6E26\u4D37\u313F\u0000\u4A57\u3261\u6E21"+ + "\u6E22\u6E23\u6E24\u463B\u4323\u3063\u6E28\u0000"+ + "\u6E29\u7423\u0000\u0000\u423D\u0000\u6E2A\u0000"+ + "\u3173\u414C\u0000\u382F\u0000\u4D5A\u0000\u0000"+ + "\u6E2B\u452C\u0000\u0000\u0000\u4178\u3C57\u6E2C"+ + "\u0000\u0000\u6E2F\u0000\u0000\u3D65\u6E2D\u412B"+ + "\u412A\u0000\u3064\u0000\u4E4B\u6E31\u0000\u4872"+ + "\u6E33\u6E32\u6E30\u6364\u3454\u0000\u0000\u6D6E"+ + "\u0000\u6E35\u6E34\u0000\u0000\u0000\u0000\u6E36"+ + "\u0000\u4D38\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4661\u0000\u0000\u4B2E\u0000"+ + "\u6E37\u0000\u3C59\u0000\u0000\u0000\u0000\u6E38"+ + "\u0000\u6E39\u0000\u0000\u0000\u6E3A\u0000\u0000"+ + "\u4521\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u306A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3959\u0000\u0000\u0000\u4F3A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6E3E\u0000\u0000\u0000\u0000"+ + "\u0000\u3734\u6E3B\u0000\u6E3C\u0000\u0000\u0000"+ + "\u4974\u0000\u0000\u0000\u0000\u3354\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4D39\u0000\u363F"+ + "\u0000\u0000\u0000\u0000\u0000\u4554\u0000\u0000"+ + "\u0000\u0000\u6E3F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6E40\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6E41\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4522\u0000\u0000"+ + "\u6E43\u0000\u6E42\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4653\u6E44\u3D36\u3C60\u475B\u4371\u0000"+ + "\u0000\u0000\u3C72\u0000\u3F6C\u0000\u6E45\u0000"+ + "\u6E46\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3F5D\u6E47\u0000\u6E48\u0000\u0000"+ + "\u0000\u6E49\u4D6F\u0000\u3D37\u0000\u0000\u0000"+ + "\u0000\u0000\u6E4B\u6E4A\u0000\u395A\u0000\u3973"+ + "\u3B40\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6E4E\u0000\u0000\u0000\u0000\u3D66"+ + "\u0000\u6E4D\u0000\u6E4C\u0000\u4269\u0000\u0000"+ + "\u386F\u0000\u4043\u0000\u0000\u0000\u0000\u4830"+ + "\u0000\u0000\u0000\u0000\u3D39\u0000\u0000\u0000"+ + "\u0000\u0000\u6E4F\u0000\u3E5F\u0000\u0000\u0000"+ + "\u0000\u0000\u6E52\u6E50\u0000\u0000\u0000\u6E51"+ + "\u0000\u0000\u0000\u0000\u6E54\u6E53\u0000\u0000"+ + "\u3E7A\u0000\u6E55\u0000\u0000\u0000\u0000\u0000"+ + "\u6E56\u6E57\u0000\u0000\u0000\u0000\u4850\u3A53"+ + "\u3C61\u6E58\u0000\u6E59\u4E24\u3D45\u4C6E\u4E4C"+ + "\u6E5A\u3662\u0000\u0000\u0000\u0000\u6E5B\u0000"+ + "\u4523\u0000\u0000\u6E5E\u3378\u3F4B\u0000\u6E5C"+ + "\u0000\u6E5D\u0000\u4460\u0000\u0000\u4B55\u367C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6E60\u6E61\u0000"+ + "\u0000\u0000\u0000\u0000\u6E5F\u0000\u0000\u6E63"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u465F\u3343\u0000"+ + "\u0000\u6E67\u0000\u0000\u6E64\u6E66\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6E62\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6F4F\u0000\u0000\u6E65\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4E6B\u0000\u0000\u385A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E6F"+ + "\u0000\u0000\u0000\u0000\u4534\u6E6A\u0000\u0000"+ + "\u6E6D\u6E6B\u0000\u6E70\u0000\u0000\u0000\u0000"+ + "\u6E71\u0000\u0000\u0000\u0000\u0000\u0000\u6E69"+ + "\u0000\u0000\u6E76\u3174\u0000\u0000\u6E68\u0000"+ + "\u0000\u0000\u482D\u0000\u6E6C\u0000\u3E60\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u395B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4B48\u0000"+ + "\u3664\u0000\u0000\u3D46\u0000\u463C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u412D\u0000\u6E74\u0000\u6E6E\u6E73\u0000"+ + "\u4C43\u0000\u4438\u6E75\u6E72\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u412C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E79"+ + "\u0000\u6E78\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E77"+ + "\u0000\u0000\u4B2F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3D7B\u0000\u0000\u0000"+ + "\u0000\u6E7A\u4A5F\u0000\u0000\u3154\u0000\u0000"+ + "\u0000\u0000\u4946\u4372\u0000\u0000\u0000\u0000"+ + "\u3578\u0000\u6E7C\u0000\u395D\u0000\u0000\u0000"; + + private final static String innerIndex5= + "\u0000\u0000\u0000\u0000\u0000\u0000\u3B2C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6E7B"+ + "\u3F6D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3F6E\u6F21\u6F23\u0000\u0000\u0000\u0000\u0000"+ + "\u3E7B\u0000\u6F22\u6F24\u0000\u0000\u3653\u0000"+ + "\u4945\u0000\u0000\u3C62\u4F23\u0000\u6E7E\u3A78"+ + "\u0000\u0000\u4F3F\u0000\u0000\u6F26\u0000\u0000"+ + "\u0000\u0000\u6F25\u6F27\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6E7D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4669\u0000\u4555\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4457\u0000\u6F2C\u0000"+ + "\u0000\u0000\u0000\u4343\u6F28\u0000\u0000\u0000"+ + "\u6F29\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u372D\u0000\u6F2B\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3830\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6F2A\u0000\u3E61\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3379\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6F30\u0000\u3A3F\u4179"+ + "\u0000\u0000\u444A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u333B"+ + "\u0000\u0000\u0000\u0000\u6F2E\u6F2F\u4443\u0000"+ + "\u6F2D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6F31\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6F37\u0000\u0000\u0000\u0000"+ + "\u6F3A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6F39\u452D\u0000\u0000\u0000\u0000\u6F32\u6F33"+ + "\u6F36\u0000\u0000\u0000\u0000\u6F38\u0000\u0000"+ + "\u0000\u3640\u0000\u0000\u6F3B\u6F35\u0000\u0000"+ + "\u6F34\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6F3F\u0000\u0000\u0000\u6F40"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6F41\u0000\u0000\u6F3E\u6F3D\u0000\u0000\u0000"+ + "\u3E62\u462A\u6F3C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6F45\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6F43\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6F44\u6F42\u0000"+ + "\u4278\u0000\u6F46\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6F47\u0000\u0000\u6F49\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3455\u6F48\u4C7A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6F54\u6F4A\u0000\u0000\u6F4D\u0000"+ + "\u6F4B\u0000\u6F4C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6F4E\u0000\u0000\u0000\u0000\u0000"+ + "\u6F50\u0000\u0000\u0000\u0000\u6F51\u0000\u6F52"+ + "\u0000\u0000\u0000\u0000\u6F55\u6F53\u6F56\u6F58"+ + "\u0000\u6F57\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4439"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4C67\u0000\u6F59\u412E\u0000\u0000\u0000\u6F5A"+ + "\u0000\u4A44\u6F5B\u332B\u0000\u0000\u0000\u313C"+ + "\u0000\u3457\u0000\u3456\u6F5C\u0000\u6F5D\u0000"+ + "\u6F5E\u6F5F\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6F60\u0000\u3458\u3355\u395E\u4836\u0000\u6F62"+ + "\u6F61\u0000\u0000\u0000\u0000\u6F63\u0000\u0000"+ + "\u0000\u0000\u315C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6F66\u0000\u6F65\u6F64\u0000\u6F67\u0000"+ + "\u0000\u0000\u0000\u6F6A\u0000\u0000\u0000\u3047"+ + "\u0000\u0000\u6F68\u0000\u6F6C\u6F6B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6F6E\u6F6D\u6F6F\u0000"+ + "\u462E\u0000\u0000\u0000\u6F70\u0000\u0000\u0000"+ + "\u0000\u6F71\u6F73\u0000\u0000\u6F72\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u496C\u0000\u0000\u0000"+ + "\u0000\u6F74\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6F75\u0000\u3A65\u0000\u0000\u0000\u6F76\u6F77"+ + "\u0000\u0000\u4B49\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u414B\u0000\u0000\u0000\u3024"+ + "\u424B\u0000\u6F78\u0000\u496D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6F7B\u6F79\u395F\u0000\u6F7A"+ + "\u3842\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A45\u6F7D\u7021\u6F7E\u7022"+ + "\u0000\u0000\u3121\u3F58\u3D7C\u3459\u7023\u0000"+ + "\u0000\u0000\u4766\u0000\u7025\u0000\u0000\u0000"+ + "\u3122\u0000\u7024\u4444\u0000\u4E4D\u462B\u6F7C"+ + "\u4E26\u0000\u3831\u0000\u0000\u4D5B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3679\u4E34\u0000"+ + "\u3728\u0000\u4262\u6721\u0000\u7026\u332C\u3F6F"+ + "\u0000\u0000\u0000\u0000\u3356\u7028\u0000\u7029"+ + "\u7027\u3764\u0000\u3A5D\u3E63\u0000\u0000\u0000"+ + "\u3123\u0000\u0000\u4E59\u0000\u0000\u0000\u702B"+ + "\u6E2E\u0000\u702A\u0000\u0000\u0000\u0000\u0000"+ + "\u702E\u702C\u702D\u0000\u702F\u0000\u7030\u4E6C"+ + "\u7031\u7032\u0000\u4049\u483B\u0000\u0000\u0000"+ + "\u3F7D\u3467\u0000\u0000\u4D3A\u326D\u3D38\u385B"+ + "\u0000\u7035\u0000\u7034\u3B73\u7036\u7033\u0000"+ + "\u0000\u3B28\u0000\u0000\u0000\u703A\u6A2D\u0000"+ + "\u0000\u5256\u0000\u3F77\u7038\u0000\u0000\u0000"+ + "\u0000\u0000\u4E25\u4671\u0000\u0000\u0000\u0000"+ + "\u312B\u0000\u4063\u3C36\u0000\u0000\u0000\u0000"+ + "\u4A37\u0000\u3140\u0000\u0000\u0000\u4E6D\u4D6B"+ + "\u0000\u703B\u0000\u4545\u0000\u0000\u0000\u0000"+ + "\u3C7B\u0000\u0000\u0000\u703C\u0000\u703D\u3F4C"+ + "\u703E\u0000\u4E6E\u0000\u0000\u7039\u7040\u7042"+ + "\u0000\u7041\u0000\u703F\u0000\u0000\u7043\u0000"+ + "\u0000\u7044\u0000\u0000\u417A\u0000\u3262\u0000"+ + "\u0000\u0000\u0000\u0000\u7045\u0000\u0000\u4C38"+ + "\u0000\u0000\u7046\u0000\u0000\u0000\u0000\u0000"+ + "\u7047\u0000\u4F2A\u0000\u0000\u0000\u0000\u0000"+ + "\u5B31\u7048\u0000\u0000\u0000\u7049\u704A\u0000"+ + "\u0000\u0000\u704E\u0000\u704B\u0000\u704C\u0000"+ + "\u704D\u704F\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4044\u0000\u0000\u0000\u4C77\u0000"+ + "\u0000\u4045\u0000\u0000\u7050\u0000\u4873\u0000"+ + "\u7051\u7353\u4C4C\u0000\u7052\u0000\u7053\u0000"+ + "\u7054\u3357\u0000\u7056\u0000\u3F59\u0000\u0000"+ + "\u0000\u7057\u0000\u0000\u3724\u0000\u0000\u0000"+ + "\u0000\u7058\u705C\u0000\u705A\u0000\u0000\u0000"+ + "\u0000\u705B\u0000\u0000\u3373\u7059\u705D\u0000"+ + "\u0000\u0000\u0000\u705E\u0000\u3048\u0000\u705F"+ + "\u7060\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3E64\u0000\u0000\u0000\u7061\u0000\u0000\u0000"+ + "\u3547\u0000\u0000\u7064\u0000\u0000\u7063\u0000"+ + "\u7062\u0000\u0000\u6B71\u0000\u4A5C\u0000\u0000"+ + "\u0000\u0000\u0000\u7065\u7066\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u7067\u0000\u0000\u7068\u0000"+ + "\u7069\u0000\u0000\u706A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u345A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u706B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u706C\u4723\u0000"+ + "\u0000\u0000\u706E\u323B\u0000\u7071\u7070\u0000"+ + "\u0000\u0000\u0000\u3124\u0000\u0000\u0000\u3641"+ + "\u0000\u4A47\u443A\u3A22\u0000\u3960\u3D67\u0000"+ + "\u3F5C\u0000\u0000\u0000\u7073\u0000\u0000\u7072"+ + "\u4D42\u3468\u4852\u465C\u0000\u0000\u0000\u3F7C"+ + "\u4E4E\u0000\u375B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u7076\u0000\u0000\u7075\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4B4B\u462C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3150\u0000\u0000\u7077"+ + "\u7074\u0000\u0000\u4951\u4D6A\u7078\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u7079\u0000"+ + "\u0000\u0000\u0000\u707B\u426A\u335B\u335C\u707A"+ + "\u0000\u0000\u0000\u0000\u3469\u3832\u0000\u0000"+ + "\u346A\u0000\u0000\u453F\u0000\u0000\u4E60\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u385C"+ + "\u0000\u0000\u0000\u707C\u0000\u0000\u0000\u707D"+ + "\u707E\u7121\u0000\u7123\u7122\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4977\u0000\u7124\u0000\u0000\u0000\u0000\u7125"+ + "\u0000\u7126\u0000\u0000\u0000\u0000\u7127\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u7129\u7128\u0000\u712A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4874\u664C\u0000\u0000\u3F29"+ + "\u0000\u0000\u3532\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u712B\u0000\u712C\u0000\u522C\u5D3B\u4853"+ + "\u0000\u0000\u307B\u0000\u303B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3B74\u4B30\u3E7E\u0000"+ + "\u0000\u0000\u0000\u712D\u0000\u4C5F\u0000\u0000"+ + "\u0000\u712E\u4D5C\u0000\u3142\u0000\u0000\u0000"+ + "\u3B41\u0000\u712F\u326E\u7130\u0000\u0000\u0000"+ + "\u7131\u0000\u0000\u0000\u0000\u7133\u7134\u0000"+ + "\u7136\u7132\u0000\u0000\u7135\u0000\u0000\u0000"+ + "\u345B\u0000\u0000\u0000\u7137\u0000\u7138\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u7139\u713A\u0000"+ + "\u0000\u0000\u713B\u0000\u0000\u713D\u0000\u0000"+ + "\u0000\u713C\u0000\u713F\u7142\u0000\u0000\u0000"+ + "\u713E\u7140\u7141\u0000\u0000\u7143\u0000\u3642"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3C73\u7144"+ + "\u7145\u3961\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u7146\u0000\u0000"+ + "\u333E\u0000\u0000\u0000\u474F\u7147\u7148\u0000"+ + "\u0000\u0000\u0000\u435A\u466B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u7149\u0000\u0000\u0000"+ + "\u0000\u477D\u0000\u0000\u424C\u3158\u366E\u0000"+ + "\u366F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4373\u714E\u3670\u0000\u0000\u326F\u0000\u0000"+ + "\u714D\u0000\u0000\u714B\u0000\u714C\u0000\u714A"+ + "\u0000\u0000\u7158\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u714F\u7150\u0000"+ + "\u0000\u7151\u7152\u0000\u0000\u0000\u0000\u0000"+ + "\u7154\u0000\u0000\u7153\u0000\u0000\u0000\u3D59"+ + "\u0000\u7155\u0000\u0000\u0000\u7157\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3533\u7156"+ + "\u0000\u0000\u417B\u3833\u0000\u0000\u0000\u0000"+ + "\u0000\u7159\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u424D\u0000\u0000\u715A\u0000\u0000\u0000\u0000"+ + "\u462D\u0000\u0000\u0000\u0000\u0000\u0000\u715B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u7160\u0000"+ + "\u715E\u0000\u715D\u715F\u0000\u715C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u7162\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u7161\u0000\u7164"+ + "\u0000\u0000\u3643\u7163\u0000\u0000\u0000\u7165"+ + "\u0000\u0000\u7166\u0000\u7168\u7167\u0000\u0000"+ + "\u0000\u7169\u716B\u716A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u397C\u0000\u0000\u0000\u0000\u716C\u0000\u0000"+ + "\u716D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u333C\u0000\u0000\u0000\u716E\u0000\u0000\u0000"+ + "\u716F\u0000\u0000\u0000\u3F71\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7170"+ + "\u0000\u7171\u0000\u7172\u7173\u0000\u0000\u0000"+ + "\u3962\u0000\u0000\u0000\u0000\u0000\u7174\u7175"+ + "\u0000\u0000\u7176\u7177\u0000\u0000\u7178\u0000"+ + "\u0000\u0000\u4831\u717A\u0000\u4926\u717B\u7179"+ + "\u0000\u717D\u0000\u0000\u717C\u0000\u0000\u717E"+ + "\u0000\u0000\u0000\u7221\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u7222\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u7223\u0000\u7224\u0000\u0000\u0000\u0000\u7225"+ + "\u0000\u0000\u7226\u7227\u0000\u7228\u0000\u7229"+ + "\u722A\u722B\u722C\u0000\u0000\u0000\u722D\u722E"+ + "\u0000\u5D35\u722F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6478\u3534\u0000\u0000\u0000"+ + "\u0000\u3321\u3A32\u7231\u7230\u4C25\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u7233\u7234\u7232"+ + "\u0000\u7235\u0000\u0000\u4B62\u0000\u0000\u0000"+ + "\u7236\u0000\u357B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4F25"+ + "\u0000\u0000\u0000\u0000\u7237\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u7239\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u303E\u0000"+ + "\u0000\u723A\u4A2B\u7238\u0000\u0000\u723B\u723C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u723D"+ + "\u723E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u723F\u0000\u4B6E\u3B2D\u0000\u3A7A\u412F\u0000"+ + "\u0000\u0000\u0000\u0000\u7240\u0000\u0000\u0000"+ + "\u0000\u7243\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u7241\u0000\u0000\u0000\u0000\u0000\u7244\u0000"+ + "\u0000\u3871\u7242\u0000\u0000\u0000\u0000\u7245"+ + "\u0000\u7246\u7247\u0000\u724B\u0000\u3B2A\u0000"+ + "\u0000\u0000\u0000\u4264\u0000\u0000\u0000\u0000"+ + "\u0000\u724C\u7249\u7248\u724A\u0000\u0000\u0000"+ + "\u375F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u7250\u724F\u724E\u0000\u0000\u3033\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u725A\u0000\u7256\u0000"+ + "\u7257\u7253\u7259\u0000\u7255\u3362\u0000\u0000"+ + "\u4F4C\u0000\u7258\u7254\u7252\u7251\u0000\u0000"+ + "\u0000\u0000\u0000\u725C\u0000\u0000\u0000\u0000"+ + "\u0000\u725F\u0000\u0000\u725E\u725D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4949\u725B\u3073"+ + "\u7260\u0000\u7262\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u336F\u724D\u3137\u0000\u0000\u7264\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u7263\u7261"+ + "\u432D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4B70\u0000\u0000\u0000\u0000\u4E5A"+ + "\u0000\u0000\u7265\u0000\u0000\u0000\u0000\u0000"+ + "\u7266\u0000\u0000\u0000\u0000\u0000\u0000\u7267"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u7268\u0000"+ + "\u7269\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u443B\u0000\u726A"+ + "\u0000\u4837\u0000\u726F\u726B\u0000\u0000\u0000"+ + "\u726C\u0000\u0000\u4B31\u4C44\u0000\u4650\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u7270\u0000\u0000\u7271\u463E"+ + "\u726E\u726D\u0000\u0000\u0000\u0000\u322A\u0000"+ + "\u0000\u0000\u7279\u0000\u0000\u7278\u0000\u0000"+ + "\u0000\u0000\u0000\u3175\u0000\u0000\u0000\u7276"+ + "\u0000\u0000\u0000\u7275\u0000\u0000\u7273\u0000"+ + "\u337B\u0000\u7272\u3C32\u3229\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3963\u0000\u0000\u727C\u727B"+ + "\u0000\u727A\u0000\u0000\u7277\u0000\u727D\u0000"+ + "\u727E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u7325\u7324\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u7326\u0000\u0000\u312D\u7321\u7322\u0000"+ + "\u3974\u4C39\u0000\u0000\u7323\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4B32\u0000\u0000\u732B"+ + "\u0000\u0000\u7327\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u732C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7329"+ + "\u0000\u7328\u0000\u0000\u0000\u0000\u0000\u375C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u732D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u732E\u0000\u0000\u0000"+ + "\u0000\u732F\u0000\u732A\u0000\u0000\u0000\u7274"+ + "\u0000\u0000\u7330\u0000\u4461\u0000\u0000\u0000"+ + "\u7334\u0000\u7335\u7333\u0000\u0000\u0000\u0000"+ + "\u0000\u7332\u7338\u0000\u7331\u0000\u7336\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7337"+ + "\u0000\u0000\u0000\u733A\u0000\u0000\u0000\u0000"+ + "\u0000\u7339\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u733C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u733D\u0000\u733E"+ + "\u0000\u0000\u4F49\u0000\u0000\u0000\u0000\u0000"+ + "\u733B\u426B\u3A6D\u0000\u0000\u733F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u7340\u7341\u0000\u0000\u7342\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u7343\u0000\u0000"+ + "\u3834\u7344\u0000\u0000\u0000\u7345\u0000\u3C2F"+ + "\u0000\u7346\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u7347\u0000\u0000\u7348\u7349\u0000\u0000\u0000"+ + "\u0000\u734C\u734A\u4F3C\u0000\u734B\u0000\u4E6F"+ + "\u0000\u0000\u0000\u0000\u0000\u734D\u0000\u4E5B"+ + "\u0000\u0000\u0000\u0000\u0000\u734E\u477E\u0000"+ + "\u0000\u734F\u7351\u0000\u0000\u7352\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u7350\u396D\u4C4D\u4B63\u5677\u0000\u5D60\u4B7B"+ + "\u0000\u0000\u0000\u0000\u322B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u7354\u3550\u7355\u7356"+ + "\u7357\u0000\u3975\u0000\u7358\u0000\u0000\u0000"+ + "\u6054\u4C5B\u0000\u4263\u7359\u735B\u735A\u0000"+ + "\u735C\u0000\u0000\u0000\u0000\u735D\u0000\u0000"+ + "\u735E\u0000\u0000\u0000\u0000\u0000\u0000\u735F"+ + "\u0000\u0000\u0000\u0000\u7360\u0000\u7361\u7362"+ + "\u0000\u7363\u0000\u7364\u7365\u7366\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7367"+ + "\u7368\u0000\u0000\u0000\u0000\u0000\u4524\u0000"+ + "\u0000\u0000\u0000\u385D\u0000\u736A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u414D\u736B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u736C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4921\u0000\u0000\u736D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u736E\u6337\u0000\u0000\u6C5A\u706D"+ + "\u0000\u0000\u736F\u0000\u7370\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7372"+ + "\u7373\u7374\u4E70\u7371\u0000\u0000\u7375\u7376"+ + "\u0000\u0000\u7378\u0000\u7377\u0000\u0000\u0000"+ + "\u0000\u0000\u737A\u0000\u0000\u0000\u737B\u7379"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4E36\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u737C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u737D\u6354\u0000\u0000"+ + "\u737E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u212A\u0000\u2174\u2170\u2173\u2175\u0000"+ + "\u214A\u214B\u2176\u215C\u2124\u0000\u2125\u213F"+ + "\u2330\u2331\u2332\u2333\u2334\u2335\u2336\u2337"+ + "\u2338\u2339\u2127\u2128\u2163\u2161\u2164\u2129"+ + "\u2177\u2341\u2342\u2343\u2344\u2345\u2346\u2347"+ + "\u2348\u2349\u234A\u234B\u234C\u234D\u234E\u234F"+ + "\u2350\u2351\u2352\u2353\u2354\u2355\u2356\u2357"+ + "\u2358\u2359\u235A\u214E\u2140\u214F\u2130\u2132"+ + "\u212E\u2361\u2362\u2363\u2364\u2365\u2366\u2367"+ + "\u2368\u2369\u236A\u236B\u236C\u236D\u236E\u236F"+ + "\u2370\u2371\u2372\u2373\u2374\u2375\u2376\u2377"+ + "\u2378\u2379\u237A\u2150\u2143\u2151\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u2131\u0000\u216F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; + + private final static short index1[] = { + 1, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 5, 6, 7, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93 + }; + + private final static String index2[] = { + innerIndex0, + innerIndex1, + innerIndex2, + innerIndex3, + innerIndex4, + innerIndex5 + }; +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/JIS_X_0208_OLD.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/JIS_X_0208_OLD.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + + +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; + +public class JIS_X_0208_OLD + extends Charset +{ + + public JIS_X_0208_OLD() { + super("x-JIS0208_OLD", null); + } + + public boolean contains(Charset cs) { + return (cs instanceof JIS_X_0208_OLD); + } + + public CharsetDecoder newDecoder() { + return new Decoder(this); + } + + public CharsetEncoder newEncoder() { + return new JIS_X_0208_Encoder(this); + } + + private static class Decoder extends JIS_X_0208_Decoder { + protected char decodeSingle(int b) { + return DoubleByteDecoder.REPLACE_CHAR; + } + + public Decoder(Charset cs) { + super(cs); + } + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/JIS_X_0208_Solaris_Decoder.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/JIS_X_0208_Solaris_Decoder.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,210 @@ +/* + * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + + +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; + +public class JIS_X_0208_Solaris_Decoder extends DoubleByteDecoder +{ + + public JIS_X_0208_Solaris_Decoder(Charset cs) { + super(cs, + index1, + index2, + 0x21, + 0x7E); + } + private final static String innerIndex0= + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2460\u2461"+ + "\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469"+ + "\u246A\u246B\u246C\u246D\u246E\u246F\u2470\u2471"+ + "\u2472\u2473\u2160\u2161\u2162\u2163\u2164\u2165"+ + "\u2166\u2167\u2168\u2169\uFFFD\u3349\u3314\u3322"+ + "\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D"+ + "\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E"+ + "\u338E\u338F\u33C4\u33A1\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\u337B\u301D\u301F\u2116"+ + "\u33CD\u2121\u32A4\u32A5\u32A6\u32A7\u32A8\u3231"+ + "\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B"+ + "\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235"+ + "\u2229\u222A\uFFFD\uFFFD\u7E8A\u891C\u9348\u9288"+ + "\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45"+ + "\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92"+ + "\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E"+ + "\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164"+ + "\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB"+ + "\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E"+ + "\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC"+ + "\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953"+ + "\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F"+ + "\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53"+ + "\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34"+ + "\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5"+ + "\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6"+ + "\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B"+ + "\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12"+ + "\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929"+ + "\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13"+ + "\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73"+ + "\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F"+ + "\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8"+ + "\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88"+ + "\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F"+ + "\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"+ + "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3"+ + "\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462"+ + "\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B"+ + "\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A"+ + "\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1"+ + "\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7"+ + "\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362"+ + "\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B"+ + "\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37"+ + "\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F"+ + "\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25"+ + "\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE"+ + "\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A"+ + "\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7"+ + "\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5"+ + "\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF"+ + "\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8"+ + "\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF"+ + "\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857"+ + "\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"+ + "\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70"+ + "\u9D6B\uFA2D\u9E19\u9ED1\uFFFD\uFFFD\u2170\u2171"+ + "\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179"+ + "\u3052\u00A6\uFF07\uFF02\u2170\u2171\u2172\u2173"+ + "\u2174\u2175\u2176\u2177\u2178\u2179\u2160\u2161"+ + "\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169"+ + "\u3052\u00A6\uFF07\uFF02\u3231\u2116\u2121\u306E"+ + "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631"+ + "\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00"+ + "\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD"+ + "\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094"+ + "\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215"+ + "\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372"+ + "\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF"+ + "\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10"+ + "\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4"+ + "\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6"+ + "\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8"+ + "\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D"+ + "\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137"+ + "\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE"+ + "\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624"+ + "\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2"+ + "\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0"+ + "\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2"+ + "\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6"+ + "\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"+ + "\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C"+ + "\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007"+ + "\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147"+ + "\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377"+ + "\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426"+ + "\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F"+ + "\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF"+ + "\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A"+ + "\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E"+ + "\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47"+ + "\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448"+ + "\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21"+ + "\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF"+ + "\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76"+ + "\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115"+ + "\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5"+ + "\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259"+ + "\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7"+ + "\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321"+ + "\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357"+ + "\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592"+ + "\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D"+ + "\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927"+ + "\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F"+ + "\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD"; + + private static final short index1[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + + private final static String index2[] = { + innerIndex0 + }; + + protected char convSingleByte(int b) { + return REPLACE_CHAR; + } + + + static short[] getIndex1() { + return index1; + } + + static String[] getIndex2() { + return index2; + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/JIS_X_0208_Solaris_Encoder.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/JIS_X_0208_Solaris_Encoder.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,2727 @@ +/* + * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + + +import java.nio.charset.Charset; +import java.nio.charset.CharsetEncoder; + +public class JIS_X_0208_Solaris_Encoder extends DoubleByteEncoder +{ + private static byte[] repl = { (byte)0x21, (byte)0x29 }; + + public JIS_X_0208_Solaris_Encoder(Charset cs) { + super(cs, + index1, + index2 , + repl + ); + } + + protected int encodeSingle(char inputChar) { + return -1; + } + + private final static String innerIndex0= + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9336\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u2D62\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u2D64\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u2D35\u2D36\u2D37\u2D38\u2D39\u2D3A\u2D3B\u2D3C"+ + "\u2D3D\u2D3E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9321\u9322\u9323\u9324\u9325\u9326\u9327\u9328"+ + "\u9329\u932A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u2D74\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2D75\u0000\u0000\u0000\u0000\u2D78"+ + "\u2D77\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u2D7B\u2D7C\u2D72\u0000\u0000\u2D73\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u2D7A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2D70\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u2D71\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u2D76\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u2D79"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u2D21\u2D22\u2D23\u2D24\u2D25\u2D26\u2D27\u2D28"+ + "\u2D29\u2D2A\u2D2B\u2D2C\u2D2D\u2D2E\u2D2F\u2D30"+ + "\u2D31\u2D32\u2D33\u2D34\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u2D60\u0000\u2D61"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9335\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u933C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u2D6A\u2D6B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u2D6C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u2D65\u2D66\u2D67\u2D68"+ + "\u2D69\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u2D46\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u2D4A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u2D41\u0000\u0000\u0000"+ + "\u2D44\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2D42\u2D4C\u0000\u0000\u2D4B\u2D45"+ + "\u0000\u0000\u0000\u2D4D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u2D47\u0000"+ + "\u0000\u0000\u0000\u2D4F\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u2D40\u2D4E\u0000\u0000\u2D43\u0000\u0000"+ + "\u0000\u2D48\u0000\u0000\u0000\u0000\u0000\u2D49"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u2D5F\u2D6F\u2D6E\u2D6D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u2D53\u2D54"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u2D50\u2D51\u2D52\u0000"+ + "\u0000\u2D56\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u2D55\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u2D63\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9349\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u934A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u934B\u0000\u0000\u0000"+ + "\u934C\u0000\u0000\u934D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u934E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u934F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9351\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9350\u0000\u9353\u0000\u0000\u0000"+ + "\u0000\u0000\u9352\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9342\u0000\u0000\u0000\u9354\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9357"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9358\u0000"+ + "\u0000\u0000\u9356\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9355\u0000\u935B\u0000\u0000\u0000\u9359\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u935A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u935C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u935E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u935D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u935F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9360\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9361\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9362\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9363\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9364\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9365\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9366\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9558"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9367\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9368\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9369\u0000\u0000\u0000\u0000\u0000\u0000\u936A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u936B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u936C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u936D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u936E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u936F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9372\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9371\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9373\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9374"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9375\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; + + private final static String innerIndex1= + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9376\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9377\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9378\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u937A"+ + "\u9379\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u937D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u937E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9421\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9422\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9423\u0000\u9424\u0000\u0000"+ + "\u0000\u0000\u0000\u9425\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9426\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9427\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9428\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9429\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u942B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u942C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u942D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u942E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u942F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9430\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9431"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9434\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9432\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9435\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9436\u9437\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9438\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9439\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u943A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9348\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u943B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u943C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u943D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u943E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u943F\u0000\u0000"+ + "\u0000\u0000\u9440\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9442\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9441\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9444\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9445\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9443\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9447\u0000\u0000\u0000\u0000\u0000\u0000\u9446"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9448\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9449\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u944A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u944B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u944C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u944D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u944E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u944F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9450\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9453\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9451\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9455\u0000"+ + "\u0000\u0000\u0000\u0000\u9456\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9454\u0000"+ + "\u0000\u9344\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9452\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9458"+ + "\u0000\u9459\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9457\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u945B\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u945C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u945D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u945E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u945F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9460\u9347\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9461\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9463\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9464\u0000\u0000\u0000\u0000"+ + "\u9466\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9467\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9468\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9465\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9345\u0000\u0000\u0000\u0000\u0000\u0000\u9469"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; + + private final static String innerIndex2= + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u946B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u946D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u946E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u946F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9471\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9470\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9472\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9473\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9474\u0000\u9475\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9476\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9477"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9478\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u947A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9479\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u947B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u947C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u947E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u947D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9521\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9522\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9523"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9525\u0000\u0000\u0000\u0000\u0000"+ + "\u9524\u0000\u0000\u0000\u9526\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9529"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9527\u0000\u0000\u952A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9528\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u952B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u952C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u952D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u952E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u952F\u0000\u9530"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9531\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9532\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9533\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9343\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9535\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9534"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9537\u9538"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9536\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u953A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u953B\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u953C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u953D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u953E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9540"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9541\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9542\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9545\u0000\u0000\u0000\u9543\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9544\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9547\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9546"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9548\u0000"+ + "\u0000\u954A\u9549\u0000\u0000\u0000\u954B\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u954C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u954D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u954E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u954F\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u942A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9550"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9551\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9554\u9552\u0000\u9553\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9555\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9557\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9559\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u955A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u955B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u955C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; + + private final static String innerIndex3= + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u955D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9561\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9563\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9564\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9565"+ + "\u0000\u0000\u0000\u9567\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9568\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u956A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u956B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u956D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u956C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u956E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u956F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u933D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9570"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9571\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9573\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9574\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9575"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9576"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9577\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9578\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9579\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9341\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u957A\u0000\u0000\u0000\u0000"+ + "\u0000\u957B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u957C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u957E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9623"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9624\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u933E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9625\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9626"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9627\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9628"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9629\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u962A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u962C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u962D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u962E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u962F\u0000\u0000\u0000\u9630\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9631\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9632\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9634"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; + + private final static String innerIndex4= + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9637"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9638\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u963A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u963B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u963D"+ + "\u0000\u0000\u963C\u0000\u0000\u0000\u963E\u0000"+ + "\u0000\u0000\u0000\u0000\u9641\u9642\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u963F\u9640\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9643\u0000"+ + "\u0000\u0000\u9645\u0000\u0000\u0000\u0000\u0000"+ + "\u9644\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u964C\u9646\u0000\u9648\u0000\u0000\u0000"+ + "\u9647\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9649\u0000"+ + "\u0000\u964B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u964A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u964D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u964F"+ + "\u9650\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9340\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u964E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9654\u0000\u0000\u9658\u0000\u9656\u0000\u9652"+ + "\u0000\u9653\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9657\u0000\u0000\u0000\u0000\u0000\u0000\u9651"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9346\u0000\u965B\u0000\u0000\u0000\u965E"+ + "\u0000\u0000\u9660\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u965F\u965D\u0000"+ + "\u0000\u965A\u0000\u0000\u0000\u9659\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u933F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9662"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9661\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u9663\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9664\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9665\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9666\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9667\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9668\u0000\u0000"+ + "\u9669\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u966A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u966D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u966E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u966F\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9670\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9671\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9672\u0000\u9673"+ + "\u0000\u9674\u0000\u0000\u0000\u9675\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9676"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u9677\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u967A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u967C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u967D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u967E\u0000\u0000\u9721\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9723\u0000\u0000\u9722\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u9724"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9725\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9726\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u9727\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u9729\u0000\u0000\u0000\u0000"+ + "\u9728\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u972B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u972C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u9462\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u966B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; + + private final static String innerIndex5= + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u9370\u937B"+ + "\u937C\u9433\u945A\u946A\u946C\u9539\u953F\u9556"+ + "\u955E\u955F\u9560\u9562\u9566\u9569\u9572\u957D"+ + "\u9621\u9622\u962B\u9633\u9635\u9636\u9639\u9655"+ + "\u965C\u966C\u9678\u9679\u967B\u972A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u9338\u0000\u0000\u0000\u0000\u9337"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; + + private final static short index1[] = { + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, + 10, 11, 12, 13, 14, 15, 0, 16, 17, 18, 0, 19, 20, 21, 0, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 0, 51, 52, 53, + 0, 0, 0, 54, 55, 56, 0, 0, 57, 58, 59, 60, 61, 62, 63, 0, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 80, 0, 0, 0, 0, 81 + }; + + private final static String index2[] = { + innerIndex0, + innerIndex1, + innerIndex2, + innerIndex3, + innerIndex4, + innerIndex5 + }; + + /** + * These accessors are temporarily supplied while sun.io + * converters co-exist with the sun.nio.cs.{ext} charset coders + * These facilitate sharing of conversion tables between the + * two co-existing implementations. When sun.io converters + * are made extinct these will be unncessary and should be removed + */ + public static short[] getIndex1() { + return index1; + } + + public static String[] getIndex2() { + return index2; + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/JIS_X_0212_Decoder.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/JIS_X_0212_Decoder.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,895 @@ +/* + * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + + +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; + +public class JIS_X_0212_Decoder extends DoubleByteDecoder +{ + public JIS_X_0212_Decoder(Charset cs) { + super(cs, + index1, + index2, + 0x21, + 0x7E); + } + + private final static String innerIndex0= + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\u02D8\u02C7\u00B8\u02D9"+ + "\u02DD\u00AF\u02DB\u02DA\uFF5E\u0384\u0385\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A1"+ + "\u00A6\u00BF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\u00BA\u00AA\u00A9\u00AE\u2122\u00A4\u2116\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\u0386\u0388\u0389\u038A"+ + "\u03AA\uFFFD\u038C\uFFFD\u038E\u03AB\uFFFD\u038F"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\u03AC\u03AD\u03AE\u03AF"+ + "\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\u0402\u0403\u0404\u0405\u0406"+ + "\u0407\u0408\u0409\u040A\u040B\u040C\u040E\u040F"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\u0452\u0453\u0454\u0455\u0456"+ + "\u0457\u0458\u0459\u045A\u045B\u045C\u045E\u045F"+ + "\u00C6\u0110\uFFFD\u0126\uFFFD\u0132\uFFFD\u0141"+ + "\u013F\uFFFD\u014A\u00D8\u0152\uFFFD\u0166\u00DE"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0142"+ + "\u0140\u0149\u014B\u00F8\u0153\u00DF\u0167\u00FE"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00C1\u00C0"+ + "\u00C4\u00C2\u0102\u01CD\u0100\u0104\u00C5\u00C3"+ + "\u0106\u0108\u010C\u00C7\u010A\u010E\u00C9\u00C8"+ + "\u00CB\u00CA\u011A\u0116\u0112\u0118\uFFFD\u011C"+ + "\u011E\u0122\u0120\u0124\u00CD\u00CC\u00CF\u00CE"+ + "\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139"+ + "\u013D\u013B\u0143\u0147\u0145\u00D1\u00D3\u00D2"+ + "\u00D6\u00D4\u01D1\u0150\u014C\u00D5\u0154\u0158"+ + "\u0156\u015A\u015C\u0160\u015E\u0164\u0162\u00DA"+ + "\u00D9\u00DC\u00DB\u016C\u01D3\u0170\u016A\u0172"+ + "\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\u00DD"+ + "\u0178\u0176\u0179\u017D\u017B\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\u00E1\u00E0\u00E4\u00E2"+ + "\u0103\u01CE\u0101\u0105\u00E5\u00E3\u0107\u0109"+ + "\u010D\u00E7\u010B\u010F\u00E9\u00E8\u00EB\u00EA"+ + "\u011B\u0117\u0113\u0119\u01F5\u011D\u011F\uFFFD"+ + "\u0121\u0125\u00ED\u00EC\u00EF\u00EE\u01D0\uFFFD"+ + "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C"+ + "\u0144\u0148\u0146\u00F1\u00F3\u00F2\u00F6\u00F4"+ + "\u01D2\u0151\u014D\u00F5\u0155\u0159\u0157\u015B"+ + "\u015D\u0161\u015F\u0165\u0163\u00FA\u00F9\u00FC"+ + "\u00FB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169"+ + "\u01D8\u01DC\u01DA\u01D6\u0175\u00FD\u00FF\u0177"+ + "\u017A\u017E\u017C\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F"+ + "\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35"+ + "\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63"+ + "\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96"+ + "\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB"+ + "\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5"+ + "\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B"+ + "\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31"+ + "\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40"+ + "\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56"+ + "\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77"+ + "\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"+ + "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93"+ + "\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7"+ + "\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5"+ + "\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2"+ + "\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF"+ + "\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010"+ + "\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022"+ + "\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041"+ + "\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052"+ + "\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066"+ + "\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083"+ + "\u5084\u5086\u508A\u508E\u508F\u5090\u5092\u5093"+ + "\u5094\u5096\u509B\u509C\u509E\u509F\u50A0\u50A1"+ + "\u50A2\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0"+ + "\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4"+ + "\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8"+ + "\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106"+ + "\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110"+ + "\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127"+ + "\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135"+ + "\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157"+ + "\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B"+ + "\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA"+ + "\u51BC\u51BE\u51BF\u51C2\u51C8\u51CF\u51D1\u51D2"+ + "\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2"+ + "\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213"+ + "\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235"+ + "\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C"+ + "\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279"+ + "\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296"+ + "\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7"+ + "\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD"+ + "\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4"+ + "\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA"+ + "\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303"+ + "\u530A\u530B\u530C\u5311\u5313\u5318\u531B\u531C"+ + "\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C"+ + "\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342"+ + "\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C"+ + "\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E"+ + "\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB"+ + "\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD"+ + "\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD"+ + "\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A"+ + "\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435"+ + "\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464"+ + "\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"+ + "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495"+ + "\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA"+ + "\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF"+ + "\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF"+ + "\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508"+ + "\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532"+ + "\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549"+ + "\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E"+ + "\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586"+ + "\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597"+ + "\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6"+ + "\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2\u55D3\u55D7"+ + "\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605"+ + "\u5608\u560A\u560D\u560E\u560F\u5610\u5611\u5612"+ + "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B"+ + "\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646"+ + "\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661"+ + "\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672"+ + "\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699"+ + "\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9"+ + "\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5"+ + "\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9"+ + "\u56DC\u56DD\u56DF\u56E1\u56E4\u56E5\u56E6\u56E7"+ + "\u56E8\u56F1\u56EB\u56ED\u56F6\u56F7\u5701\u5702"+ + "\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D"+ + "\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C"+ + "\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745"+ + "\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768"+ + "\u576B\u576D\u576E\u576F\u5770\u5771\u5773\u5774"+ + "\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781"+ + "\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D"+ + "\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC"+ + "\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD"+ + "\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5"+ + "\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808"+ + "\u5809\u57E1\u580C\u580D\u581B\u581E\u581F\u5820"+ + "\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C"+ + "\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867"+ + "\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888"+ + "\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896"+ + "\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2"+ + "\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2"+ + "\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3"+ + "\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641"+ + "\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933"+ + "\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959"+ + "\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"; + + private final static String innerIndex1= + "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B"+ + "\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7"+ + "\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC"+ + "\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD"+ + "\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1"+ + "\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E"+ + "\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A"+ + "\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50"+ + "\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A"+ + "\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C"+ + "\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2"+ + "\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF\u5AC4\u5AC6"+ + "\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE"+ + "\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34"+ + "\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41"+ + "\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F"+ + "\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A"+ + "\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9"+ + "\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC"+ + "\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6\u5BD7\u5BD8\u5BD9"+ + "\u5BDA\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17"+ + "\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E"+ + "\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62"+ + "\u5C63\u5C67\u5C68\u5C69\u5C6D\u5C70\u5C74\u5C75"+ + "\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F"+ + "\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA"+ + "\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD"+ + "\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D"+ + "\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34"+ + "\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55"+ + "\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64"+ + "\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81"+ + "\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99"+ + "\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8"+ + "\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9"+ + "\u5DE0\u5DE4\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D"+ + "\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28"+ + "\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56"+ + "\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A\u5E6B\u5E6C"+ + "\u5E6D\u5E6E\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4"+ + "\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE"+ + "\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4"+ + "\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07"+ + "\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23"+ + "\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36"+ + "\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D"+ + "\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"+ + "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E"+ + "\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7"+ + "\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4"+ + "\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0\u5FD1\u5FD2\u5FD3"+ + "\u5FD4\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC"+ + "\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC"+ + "\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A"+ + "\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048"+ + "\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061"+ + "\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A"+ + "\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2"+ + "\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7\u60BB\u60BE"+ + "\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF"+ + "\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5"+ + "\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A"+ + "\u610C\u6110\u6111\u6112\u6113\u6114\u6116\u6117"+ + "\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131"+ + "\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149"+ + "\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F"+ + "\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193"+ + "\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8"+ + "\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2"+ + "\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1"+ + "\u61E2\u61E7\u61E9\u61E5\u61EC\u61ED\u61EF\u6201"+ + "\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222"+ + "\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243"+ + "\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256"+ + "\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D"+ + "\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6"+ + "\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6"+ + "\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304"+ + "\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329"+ + "\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342"+ + "\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353"+ + "\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371"+ + "\u6374\u6375\u6378\u637C\u637D\u637F\u6382\u6384"+ + "\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E"+ + "\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5"+ + "\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0"+ + "\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9"+ + "\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420"+ + "\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435"+ + "\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454"+ + "\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463"+ + "\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F"+ + "\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1"+ + "\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"+ + "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1"+ + "\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0"+ + "\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509"+ + "\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E"+ + "\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C"+ + "\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F"+ + "\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A"+ + "\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE"+ + "\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE"+ + "\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4"+ + "\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609"+ + "\u660D\u6611\u6612\u6615\u6616\u661D\u661E\u6621"+ + "\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C"+ + "\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645"+ + "\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659"+ + "\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C"+ + "\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B"+ + "\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699"+ + "\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1"+ + "\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8"+ + "\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB"+ + "\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719"+ + "\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748"+ + "\u674C\u6754\u6755\u675D\u6766\u676C\u676E\u6774"+ + "\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793"+ + "\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5"+ + "\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5"+ + "\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6"+ + "\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D"+ + "\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831"+ + "\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855"+ + "\u6857\u6858\u685B\u686B\u686E\u686F\u6870\u6871"+ + "\u6872\u6875\u6879\u687A\u687B\u687C\u6882\u6884"+ + "\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3"+ + "\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8"+ + "\u68CC\u68CF\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC"+ + "\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0"+ + "\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909"+ + "\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933"+ + "\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957"+ + "\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C"+ + "\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D"+ + "\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB"+ + "\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8"+ + "\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1"+ + "\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11"+ + "\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"+ + "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49"+ + "\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B"+ + "\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83"+ + "\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E"+ + "\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD"+ + "\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4"+ + "\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0"+ + "\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07"+ + "\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24"+ + "\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F"+ + "\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60"+ + "\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D\u6B7E\u6B82"+ + "\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8"+ + "\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD"+ + "\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1"+ + "\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF"+ + "\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12"+ + "\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33"+ + "\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D"+ + "\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D"+ + "\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86"+ + "\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F"+ + "\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0"+ + "\u6CD1\u6CD2\u6CD4\u6CD6\u6CDA\u6CDC\u6CE0\u6CE7"+ + "\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07"+ + "\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27"+ + "\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F"+ + "\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70"+ + "\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97"+ + "\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF"+ + "\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD"+ + "\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4"+ + "\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32"+ + "\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49"+ + "\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C"+ + "\u6E5D\u6E5E\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D"+ + "\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1"+ + "\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8"+ + "\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9"+ + "\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16"+ + "\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30"+ + "\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52"+ + "\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62"+ + "\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B"+ + "\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A"+ + "\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF"+ + "\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"; + + private final static String innerIndex2= + "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC"+ + "\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020"+ + "\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044"+ + "\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E"+ + "\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E"+ + "\u7081\u7085\u7086\u7094\u7095\u7096\u7097\u7098"+ + "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA"+ + "\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4"+ + "\u70FA\u7103\u7104\u7105\u7106\u7107\u710B\u710C"+ + "\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131"+ + "\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150"+ + "\u7152\u7157\u715A\u715C\u715E\u7160\u7168\u7179"+ + "\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0"+ + "\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0"+ + "\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA"+ + "\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213"+ + "\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234"+ + "\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F"+ + "\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260"+ + "\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278"+ + "\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293"+ + "\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1"+ + "\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5"+ + "\u72F3\u72F4\u72FA\u72FB\u72FE\u7302\u7304\u7305"+ + "\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E"+ + "\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335"+ + "\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356"+ + "\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369"+ + "\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C"+ + "\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393"+ + "\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2"+ + "\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9"+ + "\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC"+ + "\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3"+ + "\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA"+ + "\u73FB\u73FD\u73FF\u7400\u7401\u7404\u7407\u740A"+ + "\u7411\u741A\u741B\u7424\u7426\u7428\u7429\u742A"+ + "\u742B\u742C\u742D\u742E\u742F\u7430\u7431\u7439"+ + "\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451"+ + "\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B"+ + "\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486"+ + "\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499"+ + "\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8"+ + "\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5"+ + "\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3"+ + "\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA"+ + "\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"+ + "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529"+ + "\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540"+ + "\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E"+ + "\u755F\u7561\u756F\u7571\u7579\u757A\u757B\u757C"+ + "\u757D\u757E\u7581\u7585\u7590\u7592\u7593\u7595"+ + "\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0"+ + "\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC"+ + "\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF"+ + "\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608"+ + "\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619"+ + "\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629"+ + "\u762D\u7632\u7633\u7635\u7638\u7639\u763A\u763C"+ + "\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B"+ + "\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F"+ + "\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B"+ + "\u769C\u769D\u769F\u76A0\u76A2\u76A3\u76A4\u76A5"+ + "\u76A6\u76A7\u76A8\u76AA\u76AD\u76BD\u76C1\u76C5"+ + "\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6"+ + "\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700"+ + "\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719"+ + "\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734"+ + "\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746"+ + "\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C"+ + "\u775E\u775F\u7760\u7762\u7764\u7767\u776A\u776C"+ + "\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784"+ + "\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2"+ + "\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3"+ + "\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0"+ + "\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8"+ + "\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D"+ + "\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837"+ + "\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C"+ + "\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E"+ + "\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D"+ + "\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1"+ + "\u78B2\u78B3\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9"+ + "\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB"+ + "\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900"+ + "\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910"+ + "\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929"+ + "\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944"+ + "\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958"+ + "\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B"+ + "\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995"+ + "\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB"+ + "\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7"+ + "\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"+ + "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8"+ + "\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11"+ + "\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F"+ + "\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45"+ + "\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D"+ + "\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78"+ + "\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90"+ + "\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5"+ + "\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1"+ + "\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB"+ + "\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29"+ + "\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30\u7B31\u7B34"+ + "\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60"+ + "\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73"+ + "\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B"+ + "\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5"+ + "\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8"+ + "\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8"+ + "\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC"+ + "\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B"+ + "\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26"+ + "\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A"+ + "\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59\u7C5A"+ + "\u7C5B\u7C5C\u7C5D\u7C5E\u7C61\u7C63\u7C67\u7C69"+ + "\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86"+ + "\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6"+ + "\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8"+ + "\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9"+ + "\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07"+ + "\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D"+ + "\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D"+ + "\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53"+ + "\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A"+ + "\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83"+ + "\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96"+ + "\u7D97\u7D9D\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6"+ + "\u7DB7\u7DB9\u7DC2\u7DC3\u7DC4\u7DC5\u7DC6\u7DCC"+ + "\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6"+ + "\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA"+ + "\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20"+ + "\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F"+ + "\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F"+ + "\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78"+ + "\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95"+ + "\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E"+ + "\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B"+ + "\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"+ + "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F"+ + "\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6"+ + "\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8"+ + "\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC"+ + "\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007"+ + "\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014"+ + "\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C"+ + "\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C"+ + "\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071"+ + "\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7"+ + "\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4"+ + "\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE\u80F0\u80F2"+ + "\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116"+ + "\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C"+ + "\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C"+ + "\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D"+ + "\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B"+ + "\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2"+ + "\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF"+ + "\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB"+ + "\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9"+ + "\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219"+ + "\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A"+ + "\u8243\u8244\u8245\u8246\u824B\u824E\u824F\u8251"+ + "\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B"+ + "\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289"+ + "\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B"+ + "\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA"+ + "\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE"+ + "\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4"+ + "\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE"+ + "\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B"+ + "\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E"+ + "\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343"+ + "\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357"+ + "\u8370\u8378\u837D\u837F\u8380\u8382\u8384\u8386"+ + "\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C"+ + "\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0"+ + "\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353"+ + "\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406"+ + "\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439"+ + "\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452"+ + "\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465"+ + "\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C"+ + "\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6"+ + "\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD"+ + "\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"; + + private final static String innerIndex3= + "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7"+ + "\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C"+ + "\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525"+ + "\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F"+ + "\u8546\u854F\u8550\u8551\u8552\u8553\u8556\u8559"+ + "\u855C\u855D\u855E\u855F\u8560\u8561\u8562\u8564"+ + "\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581"+ + "\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598"+ + "\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6"+ + "\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7"+ + "\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0"+ + "\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC\u85FF\u8600"+ + "\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618"+ + "\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638"+ + "\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653"+ + "\u8656\u8657\u8658\u8659\u865D\u8660\u8661\u8662"+ + "\u8663\u8664\u8669\u866C\u866F\u8675\u8676\u8677"+ + "\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1"+ + "\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5"+ + "\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5"+ + "\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3"+ + "\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705"+ + "\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719"+ + "\u871E\u871F\u8721\u8723\u8728\u872E\u872F\u8731"+ + "\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743"+ + "\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F"+ + "\u8771\u8772\u877B\u8783\u8784\u8785\u8786\u8787"+ + "\u8788\u8789\u878B\u878C\u8790\u8793\u8795\u8797"+ + "\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD"+ + "\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9"+ + "\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF"+ + "\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3"+ + "\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A"+ + "\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A"+ + "\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830"+ + "\u8832\u8835\u883A\u883C\u8841\u8843\u8845\u8848"+ + "\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858"+ + "\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879"+ + "\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0"+ + "\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA\u88CB"+ + "\u88CC\u88CD\u88CE\u88D1\u88D2\u88D3\u88DB\u88DE"+ + "\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906"+ + "\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A"+ + "\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932"+ + "\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946"+ + "\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961"+ + "\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"+ + "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995"+ + "\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5"+ + "\u89B6\u89B7\u89BC\u89D4\u89D5\u89D6\u89D7\u89D8"+ + "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9"+ + "\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12"+ + "\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B"+ + "\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43"+ + "\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57"+ + "\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76"+ + "\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83"+ + "\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99"+ + "\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3\u8AB6\u8AB7"+ + "\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1"+ + "\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0"+ + "\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B"+ + "\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37"+ + "\u8B3C\u8B42\u8B43\u8B44\u8B45\u8B46\u8B48\u8B52"+ + "\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76"+ + "\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B"+ + "\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38"+ + "\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F"+ + "\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59"+ + "\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75"+ + "\u8C76\u8C7B\u8C7E\u8C86\u8C87\u8C8B\u8C90\u8C92"+ + "\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5"+ + "\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD"+ + "\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7"+ + "\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17"+ + "\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84"+ + "\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0"+ + "\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9"+ + "\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE"+ + "\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7"+ + "\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01"+ + "\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20"+ + "\u8E21\u8E22\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36"+ + "\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D"+ + "\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61"+ + "\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79"+ + "\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95"+ + "\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD"+ + "\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3"+ + "\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE"+ + "\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02"+ + "\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E"+ + "\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D"+ + "\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"+ + "\u8F43\u8F47\u8F4F\u8F51\u8F52\u8F53\u8F54\u8F55"+ + "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4"+ + "\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1"+ + "\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5"+ + "\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6"+ + "\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B"+ + "\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034"+ + "\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062"+ + "\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088"+ + "\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099"+ + "\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3"+ + "\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3\u90C4\u90C5"+ + "\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD"+ + "\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4"+ + "\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D"+ + "\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E"+ + "\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F"+ + "\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D"+ + "\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A"+ + "\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A"+ + "\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191"+ + "\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8"+ + "\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6"+ + "\u91BB\u91BC\u91BD\u91BF\u91C2\u91C3\u91C5\u91D3"+ + "\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9"+ + "\u91EA\u91EC\u91ED\u91EE\u91EF\u91F0\u91F1\u91F7"+ + "\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206"+ + "\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216"+ + "\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228"+ + "\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239"+ + "\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247"+ + "\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C"+ + "\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E"+ + "\u926F\u9270\u9275\u9276\u9277\u9278\u9279\u927B"+ + "\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E"+ + "\u9292\u9297\u9299\u929F\u92A0\u92A4\u92A5\u92A7"+ + "\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB"+ + "\u92BC\u92BD\u92BF\u92C0\u92C1\u92C2\u92C3\u92C5"+ + "\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0"+ + "\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF"+ + "\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE"+ + "\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D"+ + "\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321"+ + "\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336"+ + "\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355"+ + "\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369"+ + "\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"+ + "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A"+ + "\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E"+ + "\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5"+ + "\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7"+ + "\u93C9\u93CA\u93CB\u93CC\u93CD\u93D3\u93D9\u93DC"+ + "\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8"+ + "\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409"+ + "\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E"+ + "\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D"+ + "\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C"+ + "\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F"+ + "\u9471\u9472\u9484\u9483\u9578\u9579\u957E\u9584"+ + "\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1"+ + "\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD"+ + "\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2"+ + "\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4"+ + "\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C"+ + "\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D"+ + "\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E"+ + "\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683"+ + "\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4"+ + "\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA"+ + "\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9"+ + "\u96EF\u96F1\u96FA\u9702\u9703\u9705\u9709\u971A"+ + "\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733"+ + "\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758"+ + "\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776"+ + "\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795"+ + "\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC"+ + "\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA"+ + "\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9"+ + "\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7"+ + "\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4"+ + "\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A"+ + "\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820"+ + "\u9823\u9826\u982B\u982E\u982F\u9830\u9832\u9833"+ + "\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852"+ + "\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865"+ + "\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4"+ + "\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8"+ + "\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3"+ + "\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917"+ + "\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B"+ + "\u9931\u9932\u9933\u9934\u9935\u9939\u993A\u993B"+ + "\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E"+ + "\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960"+ + "\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"; + + private final static String innerIndex4= + "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4"+ + "\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC"+ + "\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03"+ + "\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20"+ + "\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35"+ + "\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C"+ + "\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE"+ + "\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE"+ + "\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2"+ + "\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5"+ + "\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA"+ + "\u9AFD\u9AFF\u9B00\u9B01\u9B02\u9B03\u9B04\u9B05"+ + "\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12"+ + "\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D"+ + "\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48"+ + "\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61"+ + "\u9B63\u9B65\u9B66\u9B68\u9B6A\u9B6B\u9B6C\u9B6D"+ + "\u9B6E\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80"+ + "\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D"+ + "\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7"+ + "\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB"+ + "\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0"+ + "\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB"+ + "\u9BEF\u9BF3\u9BF7\u9BF8\u9BF9\u9BFA\u9BFD\u9BFF"+ + "\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19"+ + "\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26\u9C27\u9C28"+ + "\u9C29\u9C2A\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41"+ + "\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50"+ + "\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F"+ + "\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70"+ + "\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9"+ + "\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E"+ + "\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45"+ + "\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F"+ + "\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76"+ + "\u9D77\u9D7B\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A"+ + "\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98"+ + "\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC"+ + "\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6"+ + "\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9"+ + "\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02"+ + "\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19"+ + "\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83"+ + "\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B"+ + "\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3"+ + "\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4"+ + "\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"+ + "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11"+ + "\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F"+ + "\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34"+ + "\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43"+ + "\u9F44\u9F45\u9F46\u9F47\u9F53\u9F55\u9F56\u9F57"+ + "\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D\u9F6E"+ + "\u9F6F\u9F70\u9F71\u9F73\u9F75\u9F7A\u9F7D\u9F8F"+ + "\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1"+ + "\u9FA2\u9FA3\u9FA5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"; + + private final static short index1[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 2, 3, 0, 4, 5, 6, 0, 0, 0, 0, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + + private final static String index2[] = { + innerIndex0, + innerIndex1, + innerIndex2, + innerIndex3, + innerIndex4 + }; + + protected char convSingleByte(int b) { + return REPLACE_CHAR; + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/JIS_X_0212_Encoder.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/JIS_X_0212_Encoder.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,2980 @@ +/* + * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + + +import java.nio.charset.Charset; +import java.nio.charset.CharsetEncoder; + +public class JIS_X_0212_Encoder extends DoubleByteEncoder +{ + /* + * default replacement defined merely for pseudo + * charset x-JIS-X-0208 to instantiate with a + * decodeable replacement byte sequence + * JIS X 0212(1990) 0x2244 maps to INVERTED QUESTION MARK + * Compound converters, CES (character encoding schemes) + * based upon JIS X 0212-1990 will most likely redefine + * their own replacement chars or use 0x3f + * (ASCII + */ + + private static byte[] repl = { (byte)0x22, (byte)0x44 }; + + public JIS_X_0212_Encoder(Charset cs) { + super(cs, + index1, + index2 , + repl + ); + } + + protected int encodeSingle(char inputChar) { + return -1; + } + + private final static String innerIndex0= + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u2242\u0000\u0000\u2270\u0000\u2243\u0000"+ + "\u0000\u226D\u226C\u0000\u0000\u0000\u226E\u2234"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u2231\u0000\u226B\u0000\u0000\u0000\u0000\u2244"+ + "\u2A22\u2A21\u2A24\u2A2A\u2A23\u2A29\u2921\u2A2E"+ + "\u2A32\u2A31\u2A34\u2A33\u2A40\u2A3F\u2A42\u2A41"+ + "\u0000\u2A50\u2A52\u2A51\u2A54\u2A58\u2A53\u0000"+ + "\u292C\u2A63\u2A62\u2A65\u2A64\u2A72\u2930\u294E"+ + "\u2B22\u2B21\u2B24\u2B2A\u2B23\u2B29\u2941\u2B2E"+ + "\u2B32\u2B31\u2B34\u2B33\u2B40\u2B3F\u2B42\u2B41"+ + "\u2943\u2B50\u2B52\u2B51\u2B54\u2B58\u2B53\u0000"+ + "\u294C\u2B63\u2B62\u2B65\u2B64\u2B72\u2950\u2B73"+ + "\u2A27\u2B27\u2A25\u2B25\u2A28\u2B28\u2A2B\u2B2B"+ + "\u2A2C\u2B2C\u2A2F\u2B2F\u2A2D\u2B2D\u2A30\u2B30"+ + "\u2922\u2942\u2A37\u2B37\u0000\u0000\u2A36\u2B36"+ + "\u2A38\u2B38\u2A35\u2B35\u2A3A\u2B3A\u2A3B\u2B3B"+ + "\u2A3D\u2B3D\u2A3C\u0000\u2A3E\u2B3E\u2924\u2944"+ + "\u2A47\u2B47\u2A45\u2B45\u0000\u0000\u2A46\u2B46"+ + "\u2A44\u2945\u2926\u2946\u2A48\u2B48\u2A49\u2B49"+ + "\u2947\u2A4A\u2B4A\u2A4C\u2B4C\u2A4B\u2B4B\u2929"+ + "\u2949\u2928\u2948\u2A4D\u2B4D\u2A4F\u2B4F\u2A4E"+ + "\u2B4E\u294A\u292B\u294B\u2A57\u2B57\u0000\u0000"+ + "\u2A56\u2B56\u292D\u294D\u2A59\u2B59\u2A5B\u2B5B"+ + "\u2A5A\u2B5A\u2A5C\u2B5C\u2A5D\u2B5D\u2A5F\u2B5F"+ + "\u2A5E\u2B5E\u2A61\u2B61\u2A60\u2B60\u292F\u294F"+ + "\u2A6C\u2B6C\u2A69\u2B69\u2A66\u2B66\u2A6B\u2B6B"+ + "\u2A68\u2B68\u2A6A\u2B6A\u2A71\u2B71\u2A74\u2B74"+ + "\u2A73\u2A75\u2B75\u2A77\u2B77\u2A76\u2B76\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u2A26\u2B26\u2A43"+ + "\u2B43\u2A55\u2B55\u2A67\u2B67\u2A70\u2B70\u2A6D"+ + "\u2B6D\u2A6F\u2B6F\u2A6E\u2B6E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u2B39\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u2230"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u222F\u2232\u2236\u2235\u0000\u2233\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u2238\u2239\u2661\u0000"+ + "\u2662\u2663\u2664\u0000\u2667\u0000\u2669\u266C"+ + "\u2676\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2665\u266A\u2671\u2672\u2673\u2674"+ + "\u267B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2678\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2675\u267A\u2677\u2679\u267C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2742\u2743\u2744\u2745\u2746\u2747"+ + "\u2748\u2749\u274A\u274B\u274C\u0000\u274D\u274E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2772\u2773\u2774\u2775\u2776\u2777"+ + "\u2778\u2779\u277A\u277B\u277C\u0000\u277D\u277E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u2271\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u226F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3021\u0000\u3022\u3023\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3024\u0000\u0000\u0000"+ + "\u0000\u0000\u3025\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3026"+ + "\u0000\u0000\u0000\u3027\u3028\u0000\u0000\u0000"+ + "\u3029\u0000\u0000\u302A\u0000\u0000\u302B\u302C"+ + "\u302D\u0000\u0000\u0000\u0000\u302E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u302F\u3030\u0000\u0000\u3031\u0000\u0000\u3032"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3033\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3034\u0000\u3035\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3036\u0000\u0000\u0000\u0000"+ + "\u3037\u3038\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3039\u303A\u0000\u0000"+ + "\u0000\u303B\u0000\u0000\u0000\u0000\u0000\u303C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u303D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u303E\u303F"+ + "\u0000\u0000\u0000\u0000\u0000\u3040\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3041"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3042\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3043\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3044\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3045\u3046\u0000\u0000\u0000\u0000"+ + "\u3047\u3048\u3049\u0000\u0000\u0000\u0000\u0000"+ + "\u304A\u0000\u0000\u0000\u0000\u0000\u0000\u304B"+ + "\u0000\u304C\u0000\u304D\u0000\u304E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u304F\u3050\u3051"+ + "\u3052\u0000\u3053\u3054\u0000\u0000\u0000\u0000"+ + "\u3055\u0000\u0000\u3056\u3057\u0000\u0000\u0000"+ + "\u0000\u0000\u3058\u0000\u0000\u3059\u305A\u305B"+ + "\u0000\u305C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u305D\u0000"+ + "\u0000\u305E\u0000\u3060\u0000\u3061\u0000\u3062"+ + "\u0000\u3063\u0000\u3064\u0000\u0000\u3065\u0000"+ + "\u3066\u0000\u3067\u0000\u0000\u0000\u0000\u0000"+ + "\u3068\u3069\u0000\u306A\u306B\u0000\u0000\u0000"+ + "\u0000\u0000\u306C\u0000\u306D\u0000\u306E\u0000"+ + "\u306F\u0000\u0000\u0000\u0000\u0000\u0000\u3070"+ + "\u305F\u0000\u0000\u3071\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3072\u0000\u3073\u0000\u3074\u0000"+ + "\u0000\u3075\u0000\u0000\u0000\u0000\u0000\u3076"+ + "\u3077\u3078\u3079\u0000\u0000\u307A\u307B\u0000"+ + "\u0000\u307C\u307D\u0000\u307E\u3121\u0000\u0000"+ + "\u0000\u3122\u3123\u0000\u3124\u0000\u3125\u0000"+ + "\u3126\u0000\u3127\u3128\u3129\u0000\u0000\u312A"+ + "\u0000\u312B\u312C\u0000\u0000\u0000\u312D\u312E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u312F\u0000\u0000\u0000\u0000\u3130"+ + "\u0000\u3131\u0000\u3132\u3133\u3134\u3135\u0000"+ + "\u3136\u3137\u0000\u0000\u0000\u3138\u3139\u0000"+ + "\u313A\u313B\u0000\u313C\u313D\u313E\u0000\u313F"+ + "\u0000\u0000\u3140\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3141\u0000\u0000\u0000"+ + "\u3142\u0000\u3143\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3144\u0000\u3145\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3146\u3147\u0000\u3148"+ + "\u3149\u314A\u0000\u0000\u314B\u0000\u0000\u314C"+ + "\u0000\u0000\u314D\u0000\u314E\u0000\u314F\u0000"+ + "\u3150\u0000\u0000\u3151\u0000\u0000\u0000\u3152"+ + "\u3153\u0000\u0000\u3154\u3155\u3156\u3157\u0000"+ + "\u0000\u0000\u3158\u0000\u0000\u0000\u0000\u3159"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u315A\u0000"+ + "\u315B\u0000\u315C\u315D\u0000\u315E\u0000\u0000"+ + "\u0000\u0000\u0000\u3176\u0000\u0000\u0000\u0000"+ + "\u315F\u3160\u3161\u0000\u0000\u3162\u3163\u0000"+ + "\u0000\u0000\u3164\u0000\u3165\u0000\u3166\u0000"+ + "\u0000\u3167\u3168\u3169\u0000\u0000\u0000\u316A"+ + "\u0000\u316B\u0000\u0000\u0000\u0000\u0000\u316C"+ + "\u316D\u0000\u316E\u316F\u0000\u0000\u3170\u3171"+ + "\u0000\u0000\u3172\u0000\u0000\u3173\u0000\u0000"+ + "\u3174\u3175\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3177\u0000\u3178\u3179\u0000\u317A\u0000"+ + "\u0000\u0000\u317B\u0000\u0000\u0000\u317C\u317D"+ + "\u317E\u0000\u3221\u3222\u3223\u0000\u3224\u0000"+ + "\u0000\u0000\u0000\u3225\u3226\u0000\u3227\u3228"+ + "\u3229\u322A\u322B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u322C\u0000\u0000\u0000\u0000\u322D"+ + "\u322E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u322F\u3230\u0000\u0000\u3231\u0000\u0000"+ + "\u3232\u0000\u0000\u3233\u3234\u0000\u0000\u3235"+ + "\u0000\u0000\u0000\u0000\u3236\u0000\u3237\u0000"+ + "\u3238\u0000\u0000\u3239\u323A\u0000\u0000\u0000"+ + "\u323B\u0000\u0000\u0000\u323C\u323D\u0000\u323E"+ + "\u0000\u0000\u323F\u0000\u3240\u0000\u3241\u0000"+ + "\u3242\u3243\u0000\u0000\u0000\u0000\u0000\u3244"+ + "\u0000\u3245\u3251\u0000\u0000\u0000\u3246\u0000"+ + "\u0000\u0000\u3247\u0000\u0000\u0000\u3248\u0000"+ + "\u0000\u0000\u0000\u3249\u0000\u0000\u324A\u324B"+ + "\u324C\u0000\u0000\u324D\u324E\u324F\u3250\u0000"+ + "\u3252\u0000\u0000\u0000\u0000\u0000\u0000\u3253"+ + "\u0000\u3254\u0000\u3255\u3256\u3257\u3258\u0000"+ + "\u0000\u0000\u0000\u3259\u0000\u0000\u0000\u325A"+ + "\u325B\u0000\u0000\u0000\u325C\u325D\u0000\u325E"+ + "\u0000\u325F\u0000\u3260\u3261\u3262\u0000\u0000"+ + "\u3263\u3264\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3265\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3266\u0000\u0000\u0000\u0000\u3267"+ + "\u0000\u0000\u0000\u3268\u0000\u3269\u0000\u326A"+ + "\u326B\u0000\u0000\u0000\u0000\u0000\u0000\u326C"+ + "\u0000\u0000\u0000\u0000\u326D\u0000\u326E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u326F\u0000"+ + "\u0000\u0000\u0000\u3270\u3271\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3272\u0000\u0000\u3273\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3274\u0000\u0000\u0000\u0000\u3275\u0000\u0000"+ + "\u0000\u3276\u0000\u3277\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3278\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3279\u0000\u327A\u0000\u327B\u0000\u327C\u327D"+ + "\u0000\u0000\u327E\u0000\u0000\u0000\u0000\u0000"+ + "\u3321\u0000\u0000\u0000\u0000\u0000\u0000\u3322"+ + "\u0000\u3323\u3324\u3325\u0000\u3326\u0000\u0000"+ + "\u3327\u0000\u0000\u0000\u0000\u0000\u3328\u0000"+ + "\u0000\u0000\u3329\u0000\u0000\u332A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u332B\u0000"+ + "\u0000\u0000\u332C\u332D\u332E\u0000\u0000\u332F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3330\u3331\u0000\u0000\u3332\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3333\u3334\u0000\u3335\u3336\u0000"+ + "\u3337\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3338\u0000\u0000\u0000\u0000\u0000"+ + "\u3339\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u333A\u333B\u0000\u0000\u333C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u333D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u333E\u0000\u0000"+ + "\u0000\u333F\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3340\u0000\u3341"+ + "\u3342\u0000\u3343\u0000\u3344\u0000\u0000\u3345"+ + "\u3346\u3347\u0000\u0000\u0000\u0000\u3348\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3349\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u334A"+ + "\u334B\u334C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u334D\u0000\u334E\u0000\u0000\u334F\u0000\u0000"+ + "\u0000\u0000\u3350\u0000\u3351\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3352\u0000\u3353\u3354\u3355"+ + "\u3356\u0000\u3357\u0000\u3358\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3359\u335A\u335B\u335C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u335D"+ + "\u335E\u0000\u0000\u0000\u0000\u0000\u335F\u3360"+ + "\u3361\u0000\u3362\u3363\u0000\u3364\u0000\u0000"+ + "\u3365\u0000\u0000\u0000\u3366\u0000\u3367\u0000"+ + "\u3368\u0000\u0000\u0000\u3369\u0000\u0000\u336A"+ + "\u0000\u336B\u0000\u0000\u336C\u0000\u336D\u0000"+ + "\u0000\u0000\u0000\u336E\u336F\u0000\u0000\u0000"+ + "\u0000\u3370\u0000\u0000\u0000\u3371\u0000\u0000"+ + "\u3372\u3373\u3374\u0000\u3375\u0000\u0000\u0000"+ + "\u3376\u3377\u0000\u0000\u3378\u0000\u3379\u337A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u337B\u0000\u0000\u337C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u337D\u337E\u3421\u0000\u0000\u0000"+ + "\u0000\u3422\u0000\u3423\u0000\u0000\u0000\u0000"+ + "\u3424\u0000\u0000\u3425\u3426\u0000\u3427\u3428"+ + "\u0000\u0000\u0000\u0000\u0000\u3429\u0000\u342A"+ + "\u342B\u342C\u0000\u342D\u342E\u342F\u0000\u0000"+ + "\u3430\u0000\u3431\u0000\u0000\u3432\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3433\u3434\u3435\u0000"+ + "\u0000\u0000\u3436\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3438\u3437\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3439\u0000\u343A\u0000\u0000\u0000\u0000"+ + "\u0000\u343B\u0000\u343C\u0000\u343D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u343E\u343F\u0000\u0000"+ + "\u0000\u0000\u3440\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3441\u0000\u0000\u0000\u0000\u3442\u0000"+ + "\u0000\u0000\u0000\u3443\u0000\u0000\u0000\u3444"+ + "\u3445\u0000\u0000\u0000\u0000\u0000\u3446\u0000"+ + "\u0000\u0000\u0000\u3447\u3448\u0000\u0000\u0000"+ + "\u0000\u3449\u0000\u0000\u0000\u344A\u0000\u0000"+ + "\u0000\u344B\u0000\u0000\u344C\u0000\u0000\u0000"+ + "\u0000\u0000\u344D\u344E\u0000\u0000\u0000\u344F"+ + "\u0000\u0000\u3450\u0000\u3451\u3452\u0000\u3453"+ + "\u3454\u0000\u3455\u0000\u0000\u3456\u0000\u0000"+ + "\u3457\u0000\u0000\u0000\u0000\u3458\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3459"+ + "\u0000\u0000\u345A\u345B\u0000\u345C\u0000\u0000"+ + "\u0000\u0000\u345D\u0000\u0000\u345E\u345F\u0000"+ + "\u3460\u0000\u0000\u0000\u0000\u0000\u3461\u3462"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3463\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3464\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3465\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3466\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3467\u0000\u0000\u0000\u0000\u0000\u3468"+ + "\u3469\u0000\u346A\u0000\u0000\u0000\u0000\u346B"+ + "\u0000\u346C\u0000\u0000\u346D\u346E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u346F\u3470\u0000\u0000\u3471"+ + "\u0000\u0000\u0000\u0000\u0000\u3472\u0000\u3473"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3474\u0000"+ + "\u0000\u0000\u3475\u0000\u3476\u0000\u3477\u3478"+ + "\u0000\u3479\u0000\u347A\u0000\u347B\u347C\u0000"+ + "\u0000\u0000\u0000\u0000\u347D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u347E"+ + "\u0000\u3521\u0000\u3522\u0000\u3523\u0000\u0000"+ + "\u3524\u3525\u0000\u0000\u0000\u3526\u0000\u0000"+ + "\u0000\u3527\u0000\u0000\u0000\u3528\u3529\u0000"+ + "\u0000\u0000\u0000\u0000\u352A\u0000\u0000\u352B"+ + "\u0000\u352C\u0000\u0000\u0000\u0000\u352D\u352E"+ + "\u0000\u352F\u3530\u0000\u0000\u3531\u3532\u0000"+ + "\u0000\u3533\u0000\u0000\u0000\u0000\u0000\u3534"+ + "\u0000\u3535\u3536\u3537\u0000\u0000\u0000\u3538"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3539\u0000"+ + "\u0000\u0000\u353A\u0000\u0000\u353B\u353C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u353D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u353E\u0000\u353F\u0000\u0000\u3540"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3541\u0000"+ + "\u0000\u0000\u0000\u0000\u3542\u0000\u3543\u3544"+ + "\u3545\u3546\u0000\u0000\u0000\u3547\u0000\u0000"+ + "\u3548\u3549\u0000\u0000\u354A\u354B\u354C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u354D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u354E\u354F\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3550\u0000\u0000\u3551\u3552\u0000"+ + "\u0000\u0000\u0000\u3553\u3554\u3555\u0000\u0000"+ + "\u0000\u3556\u0000\u0000\u0000\u0000\u0000\u3557"+ + "\u0000\u3558\u3559\u0000\u0000\u355A\u0000\u0000"+ + "\u355B\u355C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u355D\u0000\u355E\u355F\u0000\u0000\u3560\u0000"+ + "\u3561\u3562\u0000\u0000\u3563\u0000\u3564\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3565"+ + "\u0000\u3566\u3567\u0000\u0000\u0000\u3568\u0000"+ + "\u3569\u0000\u0000\u0000\u0000\u0000\u356A\u356B"+ + "\u0000\u356C\u356D\u356E\u356F\u0000\u0000\u3570"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3571\u3572\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3573\u0000\u0000"+ + "\u0000\u0000\u3574\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3575"+ + "\u0000\u3576\u0000\u3577\u0000\u0000\u3578\u0000"+ + "\u0000\u3579\u0000\u357A\u357B\u0000\u357C\u0000"+ + "\u0000\u357D\u357E\u3621\u0000\u0000\u0000\u3622"+ + "\u3623\u0000\u0000\u3624\u0000\u0000\u3625\u0000"+ + "\u0000\u0000\u3626\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3627\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3628\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3629"+ + "\u0000\u0000\u0000\u0000\u0000\u362A\u0000\u0000"+ + "\u362B\u0000\u362C\u0000\u0000\u362D\u362E\u362F"+ + "\u3630\u3631\u3632\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3633\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3634\u0000\u0000\u0000"+ + "\u3635\u0000\u0000\u3636\u0000\u3637\u0000\u3638"+ + "\u0000\u3639\u0000\u363A\u363B\u363C\u0000\u363D"+ + "\u363E\u363F\u0000\u3640\u3641\u0000\u3642\u0000"+ + "\u0000\u3643\u0000\u3644\u0000\u3645\u0000\u3646"+ + "\u0000\u0000\u0000\u0000\u3647\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3648\u0000"+ + "\u3649\u364A\u364B\u364C\u0000\u0000\u364D\u0000"+ + "\u0000\u364E\u0000\u0000\u0000\u364F\u0000\u3650"+ + "\u0000\u3651\u3652\u0000\u0000\u3653\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3654\u3655\u0000\u0000"+ + "\u3656\u0000\u0000\u3657\u3658\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3659\u0000\u0000"+ + "\u0000\u365A\u365B\u0000\u0000\u365C\u365D\u365E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u365F\u3660"+ + "\u3661\u3662\u0000\u3663\u3664\u3665\u0000\u0000"+ + "\u0000\u3666\u0000\u3667\u0000\u0000\u0000\u3668"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3669\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u366A\u0000\u0000"+ + "\u0000\u366B\u366C\u366D\u3670\u3671\u0000\u366E"+ + "\u366F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3672\u0000\u0000\u3673\u3674\u0000\u3675"+ + "\u0000\u3676\u0000\u0000\u3677\u3678\u3679\u367A"+ + "\u367B\u0000\u0000\u367D\u0000\u367E\u0000\u0000"+ + "\u0000\u367C\u0000\u0000\u0000\u0000\u3721\u3722"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; + + private final static String innerIndex1= + "\u0000\u3723\u3724\u0000\u0000\u0000\u0000\u3725"+ + "\u0000\u0000\u3726\u0000\u3727\u0000\u0000\u0000"+ + "\u0000\u3728\u0000\u0000\u0000\u3729\u0000\u0000"+ + "\u0000\u0000\u372A\u372B\u0000\u372C\u0000\u0000"+ + "\u372D\u0000\u372E\u372F\u3730\u3731\u0000\u0000"+ + "\u0000\u3732\u3733\u0000\u3734\u0000\u3735\u3736"+ + "\u0000\u0000\u0000\u3737\u3738\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3739\u373A\u373B"+ + "\u0000\u0000\u0000\u0000\u0000\u373C\u373D\u0000"+ + "\u0000\u0000\u0000\u0000\u373E\u373F\u0000\u0000"+ + "\u0000\u0000\u3740\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3741\u0000\u0000\u3742\u0000\u3743"+ + "\u3744\u0000\u0000\u3745\u0000\u3746\u3747\u3748"+ + "\u3749\u374A\u0000\u374B\u374C\u374D\u0000\u374E"+ + "\u0000\u374F\u3750\u3751\u3752\u0000\u3753\u0000"+ + "\u0000\u3754\u0000\u3755\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3756\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3757\u3760\u0000\u3758"+ + "\u0000\u3759\u375A\u0000\u375B\u375C\u375D\u375E"+ + "\u0000\u375F\u0000\u0000\u0000\u0000\u0000\u3761"+ + "\u3762\u3763\u0000\u0000\u3764\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3765\u0000\u0000\u0000\u0000\u3766\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3767"+ + "\u3768\u0000\u0000\u0000\u3769\u0000\u0000\u376A"+ + "\u0000\u0000\u0000\u0000\u0000\u376B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u376C\u376D\u0000"+ + "\u0000\u377E\u0000\u0000\u376E\u0000\u376F\u3770"+ + "\u0000\u3771\u0000\u0000\u0000\u3772\u0000\u0000"+ + "\u3773\u0000\u0000\u0000\u0000\u3774\u3775\u0000"+ + "\u3776\u0000\u0000\u0000\u0000\u3777\u3778\u3779"+ + "\u0000\u0000\u0000\u377A\u377B\u0000\u0000\u0000"+ + "\u377C\u377D\u0000\u0000\u3821\u3822\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3823\u0000\u0000\u3824\u3825"+ + "\u3826\u0000\u0000\u0000\u0000\u0000\u3827\u3828"+ + "\u0000\u0000\u0000\u0000\u0000\u3829\u0000\u0000"+ + "\u0000\u0000\u382A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u382B\u0000\u0000\u0000\u0000\u0000\u382C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u382D\u0000\u0000\u382E\u382F\u0000\u3830"+ + "\u3831\u0000\u0000\u0000\u0000\u3832\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3833"+ + "\u0000\u3834\u0000\u0000\u3835\u0000\u0000\u3836"+ + "\u3837\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3838\u0000\u0000\u0000\u3839\u0000\u0000\u383A"+ + "\u383B\u383C\u0000\u0000\u0000\u0000\u0000\u383D"+ + "\u383E\u383F\u3840\u0000\u3841\u3842\u0000\u3843"+ + "\u3844\u0000\u0000\u0000\u3845\u0000\u3846\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3847\u0000\u0000"+ + "\u3848\u3849\u384A\u0000\u0000\u0000\u384B\u0000"+ + "\u0000\u384C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u384D\u384E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3850\u0000\u0000\u0000"+ + "\u0000\u0000\u3851\u0000\u384F\u0000\u0000\u0000"+ + "\u3852\u0000\u0000\u0000\u0000\u3853\u3854\u0000"+ + "\u3855\u0000\u3856\u0000\u3857\u0000\u3858\u0000"+ + "\u0000\u0000\u3859\u0000\u0000\u385A\u0000\u0000"+ + "\u0000\u385B\u385C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u385D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u385E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u385F\u3860\u0000"+ + "\u0000\u0000\u0000\u3861\u3862\u0000\u0000\u0000"+ + "\u0000\u0000\u3863\u3864\u3865\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3867\u0000\u0000"+ + "\u0000\u3868\u0000\u3869\u386A\u0000\u0000\u0000"+ + "\u386B\u0000\u0000\u0000\u0000\u0000\u0000\u386C"+ + "\u386D\u0000\u0000\u386E\u0000\u386F\u3870\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3871"+ + "\u0000\u0000\u0000\u3872\u0000\u0000\u3873\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3874\u3875\u0000\u0000\u0000\u0000"+ + "\u0000\u3876\u0000\u3877\u0000\u3878\u3879\u387A"+ + "\u0000\u387B\u0000\u387C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u387D\u0000\u387E\u0000\u3921"+ + "\u0000\u0000\u3922\u0000\u0000\u3923\u3924\u0000"+ + "\u0000\u3925\u0000\u3926\u3927\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3928\u3929\u0000\u392A\u0000"+ + "\u0000\u0000\u392B\u0000\u0000\u392C\u0000\u392D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u392E"+ + "\u0000\u0000\u0000\u0000\u392F\u0000\u0000\u3930"+ + "\u0000\u0000\u0000\u0000\u0000\u3931\u3932\u3933"+ + "\u3934\u0000\u0000\u3935\u0000\u0000\u0000\u3936"+ + "\u0000\u0000\u3937\u0000\u3938\u0000\u0000\u0000"+ + "\u0000\u3939\u0000\u393A\u393B\u0000\u0000\u0000"+ + "\u393C\u0000\u393D\u0000\u0000\u393E\u0000\u0000"+ + "\u0000\u0000\u393F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3940\u3941\u3942"+ + "\u0000\u0000\u0000\u3943\u3944\u0000\u0000\u3945"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3946\u3947"+ + "\u0000\u3948\u3949\u0000\u394A\u0000\u0000\u394B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u394C\u0000\u0000\u0000\u394D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u394E\u394F\u3950\u0000"+ + "\u0000\u0000\u3951\u3952\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3953\u0000"+ + "\u0000\u0000\u0000\u3954\u3955\u0000\u0000\u3956"+ + "\u3957\u0000\u3958\u0000\u0000\u3959\u0000\u0000"+ + "\u395A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u395B\u395C\u0000\u395D"+ + "\u395E\u0000\u0000\u0000\u395F\u0000\u0000\u0000"+ + "\u3960\u0000\u0000\u0000\u0000\u3961\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3962\u0000"+ + "\u0000\u0000\u0000\u3963\u0000\u3964\u0000\u3965"+ + "\u0000\u0000\u0000\u0000\u0000\u3966\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3967"+ + "\u0000\u0000\u3968\u3969\u0000\u0000\u396A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u396B\u0000\u0000\u0000\u0000"+ + "\u396C\u0000\u0000\u396D\u0000\u0000\u396E\u0000"+ + "\u0000\u396F\u0000\u0000\u3970\u0000\u3971\u3972"+ + "\u3973\u0000\u3974\u0000\u0000\u0000\u0000\u3975"+ + "\u0000\u0000\u0000\u0000\u3976\u0000\u0000\u0000"+ + "\u0000\u3977\u3978\u3979\u0000\u397A\u0000\u0000"+ + "\u397B\u0000\u397C\u397D\u0000\u0000\u0000\u397E"+ + "\u0000\u0000\u0000\u0000\u3A21\u0000\u3A22\u0000"+ + "\u3A23\u0000\u0000\u0000\u0000\u0000\u0000\u3A24"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3A25\u0000\u3A26\u0000\u0000\u0000"+ + "\u3A27\u0000\u0000\u0000\u0000\u3A28\u0000\u0000"+ + "\u0000\u0000\u3A29\u0000\u0000\u0000\u3A2A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3A2B\u3A2C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3A2D\u0000\u0000"+ + "\u3A2E\u3A2F\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3A30\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3A31"+ + "\u0000\u3A33\u0000\u3A34\u0000\u3A35\u0000\u0000"+ + "\u0000\u3A36\u0000\u0000\u0000\u3A37\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3A38\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3A32\u0000\u0000\u0000"+ + "\u3A39\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3A3A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3A3B\u3A3C\u0000\u0000\u0000"+ + "\u0000\u0000\u3A3D\u0000\u0000\u0000\u3A3E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3A3F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3A40\u0000\u0000\u0000\u0000\u0000\u3A41\u3A42"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3A43\u3A44\u3A45\u3A46"+ + "\u0000\u3A47\u0000\u0000\u3A48\u0000\u3A49\u0000"+ + "\u0000\u0000\u3A4A\u0000\u0000\u0000\u3A4B\u0000"+ + "\u3A4C\u3A4D\u0000\u3A4E\u3A4F\u0000\u3A50\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3A51\u3A52\u0000\u0000\u3A53\u3A54\u0000\u3A55"+ + "\u0000\u3A56\u3A57\u0000\u0000\u0000\u0000\u3A58"+ + "\u0000\u0000\u3A59\u0000\u3A5A\u0000\u0000\u0000"+ + "\u3A5B\u3A5C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3A5D\u0000\u3A5E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3A5F\u3A60"+ + "\u3A61\u3A62\u3A63\u0000\u0000\u0000\u0000\u0000"+ + "\u3A64\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3A65"+ + "\u0000\u3A66\u0000\u0000\u3A67\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3A68\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3A69\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3A6A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3A6B\u3A6C"+ + "\u0000\u0000\u0000\u3A6D\u0000\u0000\u3A6E\u0000"+ + "\u0000\u3A6F\u0000\u3A70\u3A71\u0000\u3A72\u0000"+ + "\u3A73\u0000\u3A74\u0000\u0000\u3A75\u3A76\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3A77\u3A78\u0000\u3A79\u0000\u0000\u0000"+ + "\u0000\u0000\u3A7A\u3A7B\u0000\u0000\u0000\u3A7C"+ + "\u3A7D\u3A7E\u0000\u0000\u0000\u3B21\u0000\u0000"+ + "\u3B22\u0000\u0000\u0000\u3B23\u3B24\u0000\u0000"+ + "\u0000\u0000\u3B25\u3B26\u3B27\u3B28\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3B29"+ + "\u3B2A\u0000\u3B2B\u0000\u0000\u0000\u0000\u3B2C"+ + "\u0000\u0000\u3B2D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3B2E\u0000\u3B2F"+ + "\u3B30\u0000\u3B31\u3B32\u0000\u0000\u3B33\u0000"+ + "\u0000\u0000\u3B34\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3B35\u0000\u3B36\u3B37\u0000\u0000"+ + "\u0000\u0000\u3B38\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3B39\u0000\u3B3A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3B3B\u0000\u0000\u0000\u0000\u3B3D"+ + "\u0000\u0000\u0000\u0000\u0000\u3B3C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3B3E\u0000"+ + "\u0000\u3B3F\u3B40\u0000\u3B41\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3B42\u0000\u0000\u0000\u0000\u3B43\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3B44\u0000\u0000"+ + "\u0000\u0000\u3B45\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3B47\u3B48\u0000\u3B49\u3B4A"+ + "\u0000\u0000\u0000\u3B46\u0000\u0000\u0000\u0000"+ + "\u0000\u3B4B\u0000\u0000\u3B4C\u0000\u0000\u0000"+ + "\u0000\u3B4D\u0000\u0000\u0000\u3B4E\u0000\u3B4F"+ + "\u0000\u0000\u3B50\u3B51\u0000\u0000\u3B52\u0000"+ + "\u3B53\u0000\u3B57\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3B55\u0000\u0000\u0000\u3B54\u0000\u0000"+ + "\u0000\u3B56\u0000\u0000\u0000\u0000\u0000\u3B58"+ + "\u3B59\u3B5A\u3B5B\u0000\u3B5C\u0000\u0000\u0000"+ + "\u0000\u0000\u3B5D\u0000\u0000\u3B5E\u0000\u0000"+ + "\u3B5F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3B60\u3B61\u0000\u0000\u0000\u3B62\u3B63"+ + "\u0000\u3B64\u0000\u3B65\u0000\u0000\u0000\u0000"+ + "\u3B66\u0000\u3B67\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3B68\u3B69\u3B6A\u3B6B\u0000\u0000"+ + "\u0000\u3B6C\u0000\u3B6D\u0000\u0000\u0000\u3B6E"+ + "\u3B6F\u0000\u0000\u0000\u0000\u0000\u0000\u3B70"+ + "\u0000\u0000\u0000\u3B71\u0000\u0000\u0000\u0000"+ + "\u3B72\u0000\u6674\u0000\u3B73\u0000\u0000\u0000"+ + "\u3B74\u3B75\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3B76\u0000\u0000\u0000\u3B77"+ + "\u0000\u0000\u0000\u3B78\u0000\u0000\u3B7A\u0000"+ + "\u3B79\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3B7B\u3B7C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3B7D\u0000\u0000\u0000\u3B7E\u0000\u0000\u0000"+ + "\u0000\u3C21\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3C22\u3C23\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3C24\u0000\u0000\u0000\u0000\u0000\u0000\u3C25"+ + "\u0000\u0000\u0000\u0000\u0000\u3C26\u0000\u0000"+ + "\u0000\u0000\u3C27\u0000\u3C28\u3C29\u0000\u0000"+ + "\u3C2A\u0000\u0000\u0000\u0000\u0000\u0000\u3C2B"+ + "\u3C2C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3C2E\u0000\u0000\u0000\u0000\u0000\u3C2D\u0000"+ + "\u0000\u0000\u3C2F\u0000\u0000\u3C30\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3C31\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3C34\u0000\u3C32\u0000\u0000\u0000\u0000"+ + "\u3C33\u3C35\u0000\u0000\u0000\u0000\u3C36\u0000"+ + "\u3C37\u0000\u0000\u3C38\u3C39\u0000\u3C3A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3C3B\u0000\u3C3C\u3C3D\u3C3E\u3C3F\u3C40\u0000"+ + "\u3C41\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3C42\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3C43\u0000\u0000\u3C44\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3C45\u0000\u3C46\u3C47\u0000\u0000"+ + "\u3C48\u0000\u3C49\u0000\u3C4A\u0000\u0000\u0000"+ + "\u0000\u3C4B\u0000\u3C4C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3C4D\u3C4E\u3C4F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3C50\u0000"+ + "\u0000\u0000\u0000\u3C52\u3C51\u0000\u3C53\u0000"+ + "\u0000\u3C54\u3C55\u0000\u3C56\u3C57\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3C58\u0000\u3C59\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3C5A\u0000\u0000"+ + "\u0000\u0000\u0000\u3C5B\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3C5C\u0000\u0000\u0000\u3C5D\u3C5E"+ + "\u3C5F\u0000\u0000\u0000\u0000\u0000\u3C60\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3C61\u0000\u0000\u3C62\u3C63\u0000\u0000"+ + "\u0000\u3C64\u3C65\u3C66\u3C67\u0000\u0000\u0000"+ + "\u3C68\u0000\u0000\u3C69\u3C6A\u0000\u3C6B\u0000"+ + "\u3C6C\u0000\u0000\u0000\u3C6D\u0000\u3C6E\u0000"+ + "\u0000\u0000\u0000\u3C6F\u0000\u3C70\u0000\u3C71"+ + "\u3C72\u0000\u0000\u0000\u3C73\u3C74\u0000\u3C75"+ + "\u0000\u0000\u0000\u0000\u0000\u3C76\u0000\u0000"+ + "\u3C77\u0000\u0000\u0000\u3C78\u0000\u0000\u0000"+ + "\u3C79\u0000\u0000\u3C7A\u0000\u0000\u0000\u0000"+ + "\u3C7B\u0000\u0000\u3C7C\u3C7D\u0000\u0000\u3C7E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3D21"+ + "\u0000\u0000\u3D22\u0000\u3D23\u3D24\u0000\u0000"+ + "\u3D25\u0000\u3D26\u0000\u0000\u3D27\u3D28\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3D29\u0000\u0000\u0000\u3D2A\u0000\u3D2B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3D2C\u0000"+ + "\u0000\u0000\u0000\u0000\u3D2D\u3D2E\u0000\u0000"+ + "\u0000\u0000\u3D2F\u0000\u3D32\u0000\u0000\u3D30"+ + "\u0000\u0000\u0000\u3D31\u3D33\u0000\u0000\u3D34"+ + "\u3D35\u3D36\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3D37\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3D38\u0000\u0000\u3D39"+ + "\u3D3A\u3D3B\u0000\u3D3C\u0000\u0000\u0000\u0000"+ + "\u3D3D\u3D3E\u3D3F\u3D40\u3D41\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3D42\u0000"+ + "\u0000\u3D43\u3D44\u0000\u0000\u0000\u0000\u0000"+ + "\u3D45\u3D46\u3D47\u0000\u3D48\u3D49\u3D4A\u3D4B"+ + "\u0000\u0000\u3D4C\u3D4D\u0000\u0000\u3D4E\u0000"+ + "\u0000\u0000\u3D4F\u0000\u3D50\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3D51"+ + "\u0000\u0000\u3D52\u0000\u0000\u3D53\u0000\u0000"+ + "\u0000\u0000\u0000\u3D54\u3D55\u0000\u0000\u3D56"+ + "\u3D57\u0000\u3D58\u0000\u0000\u0000\u0000\u3D59"+ + "\u0000\u0000\u0000\u0000\u3D5A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3D5B\u0000\u0000"+ + "\u0000\u0000\u0000\u3D5C\u0000\u3D5D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3D5E\u0000\u0000\u0000\u0000\u0000\u0000\u3D5F"+ + "\u3D60\u3D61\u0000\u0000\u3D62\u0000\u0000\u0000"+ + "\u0000\u3D63\u0000\u0000\u3D64\u0000\u3D65\u3D66"+ + "\u0000\u0000\u0000\u0000\u0000\u3D67\u0000\u0000"+ + "\u0000\u3D68\u0000\u0000\u0000\u0000\u0000\u3D69"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3D6A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3D6B\u3D6C"+ + "\u0000\u0000\u3D6D\u0000\u0000\u0000\u3D6E\u0000"+ + "\u3D6F\u0000\u3D70\u0000\u0000\u0000\u3D71\u0000"+ + "\u0000\u3D72\u0000\u3D73\u0000\u3D74\u0000\u0000"+ + "\u3D75\u0000\u0000\u0000\u0000\u3D76\u3D77\u0000"+ + "\u0000\u0000\u3D78\u0000\u3D79\u3D7A\u0000\u0000"+ + "\u3D7B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3D7C\u3D7D\u0000\u0000\u0000\u0000\u0000\u3D7E"+ + "\u0000\u0000\u0000\u3E21\u0000\u0000\u3E22\u0000"+ + "\u0000\u0000\u3E23\u0000\u3E24\u0000\u0000\u0000"+ + "\u3E25\u3E26\u3E27\u3E28\u0000\u0000\u3E29\u3E2A"+ + "\u0000\u0000\u0000\u0000\u3E2B\u3E2C\u0000\u0000"+ + "\u0000\u3E2D\u0000\u3E2E\u0000\u3E2F\u3E30\u0000"+ + "\u0000\u0000\u3E31\u0000\u0000\u3E32\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3E33\u0000\u0000\u3E34\u0000\u0000"+ + "\u3E35\u0000\u0000\u0000\u3E36\u3E37\u0000\u0000"+ + "\u0000\u0000\u3E38\u0000\u0000\u0000\u0000\u3E39"+ + "\u0000\u0000\u3E3A\u0000\u3E3B\u0000\u0000\u0000"+ + "\u3E3C\u3E3D\u3E3E\u3E3F\u3E40\u0000\u3E41\u3E42"+ + "\u0000\u3E43\u0000\u0000\u3E44\u0000\u3E45\u0000"+ + "\u0000\u0000\u3E46\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3E47\u3E48\u0000\u0000\u0000\u0000"+ + "\u3E49\u3E4A\u0000\u0000\u0000\u3E4B\u3E4C\u3E4D"+ + "\u0000\u3E4E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3E4F\u0000\u0000\u0000\u3E50\u3E51\u0000"+ + "\u0000\u3E52\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3E53\u0000"+ + "\u3E54\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3E55\u0000\u0000\u0000"+ + "\u0000\u0000\u3E56\u0000\u0000\u0000\u0000\u0000"+ + "\u3E57\u0000\u0000\u3E58\u3E59\u0000\u0000\u3E5A"+ + "\u3E5B\u3E5C\u0000\u3E5D\u3E5E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3E5F\u0000\u3E60\u0000\u0000"+ + "\u0000\u0000\u3E61\u3E62\u0000\u0000\u0000\u3E63"+ + "\u3E64\u0000\u0000\u0000\u3E65\u3E66\u0000\u3E67"+ + "\u3E68\u0000\u0000\u0000\u0000\u3E69\u0000\u0000"+ + "\u3E6A\u0000\u3E6B\u0000\u0000\u3E6C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3E6D\u3E6E\u0000\u0000\u3E6F\u0000\u0000\u0000"+ + "\u3E70\u3E71\u3E72\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3E73\u3E74"+ + "\u0000\u0000\u0000\u0000\u0000\u3E75\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3E76\u3E77\u3E78\u3E79"+ + "\u0000\u3E7A\u3E7B\u0000\u0000\u3E7E\u0000\u3E7C"+ + "\u0000\u3E7D\u0000\u0000\u3F21\u3F22\u0000\u3F23"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3F24\u0000\u3F25\u3F26\u0000\u0000\u3F27"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3F28\u0000\u3F29\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3F2A\u0000\u0000\u0000"+ + "\u3F2B\u0000\u3F2C\u3F2D\u0000\u0000\u0000\u3F2E"+ + "\u0000\u3F2F\u0000\u3F30\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3F31\u0000\u0000\u0000\u3F32\u0000\u0000"+ + "\u0000\u0000\u3F33\u3F34\u3F35\u0000\u3F36\u0000"+ + "\u0000\u0000\u0000\u0000\u3F37\u0000\u0000\u0000"+ + "\u3F38\u3F39\u3F3A\u0000\u3F3B\u0000\u3F3C\u0000"+ + "\u0000\u0000\u3F3D\u0000\u3F3E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3F3F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3F40\u0000\u3F41"+ + "\u0000\u0000\u0000\u3F42\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3F43\u0000\u0000\u3F44\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3F45\u3F46\u3F47"+ + "\u3F48\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3F49\u0000"+ + "\u3F4A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3F4B\u0000\u0000\u3F4C\u3F4D"+ + "\u0000\u0000\u3F4E\u0000\u0000\u0000\u3F4F\u3F50"+ + "\u0000\u0000\u0000\u0000\u3F51\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3F52\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3F53\u3F54\u0000"+ + "\u0000\u0000\u3F55\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3F56\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3F57\u0000\u3F58\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3F59\u3F5A\u0000\u0000"+ + "\u0000\u0000\u0000\u3F5B\u3F5C\u0000\u0000\u0000"+ + "\u0000\u0000\u3F5D\u3F5E\u0000\u3F5F\u0000\u0000"+ + "\u3F60\u0000\u0000\u3F61\u0000\u0000\u3F62\u0000"+ + "\u3F63\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3F64\u3F65\u0000\u0000\u3F66\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3F67\u3F68\u0000"+ + "\u0000\u3F69\u0000\u0000\u3F6A\u0000\u0000\u0000"+ + "\u0000\u3F6B\u3F6C\u3F6D\u3F6E\u0000\u3F6F\u0000"+ + "\u0000\u0000\u3F70\u3F71\u0000\u0000\u3F72\u0000"+ + "\u0000\u0000\u3F73\u3F74\u3F75\u0000\u0000\u0000"+ + "\u3F76\u0000\u0000\u3F77\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3F78\u3F79\u0000"+ + "\u0000\u0000\u0000\u0000\u3F7A\u3F7B\u0000\u0000"+ + "\u0000\u3F7C\u0000\u0000\u3F7D\u3F7E\u0000\u0000"+ + "\u4021\u0000\u0000\u0000\u4022\u4023\u0000\u4024"+ + "\u0000\u0000\u4025\u0000\u4026\u0000\u0000\u4027"+ + "\u0000\u0000\u4028\u0000\u0000\u0000\u0000\u0000"+ + "\u4029\u0000\u0000\u0000\u402A\u402B\u0000\u0000"+ + "\u0000\u402C\u402D\u0000\u0000\u0000\u402E\u0000"+ + "\u0000\u0000\u0000\u0000\u402F\u0000\u4030\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4031\u4032\u4033"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4034\u0000\u0000"+ + "\u0000\u4035\u0000\u0000\u0000\u4036\u0000\u0000"+ + "\u4037\u0000\u0000\u0000\u0000\u0000\u4038\u0000"+ + "\u0000\u4039\u0000\u403A\u403B\u403C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u403D\u0000\u0000\u0000"+ + "\u403E\u0000\u0000\u0000\u0000\u403F\u0000\u0000"+ + "\u0000\u0000\u4040\u0000\u4041\u0000\u0000\u0000"+ + "\u0000\u0000\u4042\u4043\u0000\u4044\u0000\u0000"+ + "\u4045\u4046\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4047\u4048\u0000\u0000\u0000\u0000\u0000"+ + "\u4049\u0000\u404A\u0000\u404B\u0000\u0000\u0000"+ + "\u404C\u0000\u0000\u0000\u0000\u0000\u404D\u0000"+ + "\u404E\u0000\u404F\u0000\u4050\u4051\u0000\u0000"+ + "\u0000\u4052\u4053\u0000\u0000\u0000\u0000\u4054"+ + "\u4055\u0000\u0000\u0000\u0000\u4056\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4057\u0000\u4058"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4059\u0000\u0000\u0000\u405A"+ + "\u0000\u405B\u405C\u405D\u405E\u0000\u0000\u0000"+ + "\u0000\u0000\u405F\u4060\u4061\u4062\u0000\u4063"+ + "\u4064\u4065\u0000\u4066\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4067\u0000\u0000"+ + "\u0000\u0000\u0000\u4068\u4069\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u406A\u0000\u406B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u406C\u0000\u406D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u406E"+ + "\u406F\u4070\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4071\u4072\u0000\u4073\u0000\u4074\u0000\u4075"+ + "\u0000\u4076\u0000\u4077\u0000\u0000\u4078\u0000"+ + "\u4079\u0000\u0000\u0000\u407A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u407B\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u407C\u407D\u407E"+ + "\u0000\u0000\u0000\u0000\u4121\u0000\u0000\u0000"+ + "\u0000\u4122\u4123\u4124\u4125\u0000\u4126\u0000"+ + "\u4127\u4128\u0000\u0000\u0000\u4129\u0000\u412A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u412B\u412C\u0000\u0000"+ + "\u0000\u412D\u412E\u0000\u0000\u412F\u0000\u0000"+ + "\u4130\u0000\u0000\u0000\u0000\u4131\u0000\u4132"+ + "\u0000\u0000\u0000\u4133\u0000\u0000\u0000\u4134"+ + "\u0000\u4135\u0000\u0000\u4136\u0000\u0000\u0000"+ + "\u4137\u4138\u4139\u0000\u0000\u0000\u0000\u413A"+ + "\u0000\u0000\u0000\u413B\u413C\u0000\u413D\u0000"+ + "\u0000\u413E\u0000\u413F\u0000\u0000\u4140\u4141"+ + "\u0000\u0000\u4142\u0000\u0000\u0000\u4143\u0000"+ + "\u0000\u4144\u0000\u0000\u0000\u0000\u4145\u0000"+ + "\u0000\u4146\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4147\u0000\u4148\u4149\u0000\u0000"+ + "\u0000\u0000\u0000\u414A\u0000\u0000\u0000\u414B"+ + "\u0000\u414C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u414D\u0000\u414E\u0000\u414F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4150"+ + "\u4151\u0000\u0000\u0000\u0000\u0000\u0000\u4152"+ + "\u0000\u0000\u0000\u4153\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4154\u0000\u0000\u4155\u0000\u0000"+ + "\u0000\u4156\u0000\u0000\u0000\u4157\u0000\u0000"+ + "\u0000\u0000\u4158\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4159\u0000\u0000\u415A\u0000\u0000"+ + "\u415B\u0000\u0000\u0000\u0000\u415C\u0000\u0000"+ + "\u415D\u0000\u0000\u415E\u0000\u0000\u415F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4160\u0000"+ + "\u0000\u0000\u4161\u4162\u4163\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4164"+ + "\u0000\u0000\u4165\u0000\u0000\u0000\u0000\u0000"+ + "\u4166\u4167\u0000\u0000\u0000\u0000\u4168\u0000"+ + "\u4169\u0000\u0000\u0000\u416A\u0000\u416B\u0000"+ + "\u416C\u0000\u0000\u0000\u0000\u0000\u0000\u416D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u416E\u0000\u416F\u0000\u4170\u4171\u0000\u0000"+ + "\u0000\u4172\u0000\u0000\u0000\u0000\u4173\u4174"+ + "\u4175\u0000\u0000\u0000\u4176\u0000\u0000\u0000"+ + "\u4177\u4178\u0000\u0000\u0000\u4179\u0000\u0000"+ + "\u0000\u417A\u417B\u0000\u0000\u417C\u417D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u417E\u4221\u0000"+ + "\u0000\u4222\u4223\u4224\u4225\u0000\u4226\u0000"+ + "\u0000\u4227\u4228\u4229\u422A\u0000\u422B\u0000"+ + "\u422C\u422D\u0000\u422E\u0000\u0000\u0000\u4230"+ + "\u0000\u422F\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4231\u0000\u0000\u0000\u0000\u4232\u4233\u0000"+ + "\u0000\u0000\u4234\u0000\u4235\u0000\u4237\u0000"+ + "\u0000\u4236\u0000\u0000\u0000\u0000\u0000\u4238"+ + "\u4239\u423A\u0000\u423B\u423C\u0000\u0000\u0000"+ + "\u423D\u423E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4240\u4241\u4242\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4244\u0000\u4245\u0000\u4247"+ + "\u4248\u4249\u0000\u424A\u424C\u0000\u4243\u4246"+ + "\u424B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u424D\u424E\u424F\u0000\u0000"+ + "\u4250\u0000\u4251\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4252\u4253\u4254\u4255\u0000\u0000\u4256"+ + "\u4257\u0000\u0000\u0000\u4258\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4259\u0000\u0000"+ + "\u0000\u425A\u425B\u0000\u0000\u425C\u0000\u0000"+ + "\u0000\u0000\u0000\u425D\u0000\u0000\u0000\u425E"+ + "\u425F\u0000\u4260\u4261\u0000\u0000\u0000\u0000"+ + "\u4262\u0000\u0000\u0000\u4263\u0000\u4264\u4265"+ + "\u0000\u0000\u0000\u0000\u4266\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4267\u0000\u0000\u0000\u4268"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4269\u0000\u0000\u426A\u426B\u0000\u426C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u426D\u423F\u0000\u0000\u0000\u0000"; + + private final static String innerIndex2= + "\u0000\u0000\u0000\u0000\u0000\u426E\u0000\u426F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4270\u0000"+ + "\u0000\u0000\u0000\u4271\u0000\u0000\u0000\u0000"+ + "\u0000\u4272\u0000\u0000\u4273\u0000\u0000\u0000"+ + "\u4274\u0000\u4275\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4276\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4277\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4278\u0000\u4279"+ + "\u427A\u0000\u0000\u0000\u427B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u427C\u427D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u427E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4321\u0000"+ + "\u0000\u0000\u0000\u0000\u4322\u0000\u4323\u0000"+ + "\u0000\u0000\u0000\u0000\u4324\u0000\u4325\u0000"+ + "\u0000\u0000\u0000\u4326\u0000\u0000\u0000\u0000"+ + "\u0000\u4327\u0000\u0000\u4328\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4329\u432A"+ + "\u0000\u432B\u0000\u432C\u0000\u0000\u432D\u0000"+ + "\u432E\u432F\u0000\u4330\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4331\u4332\u4333\u0000\u0000\u4334\u0000\u0000"+ + "\u0000\u0000\u0000\u4335\u4336\u4337\u0000\u0000"+ + "\u4339\u0000\u433A\u433B\u0000\u433C\u0000\u0000"+ + "\u433D\u433E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u433F\u0000\u0000\u0000\u0000\u4340"+ + "\u0000\u4341\u0000\u0000\u4342\u0000\u0000\u0000"+ + "\u0000\u4343\u0000\u0000\u0000\u0000\u4344\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4345\u0000\u4346\u0000\u0000\u0000\u4347\u4348"+ + "\u0000\u4338\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u434A\u0000\u0000\u0000"+ + "\u0000\u434B\u0000\u0000\u0000\u434C\u0000\u434D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u434F"+ + "\u434E\u0000\u0000\u0000\u4350\u4351\u0000\u4352"+ + "\u4353\u4354\u0000\u4355\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4356\u0000\u0000\u0000\u4357"+ + "\u0000\u0000\u0000\u0000\u4358\u4359\u0000\u0000"+ + "\u0000\u0000\u435A\u0000\u435B\u0000\u0000\u0000"+ + "\u0000\u0000\u4349\u0000\u0000\u435C\u0000\u435D"+ + "\u435E\u0000\u0000\u435F\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4360\u0000\u0000\u4361\u4362"+ + "\u4363\u4364\u4365\u0000\u0000\u4366\u0000\u0000"+ + "\u0000\u4367\u4368\u4369\u436A\u0000\u0000\u0000"+ + "\u0000\u0000\u436B\u0000\u436C\u0000\u436D\u0000"+ + "\u436E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u436F\u0000"+ + "\u4370\u0000\u4371\u0000\u4372\u0000\u0000\u0000"+ + "\u0000\u4373\u0000\u4374\u0000\u4375\u0000\u0000"+ + "\u0000\u4376\u4377\u0000\u0000\u0000\u4378\u0000"+ + "\u0000\u0000\u4379\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u437A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u437B\u0000\u0000"+ + "\u437C\u0000\u0000\u0000\u437D\u0000\u0000\u437E"+ + "\u4421\u4422\u0000\u4423\u0000\u0000\u4424\u0000"+ + "\u0000\u4425\u0000\u0000\u4426\u4427\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4428\u0000\u0000"+ + "\u4429\u0000\u442A\u442B\u442C\u442D\u0000\u0000"+ + "\u442E\u442F\u0000\u0000\u0000\u4430\u4431\u0000"+ + "\u0000\u0000\u0000\u4432\u4433\u4434\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4435\u0000"+ + "\u0000\u4436\u4437\u0000\u0000\u0000\u0000\u0000"+ + "\u4438\u4439\u0000\u443A\u0000\u0000\u443B\u443C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u443D\u0000\u443E\u0000\u443F\u0000\u0000"+ + "\u4440\u0000\u0000\u4441\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4442\u0000\u0000\u4443\u0000\u0000"+ + "\u0000\u4444\u0000\u0000\u0000\u0000\u4445\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4446"+ + "\u0000\u0000\u0000\u4447\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4448\u4449\u444A\u444B\u0000"+ + "\u444C\u444D\u0000\u0000\u444E\u0000\u0000\u0000"+ + "\u444F\u4450\u4451\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4452\u4453\u0000\u0000\u0000\u4454"+ + "\u4455\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4456\u0000\u0000"+ + "\u0000\u0000\u4457\u0000\u0000\u0000\u4458\u0000"+ + "\u4459\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u445A\u0000\u0000\u0000\u445B\u445C\u0000"+ + "\u445D\u0000\u0000\u445E\u0000\u445F\u0000\u4460"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4461"+ + "\u4462\u0000\u4463\u0000\u4464\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4465\u0000\u0000"+ + "\u4466\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4467\u0000\u0000\u0000\u0000\u4468\u4469"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u446A\u0000\u0000\u446B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u446C\u446D"+ + "\u0000\u446E\u0000\u446F\u0000\u4470\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4471\u0000"+ + "\u4472\u4473\u0000\u4474\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4475"+ + "\u0000\u4476\u0000\u0000\u0000\u4477\u0000\u0000"+ + "\u0000\u0000\u4478\u0000\u0000\u4479\u0000\u0000"+ + "\u447A\u0000\u0000\u0000\u447B\u0000\u0000\u0000"+ + "\u447C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u447D\u0000\u447E\u0000\u4521\u0000\u0000\u4522"+ + "\u0000\u0000\u0000\u4523\u0000\u0000\u4524\u4525"+ + "\u0000\u0000\u0000\u0000\u0000\u4526\u4527\u0000"+ + "\u0000\u4528\u4529\u0000\u0000\u0000\u452A\u0000"+ + "\u452B\u452C\u452D\u0000\u0000\u452E\u452F\u0000"+ + "\u0000\u0000\u0000\u4530\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4531\u0000\u0000\u4532"+ + "\u0000\u0000\u4533\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4534\u0000\u4535\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4536\u0000"+ + "\u0000\u4537\u0000\u4538\u0000\u0000\u4539\u453A"+ + "\u0000\u453B\u0000\u453C\u0000\u0000\u0000\u0000"+ + "\u0000\u453D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u453E\u0000\u453F\u4540\u4541"+ + "\u0000\u0000\u0000\u0000\u0000\u4542\u0000\u0000"+ + "\u0000\u0000\u0000\u4543\u0000\u0000\u0000\u4544"+ + "\u4545\u4546\u0000\u0000\u4547\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4548\u4549\u454A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u454B\u0000"+ + "\u454D\u454C\u0000\u0000\u454E\u0000\u0000\u0000"+ + "\u454F\u0000\u0000\u0000\u4550\u4551\u4552\u0000"+ + "\u0000\u0000\u0000\u0000\u4553\u4554\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4555\u0000\u0000\u4556"+ + "\u0000\u0000\u0000\u0000\u4557\u0000\u0000\u0000"+ + "\u4558\u4559\u455A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u455B\u455C\u0000\u0000"+ + "\u0000\u0000\u455D\u455E\u0000\u0000\u455F\u4560"+ + "\u0000\u4561\u0000\u0000\u0000\u0000\u0000\u4562"+ + "\u4563\u4564\u0000\u0000\u0000\u0000\u0000\u4565"+ + "\u0000\u0000\u0000\u4566\u0000\u0000\u4567\u0000"+ + "\u0000\u0000\u0000\u0000\u4568\u0000\u0000\u0000"+ + "\u4569\u0000\u0000\u456A\u456B\u0000\u0000\u456C"+ + "\u0000\u0000\u0000\u0000\u0000\u456D\u456E\u0000"+ + "\u0000\u0000\u0000\u456F\u0000\u0000\u0000\u4570"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4571\u0000"+ + "\u0000\u0000\u4572\u0000\u0000\u4573\u0000\u0000"+ + "\u0000\u0000\u4574\u0000\u0000\u0000\u4575\u0000"+ + "\u4576\u0000\u0000\u0000\u0000\u4577\u0000\u0000"+ + "\u4578\u0000\u0000\u0000\u0000\u0000\u0000\u4579"+ + "\u0000\u0000\u0000\u457A\u0000\u0000\u457B\u0000"+ + "\u457C\u0000\u0000\u0000\u0000\u457D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u457E\u4621\u0000"+ + "\u0000\u0000\u4622\u0000\u0000\u4623\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4624"+ + "\u0000\u0000\u0000\u4625\u0000\u0000\u0000\u4626"+ + "\u4627\u0000\u4628\u4629\u0000\u0000\u0000\u0000"+ + "\u462A\u462B\u0000\u0000\u462C\u462D\u462E\u0000"+ + "\u462F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4630\u4631\u0000\u0000\u0000\u4632\u4633\u0000"+ + "\u0000\u0000\u0000\u4634\u4635\u0000\u0000\u0000"+ + "\u0000\u4636\u0000\u0000\u4637\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4638\u0000"+ + "\u0000\u0000\u4639\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u463A\u0000\u463B\u0000\u0000\u463C\u463D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u463E\u0000"+ + "\u0000\u463F\u0000\u0000\u0000\u0000\u0000\u4640"+ + "\u0000\u4641\u0000\u0000\u0000\u0000\u0000\u4642"+ + "\u0000\u0000\u4643\u0000\u4644\u4645\u0000\u0000"+ + "\u0000\u4646\u0000\u0000\u0000\u4647\u4648\u0000"+ + "\u4649\u0000\u464A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u464B\u0000\u0000\u0000\u0000\u0000\u464C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u464D\u464E"+ + "\u464F\u0000\u0000\u0000\u4650\u0000\u4651\u0000"+ + "\u0000\u0000\u0000\u4652\u0000\u4653\u4654\u0000"+ + "\u0000\u0000\u4655\u4656\u0000\u0000\u0000\u4657"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4658\u4659\u0000\u465A\u0000\u465B"+ + "\u0000\u0000\u465C\u0000\u465D\u0000\u0000\u0000"+ + "\u0000\u465E\u0000\u465F\u4660\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4736"+ + "\u0000\u0000\u0000\u4661\u0000\u4662\u0000\u4663"+ + "\u0000\u0000\u0000\u0000\u4664\u0000\u4665\u0000"+ + "\u4666\u4667\u0000\u4668\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4669\u466A\u466B"+ + "\u0000\u466C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u466D\u466E\u0000\u466F"+ + "\u4670\u0000\u0000\u0000\u4671\u0000\u0000\u4672"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4673\u0000\u4674\u0000\u4675\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4676\u0000\u0000\u0000\u4677\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4678\u0000\u4679"+ + "\u467A\u467B\u467C\u0000\u467D\u0000\u467E\u0000"+ + "\u0000\u0000\u4721\u0000\u4722\u0000\u0000\u0000"+ + "\u4723\u0000\u0000\u0000\u0000\u0000\u0000\u4724"+ + "\u0000\u4725\u0000\u4726\u4727\u0000\u4728\u0000"+ + "\u0000\u0000\u4729\u0000\u472A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u472B\u0000\u0000\u472C"+ + "\u0000\u0000\u472D\u0000\u0000\u0000\u472E\u472F"+ + "\u0000\u4730\u0000\u4731\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4732\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4733\u4734"+ + "\u4735\u0000\u0000\u0000\u0000\u0000\u4737\u4738"+ + "\u0000\u4739\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u473A\u0000\u0000\u473B\u0000\u0000\u473C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u473D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u473E\u473F"+ + "\u0000\u4740\u0000\u0000\u0000\u4741\u0000\u4742"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4743"+ + "\u4744\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4745\u0000\u0000\u0000"+ + "\u0000\u0000\u4746\u0000\u0000\u0000\u0000\u4747"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4748\u4749\u0000\u474A\u0000\u474B\u474C"+ + "\u474D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u474E\u0000\u474F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4750\u0000\u0000\u4751"+ + "\u0000\u4752\u0000\u0000\u0000\u4753\u0000\u4754"+ + "\u0000\u0000\u0000\u0000\u4755\u0000\u0000\u0000"+ + "\u4756\u0000\u4757\u0000\u0000\u0000\u4758\u4759"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u475A\u0000"+ + "\u0000\u0000\u0000\u475B\u0000\u475C\u0000\u475D"+ + "\u475E\u0000\u475F\u0000\u0000\u4760\u0000\u0000"+ + "\u0000\u4761\u0000\u0000\u0000\u0000\u0000\u4762"+ + "\u4763\u0000\u0000\u0000\u4764\u0000\u4765\u0000"+ + "\u0000\u0000\u0000\u0000\u4766\u0000\u0000\u0000"+ + "\u4767\u0000\u0000\u0000\u4768\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4769\u0000"+ + "\u0000\u0000\u476A\u0000\u0000\u0000\u0000\u476B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u476C\u0000\u0000\u0000\u476D\u0000"+ + "\u0000\u476E\u0000\u476F\u4770\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4771\u4772\u0000\u0000"+ + "\u4773\u4774\u0000\u4775\u0000\u0000\u0000\u4776"+ + "\u0000\u4777\u4778\u4779\u477A\u0000\u0000\u477B"+ + "\u0000\u0000\u0000\u0000\u477C\u477D\u477E\u0000"+ + "\u0000\u0000\u4821\u4822\u0000\u0000\u0000\u0000"+ + "\u4823\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4824\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4825\u0000\u4826\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4827\u0000\u0000"+ + "\u0000\u0000\u0000\u4828\u0000\u0000\u0000\u0000"+ + "\u0000\u4829\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u482A\u0000\u0000\u0000\u0000\u0000\u0000\u482B"+ + "\u0000\u0000\u0000\u0000\u0000\u482C\u482D\u0000"+ + "\u0000\u482E\u0000\u482F\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4830\u0000\u0000\u0000\u4831"+ + "\u4832\u4833\u0000\u4834\u0000\u0000\u0000\u4835"+ + "\u4836\u0000\u4837\u0000\u0000\u4838\u4839\u483A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u483B\u0000\u483C\u483D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u483E\u0000\u483F\u0000\u4840\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4841\u0000\u0000\u0000"+ + "\u4842\u0000\u4843\u0000\u4844\u4845\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4846\u0000"+ + "\u4847\u0000\u4848\u4849\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u484A\u0000"+ + "\u0000\u484B\u484C\u0000\u0000\u4853\u0000\u484D"+ + "\u484E\u0000\u0000\u484F\u0000\u0000\u4850\u0000"+ + "\u0000\u0000\u0000\u4851\u4852\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4854"+ + "\u0000\u4855\u4856\u4857\u0000\u0000\u0000\u4858"+ + "\u0000\u4859\u485A\u0000\u0000\u485B\u485C\u0000"+ + "\u0000\u485D\u485E\u0000\u0000\u0000\u0000\u0000"+ + "\u485F\u0000\u0000\u0000\u4860\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4861\u4862\u0000"+ + "\u0000\u0000\u0000\u4863\u0000\u0000\u0000\u4864"+ + "\u4865\u0000\u0000\u4866\u4867\u4868\u0000\u0000"+ + "\u4869\u0000\u486A\u486B\u486C\u0000\u486D\u0000"+ + "\u0000\u0000\u486E\u0000\u0000\u0000\u0000\u486F"+ + "\u4870\u0000\u0000\u0000\u0000\u4871\u4872\u4873"+ + "\u4874\u0000\u0000\u0000\u0000\u0000\u4875\u4876"+ + "\u4877\u0000\u0000\u0000\u0000\u4878\u4879\u0000"+ + "\u0000\u0000\u0000\u0000\u487A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u487B\u0000\u487C"+ + "\u487D\u0000\u487E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4921\u0000\u0000\u0000\u4922\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4923\u4924\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4925\u0000\u0000\u0000\u0000\u4926\u0000\u0000"+ + "\u0000\u4927\u0000\u0000\u4928\u4929\u0000\u0000"+ + "\u492A\u0000\u0000\u0000\u0000\u492B\u492C\u492D"+ + "\u0000\u0000\u0000\u0000\u0000\u492E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u492F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4930\u0000\u0000\u4931\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4932"+ + "\u0000\u0000\u0000\u0000\u4933\u0000\u0000\u4934"+ + "\u0000\u4935\u0000\u0000\u4936\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4937\u4938\u0000\u0000\u0000"+ + "\u4939\u493A\u493B\u493C\u0000\u0000\u4941\u0000"+ + "\u0000\u0000\u0000\u0000\u493D\u493E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u493F\u4940\u0000"+ + "\u0000\u0000\u0000\u0000\u4942\u4943\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4944\u0000\u4945\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4946\u4947\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4948\u0000"+ + "\u0000\u4949\u0000\u0000\u0000\u494A\u494B\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u494C\u494D\u494E\u494F"+ + "\u4950\u0000\u0000\u4951\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4952\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4953\u0000\u0000\u0000\u0000"+ + "\u4954\u4955\u0000\u0000\u4956\u0000\u0000\u4957"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4958\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4959\u0000\u495A\u495B\u495C\u495D\u0000"+ + "\u495E\u0000\u0000\u0000\u495F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4960\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4961\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4962\u4963\u4964\u4965\u4966"+ + "\u0000\u0000\u0000\u4967\u4968\u0000\u0000\u4969"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u496A\u0000"+ + "\u496B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u496C\u0000\u496D\u0000\u496E"+ + "\u496F\u4970\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4971\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4972\u0000\u0000\u0000\u4973\u4974\u4975"+ + "\u0000\u0000\u4976\u4977\u0000\u0000\u0000\u0000"+ + "\u4978\u0000\u4979\u0000\u0000\u0000\u0000\u497A"+ + "\u0000\u0000\u497B\u0000\u497C\u0000\u497D\u0000"+ + "\u497E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4A21\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4A22\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4A23\u0000\u0000\u0000\u0000\u4A24\u0000\u4A25"+ + "\u0000\u0000\u0000\u0000\u4A26\u0000\u0000\u0000"+ + "\u0000\u0000\u4A27\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4A28\u4A29\u0000\u0000\u0000\u0000"+ + "\u4A2A\u0000\u4A2B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4A2C"+ + "\u4A2D\u0000\u4A2E\u4A2F\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4A30\u0000\u0000\u0000\u0000\u4A31"+ + "\u4A32\u4A33\u0000\u0000\u4A34\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A35\u4A36\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A37\u0000\u0000\u4A38\u0000"+ + "\u0000\u4A39\u4A3A\u0000\u4A3B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4A3C\u0000\u0000\u0000\u0000\u0000\u4A3D\u0000"+ + "\u4A3E\u0000\u0000\u0000\u0000\u0000\u0000\u4A3F"+ + "\u4A40\u4A41\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A42\u0000\u0000\u0000\u4A43"+ + "\u0000\u0000\u4A44\u0000\u0000\u4A45\u0000\u4A46"+ + "\u0000\u0000\u0000\u0000\u4A47\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A48\u0000\u0000\u0000\u4A49"+ + "\u0000\u0000\u0000\u0000\u4A4A\u0000\u0000\u0000"+ + "\u4A4B\u4A4C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4A4D\u4A4E\u4A4F\u0000\u4A50\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4A51\u4A52"+ + "\u4A53\u0000\u0000\u4A54\u0000\u4A55\u4A56\u0000"+ + "\u0000\u0000\u4A57\u0000\u4A58\u0000\u4A59\u0000"+ + "\u4A5A\u0000\u0000\u4A5B\u0000\u0000\u0000\u0000"+ + "\u4A5C\u0000\u0000\u4A5D\u0000\u0000\u4A5E\u4A5F"+ + "\u0000\u4A60\u0000\u0000\u0000\u0000\u0000\u4A61"+ + "\u4A62\u0000\u0000\u4A63\u4A64\u0000\u0000\u4A65"+ + "\u0000\u0000\u0000\u0000\u4A66\u0000\u0000\u0000"+ + "\u0000\u4A67\u0000\u0000\u0000\u4A68\u4A69\u0000"+ + "\u0000\u0000\u0000\u4A6A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A6B\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4A6C\u0000\u0000\u0000\u0000\u4A6D\u4A6E\u0000"+ + "\u0000\u4A6F\u0000\u0000\u4A70\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4A71\u0000"+ + "\u0000\u4A72\u0000\u0000\u0000\u0000\u0000\u4A73"+ + "\u0000\u4A74\u0000\u0000\u4A75\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4A76\u4A77\u0000"+ + "\u4A78\u0000\u0000\u0000\u0000\u0000\u0000\u4A79"+ + "\u0000\u0000\u0000\u0000\u0000\u4A7A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A7B\u4A7C\u0000\u0000\u0000"+ + "\u0000\u0000\u4A7D\u4A7E\u0000\u0000\u4B21\u0000"+ + "\u0000\u0000\u4B22\u0000\u4B23\u4B24\u0000\u4B25"+ + "\u0000\u0000\u0000\u4B26\u0000\u4B27\u0000\u0000"+ + "\u0000\u0000\u4B28\u4B29\u0000\u0000\u0000\u0000"+ + "\u4B2A\u4B2B\u0000\u0000\u0000\u0000\u4B2C\u0000"+ + "\u0000\u0000\u4B2D\u0000\u4B2E\u0000\u0000\u4B2F"+ + "\u4B30\u0000\u0000\u0000\u4B31\u0000\u0000\u0000"+ + "\u0000\u4B32\u4B33\u0000\u0000\u4B34\u0000\u0000"+ + "\u0000\u0000\u4B35\u4B36\u0000\u4B37\u0000\u0000"+ + "\u0000\u0000\u0000\u4B38\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4B39\u0000\u0000"+ + "\u4B3A\u0000\u4B3B\u0000\u0000\u0000\u4B3C\u0000"+ + "\u4B3D\u0000\u0000\u0000\u0000\u4B3E\u4B3F\u4B40"+ + "\u4B41\u0000\u0000\u0000\u0000\u0000\u4B42\u4B43"+ + "\u0000\u4B44\u0000\u4B45\u4B46\u0000\u4B47\u4B48"+ + "\u0000\u4B49\u0000\u0000\u0000\u0000\u0000\u4B4A"+ + "\u0000\u4B4B\u0000\u0000\u4B4C\u0000\u0000\u0000"+ + "\u4B4D\u4B4E\u0000\u4B4F\u0000\u4B50\u4B51\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4B52\u0000"+ + "\u4B53\u0000\u0000\u4B54\u0000\u4B55\u0000\u4B56"+ + "\u4B57\u0000\u0000\u0000\u4B58\u0000\u4B59\u4B5A"+ + "\u4B5B\u0000\u4B5C\u0000\u0000\u4B5D\u4B5E\u0000"+ + "\u0000\u0000\u4B5F\u4B60\u0000\u4B61\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4B62\u0000\u4B63"+ + "\u0000\u4B64\u0000\u0000\u4B65\u4B66\u0000\u4B67"+ + "\u0000\u0000\u0000\u0000\u0000\u4B68\u4B69\u0000"+ + "\u0000\u4B6A\u0000\u4B6B\u4B6C\u0000\u0000\u4B6D"+ + "\u0000\u0000\u4B6E\u4B6F\u0000\u0000\u4B70\u0000"+ + "\u0000\u4B71\u0000\u0000\u0000\u4B72\u0000\u0000"+ + "\u0000\u4B73\u0000\u4B74\u0000\u0000\u4B75\u4B76"+ + "\u0000\u4B77\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4B78\u4B79\u0000\u4B7A"+ + "\u0000\u4B7B\u4B7C\u4B7D\u0000\u4B7E\u0000\u4C21"+ + "\u4C22\u4C23\u0000\u0000\u4C24\u0000\u0000\u4C25"+ + "\u0000\u0000\u4C26\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4C27\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4C28\u4C29\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4C2A\u0000\u4C2B\u0000"+ + "\u4C2C\u4C2D\u4C2E\u4C2F\u4C30\u4C31\u4C32\u4C33"+ + "\u4C34\u4C35\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4C36\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4C37\u0000\u0000\u4C38\u4C39\u0000\u4C3A\u4C3B"+ + "\u0000\u0000\u0000\u4C3C\u0000\u4C3D\u0000\u0000"+ + "\u0000\u4C3E\u4C3F\u0000\u0000\u0000\u0000\u4C40"+ + "\u0000\u0000\u0000\u0000\u0000\u4C41\u0000\u0000"+ + "\u0000\u0000\u4C42\u0000\u0000\u0000\u4C43\u4C44"+ + "\u4C45\u0000\u0000\u4C46\u0000\u4C47\u4C48\u0000"+ + "\u0000\u4C49\u4C4A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4C4B\u4C4C\u0000\u0000\u0000\u4C4D\u4C4E\u4C4F"+ + "\u0000\u4C50\u0000\u0000\u0000\u0000\u0000\u4C51"+ + "\u4C52\u4C53\u4C54\u0000\u0000\u0000\u0000\u0000"+ + "\u4C55\u4C56\u4C57\u0000\u4C58\u0000\u0000\u4C59"+ + "\u4C5A\u4C5B\u0000\u4C5C\u0000\u0000\u4C5D\u0000"+ + "\u4C5E\u4C5F\u4C60\u4C61\u0000\u0000\u4C62\u4C63"+ + "\u0000\u4C64\u4C65\u0000\u0000\u4C66\u0000\u0000"+ + "\u0000\u4C67\u0000\u4C68\u0000\u0000\u0000\u4C69"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4C6A\u4C6B\u0000\u0000\u4C6C\u0000\u0000\u0000"+ + "\u4C6D\u0000\u0000\u4C6E\u0000\u0000\u0000\u0000"+ + "\u4C6F\u0000\u4C70\u4C71\u0000\u0000\u4C72\u4C73"+ + "\u0000\u0000\u0000\u0000\u4C74\u0000\u0000\u0000"+ + "\u4C75\u0000\u4C76\u4C77\u0000\u0000\u0000\u4C78"+ + "\u0000\u0000\u0000\u0000\u4C79\u0000\u0000\u0000"+ + "\u0000\u0000\u4C7A\u4C7B\u4C7C\u0000\u0000\u4C7D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4C7E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4D21\u0000\u0000\u0000\u4D22\u4D23"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4D24\u4D25\u0000\u0000\u4D26\u0000\u0000\u4D27"+ + "\u0000\u4D28\u4D29\u0000\u0000\u0000\u0000\u4D2A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4D2B\u0000"+ + "\u0000\u4D2C\u0000\u0000\u0000\u4D2D\u4D2E\u4D2F"+ + "\u4D30\u0000\u0000\u4D31\u0000\u0000\u0000\u4D32"+ + "\u4D33\u0000\u0000\u0000\u0000\u0000\u4D34\u0000"+ + "\u4D35\u0000\u4D36\u0000\u0000\u0000\u0000\u4D37"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4D38\u4D39"+ + "\u0000\u4D3A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4D3B"+ + "\u0000\u4D3C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4D3D\u4D3E\u4D3F\u4D40\u4D41\u4D42\u0000"+ + "\u0000\u4D43\u0000\u0000\u0000\u4D44\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4D45\u0000\u4D46\u4D47\u0000\u4D48\u0000\u0000"+ + "\u0000\u4D49\u0000\u0000\u4D4A\u0000\u0000\u0000"+ + "\u0000\u0000\u4D4B\u0000\u4D4C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4D4D\u0000\u0000\u0000"+ + "\u0000\u0000\u4D4E\u0000\u0000\u0000\u0000\u4D4F"+ + "\u4D50\u4D51\u0000\u0000\u4D52\u0000\u4D53\u0000"+ + "\u0000\u0000\u0000\u0000\u4D54\u0000\u4D55\u4D56"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4D57"+ + "\u0000\u0000\u0000\u0000\u4D58\u0000\u0000\u4D59"+ + "\u4D5A\u4D5B\u0000\u0000\u4D5C\u0000\u0000\u4D5D"+ + "\u0000\u0000\u0000\u0000\u4D5E\u0000\u4D5F\u4D60"+ + "\u0000\u4D61\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4D62\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4D63\u0000\u4D64\u4D65\u4D66\u0000\u0000\u4D67"+ + "\u4D68\u0000\u4D69\u0000\u4D6A\u0000\u0000\u4D6B"+ + "\u0000\u0000\u4D6C\u4D6D\u0000\u4D6E\u4D6F\u0000"+ + "\u0000\u4D70\u0000\u4D71\u4D72\u4D73\u4D74\u0000"+ + "\u0000\u0000\u0000\u4D75\u0000\u4D76\u4D77\u0000"+ + "\u0000\u4D78\u0000\u0000\u0000\u4D79\u0000\u0000"+ + "\u0000\u0000\u4D7A\u4D7B\u0000\u4D7C\u0000\u0000"+ + "\u4D7D\u4D7E\u4E21\u0000\u4E22\u0000\u0000\u0000"+ + "\u4E24\u4E25\u0000\u4E26\u4E27\u4E28\u0000\u0000"+ + "\u0000\u4E29\u4E23\u4E2A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4E2B\u0000\u0000"+ + "\u0000\u4E2C\u0000\u0000\u0000\u0000\u0000\u4E2D"+ + "\u0000\u0000\u0000\u0000\u4E2E\u4E2F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4E30\u4E31\u4E32"+ + "\u0000\u4E33\u0000\u0000\u4E34\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4E35\u0000\u0000\u0000\u4E36\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4E37\u4E38\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4E39\u0000\u0000"+ + "\u0000\u0000\u0000\u4E3A\u4E3B\u4E3C\u0000\u4E3D"+ + "\u4E3E\u0000\u4E3F\u4E40\u4E41\u4E42\u4E43\u4E44"+ + "\u4E45\u0000\u4E46\u0000\u0000\u4E47\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4E48\u0000\u0000"+ + "\u0000\u4E49\u0000\u0000\u0000\u4E4A\u0000\u0000"+ + "\u0000\u4E4B\u0000\u4E4C\u4E4D\u0000\u4E4E\u0000"+ + "\u0000\u0000\u0000\u0000\u4E4F\u0000\u0000\u0000"+ + "\u0000\u4E50\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4E51\u0000\u0000\u0000\u0000\u0000\u4E52\u0000"+ + "\u4E53\u0000\u0000\u0000\u4E54\u0000\u0000\u0000"+ + "\u4E55\u4E56\u0000\u0000\u0000\u0000\u4E57\u0000"+ + "\u0000\u4E58\u0000\u0000\u4E59\u0000\u0000\u0000"; + + private final static String innerIndex3= + "\u4E5A\u0000\u0000\u0000\u0000\u0000\u4E5B\u0000"+ + "\u0000\u0000\u4E5C\u0000\u0000\u0000\u4E5D\u0000"+ + "\u0000\u0000\u4E5E\u0000\u4E5F\u4E60\u0000\u4E61"+ + "\u0000\u4E62\u4E63\u0000\u4E64\u0000\u0000\u0000"+ + "\u0000\u0000\u4E65\u0000\u0000\u0000\u0000\u0000"+ + "\u4E66\u0000\u0000\u0000\u0000\u4E67\u4E68\u4E69"+ + "\u0000\u0000\u0000\u0000\u4E6A\u4E6B\u4E6C\u0000"+ + "\u0000\u4E6D\u0000\u0000\u0000\u4E6E\u4E6F\u0000"+ + "\u0000\u0000\u4E70\u0000\u0000\u4E71\u4E72\u0000"+ + "\u0000\u0000\u4E73\u0000\u0000\u4E74\u4E75\u4E76"+ + "\u0000\u0000\u4E77\u0000\u0000\u0000\u4E78\u4E79"+ + "\u0000\u0000\u0000\u0000\u4E7A\u0000\u4E7B\u4E7C"+ + "\u4E7D\u0000\u4E7E\u0000\u4F21\u0000\u0000\u4F22"+ + "\u0000\u0000\u4F23\u0000\u4F24\u0000\u0000\u0000"+ + "\u4F25\u0000\u4F26\u4F27\u4F28\u0000\u0000\u0000"+ + "\u0000\u0000\u4F29\u0000\u0000\u4F2A\u0000\u0000"+ + "\u4F2B\u0000\u0000\u0000\u4F2C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4F2D\u4F2E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4F2F\u4F30\u4F31\u0000"+ + "\u0000\u0000\u4F32\u0000\u0000\u0000\u0000\u4F33"+ + "\u0000\u0000\u4F34\u0000\u0000\u0000\u0000\u4F35"+ + "\u0000\u0000\u4F36\u0000\u0000\u0000\u4F37\u4F38"+ + "\u0000\u4F39\u0000\u0000\u0000\u4F3A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4F3B\u0000"+ + "\u0000\u0000\u0000\u4F3C\u0000\u0000\u0000\u0000"+ + "\u0000\u4F3D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4F3E\u4F3F\u0000\u0000\u4F40\u0000\u0000"+ + "\u0000\u4F41\u0000\u0000\u0000\u0000\u4F42\u4F43"+ + "\u4F44\u0000\u0000\u0000\u4F45\u0000\u4F46\u0000"+ + "\u0000\u0000\u4F47\u0000\u4F48\u0000\u0000\u0000"+ + "\u4F49\u4F4A\u0000\u0000\u4F4B\u0000\u0000\u0000"+ + "\u4F4C\u0000\u0000\u4F4D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4F4E\u4F4F\u0000"+ + "\u0000\u4F50\u0000\u0000\u0000\u4F51\u4F52\u0000"+ + "\u0000\u4F53\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4F54\u0000\u0000"+ + "\u0000\u4F55\u4F56\u4F57\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4F58\u4F59\u0000"+ + "\u4F5A\u0000\u0000\u0000\u0000\u4F5B\u0000\u4F5C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4F5D\u4F5E\u0000\u0000\u4F5F"+ + "\u4F60\u0000\u0000\u0000\u4F61\u0000\u4F62\u0000"+ + "\u0000\u0000\u4F63\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4F64\u0000\u4F65\u0000"+ + "\u4F66\u4F67\u0000\u4F68\u4F69\u0000\u0000\u0000"+ + "\u4F6A\u0000\u4F6B\u0000\u0000\u0000\u4F6C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4F6D\u0000\u0000\u0000\u4F6E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4F6F\u0000\u0000\u0000\u0000\u4F70"+ + "\u0000\u0000\u0000\u0000\u4F71\u0000\u0000\u0000"+ + "\u4F72\u0000\u0000\u0000\u0000\u4F74\u4F75\u4F76"+ + "\u0000\u4F73\u0000\u0000\u4F77\u0000\u0000\u0000"+ + "\u4F78\u0000\u0000\u0000\u4F79\u4F7A\u0000\u0000"+ + "\u4F7B\u4F7C\u4F7D\u4F7E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5021\u0000\u5022\u0000\u5023"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5024"+ + "\u5025\u5026\u0000\u0000\u5027\u0000\u5028\u0000"+ + "\u0000\u0000\u5029\u502A\u0000\u502B\u502C\u0000"+ + "\u0000\u0000\u0000\u502E\u0000\u0000\u0000\u502F"+ + "\u5030\u5031\u0000\u0000\u502D\u0000\u5032\u0000"+ + "\u0000\u0000\u5033\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5034\u5035\u0000\u0000\u5037\u5038"+ + "\u0000\u0000\u5039\u503A\u0000\u0000\u0000\u503B"+ + "\u5036\u0000\u0000\u0000\u0000\u0000\u503C\u0000"+ + "\u0000\u0000\u0000\u0000\u503D\u0000\u0000\u0000"+ + "\u503E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u503F\u0000\u5040\u0000\u5041\u5042"+ + "\u5043\u0000\u0000\u0000\u0000\u5044\u0000\u5045"+ + "\u0000\u5046\u0000\u0000\u0000\u5047\u0000\u0000"+ + "\u0000\u5048\u0000\u0000\u5049\u504A\u0000\u0000"+ + "\u0000\u0000\u0000\u504B\u0000\u504C\u0000\u504D"+ + "\u0000\u0000\u0000\u0000\u504E\u504F\u5050\u0000"+ + "\u0000\u0000\u5051\u5052\u0000\u0000\u0000\u5053"+ + "\u0000\u5054\u0000\u0000\u5055\u0000\u0000\u0000"+ + "\u5056\u0000\u0000\u5057\u5058\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5059"+ + "\u0000\u505A\u0000\u505B\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u505C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u505D\u0000\u505E\u505F\u0000\u5060\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5061\u5062\u0000\u0000\u0000"+ + "\u0000\u5063\u0000\u5064\u5065\u5066\u5067\u0000"+ + "\u5068\u0000\u0000\u5069\u506A\u0000\u0000\u0000"+ + "\u0000\u506B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u506C\u506D\u0000\u506E\u0000\u0000\u0000\u506F"+ + "\u0000\u5070\u0000\u0000\u5071\u0000\u0000\u0000"+ + "\u5072\u0000\u0000\u5073\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5074\u0000\u5075\u0000\u0000\u5076"+ + "\u5077\u0000\u5078\u0000\u0000\u0000\u0000\u5079"+ + "\u0000\u0000\u0000\u0000\u507A\u0000\u507B\u0000"+ + "\u0000\u0000\u507C\u0000\u0000\u507D\u507E\u0000"+ + "\u5121\u0000\u5122\u0000\u0000\u5123\u0000\u0000"+ + "\u0000\u0000\u5124\u5125\u0000\u5126\u0000\u0000"+ + "\u0000\u5127\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5128\u0000\u0000\u0000\u5129\u0000\u0000\u0000"+ + "\u0000\u0000\u512A\u512B\u0000\u0000\u0000\u512C"+ + "\u0000\u512D\u512E\u0000\u512F\u0000\u0000\u0000"+ + "\u0000\u5130\u0000\u0000\u0000\u5131\u0000\u0000"+ + "\u0000\u0000\u0000\u5132\u0000\u0000\u5133\u0000"+ + "\u0000\u5134\u0000\u0000\u0000\u0000\u0000\u5135"+ + "\u0000\u0000\u0000\u5136\u0000\u5137\u0000\u5138"+ + "\u5139\u0000\u0000\u0000\u513A\u513B\u0000\u0000"+ + "\u513C\u513D\u513E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u513F\u5140\u0000\u5141"+ + "\u5142\u0000\u0000\u0000\u5143\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5144\u5145\u0000"+ + "\u0000\u5146\u0000\u0000\u5147\u5148\u0000\u5149"+ + "\u514A\u0000\u0000\u0000\u0000\u514B\u0000\u514C"+ + "\u0000\u0000\u514D\u0000\u0000\u514E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u514F\u0000\u0000"+ + "\u5150\u0000\u0000\u0000\u0000\u0000\u5151\u0000"+ + "\u5152\u0000\u5153\u0000\u0000\u5154\u5155\u0000"+ + "\u0000\u0000\u5156\u5157\u0000\u0000\u0000\u0000"+ + "\u5158\u5159\u0000\u0000\u515A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u515B\u0000"+ + "\u515C\u0000\u0000\u515D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u515E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u515F\u0000\u5160\u0000\u0000"+ + "\u0000\u5161\u0000\u5162\u5163\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5164\u0000"+ + "\u0000\u5165\u0000\u0000\u5166\u0000\u5167\u0000"+ + "\u0000\u5168\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5169\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u516A\u516B\u0000\u516C\u516D\u0000\u0000\u0000"+ + "\u0000\u516E\u0000\u0000\u516F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5170\u0000\u5171\u5172\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5173"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5174\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5175"+ + "\u0000\u0000\u0000\u5176\u0000\u0000\u0000\u5177"+ + "\u0000\u5178\u5179\u517A\u0000\u517B\u517C\u517D"+ + "\u517E\u5221\u0000\u0000\u5222\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5223\u0000\u5224"+ + "\u5225\u5226\u0000\u0000\u0000\u0000\u0000\u5227"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5228\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5229\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u522A\u0000\u0000\u0000\u522B\u0000\u522C\u0000"+ + "\u0000\u522D\u522E\u0000\u0000\u522F\u0000\u5230"+ + "\u0000\u0000\u5231\u5232\u0000\u0000\u0000\u5233"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5234\u0000\u0000\u0000"+ + "\u0000\u5235\u0000\u0000\u0000\u0000\u5236\u0000"+ + "\u5237\u5238\u0000\u0000\u0000\u0000\u5239\u0000"+ + "\u0000\u0000\u0000\u523A\u0000\u0000\u523B\u0000"+ + "\u523C\u0000\u0000\u0000\u0000\u523D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u523E\u0000\u0000\u523F"+ + "\u5240\u0000\u5241\u0000\u0000\u5242\u5243\u0000"+ + "\u0000\u0000\u5244\u5245\u5246\u5247\u0000\u0000"+ + "\u0000\u0000\u5248\u0000\u0000\u5249\u0000\u0000"+ + "\u524A\u0000\u524B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u524C\u0000\u524D\u524E"+ + "\u0000\u524F\u5250\u5251\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5252\u0000\u5253\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5254\u0000\u5255\u5256\u0000\u0000"+ + "\u5257\u5258\u5259\u0000\u525A\u0000\u525B\u0000"+ + "\u0000\u525C\u525D\u525E\u525F\u0000\u5260\u0000"+ + "\u0000\u5261\u0000\u5262\u5263\u0000\u5264\u5265"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5266\u0000\u5267\u0000\u0000\u0000\u0000"+ + "\u5268\u0000\u0000\u0000\u0000\u5269\u526A\u0000"+ + "\u526B\u0000\u0000\u0000\u526C\u0000\u0000\u0000"+ + "\u0000\u526D\u0000\u526E\u526F\u0000\u5270\u0000"+ + "\u0000\u5271\u5272\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5273\u0000"+ + "\u0000\u0000\u5274\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5276\u5277\u5278\u0000\u5275\u0000\u0000"+ + "\u0000\u5279\u527A\u527B\u527C\u527D\u527E\u0000"+ + "\u0000\u5321\u0000\u5322\u0000\u0000\u0000\u5323"+ + "\u0000\u5324\u0000\u0000\u0000\u5325\u5326\u0000"+ + "\u5327\u0000\u5328\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5329\u0000\u0000\u532A\u532B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u532C\u532D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u532E"+ + "\u0000\u0000\u0000\u0000\u532F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5330\u0000"+ + "\u5331\u0000\u0000\u0000\u0000\u0000\u5332\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5333\u0000\u0000\u0000\u0000\u0000\u5334\u5335"+ + "\u0000\u0000\u5336\u5337\u5338\u0000\u0000\u5339"+ + "\u0000\u0000\u0000\u0000\u533A\u0000\u0000\u533B"+ + "\u533C\u533D\u0000\u0000\u0000\u533E\u0000\u533F"+ + "\u0000\u0000\u0000\u5340\u5341\u5342\u0000\u5343"+ + "\u0000\u5344\u5345\u0000\u0000\u5346\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5347\u0000"+ + "\u0000\u5348\u0000\u5349\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u534A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u534B\u0000\u0000\u0000\u534C"+ + "\u534D\u534E\u0000\u0000\u0000\u0000\u0000\u534F"+ + "\u0000\u5350\u5351\u5352\u0000\u0000\u5353\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5354\u5355\u0000"+ + "\u0000\u0000\u0000\u5356\u0000\u0000\u5357\u0000"+ + "\u0000\u0000\u5358\u0000\u0000\u5359\u0000\u0000"+ + "\u0000\u535A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u535B\u535C\u535D\u0000"+ + "\u535E\u535F\u0000\u0000\u0000\u0000\u0000\u5360"+ + "\u5361\u0000\u0000\u0000\u0000\u5362\u0000\u0000"+ + "\u0000\u5363\u0000\u5364\u0000\u0000\u0000\u5365"+ + "\u0000\u5366\u5367\u0000\u5368\u5369\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u536A\u0000\u536B"+ + "\u0000\u0000\u536C\u0000\u0000\u0000\u0000\u0000"+ + "\u536D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u536E\u0000\u536F\u5370\u0000\u0000\u0000\u5371"+ + "\u0000\u5372\u5373\u5374\u0000\u5375\u5376\u0000"+ + "\u5377\u0000\u0000\u5378\u5379\u537A\u0000\u0000"+ + "\u0000\u537B\u0000\u0000\u0000\u0000\u537C\u537D"+ + "\u0000\u0000\u0000\u0000\u0000\u537E\u5421\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5422\u5423"+ + "\u0000\u0000\u5424\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5425\u0000\u0000\u5426\u5427"+ + "\u0000\u5428\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5429\u542A\u542B\u542C\u542D\u0000"+ + "\u0000\u0000\u0000\u0000\u542E\u542F\u5430\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5431"+ + "\u0000\u5432\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5434\u0000\u0000\u5435\u5436\u0000"+ + "\u0000\u0000\u5437\u5438\u0000\u5439\u0000\u0000"+ + "\u0000\u543A\u0000\u0000\u0000\u543B\u543C\u0000"+ + "\u0000\u543D\u543E\u0000\u0000\u0000\u0000\u0000"+ + "\u5433\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u543F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5440\u5441\u0000\u0000\u0000\u5442\u0000\u5443"+ + "\u0000\u0000\u0000\u0000\u5444\u5445\u0000\u0000"+ + "\u5446\u0000\u0000\u0000\u0000\u0000\u0000\u5447"+ + "\u5448\u0000\u0000\u0000\u5449\u544A\u0000\u544B"+ + "\u0000\u0000\u0000\u544C\u0000\u0000\u544D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u544E"+ + "\u0000\u0000\u0000\u0000\u544F\u5450\u0000\u5451"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5452\u0000"+ + "\u5453\u0000\u5454\u0000\u0000\u0000\u0000\u0000"+ + "\u5455\u0000\u0000\u0000\u0000\u0000\u0000\u5456"+ + "\u0000\u5457\u5458\u0000\u0000\u5459\u0000\u0000"+ + "\u0000\u0000\u0000\u545A\u0000\u0000\u545B\u545C"+ + "\u0000\u0000\u0000\u545D\u0000\u0000\u0000\u0000"+ + "\u545E\u0000\u0000\u0000\u0000\u0000\u545F\u0000"+ + "\u0000\u5460\u0000\u0000\u0000\u0000\u5461\u5462"+ + "\u0000\u0000\u5463\u0000\u0000\u5464\u0000\u0000"+ + "\u0000\u5465\u0000\u0000\u0000\u5466\u0000\u0000"+ + "\u5467\u0000\u5468\u0000\u0000\u5469\u546A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u546C\u546B\u546D\u546E\u546F"+ + "\u0000\u0000\u0000\u5470\u5471\u0000\u0000\u5472"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5473"+ + "\u0000\u0000\u5474\u5475\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5476\u5477\u5478\u0000\u0000"+ + "\u0000\u5479\u0000\u547A\u547B\u547C\u547D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u547E\u0000\u0000"+ + "\u0000\u5521\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5522\u5523\u5524"+ + "\u5525\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5526\u0000\u5527\u0000\u5528"+ + "\u5529\u552A\u0000\u0000\u0000\u0000\u552B\u552C"+ + "\u0000\u0000\u0000\u0000\u552D\u0000\u0000\u0000"+ + "\u0000\u552E\u552F\u0000\u0000\u0000\u5530\u0000"+ + "\u0000\u0000\u5531\u0000\u0000\u5532\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5533\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5534\u0000\u0000\u5535"+ + "\u5536\u0000\u0000\u5537\u0000\u0000\u0000\u0000"+ + "\u5538\u0000\u0000\u0000\u0000\u0000\u5539\u553A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u553B\u0000\u0000\u0000\u553C"+ + "\u0000\u0000\u0000\u553D\u0000\u553E\u0000\u0000"+ + "\u553F\u0000\u0000\u0000\u5540\u0000\u5541\u5542"+ + "\u0000\u0000\u5543\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5544\u0000\u0000\u5545\u5546\u5547"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5548"+ + "\u5549\u0000\u554A\u0000\u0000\u554B\u554C\u554D"+ + "\u0000\u554E\u0000\u554F\u5550\u0000\u5551\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5552\u5553\u5554"+ + "\u5555\u0000\u0000\u0000\u5556\u0000\u5557\u0000"+ + "\u0000\u0000\u0000\u0000\u5558\u0000\u5559\u0000"+ + "\u555A\u0000\u0000\u0000\u555B\u555C\u0000\u555D"+ + "\u0000\u555E\u555F\u0000\u5560\u0000\u5561\u0000"+ + "\u5562\u0000\u0000\u0000\u5563\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5564\u0000\u0000\u0000\u5565\u0000\u5566\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5567\u0000\u0000"+ + "\u0000\u5568\u0000\u0000\u0000\u5569\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u556A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u556B\u0000\u0000\u0000\u0000\u0000\u556C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u556D\u0000\u556E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u556F\u5570"+ + "\u0000\u0000\u0000\u5571\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5572\u5573\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5574\u0000\u0000\u0000\u0000\u5575\u0000\u5576"+ + "\u0000\u0000\u5577\u0000\u5578\u5579\u0000\u557A"+ + "\u557B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u557C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u557D\u557E\u0000"+ + "\u5621\u0000\u5622\u5623\u0000\u0000\u5624\u0000"+ + "\u0000\u5625\u5626\u0000\u0000\u0000\u5627\u0000"+ + "\u0000\u0000\u0000\u5628\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5629\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u562A\u562B"+ + "\u562C\u0000\u0000\u0000\u562D\u0000\u562E\u0000"+ + "\u562F\u0000\u0000\u0000\u5630\u0000\u0000\u5631"+ + "\u0000\u0000\u0000\u0000\u5632\u0000\u0000\u0000"+ + "\u5633\u0000\u0000\u0000\u0000\u5634\u0000\u0000"+ + "\u0000\u0000\u5635\u0000\u5636\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5637\u0000\u5638"+ + "\u0000\u0000\u5639\u0000\u563A\u0000\u0000\u0000"+ + "\u0000\u0000\u563B\u0000\u0000\u0000\u0000\u563C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u563D\u563E\u0000\u0000\u0000\u0000\u0000\u563F"+ + "\u5640\u5641\u0000\u0000\u0000\u5642\u0000\u5643"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5644"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5645\u0000\u0000\u5647\u5648\u5649\u0000"+ + "\u0000\u0000\u0000\u564A\u0000\u0000\u564B\u0000"+ + "\u5646\u0000\u0000\u0000\u0000\u0000\u564C\u0000"+ + "\u564D\u0000\u0000\u564E\u0000\u0000\u564F\u0000"+ + "\u0000\u0000\u5650\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5651\u0000"+ + "\u0000\u0000\u5652\u0000\u5653\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5654\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5656\u0000\u5657\u0000\u0000"+ + "\u0000\u0000\u5658\u5655\u0000\u0000\u5659\u565A"+ + "\u0000\u0000\u0000\u0000\u0000\u565B\u0000\u565C"+ + "\u0000\u0000\u0000\u565D\u0000\u565E\u565F\u0000"+ + "\u0000\u5660\u0000\u0000\u5661\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5662\u5663\u0000\u0000\u0000"+ + "\u5664\u5665\u5666\u0000\u0000\u5667\u5668\u0000"+ + "\u5669\u566A\u0000\u0000\u0000\u566B\u0000\u566C"+ + "\u566D\u0000\u0000\u566E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u566F"+ + "\u0000\u0000\u0000\u5670\u5671\u0000\u0000\u0000"+ + "\u0000\u5672\u5673\u0000\u0000\u5674\u0000\u0000"+ + "\u0000\u5675\u5676\u0000\u0000\u0000\u0000\u0000"+ + "\u5677\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5678\u0000\u5679\u0000\u0000\u0000"+ + "\u0000\u0000\u567A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u567B\u567C\u567D\u567E\u0000"+ + "\u0000\u0000\u0000\u5721\u0000\u0000\u5722\u5723"+ + "\u0000\u5724\u0000\u0000\u0000\u0000\u5725\u0000"+ + "\u0000\u0000\u0000\u0000\u5726\u0000\u0000\u0000"+ + "\u5727\u0000\u0000\u5728\u0000\u0000\u0000\u5729"+ + "\u0000\u0000\u0000\u0000\u0000\u572A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u572B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u572C\u0000\u572D\u0000\u572E"+ + "\u572F\u5730\u0000\u5731\u5732\u0000\u0000\u5733"+ + "\u0000\u5734\u5735\u0000\u0000\u0000\u5736\u0000"+ + "\u0000\u5737\u0000\u0000\u5738\u0000\u5739\u0000"+ + "\u573A\u0000\u573B\u573C\u0000\u0000\u0000\u0000"+ + "\u573D\u573E\u0000\u573F\u5740\u0000\u0000\u5741"+ + "\u5742\u5743\u5744\u0000\u0000\u0000\u5745\u0000"+ + "\u5746\u0000\u5747\u0000\u5748\u0000\u0000\u5749"+ + "\u0000\u0000\u574A\u0000\u574B\u0000\u574C\u574D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u574E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u574F\u0000\u0000\u0000\u0000\u5750\u0000\u0000"+ + "\u0000\u0000\u5751\u0000\u0000\u0000\u0000\u0000"+ + "\u5752\u0000\u5753\u0000\u5754\u0000\u0000\u0000"+ + "\u5755\u0000\u5756\u0000\u0000\u5757\u0000\u5758"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5759\u575A"+ + "\u0000\u0000\u0000\u0000\u0000\u575B\u575C\u0000"+ + "\u575D\u575E\u0000\u0000\u0000\u0000\u0000\u575F"+ + "\u5760\u0000\u5761\u5762\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5764\u0000\u5765\u5766\u5767"+ + "\u0000\u5768\u5769\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u576A\u576B\u576C\u0000"+ + "\u576D\u0000\u0000\u576E\u0000\u0000\u0000\u576F"+ + "\u0000\u0000\u5770\u0000\u5771\u5772\u0000\u0000"+ + "\u0000\u0000\u5773\u5774\u5775\u0000\u0000\u5776"+ + "\u0000\u0000\u0000\u0000\u0000\u5777\u5778\u0000"+ + "\u0000\u5779\u0000\u583E\u5763\u577A\u577B\u577C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u577D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u577E\u0000\u0000\u0000\u0000\u5821\u0000\u5822"+ + "\u5823\u0000\u5824\u0000\u5825\u0000\u5826\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5827\u0000\u0000"+ + "\u0000\u0000\u5828\u0000\u5829\u582A\u0000\u0000"+ + "\u582B\u582C\u0000\u582D\u582E\u582F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5830\u5831"+ + "\u0000\u5832\u0000\u0000\u5833\u584C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5834\u5835"+ + "\u5836\u0000\u0000\u0000\u0000\u0000\u0000\u5837"+ + "\u0000\u5838\u0000\u0000\u0000\u0000\u0000\u5839"+ + "\u583A\u583B\u0000\u0000\u583C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u583D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u583F\u0000\u5840\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5841\u0000"+ + "\u5842\u5843\u0000\u0000\u5844\u0000\u0000\u0000"+ + "\u0000\u5845\u0000\u0000\u0000\u0000\u5846\u0000"+ + "\u0000\u0000\u5847\u0000\u0000\u0000\u0000\u5848"+ + "\u0000\u5849\u0000\u0000\u0000\u584A\u0000\u0000"+ + "\u0000\u584B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u584D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u584E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u584F\u0000\u5850"+ + "\u5851\u0000\u5852\u0000\u0000\u5853\u0000\u5854"+ + "\u0000\u5855\u5856\u0000\u0000\u0000\u5857\u0000"+ + "\u5858\u5859\u585A\u0000\u585B\u0000\u0000\u0000"+ + "\u585C\u0000\u0000\u0000\u585D\u585E\u0000\u585F"+ + "\u0000\u0000\u5860\u0000\u0000\u0000\u0000\u0000"+ + "\u5861\u0000\u0000\u5862\u5863\u0000\u5864\u0000"+ + "\u5865\u0000\u0000\u0000\u5866\u5867\u0000\u0000"+ + "\u0000\u5868\u0000\u0000\u0000\u5869\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u586A\u586B\u0000\u586C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u586D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u586E\u0000"+ + "\u586F\u5870\u5871\u0000\u0000\u0000\u0000\u5872"+ + "\u0000\u5873\u0000\u0000\u5874\u0000\u0000\u0000"+ + "\u0000\u0000\u5875\u0000\u0000\u5876\u5877\u0000"+ + "\u5878\u0000\u5879\u0000\u0000\u0000\u0000\u587A"+ + "\u587B\u0000\u0000\u0000\u587C\u0000\u0000\u587D"+ + "\u0000\u0000\u0000\u587E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5921\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5922"+ + "\u0000\u0000\u5923\u0000\u0000\u0000\u0000\u5924"+ + "\u5925\u5926\u5927\u0000\u0000\u0000\u0000\u5928"+ + "\u0000\u0000\u592A\u592B\u0000\u592C\u0000\u0000"+ + "\u0000\u0000\u592D\u592E\u0000\u0000\u0000\u592F"+ + "\u0000\u0000\u0000\u0000\u5930\u0000\u5931\u0000"+ + "\u5932\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5933\u0000\u5934\u0000"+ + "\u0000\u0000\u5935\u5936\u5937\u5938\u0000\u5939"+ + "\u0000\u0000\u593A\u593B\u0000\u0000\u0000\u593C"+ + "\u0000\u0000\u5929\u593D\u593E\u0000\u593F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5940"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5941\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5942"+ + "\u5943\u5944\u5945\u5946\u0000\u0000\u5947\u0000"+ + "\u0000\u5948\u0000\u0000\u5949\u594A\u594B\u594C"+ + "\u594D\u594E\u594F\u0000\u5950\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5951\u0000\u0000\u0000\u5952"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5953\u5954\u5955\u0000\u5956\u0000\u5957"+ + "\u0000\u5958\u0000\u0000\u0000\u5959\u595A\u0000"+ + "\u0000\u595B\u0000\u595C\u595D\u0000\u0000\u595E"+ + "\u0000\u0000\u0000\u595F\u0000\u0000\u0000\u0000"+ + "\u5960\u0000\u0000\u0000\u0000\u5961\u0000\u5962"+ + "\u5963\u0000\u5964\u0000\u0000\u5965\u0000\u5966"+ + "\u0000\u0000\u0000\u0000\u0000\u5974\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5967\u0000\u5968\u5969"+ + "\u596A\u0000\u0000\u0000\u596B\u596C\u596D\u596E"+ + "\u0000\u0000\u596F\u0000\u0000\u0000\u0000\u5970"+ + "\u0000\u0000\u5971\u5972\u0000\u0000\u5973\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5975\u0000\u5976\u0000\u0000\u0000\u0000\u5977"+ + "\u5978\u0000\u0000\u0000\u0000\u0000\u5979\u0000"+ + "\u597A\u0000\u0000\u0000\u0000\u597B\u0000\u0000"+ + "\u0000\u0000\u0000\u597C\u0000\u0000\u597D\u0000"+ + "\u0000\u0000\u0000\u0000\u597E\u0000\u0000\u5A21"+ + "\u5A22\u0000\u0000\u0000\u5A23\u5A24\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5A25\u5A26\u0000"+ + "\u5A27\u5A28\u5A29\u0000\u0000\u0000\u0000\u0000"+ + "\u5A2A\u5A2B\u0000\u5A2C\u0000\u0000\u5A2D\u0000"+ + "\u0000\u5A2E\u0000\u0000\u0000\u0000\u0000\u5A2F"+ + "\u0000\u5A30\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5A31\u0000"+ + "\u5A32\u0000\u5A33\u0000\u5A34\u5A35\u0000\u0000"+ + "\u5A36\u3866\u5A37\u0000\u0000\u0000\u5A38\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5A39\u5A3A\u0000\u0000\u5A3B\u5A3C"+ + "\u5A3D\u5A3E\u0000\u0000\u0000\u5A3F\u0000\u0000"+ + "\u5A40\u5A41\u5A42\u5A43\u5A44\u0000\u0000\u0000"+ + "\u0000\u5A45\u0000\u0000\u5A46\u0000\u0000\u5A47"+ + "\u0000\u0000\u0000\u0000\u0000\u5A48\u5A49\u5A4A"+ + "\u0000\u0000\u5A4B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5A6D\u0000\u0000\u0000\u0000\u5A4C\u0000\u0000"+ + "\u0000\u5A4D\u0000\u0000\u0000\u0000\u5A4E\u0000"+ + "\u5A4F\u0000\u5A50\u0000\u5A51\u0000\u0000\u0000"+ + "\u0000\u5A52\u0000\u0000\u0000\u0000\u5A53\u5A54"+ + "\u5A55\u0000\u0000\u0000\u0000\u5A56\u0000\u0000"+ + "\u0000\u5A57\u0000\u5A58\u5A59\u5A5A\u0000\u5A5B"+ + "\u5A5C\u5A5D\u0000\u0000\u0000\u0000\u0000\u5A5E"+ + "\u5A5F\u5A60\u0000\u5A61\u0000\u5A62\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5A63\u5A64\u0000\u0000\u5A65\u0000\u5A66"+ + "\u0000\u0000\u5A67\u0000\u5A68\u0000\u0000\u0000"+ + "\u5A69\u0000\u0000\u5A6A\u0000\u5A6B\u0000\u5A6C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5A6E\u0000\u5A6F\u5A70\u0000\u0000"; + + private final static String innerIndex4= + "\u0000\u0000\u0000\u0000\u5A71\u5A72\u0000\u5A73"+ + "\u0000\u0000\u0000\u5A74\u0000\u0000\u5A75\u5A76"+ + "\u5A77\u0000\u0000\u5A78\u5A79\u0000\u0000\u0000"+ + "\u0000\u5A7A\u0000\u0000\u0000\u0000\u5A7B\u5A7C"+ + "\u0000\u5A7D\u0000\u5A7E\u0000\u0000\u0000\u0000"+ + "\u5B21\u0000\u0000\u0000\u0000\u0000\u5B22\u5B23"+ + "\u0000\u5B24\u5B25\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5B26\u5B27\u0000\u5B28\u5B29\u5B2A\u0000"+ + "\u5B2B\u0000\u0000\u5B2C\u0000\u5B2D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5B2E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5B2F\u0000\u0000\u0000\u0000\u5B30\u0000\u0000"+ + "\u0000\u5B31\u0000\u0000\u5B32\u5B33\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5B34"+ + "\u0000\u5B35\u5B36\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5B37\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5B38\u5B39\u5B3A\u5B3B\u5B3C"+ + "\u5B3D\u5B3E\u0000\u5B3F\u5B40\u0000\u0000\u0000"+ + "\u5B41\u0000\u0000\u5B42\u0000\u5B43\u0000\u5B44"+ + "\u5B45\u5B46\u0000\u0000\u0000\u0000\u5B47\u0000"+ + "\u5B48\u0000\u0000\u5B49\u0000\u0000\u0000\u5B4A"+ + "\u0000\u0000\u0000\u0000\u5B4B\u5B4C\u5B4D\u0000"+ + "\u0000\u5B4E\u0000\u0000\u0000\u5B4F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5B50\u5B51"+ + "\u0000\u5B52\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5B53\u5B54\u5B55\u0000\u0000\u0000\u5B56\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5B57\u5B58\u0000"+ + "\u0000\u5B59\u5B5A\u0000\u5B5B\u0000\u0000\u5B5C"+ + "\u0000\u0000\u5B5D\u5B5E\u5B5F\u0000\u0000\u0000"+ + "\u0000\u0000\u5B60\u5B61\u0000\u5B62\u0000\u0000"+ + "\u0000\u5B63\u0000\u5B64\u0000\u0000\u0000\u0000"+ + "\u5B65\u0000\u5B66\u0000\u0000\u0000\u0000\u5B67"+ + "\u0000\u5B68\u0000\u5B69\u0000\u0000\u5B6A\u0000"+ + "\u0000\u5B6B\u5B6C\u5B6D\u0000\u0000\u0000\u0000"+ + "\u5B6E\u0000\u5B70\u5B71\u5B72\u0000\u0000\u0000"+ + "\u5B73\u5B6F\u5B74\u5B75\u5B76\u0000\u5B77\u5B78"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5B79\u0000\u0000\u0000\u0000\u5B7A\u5B7B\u0000"+ + "\u5B7C\u0000\u5B7D\u0000\u0000\u5B7E\u0000\u0000"+ + "\u0000\u0000\u5C21\u0000\u5C22\u0000\u0000\u0000"+ + "\u0000\u5C23\u0000\u5C24\u0000\u5C25\u0000\u0000"+ + "\u5C26\u5C27\u5C28\u5C29\u0000\u0000\u5C2A\u0000"+ + "\u0000\u5C2B\u0000\u0000\u0000\u5C2C\u5C2D\u0000"+ + "\u5C2E\u0000\u5C2F\u0000\u5C30\u0000\u0000\u5C31"+ + "\u5C32\u0000\u0000\u0000\u5C33\u0000\u0000\u0000"+ + "\u0000\u5C34\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5C35\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5C36\u0000\u5C37\u0000\u0000\u0000\u0000"+ + "\u5C38\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5C39\u0000\u5C3A\u5C3B\u5C3C\u0000\u0000\u5C3D"+ + "\u5C3E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5C3F\u0000\u5C40\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5C41\u0000\u0000\u5C42\u5C43\u0000"+ + "\u5C44\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5C45\u5C46\u5C47\u5C48\u5C49\u0000"+ + "\u0000\u5C4A\u5C4B\u5C4C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5C4D\u0000\u0000\u5C4E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5C4F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5C50"+ + "\u5C51\u5C52\u0000\u0000\u0000\u5C53\u0000\u5C54"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5C55\u0000\u0000\u0000\u0000\u5C56\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5C57\u5C58\u5C59"+ + "\u0000\u0000\u0000\u0000\u0000\u5C5A\u5C5B\u0000"+ + "\u5C5C\u5C5D\u5C5E\u0000\u5C5F\u0000\u0000\u0000"+ + "\u5C60\u0000\u0000\u0000\u0000\u0000\u5C61\u5C62"+ + "\u5C63\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5C64\u5C65\u5C66\u0000\u0000\u5C67\u0000\u0000"+ + "\u0000\u5C68\u5C69\u0000\u0000\u0000\u5C6A\u0000"+ + "\u5C6B\u0000\u5C6C\u0000\u0000\u5C6D\u5C6E\u0000"+ + "\u0000\u5C6F\u0000\u0000\u0000\u0000\u0000\u5C70"+ + "\u0000\u0000\u5C71\u0000\u0000\u0000\u0000\u5C72"+ + "\u0000\u0000\u5C73\u5C74\u5C75\u0000\u0000\u0000"+ + "\u0000\u5C76\u5C77\u5C78\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5C79\u0000\u0000\u5C7A\u0000"+ + "\u5C7B\u0000\u0000\u5C7C\u0000\u5C7D\u0000\u0000"+ + "\u0000\u0000\u5C7E\u5D21\u5D22\u5D23\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5D24\u0000\u0000\u0000\u5D25\u0000\u0000"+ + "\u5D26\u0000\u0000\u0000\u5D27\u5D28\u0000\u0000"+ + "\u0000\u0000\u0000\u5D29\u5D2A\u0000\u0000\u5D2B"+ + "\u5D2C\u0000\u0000\u0000\u0000\u5D2D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5D2E\u0000\u0000\u0000\u5D2F\u5D30\u5D31\u5D32"+ + "\u0000\u0000\u0000\u0000\u5D33\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5D34\u5D35\u5D36\u5D37"+ + "\u5D38\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5D39\u0000\u0000"+ + "\u0000\u5D3A\u0000\u5D3B\u0000\u5D3C\u0000\u0000"+ + "\u0000\u5D3D\u0000\u5D3E\u0000\u0000\u5D3F\u0000"+ + "\u0000\u5D40\u0000\u0000\u0000\u5D41\u0000\u5D42"+ + "\u0000\u0000\u0000\u0000\u5D43\u5D44\u0000\u5D45"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5D46"+ + "\u0000\u5D47\u5D48\u0000\u5D49\u5D4A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5D4B\u0000"+ + "\u5D4C\u0000\u5D4D\u0000\u5D4E\u0000\u5D4F\u0000"+ + "\u0000\u0000\u0000\u5D50\u5D51\u0000\u0000\u5D52"+ + "\u0000\u0000\u0000\u0000\u0000\u5D53\u0000\u5D54"+ + "\u0000\u0000\u0000\u0000\u0000\u5D55\u5D56\u0000"+ + "\u5D57\u0000\u0000\u5D58\u0000\u5D59\u0000\u5D5A"+ + "\u0000\u5D5B\u0000\u0000\u0000\u5D5C\u5D5D\u0000"+ + "\u0000\u0000\u0000\u5D5E\u0000\u0000\u5D5F\u5D60"+ + "\u5D61\u0000\u0000\u0000\u5D62\u5D63\u0000\u0000"+ + "\u0000\u5D64\u0000\u0000\u0000\u5D65\u0000\u5D66"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5D67\u5D68\u5D69"+ + "\u0000\u5D6A\u5D6B\u5D6C\u0000\u0000\u5D6D\u5D6E"+ + "\u5D6F\u0000\u0000\u5D70\u0000\u0000\u5D71\u0000"+ + "\u0000\u0000\u0000\u5D72\u0000\u0000\u0000\u5D73"+ + "\u5D74\u0000\u5D75\u0000\u0000\u0000\u5D76\u5D77"+ + "\u0000\u5D78\u0000\u0000\u0000\u0000\u0000\u5D79"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5D7A"+ + "\u0000\u5D7B\u0000\u0000\u0000\u0000\u5D7C\u5D7D"+ + "\u0000\u0000\u0000\u5D7E\u0000\u0000\u5E21\u5E22"+ + "\u0000\u0000\u0000\u5E23\u0000\u0000\u5E24\u0000"+ + "\u0000\u0000\u0000\u5E25\u0000\u0000\u5E26\u0000"+ + "\u5E27\u5E28\u5E29\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5E2A\u0000\u5E2B\u5E2C\u5E2D\u0000\u5E2E"+ + "\u0000\u0000\u0000\u0000\u0000\u5E2F\u0000\u5E30"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5E31\u0000\u0000\u0000"+ + "\u5E32\u0000\u0000\u0000\u5E33\u5E34\u5E35\u0000"+ + "\u0000\u0000\u0000\u0000\u5E36\u0000\u0000\u5E37"+ + "\u0000\u0000\u0000\u0000\u0000\u5E38\u5E39\u0000"+ + "\u0000\u0000\u5E3F\u5E3A\u0000\u0000\u0000\u0000"+ + "\u0000\u5E3B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5E3C\u0000\u5E3D\u5E3E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5E40\u0000\u0000"+ + "\u5E41\u0000\u0000\u0000\u0000\u0000\u0000\u5E42"+ + "\u0000\u0000\u0000\u0000\u5E43\u0000\u0000\u0000"+ + "\u0000\u0000\u5E44\u5E45\u5E46\u5E47\u5E48\u0000"+ + "\u5E49\u0000\u0000\u0000\u0000\u5E4E\u0000\u0000"+ + "\u0000\u0000\u5E4A\u5E4B\u5E4C\u0000\u0000\u0000"+ + "\u0000\u5E4D\u0000\u0000\u0000\u0000\u5E4F\u0000"+ + "\u0000\u0000\u0000\u5E50\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5E51\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5E52\u0000"+ + "\u5E53\u5E54\u0000\u0000\u5E55\u0000\u5E56\u0000"+ + "\u0000\u5E57\u0000\u0000\u5E58\u5E59\u0000\u0000"+ + "\u0000\u0000\u0000\u5E5A\u0000\u5E5B\u0000\u5E5C"+ + "\u0000\u0000\u0000\u0000\u5E5D\u5E5E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5E5F\u0000\u5E60\u5E61"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5E62\u5E63\u0000\u0000\u0000\u5E64\u5E65\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5E66\u0000\u5E67"+ + "\u0000\u5E68\u0000\u5E69\u0000\u0000\u0000\u5E6A"+ + "\u0000\u5E6B\u0000\u5E6C\u5E6D\u0000\u0000\u5E6E"+ + "\u5E6F\u5E72\u0000\u5E70\u0000\u5E71\u0000\u0000"+ + "\u0000\u0000\u0000\u5E73\u5E74\u0000\u5E75\u0000"+ + "\u5E76\u5E77\u0000\u0000\u0000\u5E78\u0000\u0000"+ + "\u0000\u0000\u0000\u5E79\u0000\u5E7A\u5E7B\u0000"+ + "\u0000\u0000\u0000\u5E7C\u0000\u0000\u5E7D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5E7E\u5F21"+ + "\u0000\u0000\u0000\u5F22\u0000\u0000\u0000\u0000"+ + "\u5F23\u0000\u5F24\u5F25\u0000\u0000\u0000\u0000"+ + "\u0000\u5F26\u0000\u5F27\u5F28\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5F29\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5F2A\u5F2B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5F2C\u5F2D\u0000"+ + "\u0000\u5F2E\u0000\u5F2F\u0000\u0000\u0000\u5F30"+ + "\u0000\u0000\u0000\u0000\u0000\u5F32\u5F31\u0000"+ + "\u0000\u5F33\u0000\u0000\u0000\u5F34\u0000\u0000"+ + "\u0000\u5F35\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5F36\u0000\u0000\u0000\u5F37\u0000\u0000\u5F38"+ + "\u5F39\u0000\u5F3A\u0000\u0000\u5F3B\u0000\u5F3C"+ + "\u5F3D\u0000\u0000\u0000\u0000\u0000\u5F3E\u5F3F"+ + "\u0000\u5F40\u0000\u5F41\u0000\u0000\u0000\u0000"+ + "\u0000\u5F42\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5F43\u0000\u0000\u0000\u0000\u5F44"+ + "\u0000\u0000\u0000\u5F45\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5F46\u0000\u0000"+ + "\u0000\u5F47\u0000\u0000\u5F48\u0000\u5F49\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5F4A"+ + "\u0000\u0000\u5F4B\u0000\u5F4C\u0000\u0000\u0000"+ + "\u5F4D\u0000\u0000\u0000\u0000\u5F4E\u0000\u0000"+ + "\u5F4F\u5F50\u0000\u0000\u0000\u5F51\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5F52\u5F53"+ + "\u5F54\u0000\u0000\u0000\u0000\u0000\u5F55\u0000"+ + "\u0000\u0000\u0000\u5F56\u5F57\u0000\u0000\u5F58"+ + "\u0000\u0000\u5F59\u0000\u0000\u5F5A\u0000\u5F5B"+ + "\u0000\u5F5C\u0000\u5F5D\u5F6F\u0000\u0000\u0000"+ + "\u5F5E\u0000\u0000\u0000\u0000\u5F5F\u5F60\u5F61"+ + "\u5F62\u0000\u5F63\u0000\u0000\u0000\u5F64\u0000"+ + "\u0000\u5F65\u0000\u0000\u5F66\u5F67\u0000\u5F68"+ + "\u0000\u5F69\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5F6A\u5F6B\u0000\u5F6C"+ + "\u0000\u0000\u0000\u0000\u5F6D\u0000\u0000\u0000"+ + "\u5F6E\u5F70\u5F71\u0000\u5F72\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5F73\u0000\u0000"+ + "\u0000\u5F74\u0000\u0000\u5F75\u5F76\u5F77\u0000"+ + "\u0000\u0000\u0000\u5F78\u0000\u0000\u0000\u0000"+ + "\u0000\u5F79\u0000\u0000\u5F7A\u0000\u5F7B\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5F7C\u5F7D\u5F7E\u6021\u0000\u0000\u6022\u6023"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6024\u0000\u6025\u0000\u0000\u6026\u6027"+ + "\u6028\u6029\u0000\u0000\u0000\u602A\u0000\u0000"+ + "\u602B\u602C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u602D\u0000\u602E\u602F\u6030"+ + "\u0000\u0000\u0000\u0000\u6031\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6032\u6033\u6034\u6035\u0000"+ + "\u0000\u6036\u6037\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6038\u0000\u0000\u6039\u603A\u0000\u603B"+ + "\u603C\u603D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u603E\u603F\u6040\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6041\u6042\u0000\u0000\u0000\u0000"+ + "\u0000\u6043\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6044\u0000\u6045\u0000\u0000\u6046\u0000\u0000"+ + "\u0000\u0000\u6047\u6048\u0000\u6049\u604A\u0000"+ + "\u0000\u0000\u604B\u0000\u0000\u0000\u0000\u604C"+ + "\u0000\u604D\u0000\u0000\u0000\u604E\u604F\u0000"+ + "\u0000\u0000\u0000\u6050\u0000\u6051\u0000\u0000"+ + "\u0000\u0000\u6052\u6053\u0000\u0000\u0000\u0000"+ + "\u6054\u6055\u0000\u6056\u6057\u0000\u0000\u6058"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6059"+ + "\u0000\u605A\u0000\u0000\u605B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u605C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u605D\u0000\u0000\u0000\u0000\u6064\u605E\u0000"+ + "\u605F\u6060\u0000\u0000\u0000\u0000\u0000\u6061"+ + "\u0000\u6062\u6063\u0000\u0000\u0000\u0000\u0000"+ + "\u6065\u0000\u6066\u0000\u0000\u0000\u0000\u6067"+ + "\u6068\u0000\u0000\u0000\u0000\u0000\u0000\u6069"+ + "\u606A\u0000\u0000\u0000\u0000\u0000\u606B\u606C"+ + "\u606D\u0000\u0000\u0000\u0000\u0000\u606E\u0000"+ + "\u606F\u6070\u0000\u6071\u0000\u6072\u0000\u6073"+ + "\u6074\u0000\u0000\u0000\u6075\u6076\u6077\u0000"+ + "\u0000\u0000\u0000\u0000\u6078\u6079\u607A\u607B"+ + "\u0000\u0000\u607C\u0000\u0000\u0000\u0000\u0000"+ + "\u607D\u607E\u0000\u6121\u0000\u0000\u0000\u6122"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6123"+ + "\u0000\u6124\u6125\u6126\u6127\u6128\u0000\u0000"+ + "\u6129\u0000\u0000\u0000\u0000\u612A\u612B\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u612C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u612D\u0000\u0000"+ + "\u612E\u612F\u0000\u0000\u6130\u6131\u6132\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6133\u6134\u0000"+ + "\u6135\u0000\u0000\u0000\u0000\u0000\u6136\u0000"+ + "\u6137\u6138\u0000\u0000\u0000\u0000\u6139\u0000"+ + "\u0000\u0000\u613A\u613B\u0000\u613C\u0000\u0000"+ + "\u613D\u0000\u613E\u613F\u0000\u6140\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6141\u0000\u0000\u6142\u6143\u0000\u0000\u0000"+ + "\u6144\u0000\u0000\u0000\u0000\u0000\u6145\u0000"+ + "\u0000\u6146\u0000\u0000\u0000\u6147\u6148\u0000"+ + "\u0000\u0000\u0000\u6149\u0000\u0000\u614A\u0000"+ + "\u0000\u0000\u614B\u0000\u614C\u0000\u0000\u0000"+ + "\u614D\u0000\u0000\u0000\u614E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u614F\u0000\u0000\u6150\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6151\u6152\u6154\u0000\u6155\u6156\u0000\u6153"+ + "\u0000\u0000\u0000\u6157\u6158\u0000\u0000\u6159"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u615A"+ + "\u0000\u0000\u0000\u615B\u615C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u615D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u615E\u0000\u615F\u0000\u0000"+ + "\u0000\u0000\u6160\u0000\u0000\u0000\u6161\u6162"+ + "\u0000\u0000\u0000\u0000\u6163\u0000\u0000\u0000"+ + "\u6164\u0000\u0000\u0000\u6165\u0000\u0000\u0000"+ + "\u0000\u6166\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6167\u0000\u0000"+ + "\u6168\u0000\u0000\u6169\u616A\u0000\u616B\u0000"+ + "\u616C\u0000\u0000\u0000\u0000\u616D\u0000\u616E"+ + "\u616F\u6170\u0000\u6171\u0000\u0000\u0000\u0000"+ + "\u6172\u6173\u6174\u0000\u0000\u6175\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6176\u0000\u6177\u6178\u6179\u0000\u617A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u617B\u617D\u0000"+ + "\u0000\u0000\u0000\u617E\u6221\u6222\u0000\u6223"+ + "\u6224\u0000\u0000\u0000\u617C\u0000\u0000\u0000"+ + "\u0000\u0000\u622D\u0000\u0000\u6225\u0000\u6226"+ + "\u6227\u6228\u0000\u0000\u6229\u622A\u0000\u622B"+ + "\u0000\u0000\u0000\u0000\u0000\u622C\u0000\u0000"+ + "\u0000\u0000\u0000\u622F\u0000\u0000\u0000\u6230"+ + "\u6231\u0000\u0000\u0000\u6232\u0000\u622E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6233\u6234"+ + "\u6235\u0000\u0000\u0000\u6236\u6237\u6238\u0000"+ + "\u6239\u0000\u0000\u0000\u0000\u623A\u0000\u0000"+ + "\u623B\u0000\u0000\u0000\u623C\u0000\u623D\u623E"+ + "\u623F\u0000\u6240\u0000\u6241\u0000\u6242\u0000"+ + "\u6243\u0000\u6245\u6246\u0000\u6244\u0000\u6247"+ + "\u0000\u6248\u0000\u0000\u0000\u0000\u6249\u624A"+ + "\u0000\u624B\u0000\u0000\u624C\u0000\u624D\u624E"+ + "\u0000\u624F\u6250\u0000\u6251\u6252\u0000\u0000"+ + "\u0000\u0000\u0000\u6253\u0000\u0000\u0000\u6254"+ + "\u6255\u0000\u0000\u0000\u0000\u0000\u0000\u6256"+ + "\u0000\u0000\u0000\u6257\u0000\u0000\u0000\u6258"+ + "\u0000\u6259\u625A\u625B\u0000\u0000\u0000\u0000"+ + "\u0000\u625C\u0000\u0000\u625D\u0000\u0000\u625E"+ + "\u0000\u0000\u0000\u0000\u0000\u625F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6260\u0000\u0000\u0000"+ + "\u0000\u6261\u6262\u6263\u0000\u0000\u0000\u0000"+ + "\u0000\u6264\u0000\u6265\u0000\u6266\u6267\u0000"+ + "\u0000\u0000\u6268\u0000\u0000\u0000\u6269\u0000"+ + "\u0000\u626A\u0000\u626B\u626C\u626D\u0000\u0000"+ + "\u626E\u0000\u0000\u0000\u0000\u0000\u626F\u0000"+ + "\u0000\u6270\u0000\u0000\u0000\u0000\u6271\u0000"+ + "\u6272\u0000\u0000\u0000\u6273\u6274\u6275\u0000"+ + "\u6276\u6277\u6278\u6279\u0000\u0000\u627A\u0000"+ + "\u0000\u0000\u0000\u627B\u627C\u627D\u0000\u627E"+ + "\u0000\u0000\u6321\u6322\u0000\u6323\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6324\u6325\u0000\u0000\u6326"+ + "\u0000\u6327\u6328\u0000\u0000\u0000\u6329\u0000"+ + "\u0000\u0000\u0000\u0000\u632A\u632B\u0000\u0000"+ + "\u0000\u632C\u632D\u0000\u632E\u632F\u6330\u6331"+ + "\u6332\u6333\u0000\u0000\u0000\u0000\u0000\u6334"+ + "\u0000\u6335\u0000\u6336\u0000\u6337\u0000\u0000"+ + "\u6338\u6339\u0000\u0000\u633A\u633B\u633C\u633D"+ + "\u0000\u633E\u633F\u0000\u6340\u0000\u0000\u0000"+ + "\u6341\u0000\u6342\u6343\u0000\u0000\u6344\u0000"+ + "\u6345\u0000\u0000\u0000\u6346\u6347\u0000\u0000"+ + "\u0000\u0000\u0000\u6348\u6349\u634A\u634B\u0000"+ + "\u634C\u0000\u0000\u0000\u0000\u0000\u634D\u634E"+ + "\u634F\u0000\u0000\u6350\u0000\u6351\u6352\u0000"+ + "\u6353\u6354\u6355\u0000\u6356\u0000\u6357\u0000"+ + "\u6358\u0000\u6359\u635A\u0000\u0000\u635B\u635C"+ + "\u0000\u0000\u635D\u0000\u0000\u635E\u635F\u6360"+ + "\u0000\u6361\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6362\u6363\u0000\u0000\u6364\u6365\u0000\u0000"+ + "\u6366\u6367\u0000\u0000\u0000\u6368\u0000\u6369"+ + "\u636A\u636B\u0000\u0000\u0000\u0000\u636C\u636D"+ + "\u636E\u0000\u0000\u0000\u0000\u636F\u6370\u6371"+ + "\u6372\u6373\u0000\u6374\u6375\u6376\u0000\u6377"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6378\u6379\u637A\u0000\u0000\u637B\u637C\u0000"+ + "\u0000\u0000\u637D\u0000\u0000\u0000\u0000\u637E"+ + "\u0000\u6421\u0000\u0000\u0000\u0000\u0000\u6422"+ + "\u6423\u0000\u0000\u0000\u6424\u6425\u0000\u6426"+ + "\u6427\u0000\u0000\u6428\u0000\u0000\u0000\u6429"+ + "\u0000\u0000\u642A\u0000\u0000\u0000\u642B\u0000"+ + "\u642C\u0000\u642D\u642E\u642F\u6430\u0000\u6431"+ + "\u6432\u6433\u6434\u6435\u0000\u6436\u6437\u6438"+ + "\u6439\u0000\u0000\u643A\u643B\u643C\u643D\u0000"+ + "\u643E\u0000\u0000\u643F\u0000\u6440\u0000\u6441"+ + "\u6442\u6443\u0000\u0000\u6444\u6445\u0000\u6446"+ + "\u6447\u6448\u0000\u6449\u0000\u644A\u0000\u644B"+ + "\u644C\u0000\u0000\u0000\u644D\u0000\u644E\u0000"+ + "\u644F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6450\u0000\u6451\u0000\u0000\u0000\u6452"+ + "\u6453\u0000\u6454\u0000\u0000\u0000\u0000\u0000"+ + "\u6455\u0000\u0000\u0000\u0000\u6456\u0000\u0000"+ + "\u0000\u6457\u0000\u0000\u6458\u6459\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u645A\u645B\u645C\u645D"+ + "\u0000\u645E\u0000\u0000\u645F\u6460\u0000\u6461"+ + "\u0000\u6462\u6463\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6464\u6465\u0000\u6466\u6467"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6468"+ + "\u6469\u646A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u646B\u646C\u646D\u0000\u0000\u646E\u0000\u646F"+ + "\u6470\u0000\u6471\u0000\u0000\u0000\u6472\u0000"+ + "\u0000\u0000\u0000\u0000\u6473\u6474\u0000\u6475"+ + "\u0000\u6476\u6477\u0000\u0000\u6478\u0000\u6479"+ + "\u647A\u647B\u0000\u647C\u647D\u0000\u647E\u0000"+ + "\u0000\u0000\u6521\u0000\u0000\u6522\u0000\u6523"+ + "\u6524\u6525\u6526\u0000\u0000\u0000\u0000\u0000"+ + "\u6527\u0000\u6528\u6529\u0000\u652A\u0000\u652B"+ + "\u0000\u0000\u652C\u0000\u0000\u652D\u0000\u0000"+ + "\u652E\u0000\u0000\u652F\u0000\u0000\u6530\u0000"+ + "\u0000\u6531\u0000\u6532\u6533\u0000\u6534\u0000"+ + "\u6535\u653B\u0000\u6536\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6537\u6538\u6539\u0000"+ + "\u0000\u0000\u653A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u653C\u0000\u0000\u653D\u653E\u653F\u6540"+ + "\u0000\u6541\u6542\u6543\u6544\u6545\u0000\u0000"+ + "\u0000\u0000\u0000\u6546\u0000\u0000\u0000\u0000"+ + "\u0000\u6547\u0000\u0000\u6548\u0000\u6549\u654A"+ + "\u0000\u0000\u654B\u0000\u0000\u0000\u654C\u654D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u654F"+ + "\u6550\u654E\u6551\u6552\u0000\u6553\u0000\u0000"+ + "\u0000\u6554\u6555\u0000\u6556\u0000\u0000\u0000"+ + "\u6557\u6558\u0000\u0000\u0000\u6559\u655A\u655B"+ + "\u0000\u0000\u0000\u0000\u0000\u655C\u655D\u655E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u655F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6560\u6561"+ + "\u0000\u6562\u6563\u6564\u6565\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6566\u0000\u6568\u0000\u6567"+ + "\u0000\u0000\u0000\u6569\u0000\u656A\u0000\u0000"+ + "\u656B\u0000\u656C\u0000\u656D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u656E\u0000\u0000"+ + "\u0000\u656F\u0000\u0000\u6570\u0000\u0000\u6571"+ + "\u0000\u6572\u0000\u6573\u0000\u0000\u0000\u0000"+ + "\u6574\u0000\u0000\u6575\u0000\u6576\u6577\u6578"+ + "\u0000\u6579\u657A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u657C\u657B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u657D\u657E\u0000\u0000\u0000\u0000\u6621\u0000"+ + "\u0000\u0000\u0000\u0000\u6622\u0000\u0000\u0000"+ + "\u6623\u0000\u0000\u0000\u6624\u6625\u6626\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6627\u6628\u6629"+ + "\u0000\u662A\u0000\u0000\u0000\u0000\u662B\u0000"+ + "\u0000\u662C\u0000\u662D\u662E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u662F\u0000\u6630\u0000"+ + "\u0000\u0000\u6631\u0000\u0000\u6632\u0000\u6633"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6634\u0000"+ + "\u6635\u6636\u0000\u6637\u0000\u0000\u0000\u0000"+ + "\u6638\u6639\u663A\u663B\u0000\u0000\u0000\u0000"+ + "\u0000\u663C\u663D\u0000\u0000\u663E\u663F\u6640"+ + "\u6641\u0000\u0000\u0000\u6642\u0000\u6643\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6644\u6645\u0000"+ + "\u0000\u0000\u6646\u0000\u6647\u6648\u6649\u0000"+ + "\u0000\u0000\u0000\u0000\u664A\u0000\u0000\u0000"+ + "\u0000\u664B\u0000\u664C\u0000\u0000\u0000\u664D"+ + "\u664E\u664F\u6650\u0000\u6651\u6652\u0000\u0000"+ + "\u0000\u6653\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6654\u0000\u6655\u0000\u6656\u6657"+ + "\u6658\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6659\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u665A\u0000"+ + "\u0000\u0000\u0000\u0000\u665B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u665C\u665D\u0000\u665E\u665F"+ + "\u0000\u6660\u6661\u6662\u6663\u0000\u0000\u0000"+ + "\u0000\u6664\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6665\u0000\u0000\u0000\u0000\u6666\u0000"+ + "\u0000\u0000\u6667\u0000\u0000\u6668\u0000\u6669"+ + "\u0000\u0000\u0000\u0000\u666A\u666B\u666C\u0000"+ + "\u0000\u666D\u0000\u0000\u0000\u0000\u666E\u666F"+ + "\u0000\u0000\u0000\u6670\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6671\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6672\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6673\u0000\u0000\u0000\u0000\u0000"+ + "\u6675\u0000\u6676\u0000\u0000\u6677\u6678\u6679"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u667A\u0000\u0000\u0000\u0000\u0000\u667B"+ + "\u0000\u667C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u667D\u0000\u0000\u0000\u0000\u0000"; + + private final static String innerIndex5= + "\u0000\u0000\u667E\u6721\u0000\u6722\u0000\u0000"+ + "\u0000\u6723\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6724\u6725\u0000\u6726\u0000\u0000"+ + "\u0000\u6727\u6728\u6729\u0000\u0000\u0000\u0000"+ + "\u672A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u672B\u0000\u672C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u672D\u0000\u672E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u672F\u0000\u0000\u0000\u6730\u6731"+ + "\u0000\u0000\u0000\u0000\u0000\u6732\u0000\u6733"+ + "\u6734\u0000\u6735\u6736\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6737\u0000\u0000\u0000\u6738"+ + "\u0000\u0000\u6739\u0000\u0000\u0000\u673A\u0000"+ + "\u0000\u0000\u0000\u673B\u0000\u0000\u673C\u673D"+ + "\u673E\u0000\u0000\u673F\u0000\u6740\u0000\u6741"+ + "\u6742\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6743\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6744\u6745\u6746"+ + "\u0000\u6747\u6748\u0000\u0000\u0000\u6749\u674A"+ + "\u0000\u0000\u674B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u674C\u0000\u674D\u0000"+ + "\u0000\u674E\u674F\u0000\u0000\u6750\u6751\u0000"+ + "\u6752\u6753\u6754\u0000\u6755\u0000\u6756\u6757"+ + "\u0000\u6758\u0000\u0000\u6759\u675A\u0000\u675B"+ + "\u0000\u675C\u675D\u0000\u675E\u675F\u6760\u0000"+ + "\u6761\u6762\u0000\u0000\u6763\u0000\u0000\u6764"+ + "\u6765\u6766\u0000\u676A\u0000\u6767\u6768\u0000"+ + "\u6769\u676B\u0000\u0000\u676C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u676D"+ + "\u0000\u676E\u0000\u0000\u676F\u0000\u0000\u6770"+ + "\u6771\u0000\u6772\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6773"+ + "\u0000\u0000\u6774\u0000\u0000\u6776\u6777\u0000"+ + "\u0000\u0000\u0000\u0000\u6778\u0000\u6779\u0000"+ + "\u0000\u6775\u0000\u0000\u677A\u0000\u677B\u0000"+ + "\u677C\u0000\u0000\u677D\u0000\u6828\u677E\u0000"+ + "\u0000\u0000\u0000\u6821\u0000\u0000\u6822\u6823"+ + "\u6824\u0000\u6825\u6826\u0000\u6827\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6829\u0000"+ + "\u0000\u0000\u0000\u0000\u682A\u0000\u0000\u682B"+ + "\u0000\u0000\u682C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u682D\u682E\u682F\u0000\u0000\u6830\u6831"+ + "\u0000\u6832\u6833\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6834\u6835\u0000\u6836\u6837\u0000"+ + "\u0000\u0000\u6838\u0000\u6839\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u683A\u0000\u683B\u683C\u0000"+ + "\u683D\u0000\u0000\u0000\u683E\u0000\u0000\u683F"+ + "\u6840\u0000\u6841\u6842\u0000\u0000\u0000\u6843"+ + "\u0000\u0000\u6844\u0000\u0000\u6845\u0000\u0000"+ + "\u6846\u0000\u0000\u0000\u6847\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6848\u0000\u6849\u0000\u684A\u684B\u684C"+ + "\u0000\u0000\u684D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u684E\u0000\u0000\u684F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6850\u0000\u0000\u0000\u0000\u6851"+ + "\u6852\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6853\u0000\u0000\u0000\u6854\u6855\u6856"+ + "\u0000\u0000\u6857\u6858\u6859\u0000\u0000\u685A"+ + "\u0000\u0000\u685B\u0000\u0000\u0000\u685C\u685D"+ + "\u0000\u0000\u0000\u685E\u0000\u0000\u0000\u0000"+ + "\u0000\u685F\u6860\u6861\u6862\u6863\u0000\u0000"+ + "\u0000\u6864\u6865\u6866\u6867\u0000\u0000\u0000"+ + "\u6868\u6869\u0000\u0000\u0000\u0000\u686A\u686B"+ + "\u686C\u0000\u0000\u0000\u0000\u686D\u686E\u0000"+ + "\u0000\u0000\u0000\u0000\u686F\u0000\u0000\u0000"+ + "\u6870\u6871\u0000\u6872\u6873\u0000\u6874\u6875"+ + "\u6876\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6877\u0000\u6878\u0000\u6879"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u687A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u687B\u687C\u687D\u0000\u0000\u687E\u0000\u0000"+ + "\u0000\u6921\u6922\u0000\u0000\u6923\u0000\u6924"+ + "\u0000\u0000\u0000\u6925\u0000\u0000\u0000\u0000"+ + "\u0000\u6926\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6927\u6928\u0000\u0000\u0000"+ + "\u0000\u6929\u692A\u0000\u692B\u0000\u692C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u692D"+ + "\u0000\u0000\u692E\u692F\u6930\u0000\u0000\u0000"+ + "\u6931\u0000\u0000\u0000\u6932\u6933\u0000\u0000"+ + "\u0000\u6934\u0000\u0000\u0000\u6935\u6936\u0000"+ + "\u0000\u0000\u6937\u6938\u6939\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u693A\u693B\u0000\u0000\u0000"+ + "\u693C\u693D\u0000\u0000\u0000\u0000\u693E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u693F\u0000"+ + "\u6940\u0000\u6941\u6942\u6943\u0000\u0000\u6944"+ + "\u0000\u0000\u0000\u0000\u0000\u6945\u6946\u0000"+ + "\u0000\u0000\u0000\u6947\u0000\u6948\u6949\u0000"+ + "\u694A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u694C\u0000\u0000\u694D\u0000\u0000\u694B"+ + "\u0000\u0000\u694E\u694F\u6950\u0000\u6951\u0000"+ + "\u0000\u6952\u0000\u0000\u6953\u0000\u6954\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6955\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6956\u0000\u6957\u0000\u6958\u6959"+ + "\u0000\u0000\u695A\u0000\u695B\u695C\u695D\u0000"+ + "\u0000\u695E\u0000\u695F\u0000\u0000\u6960\u6961"+ + "\u0000\u6962\u0000\u6963\u0000\u0000\u6964\u0000"+ + "\u6965\u0000\u0000\u0000\u0000\u0000\u6966\u0000"+ + "\u6967\u0000\u6968\u0000\u0000\u6969\u696A\u696B"+ + "\u0000\u0000\u0000\u696C\u696D\u0000\u0000\u0000"+ + "\u696E\u0000\u0000\u0000\u696F\u6970\u0000\u6971"+ + "\u0000\u6972\u0000\u0000\u6973\u0000\u0000\u0000"+ + "\u0000\u0000\u6974\u6975\u0000\u6976\u0000\u0000"+ + "\u0000\u6977\u6978\u0000\u0000\u6979\u0000\u697A"+ + "\u697B\u697C\u697D\u697E\u6A21\u6A22\u0000\u0000"+ + "\u6A23\u6A24\u0000\u6A25\u6A26\u6A27\u6A28\u0000"+ + "\u6A29\u0000\u6A2A\u0000\u0000\u0000\u6A2B\u0000"+ + "\u0000\u6A2C\u0000\u6A2D\u6A2E\u0000\u0000\u0000"+ + "\u6A2F\u0000\u0000\u0000\u0000\u0000\u6A30\u0000"+ + "\u0000\u0000\u0000\u6A31\u0000\u6A32\u0000\u0000"+ + "\u0000\u0000\u0000\u6A33\u6A34\u6A35\u0000\u6A36"+ + "\u0000\u6A37\u6A38\u0000\u0000\u6A39\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6A3A\u0000\u0000\u6A3B\u6A3C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6A3D\u6A3E\u6A3F"+ + "\u0000\u0000\u0000\u6A40\u0000\u0000\u6A41\u0000"+ + "\u0000\u6A42\u0000\u6A43\u0000\u6A44\u6A45\u0000"+ + "\u6A46\u0000\u6A47\u6A48\u6A49\u6A4A\u6A4B\u0000"+ + "\u0000\u0000\u0000\u6A4C\u0000\u6A4D\u0000\u6A4E"+ + "\u6A4F\u6A50\u0000\u0000\u0000\u0000\u0000\u6A51"+ + "\u6A52\u0000\u0000\u0000\u6A53\u6A54\u6A55\u6A56"+ + "\u0000\u6A57\u6A58\u6A59\u0000\u6A5A\u0000\u6A5B"+ + "\u6A5C\u0000\u0000\u0000\u6A5D\u0000\u0000\u0000"+ + "\u0000\u0000\u6A5E\u0000\u0000\u6A5F\u6A60\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6A61\u6A62"+ + "\u0000\u6A63\u0000\u0000\u6A64\u0000\u0000\u0000"+ + "\u6A65\u6A66\u6A67\u0000\u0000\u0000\u0000\u6A68"+ + "\u6A69\u0000\u0000\u6A6A\u6A6B\u0000\u6A6C\u6A6D"+ + "\u0000\u6A6E\u0000\u0000\u0000\u0000\u0000\u6A6F"+ + "\u6A70\u0000\u0000\u0000\u0000\u0000\u6A71\u0000"+ + "\u6A72\u0000\u0000\u0000\u0000\u0000\u0000\u6A73"+ + "\u6A74\u0000\u0000\u0000\u0000\u6A75\u0000\u6A76"+ + "\u0000\u0000\u0000\u0000\u0000\u6A77\u0000\u6A78"+ + "\u0000\u0000\u6A79\u6A7A\u0000\u0000\u0000\u6A7B"+ + "\u0000\u0000\u0000\u6A7C\u0000\u0000\u0000\u6A7D"+ + "\u6A7E\u6B21\u6B22\u0000\u0000\u6B23\u0000\u6B24"+ + "\u6B25\u0000\u6B26\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6B27\u0000\u0000\u0000\u6B28"+ + "\u0000\u6B29\u0000\u0000\u0000\u0000\u6B2A\u0000"+ + "\u6B2B\u6B2C\u6B2D\u0000\u6B2E\u0000\u6B2F\u0000"+ + "\u0000\u0000\u6B30\u6B31\u0000\u0000\u6B32\u6B33"+ + "\u6B34\u6B35\u6B36\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6B37\u0000\u0000\u0000\u6B38\u6B39\u6B3A"+ + "\u0000\u0000\u0000\u0000\u0000\u6B3B\u0000\u0000"+ + "\u0000\u6B3C\u0000\u6B3D\u6B3E\u6B3F\u0000\u0000"+ + "\u0000\u6B40\u6B41\u0000\u0000\u0000\u6B42\u6B43"+ + "\u6B44\u0000\u0000\u6B45\u6B46\u0000\u6B47\u0000"+ + "\u6B48\u0000\u0000\u6B49\u6B50\u6B4A\u6B4B\u6B4C"+ + "\u0000\u0000\u0000\u6B4D\u0000\u0000\u0000\u0000"+ + "\u6B52\u6B4E\u6B4F\u6B51\u0000\u0000\u6B53\u0000"+ + "\u6B54\u0000\u6B55\u0000\u0000\u6B56\u0000\u6B57"+ + "\u0000\u0000\u0000\u6B58\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6B59\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6B5A\u0000\u0000\u0000\u0000\u6B5B"+ + "\u0000\u6B5C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6B5E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6B5D\u0000\u0000\u0000\u0000"+ + "\u0000\u6B5F\u0000\u0000\u0000\u0000\u0000\u6B60"+ + "\u6B61\u0000\u0000\u0000\u6B62\u6B63\u6B64\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6B65"+ + "\u6B66\u0000\u6B67\u6B68\u6B69\u0000\u0000\u0000"+ + "\u0000\u0000\u6B6A\u0000\u6B6B\u6B6D\u0000\u0000"+ + "\u0000\u0000\u6B6E\u6B6F\u0000\u6B6C\u0000\u6B70"+ + "\u0000\u0000\u6B71\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6B72\u6B73\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6B74"+ + "\u0000\u0000\u6B76\u6B75\u0000\u6B77\u0000\u0000"+ + "\u0000\u6B78\u6B79\u6B7A\u0000\u0000\u0000\u0000"+ + "\u6B7B\u0000\u0000\u0000\u0000\u0000\u6B7C\u6B7D"+ + "\u0000\u0000\u0000\u6B7E\u6C21\u0000\u6C22\u0000"+ + "\u0000\u0000\u0000\u6C23\u6C24\u0000\u6C25\u0000"+ + "\u0000\u0000\u6C26\u0000\u0000\u6C27\u6C28\u0000"+ + "\u0000\u0000\u6C29\u6C2A\u0000\u6C2B\u6C2C\u6C2D"+ + "\u6C2E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6C2F\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6C30\u0000\u6C31\u0000\u6C32\u0000"+ + "\u0000\u6C33\u0000\u0000\u0000\u6C34\u0000\u0000"+ + "\u0000\u6C35\u0000\u0000\u6C36\u0000\u0000\u6C37"+ + "\u0000\u0000\u0000\u6C38\u0000\u0000\u0000\u6C39"+ + "\u0000\u6C3A\u6C3B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6C3C\u6C3D\u6C3E\u6C3F"+ + "\u0000\u0000\u6C40\u0000\u0000\u0000\u6C41\u6C42"+ + "\u6C43\u0000\u0000\u0000\u0000\u6C44\u0000\u6C45"+ + "\u0000\u6C46\u0000\u6C47\u0000\u0000\u6C48\u0000"+ + "\u6C49\u0000\u0000\u6C4A\u6C4B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6C4C\u0000"+ + "\u0000\u0000\u6C4E\u0000\u0000\u0000\u0000\u6C4F"+ + "\u0000\u0000\u6C4D\u0000\u0000\u0000\u6C50\u0000"+ + "\u6C51\u6C52\u6C53\u0000\u0000\u6C54\u6C55\u0000"+ + "\u0000\u6C56\u0000\u0000\u6C57\u6C58\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6C59\u6C5A\u6C5B\u0000\u0000\u0000"+ + "\u6C5C\u0000\u6C5D\u6C5E\u6C5F\u6C60\u0000\u6C61"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6C62\u6C63"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6C64\u0000"+ + "\u6C65\u0000\u0000\u6C66\u0000\u0000\u6C67\u0000"+ + "\u0000\u0000\u0000\u0000\u6C68\u0000\u0000\u0000"+ + "\u6C69\u0000\u0000\u0000\u6C6A\u0000\u6C6B\u6C6C"+ + "\u6C6D\u0000\u0000\u6C6E\u6C6F\u6C70\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6C71\u0000"+ + "\u6C72\u0000\u0000\u6C73\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6C74\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6C75"+ + "\u0000\u0000\u0000\u0000\u6C76\u0000\u0000\u6C77"+ + "\u0000\u0000\u0000\u0000\u6C78\u6C79\u6C7A\u0000"+ + "\u6C7B\u6C7C\u6C7D\u0000\u0000\u6C7E\u0000\u0000"+ + "\u6D21\u0000\u0000\u0000\u0000\u0000\u0000\u6D22"+ + "\u0000\u0000\u6D23\u6D24\u0000\u0000\u0000\u0000"+ + "\u0000\u6D25\u0000\u0000\u0000\u0000\u0000\u6D26"+ + "\u6D27\u6D28\u6D29\u0000\u6D2A\u0000\u6D2B\u6D2C"+ + "\u0000\u6D2D\u6D2E\u6D2F\u0000\u0000\u0000\u6D30"+ + "\u0000\u0000\u6D31\u0000\u0000\u0000\u6D32\u0000"+ + "\u0000\u0000\u6D33\u6D34\u0000\u0000\u0000\u6D35"+ + "\u0000\u6D36\u6D37\u0000\u6D38\u0000\u0000\u6D39"+ + "\u0000\u6D3A\u6D3B\u0000\u6D3C\u6D3D\u0000\u6D3E"+ + "\u0000\u6D3F\u0000\u6D40\u6D41\u6D42\u6D43\u6D44"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6D45\u0000\u6D46\u6D47\u6D48"+ + "\u6D49\u0000\u6D4A\u0000\u0000\u6D4B\u6D4C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6D4D\u6D4E\u0000\u0000\u0000\u6D4F\u6D50\u6D51"+ + "\u6D52\u6D53\u0000\u6D54\u0000\u6D55\u0000\u0000"+ + "\u0000\u0000\u6D56\u0000\u0000\u6D57\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6D58"+ + "\u6D59\u6D5A\u6D5B\u0000\u6D5C\u0000\u6D5D\u6D5E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6D5F\u0000"+ + "\u0000\u6D60\u6D61\u6D62\u0000\u6D63\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u2237\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; + + private final static short index1[] = { + 1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89 + }; + + private final static String index2[] = { + innerIndex0, + innerIndex1, + innerIndex2, + innerIndex3, + innerIndex4, + innerIndex5 + }; + +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/JIS_X_0212_OLD.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/JIS_X_0212_OLD.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + + +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; + +public class JIS_X_0212_OLD + extends Charset +{ + + public JIS_X_0212_OLD() { + super("JIS_X0212-1990_OLD", null); + } + + public boolean contains(Charset cs) { + return (cs instanceof JIS_X_0212_OLD); + } + + public CharsetDecoder newDecoder() { + return new Decoder(this); + } + + public CharsetEncoder newEncoder() { + return new JIS_X_0212_Encoder(this); + } + + private static class Decoder extends JIS_X_0212_Decoder { + protected char decodeSingle(int b) { + return DoubleByteDecoder.REPLACE_CHAR; + } + + public Decoder(Charset cs) { + super(cs); + } + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/JIS_X_0212_Solaris_Decoder.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/JIS_X_0212_Solaris_Decoder.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,918 @@ +/* + * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + + +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; + +public class JIS_X_0212_Solaris_Decoder extends DoubleByteDecoder +{ + public JIS_X_0212_Solaris_Decoder(Charset cs) { + super(cs, + index1, + index2, + 0x21, + 0x7E); + } + + private final static String innerIndex0= + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\u02D8\u02C7\u00B8\u02D9"+ + "\u02DD\u00AF\u02DB\u02DA\uFF5E\u0384\u0385\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A1"+ + "\u00A6\u00BF\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\u00BA\u00AA\u00A9\u00AE\u2122\u00A4\u2116\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\u0386\u0388\u0389\u038A"+ + "\u03AA\uFFFD\u038C\uFFFD\u038E\u03AB\uFFFD\u038F"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\u03AC\u03AD\u03AE\u03AF"+ + "\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\u0402\u0403\u0404\u0405\u0406"+ + "\u0407\u0408\u0409\u040A\u040B\u040C\u040E\u040F"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\u0452\u0453\u0454\u0455\u0456"+ + "\u0457\u0458\u0459\u045A\u045B\u045C\u045E\u045F"+ + "\u00C6\u0110\uFFFD\u0126\uFFFD\u0132\uFFFD\u0141"+ + "\u013F\uFFFD\u014A\u00D8\u0152\uFFFD\u0166\u00DE"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0142"+ + "\u0140\u0149\u014B\u00F8\u0153\u00DF\u0167\u00FE"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00C1\u00C0"+ + "\u00C4\u00C2\u0102\u01CD\u0100\u0104\u00C5\u00C3"+ + "\u0106\u0108\u010C\u00C7\u010A\u010E\u00C9\u00C8"+ + "\u00CB\u00CA\u011A\u0116\u0112\u0118\uFFFD\u011C"+ + "\u011E\u0122\u0120\u0124\u00CD\u00CC\u00CF\u00CE"+ + "\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139"+ + "\u013D\u013B\u0143\u0147\u0145\u00D1\u00D3\u00D2"+ + "\u00D6\u00D4\u01D1\u0150\u014C\u00D5\u0154\u0158"+ + "\u0156\u015A\u015C\u0160\u015E\u0164\u0162\u00DA"+ + "\u00D9\u00DC\u00DB\u016C\u01D3\u0170\u016A\u0172"+ + "\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\u00DD"+ + "\u0178\u0176\u0179\u017D\u017B\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\u00E1\u00E0\u00E4\u00E2"+ + "\u0103\u01CE\u0101\u0105\u00E5\u00E3\u0107\u0109"+ + "\u010D\u00E7\u010B\u010F\u00E9\u00E8\u00EB\u00EA"+ + "\u011B\u0117\u0113\u0119\u01F5\u011D\u011F\uFFFD"+ + "\u0121\u0125\u00ED\u00EC\u00EF\u00EE\u01D0\uFFFD"+ + "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C"+ + "\u0144\u0148\u0146\u00F1\u00F3\u00F2\u00F6\u00F4"+ + "\u01D2\u0151\u014D\u00F5\u0155\u0159\u0157\u015B"+ + "\u015D\u0161\u015F\u0165\u0163\u00FA\u00F9\u00FC"+ + "\u00FB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169"+ + "\u01D8\u01DC\u01DA\u01D6\u0175\u00FD\u00FF\u0177"+ + "\u017A\u017E\u017C\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F"+ + "\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35"+ + "\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63"+ + "\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96"+ + "\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB"+ + "\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5"+ + "\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B"+ + "\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31"+ + "\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40"+ + "\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56"+ + "\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77"+ + "\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"+ + "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93"+ + "\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7"+ + "\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5"+ + "\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2"+ + "\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF"+ + "\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010"+ + "\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022"+ + "\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041"+ + "\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052"+ + "\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066"+ + "\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083"+ + "\u5084\u5086\u508A\u508E\u508F\u5090\u5092\u5093"+ + "\u5094\u5096\u509B\u509C\u509E\u509F\u50A0\u50A1"+ + "\u50A2\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0"+ + "\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4"+ + "\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8"+ + "\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106"+ + "\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110"+ + "\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127"+ + "\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135"+ + "\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157"+ + "\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B"+ + "\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA"+ + "\u51BC\u51BE\u51BF\u51C2\u51C8\u51CF\u51D1\u51D2"+ + "\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2"+ + "\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213"+ + "\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235"+ + "\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C"+ + "\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279"+ + "\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296"+ + "\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7"+ + "\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD"+ + "\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4"+ + "\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA"+ + "\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303"+ + "\u530A\u530B\u530C\u5311\u5313\u5318\u531B\u531C"+ + "\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C"+ + "\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342"+ + "\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C"+ + "\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E"+ + "\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB"+ + "\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD"+ + "\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD"+ + "\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A"+ + "\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435"+ + "\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464"+ + "\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"+ + "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495"+ + "\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA"+ + "\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF"+ + "\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF"+ + "\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508"+ + "\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532"+ + "\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549"+ + "\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E"+ + "\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586"+ + "\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597"+ + "\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6"+ + "\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2\u55D3\u55D7"+ + "\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605"+ + "\u5608\u560A\u560D\u560E\u560F\u5610\u5611\u5612"+ + "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B"+ + "\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646"+ + "\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661"+ + "\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672"+ + "\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699"+ + "\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9"+ + "\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5"+ + "\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9"+ + "\u56DC\u56DD\u56DF\u56E1\u56E4\u56E5\u56E6\u56E7"+ + "\u56E8\u56F1\u56EB\u56ED\u56F6\u56F7\u5701\u5702"+ + "\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D"+ + "\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C"+ + "\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745"+ + "\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768"+ + "\u576B\u576D\u576E\u576F\u5770\u5771\u5773\u5774"+ + "\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781"+ + "\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D"+ + "\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC"+ + "\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD"+ + "\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5"+ + "\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808"+ + "\u5809\u57E1\u580C\u580D\u581B\u581E\u581F\u5820"+ + "\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C"+ + "\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867"+ + "\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888"+ + "\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896"+ + "\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2"+ + "\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2"+ + "\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3"+ + "\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641"+ + "\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933"+ + "\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959"+ + "\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"; + + private final static String innerIndex1= + "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B"+ + "\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7"+ + "\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC"+ + "\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD"+ + "\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1"+ + "\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E"+ + "\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A"+ + "\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50"+ + "\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A"+ + "\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C"+ + "\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2"+ + "\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF\u5AC4\u5AC6"+ + "\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE"+ + "\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34"+ + "\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41"+ + "\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F"+ + "\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A"+ + "\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9"+ + "\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC"+ + "\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6\u5BD7\u5BD8\u5BD9"+ + "\u5BDA\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17"+ + "\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E"+ + "\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62"+ + "\u5C63\u5C67\u5C68\u5C69\u5C6D\u5C70\u5C74\u5C75"+ + "\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F"+ + "\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA"+ + "\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD"+ + "\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D"+ + "\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34"+ + "\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55"+ + "\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64"+ + "\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81"+ + "\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99"+ + "\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8"+ + "\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9"+ + "\u5DE0\u5DE4\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D"+ + "\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28"+ + "\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56"+ + "\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A\u5E6B\u5E6C"+ + "\u5E6D\u5E6E\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4"+ + "\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE"+ + "\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4"+ + "\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07"+ + "\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23"+ + "\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36"+ + "\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D"+ + "\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"+ + "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E"+ + "\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7"+ + "\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4"+ + "\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0\u5FD1\u5FD2\u5FD3"+ + "\u5FD4\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC"+ + "\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC"+ + "\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A"+ + "\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048"+ + "\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061"+ + "\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A"+ + "\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2"+ + "\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7\u60BB\u60BE"+ + "\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF"+ + "\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5"+ + "\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A"+ + "\u610C\u6110\u6111\u6112\u6113\u6114\u6116\u6117"+ + "\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131"+ + "\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149"+ + "\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F"+ + "\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193"+ + "\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8"+ + "\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2"+ + "\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1"+ + "\u61E2\u61E7\u61E9\u61E5\u61EC\u61ED\u61EF\u6201"+ + "\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222"+ + "\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243"+ + "\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256"+ + "\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D"+ + "\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6"+ + "\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6"+ + "\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304"+ + "\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329"+ + "\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342"+ + "\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353"+ + "\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371"+ + "\u6374\u6375\u6378\u637C\u637D\u637F\u6382\u6384"+ + "\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E"+ + "\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5"+ + "\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0"+ + "\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9"+ + "\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420"+ + "\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435"+ + "\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454"+ + "\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463"+ + "\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F"+ + "\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1"+ + "\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"+ + "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1"+ + "\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0"+ + "\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509"+ + "\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E"+ + "\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C"+ + "\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F"+ + "\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A"+ + "\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE"+ + "\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE"+ + "\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4"+ + "\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609"+ + "\u660D\u6611\u6612\u6615\u6616\u661D\u661E\u6621"+ + "\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C"+ + "\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645"+ + "\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659"+ + "\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C"+ + "\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B"+ + "\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699"+ + "\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1"+ + "\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8"+ + "\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB"+ + "\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719"+ + "\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748"+ + "\u674C\u6754\u6755\u675D\u6766\u676C\u676E\u6774"+ + "\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793"+ + "\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5"+ + "\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5"+ + "\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6"+ + "\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D"+ + "\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831"+ + "\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855"+ + "\u6857\u6858\u685B\u686B\u686E\u686F\u6870\u6871"+ + "\u6872\u6875\u6879\u687A\u687B\u687C\u6882\u6884"+ + "\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3"+ + "\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8"+ + "\u68CC\u68CF\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC"+ + "\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0"+ + "\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909"+ + "\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933"+ + "\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957"+ + "\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C"+ + "\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D"+ + "\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB"+ + "\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8"+ + "\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1"+ + "\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11"+ + "\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"+ + "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49"+ + "\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B"+ + "\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83"+ + "\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E"+ + "\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD"+ + "\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4"+ + "\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0"+ + "\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07"+ + "\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24"+ + "\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F"+ + "\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60"+ + "\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D\u6B7E\u6B82"+ + "\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8"+ + "\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD"+ + "\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1"+ + "\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF"+ + "\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12"+ + "\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33"+ + "\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D"+ + "\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D"+ + "\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86"+ + "\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F"+ + "\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0"+ + "\u6CD1\u6CD2\u6CD4\u6CD6\u6CDA\u6CDC\u6CE0\u6CE7"+ + "\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07"+ + "\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27"+ + "\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F"+ + "\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70"+ + "\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97"+ + "\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF"+ + "\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD"+ + "\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4"+ + "\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32"+ + "\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49"+ + "\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C"+ + "\u6E5D\u6E5E\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D"+ + "\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1"+ + "\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8"+ + "\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9"+ + "\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16"+ + "\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30"+ + "\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52"+ + "\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62"+ + "\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B"+ + "\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A"+ + "\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF"+ + "\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"; + + private final static String innerIndex2= + "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC"+ + "\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020"+ + "\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044"+ + "\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E"+ + "\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E"+ + "\u7081\u7085\u7086\u7094\u7095\u7096\u7097\u7098"+ + "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA"+ + "\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4"+ + "\u70FA\u7103\u7104\u7105\u7106\u7107\u710B\u710C"+ + "\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131"+ + "\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150"+ + "\u7152\u7157\u715A\u715C\u715E\u7160\u7168\u7179"+ + "\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0"+ + "\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0"+ + "\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA"+ + "\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213"+ + "\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234"+ + "\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F"+ + "\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260"+ + "\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278"+ + "\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293"+ + "\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1"+ + "\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5"+ + "\u72F3\u72F4\u72FA\u72FB\u72FE\u7302\u7304\u7305"+ + "\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E"+ + "\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335"+ + "\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356"+ + "\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369"+ + "\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C"+ + "\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393"+ + "\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2"+ + "\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9"+ + "\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC"+ + "\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3"+ + "\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA"+ + "\u73FB\u73FD\u73FF\u7400\u7401\u7404\u7407\u740A"+ + "\u7411\u741A\u741B\u7424\u7426\u7428\u7429\u742A"+ + "\u742B\u742C\u742D\u742E\u742F\u7430\u7431\u7439"+ + "\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451"+ + "\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B"+ + "\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486"+ + "\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499"+ + "\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8"+ + "\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5"+ + "\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3"+ + "\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA"+ + "\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"+ + "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529"+ + "\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540"+ + "\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E"+ + "\u755F\u7561\u756F\u7571\u7579\u757A\u757B\u757C"+ + "\u757D\u757E\u7581\u7585\u7590\u7592\u7593\u7595"+ + "\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0"+ + "\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC"+ + "\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF"+ + "\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608"+ + "\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619"+ + "\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629"+ + "\u762D\u7632\u7633\u7635\u7638\u7639\u763A\u763C"+ + "\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B"+ + "\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F"+ + "\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B"+ + "\u769C\u769D\u769F\u76A0\u76A2\u76A3\u76A4\u76A5"+ + "\u76A6\u76A7\u76A8\u76AA\u76AD\u76BD\u76C1\u76C5"+ + "\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6"+ + "\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700"+ + "\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719"+ + "\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734"+ + "\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746"+ + "\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C"+ + "\u775E\u775F\u7760\u7762\u7764\u7767\u776A\u776C"+ + "\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784"+ + "\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2"+ + "\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3"+ + "\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0"+ + "\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8"+ + "\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D"+ + "\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837"+ + "\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C"+ + "\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E"+ + "\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D"+ + "\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1"+ + "\u78B2\u78B3\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9"+ + "\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB"+ + "\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900"+ + "\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910"+ + "\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929"+ + "\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944"+ + "\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958"+ + "\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B"+ + "\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995"+ + "\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB"+ + "\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7"+ + "\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"+ + "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8"+ + "\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11"+ + "\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F"+ + "\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45"+ + "\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D"+ + "\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78"+ + "\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90"+ + "\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5"+ + "\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1"+ + "\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB"+ + "\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29"+ + "\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30\u7B31\u7B34"+ + "\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60"+ + "\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73"+ + "\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B"+ + "\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5"+ + "\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8"+ + "\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8"+ + "\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC"+ + "\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B"+ + "\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26"+ + "\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A"+ + "\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59\u7C5A"+ + "\u7C5B\u7C5C\u7C5D\u7C5E\u7C61\u7C63\u7C67\u7C69"+ + "\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86"+ + "\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6"+ + "\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8"+ + "\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9"+ + "\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07"+ + "\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D"+ + "\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D"+ + "\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53"+ + "\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A"+ + "\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83"+ + "\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96"+ + "\u7D97\u7D9D\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6"+ + "\u7DB7\u7DB9\u7DC2\u7DC3\u7DC4\u7DC5\u7DC6\u7DCC"+ + "\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6"+ + "\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA"+ + "\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20"+ + "\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F"+ + "\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F"+ + "\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78"+ + "\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95"+ + "\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E"+ + "\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B"+ + "\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"+ + "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F"+ + "\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6"+ + "\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8"+ + "\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC"+ + "\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007"+ + "\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014"+ + "\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C"+ + "\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C"+ + "\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071"+ + "\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7"+ + "\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4"+ + "\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE\u80F0\u80F2"+ + "\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116"+ + "\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C"+ + "\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C"+ + "\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D"+ + "\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B"+ + "\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2"+ + "\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF"+ + "\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB"+ + "\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9"+ + "\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219"+ + "\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A"+ + "\u8243\u8244\u8245\u8246\u824B\u824E\u824F\u8251"+ + "\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B"+ + "\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289"+ + "\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B"+ + "\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA"+ + "\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE"+ + "\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4"+ + "\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE"+ + "\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B"+ + "\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E"+ + "\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343"+ + "\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357"+ + "\u8370\u8378\u837D\u837F\u8380\u8382\u8384\u8386"+ + "\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C"+ + "\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0"+ + "\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353"+ + "\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406"+ + "\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439"+ + "\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452"+ + "\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465"+ + "\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C"+ + "\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6"+ + "\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD"+ + "\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"; + + private final static String innerIndex3= + "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7"+ + "\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C"+ + "\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525"+ + "\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F"+ + "\u8546\u854F\u8550\u8551\u8552\u8553\u8556\u8559"+ + "\u855C\u855D\u855E\u855F\u8560\u8561\u8562\u8564"+ + "\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581"+ + "\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598"+ + "\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6"+ + "\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7"+ + "\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0"+ + "\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC\u85FF\u8600"+ + "\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618"+ + "\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638"+ + "\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653"+ + "\u8656\u8657\u8658\u8659\u865D\u8660\u8661\u8662"+ + "\u8663\u8664\u8669\u866C\u866F\u8675\u8676\u8677"+ + "\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1"+ + "\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5"+ + "\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5"+ + "\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3"+ + "\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705"+ + "\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719"+ + "\u871E\u871F\u8721\u8723\u8728\u872E\u872F\u8731"+ + "\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743"+ + "\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F"+ + "\u8771\u8772\u877B\u8783\u8784\u8785\u8786\u8787"+ + "\u8788\u8789\u878B\u878C\u8790\u8793\u8795\u8797"+ + "\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD"+ + "\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9"+ + "\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF"+ + "\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3"+ + "\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A"+ + "\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A"+ + "\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830"+ + "\u8832\u8835\u883A\u883C\u8841\u8843\u8845\u8848"+ + "\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858"+ + "\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879"+ + "\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0"+ + "\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA\u88CB"+ + "\u88CC\u88CD\u88CE\u88D1\u88D2\u88D3\u88DB\u88DE"+ + "\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906"+ + "\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A"+ + "\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932"+ + "\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946"+ + "\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961"+ + "\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"+ + "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995"+ + "\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5"+ + "\u89B6\u89B7\u89BC\u89D4\u89D5\u89D6\u89D7\u89D8"+ + "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9"+ + "\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12"+ + "\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B"+ + "\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43"+ + "\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57"+ + "\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76"+ + "\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83"+ + "\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99"+ + "\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3\u8AB6\u8AB7"+ + "\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1"+ + "\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0"+ + "\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B"+ + "\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37"+ + "\u8B3C\u8B42\u8B43\u8B44\u8B45\u8B46\u8B48\u8B52"+ + "\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76"+ + "\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B"+ + "\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38"+ + "\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F"+ + "\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59"+ + "\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75"+ + "\u8C76\u8C7B\u8C7E\u8C86\u8C87\u8C8B\u8C90\u8C92"+ + "\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5"+ + "\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD"+ + "\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7"+ + "\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17"+ + "\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84"+ + "\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0"+ + "\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9"+ + "\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE"+ + "\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7"+ + "\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01"+ + "\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20"+ + "\u8E21\u8E22\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36"+ + "\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D"+ + "\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61"+ + "\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79"+ + "\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95"+ + "\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD"+ + "\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3"+ + "\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE"+ + "\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02"+ + "\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E"+ + "\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D"+ + "\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"+ + "\u8F43\u8F47\u8F4F\u8F51\u8F52\u8F53\u8F54\u8F55"+ + "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4"+ + "\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1"+ + "\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5"+ + "\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6"+ + "\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B"+ + "\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034"+ + "\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062"+ + "\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088"+ + "\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099"+ + "\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3"+ + "\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3\u90C4\u90C5"+ + "\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD"+ + "\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4"+ + "\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D"+ + "\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E"+ + "\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F"+ + "\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D"+ + "\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A"+ + "\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A"+ + "\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191"+ + "\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8"+ + "\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6"+ + "\u91BB\u91BC\u91BD\u91BF\u91C2\u91C3\u91C5\u91D3"+ + "\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9"+ + "\u91EA\u91EC\u91ED\u91EE\u91EF\u91F0\u91F1\u91F7"+ + "\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206"+ + "\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216"+ + "\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228"+ + "\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239"+ + "\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247"+ + "\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C"+ + "\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E"+ + "\u926F\u9270\u9275\u9276\u9277\u9278\u9279\u927B"+ + "\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E"+ + "\u9292\u9297\u9299\u929F\u92A0\u92A4\u92A5\u92A7"+ + "\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB"+ + "\u92BC\u92BD\u92BF\u92C0\u92C1\u92C2\u92C3\u92C5"+ + "\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0"+ + "\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF"+ + "\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE"+ + "\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D"+ + "\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321"+ + "\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336"+ + "\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355"+ + "\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369"+ + "\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"+ + "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A"+ + "\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E"+ + "\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5"+ + "\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7"+ + "\u93C9\u93CA\u93CB\u93CC\u93CD\u93D3\u93D9\u93DC"+ + "\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8"+ + "\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409"+ + "\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E"+ + "\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D"+ + "\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C"+ + "\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F"+ + "\u9471\u9472\u9484\u9483\u9578\u9579\u957E\u9584"+ + "\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1"+ + "\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD"+ + "\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2"+ + "\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4"+ + "\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C"+ + "\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D"+ + "\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E"+ + "\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683"+ + "\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4"+ + "\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA"+ + "\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9"+ + "\u96EF\u96F1\u96FA\u9702\u9703\u9705\u9709\u971A"+ + "\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733"+ + "\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758"+ + "\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776"+ + "\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795"+ + "\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC"+ + "\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA"+ + "\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9"+ + "\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7"+ + "\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4"+ + "\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A"+ + "\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820"+ + "\u9823\u9826\u982B\u982E\u982F\u9830\u9832\u9833"+ + "\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852"+ + "\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865"+ + "\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4"+ + "\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8"+ + "\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3"+ + "\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917"+ + "\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B"+ + "\u9931\u9932\u9933\u9934\u9935\u9939\u993A\u993B"+ + "\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E"+ + "\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960"+ + "\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"; + + private final static String innerIndex4= + "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4"+ + "\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC"+ + "\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03"+ + "\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20"+ + "\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35"+ + "\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C"+ + "\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE"+ + "\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE"+ + "\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2"+ + "\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5"+ + "\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA"+ + "\u9AFD\u9AFF\u9B00\u9B01\u9B02\u9B03\u9B04\u9B05"+ + "\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12"+ + "\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D"+ + "\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48"+ + "\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61"+ + "\u9B63\u9B65\u9B66\u9B68\u9B6A\u9B6B\u9B6C\u9B6D"+ + "\u9B6E\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80"+ + "\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D"+ + "\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7"+ + "\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB"+ + "\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0"+ + "\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB"+ + "\u9BEF\u9BF3\u9BF7\u9BF8\u9BF9\u9BFA\u9BFD\u9BFF"+ + "\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19"+ + "\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26\u9C27\u9C28"+ + "\u9C29\u9C2A\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41"+ + "\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50"+ + "\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F"+ + "\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70"+ + "\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9"+ + "\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E"+ + "\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45"+ + "\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F"+ + "\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76"+ + "\u9D77\u9D7B\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A"+ + "\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98"+ + "\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC"+ + "\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6"+ + "\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9"+ + "\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02"+ + "\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19"+ + "\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83"+ + "\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B"+ + "\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3"+ + "\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4"+ + "\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"+ + "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11"+ + "\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F"+ + "\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34"+ + "\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43"+ + "\u9F44\u9F45\u9F46\u9F47\u9F53\u9F55\u9F56\u9F57"+ + "\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D\u9F6E"+ + "\u9F6F\u9F70\u9F71\u9F73\u9F75\u9F7A\u9F7D\u9F8F"+ + "\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1"+ + "\u9FA2\u9FA3\u9FA5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"+ + "\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177"+ + "\u2178\u2179\u2160\u2161\u2162\u2163\u2164\u2165"+ + "\u2166\u2167\u2168\u2169\uFF07\uFF02\u3231\u2116"+ + "\u2121\u70BB\u4EFC\u50F4\u51EC\u5307\u5324\uFA0E"+ + "\u548A\u5759\uFA0F\uFA10\u589E\u5BEC\u5CF5\u5D53"+ + "\uFA11\u5FB7\u6085\u6120\u654E\u663B\u6665\uFA12"+ + "\uF929\u6801\uFA13\uFA14\u6A6B\u6AE2\u6DF8\u6DF2"+ + "\u7028\uFA15\uFA16\u7501\u7682\u769E\uFA17\u7930"+ + "\uFA18\uFA19\uFA1A\uFA1B\u7AE7\uFA1C\uFA1D\u7DA0"+ + "\u7DD6\uFA1E\u8362\uFA1F\u85B0\uFA20\uFA21\u8807"+ + "\uFA22\u8B7F\u8CF4\u8D76\uFA23\uFA24\uFA25\u90DE"+ + "\uFA26\u9115\uFA27\uFA28\u9592\uF9DC\uFA29\u973B"+ + "\u974D\u9751\uFA2A\uFA2B\uFA2C\u999E\u9AD9\u9B72"+ + "\uFA2D\u9ED1"; + + private final static short index1[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 2, 3, 0, 4, 5, 6, 0, 0, 0, 0, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 0, 0, + 0, 0, 0, 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + + private final static String index2[] = { + innerIndex0, + innerIndex1, + innerIndex2, + innerIndex3, + innerIndex4 + }; + + protected char convSingleByte(int b) { + return REPLACE_CHAR; + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/JIS_X_0212_Solaris_Encoder.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/JIS_X_0212_Solaris_Encoder.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,3065 @@ +/* + * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + + +import java.nio.charset.Charset; +import java.nio.charset.CharsetEncoder; + +public class JIS_X_0212_Solaris_Encoder extends DoubleByteEncoder +{ + + private static byte[] repl = { (byte)0x22, (byte)0x44 }; + + public JIS_X_0212_Solaris_Encoder(Charset cs) { + super(cs, + index1, + index2 , + repl + ); + } + + protected int encodeSingle(char inputChar) { + return -1; + } + + private final static String innerIndex0= + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007"+ + "\b\t\n\u000B\f\r\u000E\u000F"+ + "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017"+ + "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F"+ + "\u0020\u0021\"\u0023\u0024\u0025\u0026\'"+ + "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F"+ + "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037"+ + "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u0000"+ + "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047"+ + "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F"+ + "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057"+ + "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F"+ + "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067"+ + "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F"+ + "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077"+ + "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u2242\u0000\u0000\u2270\u0000\u2243\u0000"+ + "\u0000\u226D\u226C\u0000\u0000\u0000\u226E\u2234"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u2231\u0000\u226B\u0000\u0000\u0000\u0000\u2244"+ + "\u2A22\u2A21\u2A24\u2A2A\u2A23\u2A29\u2921\u2A2E"+ + "\u2A32\u2A31\u2A34\u2A33\u2A40\u2A3F\u2A42\u2A41"+ + "\u0000\u2A50\u2A52\u2A51\u2A54\u2A58\u2A53\u0000"+ + "\u292C\u2A63\u2A62\u2A65\u2A64\u2A72\u2930\u294E"+ + "\u2B22\u2B21\u2B24\u2B2A\u2B23\u2B29\u2941\u2B2E"+ + "\u2B32\u2B31\u2B34\u2B33\u2B40\u2B3F\u2B42\u2B41"+ + "\u2943\u2B50\u2B52\u2B51\u2B54\u2B58\u2B53\u0000"+ + "\u294C\u2B63\u2B62\u2B65\u2B64\u2B72\u2950\u2B73"+ + "\u2A27\u2B27\u2A25\u2B25\u2A28\u2B28\u2A2B\u2B2B"+ + "\u2A2C\u2B2C\u2A2F\u2B2F\u2A2D\u2B2D\u2A30\u2B30"+ + "\u2922\u2942\u2A37\u2B37\u0000\u0000\u2A36\u2B36"+ + "\u2A38\u2B38\u2A35\u2B35\u2A3A\u2B3A\u2A3B\u2B3B"+ + "\u2A3D\u2B3D\u2A3C\u0000\u2A3E\u2B3E\u2924\u2944"+ + "\u2A47\u2B47\u2A45\u2B45\u0000\u0000\u2A46\u2B46"+ + "\u2A44\u2945\u2926\u2946\u2A48\u2B48\u2A49\u2B49"+ + "\u2947\u2A4A\u2B4A\u2A4C\u2B4C\u2A4B\u2B4B\u2929"+ + "\u2949\u2928\u2948\u2A4D\u2B4D\u2A4F\u2B4F\u2A4E"+ + "\u2B4E\u294A\u292B\u294B\u2A57\u2B57\u0000\u0000"+ + "\u2A56\u2B56\u292D\u294D\u2A59\u2B59\u2A5B\u2B5B"+ + "\u2A5A\u2B5A\u2A5C\u2B5C\u2A5D\u2B5D\u2A5F\u2B5F"+ + "\u2A5E\u2B5E\u2A61\u2B61\u2A60\u2B60\u292F\u294F"+ + "\u2A6C\u2B6C\u2A69\u2B69\u2A66\u2B66\u2A6B\u2B6B"+ + "\u2A68\u2B68\u2A6A\u2B6A\u2A71\u2B71\u2A74\u2B74"+ + "\u2A73\u2A75\u2B75\u2A77\u2B77\u2A76\u2B76\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u2A26\u2B26\u2A43"+ + "\u2B43\u2A55\u2B55\u2A67\u2B67\u2A70\u2B70\u2A6D"+ + "\u2B6D\u2A6F\u2B6F\u2A6E\u2B6E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u2B39\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u2230"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u222F\u2232\u2236\u2235\u0000\u2233\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u2238\u2239\u2661\u0000"+ + "\u2662\u2663\u2664\u0000\u2667\u0000\u2669\u266C"+ + "\u2676\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2665\u266A\u2671\u2672\u2673\u2674"+ + "\u267B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2678\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2675\u267A\u2677\u2679\u267C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2742\u2743\u2744\u2745\u2746\u2747"+ + "\u2748\u2749\u274A\u274B\u274C\u0000\u274D\u274E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u2772\u2773\u2774\u2775\u2776\u2777"+ + "\u2778\u2779\u277A\u277B\u277C\u0000\u277D\u277E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u2271\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u226F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u7373\u7374\u7375\u7376\u7377\u7378\u7379\u737A"+ + "\u737B\u737C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3021\u0000\u3022\u3023\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3024\u0000\u0000\u0000"+ + "\u0000\u0000\u3025\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3026"+ + "\u0000\u0000\u0000\u3027\u3028\u0000\u0000\u0000"+ + "\u3029\u0000\u0000\u302A\u0000\u0000\u302B\u302C"+ + "\u302D\u0000\u0000\u0000\u0000\u302E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u302F\u3030\u0000\u0000\u3031\u0000\u0000\u3032"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3033\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3034\u0000\u3035\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3036\u0000\u0000\u0000\u0000"+ + "\u3037\u3038\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3039\u303A\u0000\u0000"+ + "\u0000\u303B\u0000\u0000\u0000\u0000\u0000\u303C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u303D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u303E\u303F"+ + "\u0000\u0000\u0000\u0000\u0000\u3040\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3041"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3042\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3043\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3044\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3045\u3046\u0000\u0000\u0000\u0000"+ + "\u3047\u3048\u3049\u0000\u0000\u0000\u0000\u0000"+ + "\u304A\u0000\u0000\u0000\u0000\u0000\u0000\u304B"+ + "\u0000\u304C\u0000\u304D\u0000\u304E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u742F\u304F\u3050\u3051"+ + "\u3052\u0000\u3053\u3054\u0000\u0000\u0000\u0000"+ + "\u3055\u0000\u0000\u3056\u3057\u0000\u0000\u0000"+ + "\u0000\u0000\u3058\u0000\u0000\u3059\u305A\u305B"+ + "\u0000\u305C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u305D\u0000"+ + "\u0000\u305E\u0000\u3060\u0000\u3061\u0000\u3062"+ + "\u0000\u3063\u0000\u3064\u0000\u0000\u3065\u0000"+ + "\u3066\u0000\u3067\u0000\u0000\u0000\u0000\u0000"+ + "\u3068\u3069\u0000\u306A\u306B\u0000\u0000\u0000"+ + "\u0000\u0000\u306C\u0000\u306D\u0000\u306E\u0000"+ + "\u306F\u0000\u0000\u0000\u0000\u0000\u0000\u3070"+ + "\u305F\u0000\u0000\u3071\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3072\u0000\u3073\u0000\u3074\u0000"+ + "\u0000\u3075\u0000\u0000\u0000\u0000\u0000\u3076"+ + "\u3077\u3078\u3079\u0000\u0000\u307A\u307B\u0000"+ + "\u0000\u307C\u307D\u0000\u307E\u3121\u0000\u0000"+ + "\u0000\u3122\u3123\u0000\u3124\u0000\u3125\u0000"+ + "\u3126\u0000\u3127\u3128\u3129\u0000\u0000\u312A"+ + "\u0000\u312B\u312C\u0000\u0000\u0000\u312D\u312E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u312F\u0000\u0000\u0000\u0000\u3130"+ + "\u0000\u3131\u0000\u3132\u3133\u3134\u3135\u0000"+ + "\u3136\u3137\u0000\u0000\u0000\u3138\u3139\u0000"+ + "\u313A\u313B\u0000\u313C\u313D\u313E\u0000\u313F"+ + "\u0000\u0000\u3140\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3141\u0000\u0000\u0000"+ + "\u3142\u0000\u3143\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3144\u0000\u3145\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3146\u3147\u0000\u3148"+ + "\u3149\u314A\u0000\u0000\u314B\u0000\u0000\u314C"+ + "\u0000\u0000\u314D\u0000\u314E\u0000\u314F\u0000"+ + "\u3150\u0000\u0000\u3151\u0000\u0000\u0000\u3152"+ + "\u3153\u0000\u0000\u3154\u3155\u3156\u3157\u0000"+ + "\u0000\u0000\u3158\u0000\u0000\u0000\u0000\u3159"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u315A\u0000"+ + "\u315B\u0000\u315C\u315D\u0000\u315E\u0000\u0000"+ + "\u0000\u0000\u0000\u3176\u0000\u0000\u0000\u0000"+ + "\u315F\u3160\u3161\u0000\u0000\u3162\u3163\u0000"+ + "\u0000\u0000\u3164\u0000\u3165\u0000\u3166\u0000"+ + "\u0000\u3167\u3168\u3169\u0000\u0000\u0000\u316A"+ + "\u0000\u316B\u0000\u0000\u0000\u0000\u0000\u316C"+ + "\u316D\u0000\u316E\u316F\u0000\u0000\u3170\u3171"+ + "\u0000\u0000\u3172\u0000\u0000\u3173\u0000\u0000"+ + "\u3174\u3175\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3177\u0000\u3178\u3179\u0000\u317A\u0000"+ + "\u0000\u0000\u317B\u0000\u0000\u0000\u317C\u317D"+ + "\u317E\u0000\u3221\u3222\u3223\u0000\u3224\u0000"+ + "\u0000\u0000\u0000\u3225\u3226\u0000\u3227\u3228"+ + "\u3229\u322A\u322B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u322C\u0000\u0000\u0000\u0000\u322D"+ + "\u322E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u322F\u3230\u0000\u0000\u3231\u0000\u0000"+ + "\u3232\u0000\u0000\u3233\u3234\u0000\u0000\u3235"+ + "\u0000\u0000\u0000\u0000\u3236\u0000\u3237\u0000"+ + "\u3238\u0000\u0000\u3239\u323A\u0000\u0000\u0000"+ + "\u323B\u0000\u0000\u0000\u323C\u323D\u0000\u323E"+ + "\u0000\u0000\u323F\u0000\u3240\u0000\u3241\u0000"+ + "\u3242\u3243\u0000\u0000\u0000\u0000\u0000\u3244"+ + "\u0000\u3245\u3251\u0000\u7430\u0000\u3246\u0000"+ + "\u0000\u0000\u3247\u0000\u0000\u0000\u3248\u0000"+ + "\u0000\u0000\u0000\u3249\u0000\u0000\u324A\u324B"+ + "\u324C\u0000\u0000\u324D\u324E\u324F\u3250\u0000"+ + "\u3252\u0000\u0000\u0000\u0000\u0000\u0000\u3253"+ + "\u0000\u3254\u0000\u3255\u3256\u3257\u3258\u0000"+ + "\u0000\u0000\u0000\u3259\u0000\u0000\u0000\u325A"+ + "\u325B\u0000\u0000\u0000\u325C\u325D\u0000\u325E"+ + "\u0000\u325F\u0000\u3260\u3261\u3262\u0000\u0000"+ + "\u3263\u3264\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3265\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3266\u0000\u0000\u0000\u0000\u3267"+ + "\u0000\u0000\u0000\u3268\u0000\u3269\u0000\u326A"+ + "\u326B\u0000\u0000\u0000\u0000\u0000\u0000\u326C"+ + "\u0000\u0000\u0000\u0000\u326D\u0000\u326E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u326F\u0000"+ + "\u0000\u0000\u0000\u3270\u3271\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3272\u0000\u0000\u3273\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3274\u0000\u0000\u0000\u0000\u3275\u0000\u0000"+ + "\u0000\u3276\u0000\u3277\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3278\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3279\u0000\u327A\u0000\u327B\u0000\u327C\u327D"+ + "\u0000\u0000\u327E\u0000\u0000\u0000\u0000\u0000"+ + "\u3321\u0000\u0000\u0000\u0000\u0000\u0000\u3322"+ + "\u0000\u3323\u3324\u3325\u0000\u3326\u0000\u0000"+ + "\u3327\u0000\u0000\u0000\u0000\u0000\u3328\u0000"+ + "\u0000\u0000\u3329\u0000\u0000\u332A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u7431\u0000\u332B\u0000"+ + "\u0000\u0000\u332C\u332D\u332E\u0000\u0000\u332F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3330\u3331\u0000\u0000\u3332\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3333\u3334\u0000\u3335\u3336\u0000"+ + "\u3337\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3338\u0000\u0000\u0000\u0000\u0000"+ + "\u3339\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u333A\u333B\u0000\u0000\u333C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u333D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u333E\u0000\u0000"+ + "\u0000\u333F\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3340\u0000\u3341"+ + "\u3342\u0000\u3343\u0000\u3344\u0000\u0000\u3345"+ + "\u3346\u3347\u0000\u0000\u0000\u0000\u3348\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3349\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u334A"+ + "\u334B\u334C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u334D\u0000\u334E\u0000\u0000\u334F\u0000\u0000"+ + "\u0000\u0000\u3350\u0000\u3351\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3352\u0000\u3353\u3354\u3355"+ + "\u3356\u0000\u3357\u0000\u3358\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3359\u335A\u335B\u335C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u335D"+ + "\u335E\u0000\u0000\u0000\u0000\u0000\u335F\u3360"+ + "\u3361\u0000\u3362\u3363\u0000\u3364\u0000\u0000"+ + "\u3365\u0000\u0000\u0000\u3366\u0000\u3367\u0000"+ + "\u3368\u0000\u0000\u0000\u3369\u0000\u0000\u336A"+ + "\u0000\u336B\u0000\u0000\u336C\u0000\u336D\u0000"+ + "\u0000\u0000\u0000\u336E\u336F\u0000\u0000\u0000"+ + "\u0000\u3370\u0000\u0000\u0000\u3371\u0000\u0000"+ + "\u3372\u3373\u3374\u0000\u3375\u0000\u0000\u0000"+ + "\u3376\u3377\u0000\u0000\u3378\u0000\u3379\u337A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u337B\u0000\u0000\u337C\u0000\u0000\u0000\u7432"+ + "\u0000\u0000\u337D\u337E\u3421\u0000\u0000\u0000"+ + "\u0000\u3422\u0000\u3423\u0000\u0000\u0000\u0000"+ + "\u3424\u0000\u0000\u3425\u3426\u0000\u3427\u3428"+ + "\u0000\u0000\u0000\u0000\u7433\u3429\u0000\u342A"+ + "\u342B\u342C\u0000\u342D\u342E\u342F\u0000\u0000"+ + "\u3430\u0000\u3431\u0000\u0000\u3432\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3433\u3434\u3435\u0000"+ + "\u0000\u0000\u3436\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3438\u3437\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3439\u0000\u343A\u0000\u0000\u0000\u0000"+ + "\u0000\u343B\u0000\u343C\u0000\u343D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u343E\u343F\u0000\u0000"+ + "\u0000\u0000\u3440\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3441\u0000\u0000\u0000\u0000\u3442\u0000"+ + "\u0000\u0000\u0000\u3443\u0000\u0000\u0000\u3444"+ + "\u3445\u0000\u0000\u0000\u0000\u0000\u3446\u0000"+ + "\u0000\u0000\u0000\u3447\u3448\u0000\u0000\u0000"+ + "\u0000\u3449\u0000\u0000\u0000\u344A\u0000\u0000"+ + "\u0000\u344B\u0000\u0000\u344C\u0000\u0000\u0000"+ + "\u0000\u0000\u344D\u344E\u0000\u0000\u0000\u344F"+ + "\u0000\u0000\u3450\u0000\u3451\u3452\u0000\u3453"+ + "\u3454\u0000\u3455\u0000\u0000\u3456\u0000\u0000"+ + "\u3457\u0000\u0000\u0000\u0000\u3458\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3459"+ + "\u0000\u0000\u345A\u345B\u0000\u345C\u0000\u0000"+ + "\u0000\u0000\u345D\u0000\u0000\u345E\u345F\u0000"+ + "\u3460\u0000\u0000\u0000\u0000\u0000\u3461\u3462"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3463\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3464\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3465\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3466\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3467\u0000\u0000\u0000\u0000\u0000\u3468"+ + "\u3469\u0000\u346A\u0000\u0000\u0000\u0000\u346B"+ + "\u0000\u346C\u0000\u0000\u346D\u346E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u346F\u3470\u0000\u0000\u3471"+ + "\u0000\u0000\u0000\u0000\u0000\u3472\u0000\u3473"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3474\u0000"+ + "\u0000\u0000\u3475\u0000\u3476\u0000\u3477\u3478"+ + "\u0000\u3479\u0000\u347A\u0000\u347B\u347C\u0000"+ + "\u0000\u0000\u0000\u0000\u347D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u347E"+ + "\u0000\u3521\u0000\u3522\u0000\u3523\u0000\u0000"+ + "\u3524\u3525\u7435\u0000\u0000\u3526\u0000\u0000"+ + "\u0000\u3527\u0000\u0000\u0000\u3528\u3529\u0000"+ + "\u0000\u0000\u0000\u0000\u352A\u0000\u0000\u352B"+ + "\u0000\u352C\u0000\u0000\u0000\u0000\u352D\u352E"+ + "\u0000\u352F\u3530\u0000\u0000\u3531\u3532\u0000"+ + "\u0000\u3533\u0000\u0000\u0000\u0000\u0000\u3534"+ + "\u0000\u3535\u3536\u3537\u0000\u0000\u0000\u3538"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3539\u0000"+ + "\u0000\u0000\u353A\u0000\u0000\u353B\u353C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u353D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u353E\u0000\u353F\u0000\u0000\u3540"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3541\u0000"+ + "\u0000\u0000\u0000\u0000\u3542\u0000\u3543\u3544"+ + "\u3545\u3546\u0000\u0000\u0000\u3547\u0000\u0000"+ + "\u3548\u3549\u0000\u0000\u354A\u354B\u354C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u354D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u354E\u354F\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3550\u0000\u0000\u3551\u3552\u0000"+ + "\u0000\u0000\u0000\u3553\u3554\u3555\u0000\u0000"+ + "\u0000\u3556\u0000\u0000\u0000\u0000\u0000\u3557"+ + "\u0000\u3558\u3559\u0000\u0000\u355A\u0000\u0000"+ + "\u355B\u355C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u355D\u0000\u355E\u355F\u0000\u0000\u3560\u0000"+ + "\u3561\u3562\u0000\u0000\u3563\u0000\u3564\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3565"+ + "\u0000\u3566\u3567\u0000\u0000\u0000\u3568\u0000"+ + "\u3569\u0000\u0000\u0000\u0000\u0000\u356A\u356B"+ + "\u0000\u356C\u356D\u356E\u356F\u0000\u0000\u3570"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3571\u3572\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3573\u0000\u0000"+ + "\u0000\u0000\u3574\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3575"+ + "\u0000\u3576\u0000\u3577\u0000\u0000\u3578\u0000"+ + "\u0000\u3579\u0000\u357A\u357B\u0000\u357C\u0000"+ + "\u0000\u357D\u357E\u3621\u0000\u0000\u0000\u3622"+ + "\u3623\u0000\u0000\u3624\u0000\u0000\u3625\u0000"+ + "\u0000\u0000\u3626\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3627\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3628\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3629"+ + "\u0000\u0000\u0000\u0000\u0000\u362A\u0000\u0000"+ + "\u362B\u0000\u362C\u0000\u0000\u362D\u362E\u362F"+ + "\u3630\u3631\u3632\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3633\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3634\u0000\u0000\u0000"+ + "\u3635\u0000\u0000\u3636\u0000\u3637\u0000\u3638"+ + "\u0000\u3639\u0000\u363A\u363B\u363C\u0000\u363D"+ + "\u363E\u363F\u0000\u3640\u3641\u0000\u3642\u0000"+ + "\u0000\u3643\u0000\u3644\u0000\u3645\u0000\u3646"+ + "\u0000\u0000\u0000\u0000\u3647\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3648\u0000"+ + "\u3649\u364A\u364B\u364C\u0000\u0000\u364D\u0000"+ + "\u0000\u364E\u0000\u0000\u0000\u364F\u0000\u3650"+ + "\u0000\u3651\u3652\u0000\u0000\u3653\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3654\u3655\u0000\u0000"+ + "\u3656\u0000\u0000\u3657\u3658\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3659\u0000\u0000"+ + "\u0000\u365A\u365B\u0000\u0000\u365C\u365D\u365E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u365F\u3660"+ + "\u3661\u3662\u0000\u3663\u3664\u3665\u0000\u0000"+ + "\u0000\u3666\u0000\u3667\u0000\u0000\u0000\u3668"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3669\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u366A\u0000\u0000"+ + "\u0000\u366B\u366C\u366D\u3670\u3671\u0000\u366E"+ + "\u366F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3672\u0000\u0000\u3673\u3674\u0000\u3675"+ + "\u0000\u3676\u0000\u0000\u3677\u3678\u3679\u367A"+ + "\u367B\u0000\u0000\u367D\u0000\u367E\u0000\u0000"+ + "\u0000\u367C\u0000\u0000\u0000\u0000\u3721\u3722"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; + + private final static String innerIndex1= + "\u0000\u3723\u3724\u0000\u0000\u0000\u0000\u3725"+ + "\u0000\u0000\u3726\u0000\u3727\u0000\u0000\u0000"+ + "\u0000\u3728\u0000\u0000\u0000\u3729\u0000\u0000"+ + "\u0000\u0000\u372A\u372B\u0000\u372C\u0000\u0000"+ + "\u372D\u0000\u372E\u372F\u3730\u3731\u0000\u0000"+ + "\u0000\u3732\u3733\u0000\u3734\u0000\u3735\u3736"+ + "\u0000\u0000\u0000\u3737\u3738\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3739\u373A\u373B"+ + "\u0000\u0000\u0000\u0000\u0000\u373C\u373D\u0000"+ + "\u0000\u0000\u0000\u0000\u373E\u373F\u0000\u0000"+ + "\u0000\u0000\u3740\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u7436\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3741\u0000\u0000\u3742\u0000\u3743"+ + "\u3744\u0000\u0000\u3745\u0000\u3746\u3747\u3748"+ + "\u3749\u374A\u0000\u374B\u374C\u374D\u0000\u374E"+ + "\u0000\u374F\u3750\u3751\u3752\u0000\u3753\u0000"+ + "\u0000\u3754\u0000\u3755\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3756\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3757\u3760\u0000\u3758"+ + "\u0000\u3759\u375A\u0000\u375B\u375C\u375D\u375E"+ + "\u0000\u375F\u0000\u0000\u0000\u0000\u0000\u3761"+ + "\u3762\u3763\u0000\u0000\u3764\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3765\u0000\u0000\u0000\u0000\u3766\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3767"+ + "\u3768\u0000\u0000\u0000\u3769\u0000\u0000\u376A"+ + "\u0000\u0000\u0000\u0000\u0000\u376B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u376C\u376D\u0000"+ + "\u0000\u377E\u0000\u0000\u376E\u0000\u376F\u3770"+ + "\u0000\u3771\u0000\u0000\u0000\u3772\u0000\u0000"+ + "\u3773\u0000\u0000\u0000\u0000\u3774\u3775\u0000"+ + "\u3776\u0000\u0000\u0000\u0000\u3777\u3778\u3779"+ + "\u0000\u0000\u0000\u377A\u377B\u0000\u0000\u0000"+ + "\u377C\u377D\u0000\u0000\u3821\u3822\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3823\u0000\u0000\u3824\u3825"+ + "\u3826\u0000\u0000\u0000\u0000\u0000\u3827\u3828"+ + "\u0000\u0000\u0000\u0000\u0000\u3829\u0000\u0000"+ + "\u0000\u0000\u382A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u382B\u0000\u0000\u0000\u0000\u0000\u382C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u382D\u0000\u0000\u382E\u382F\u0000\u3830"+ + "\u3831\u0000\u0000\u0000\u0000\u3832\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3833"+ + "\u0000\u3834\u0000\u0000\u3835\u0000\u0000\u3836"+ + "\u3837\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3838\u0000\u0000\u0000\u3839\u0000\u0000\u383A"+ + "\u383B\u383C\u0000\u0000\u0000\u0000\u0000\u383D"+ + "\u383E\u383F\u3840\u0000\u3841\u3842\u0000\u3843"+ + "\u3844\u0000\u0000\u0000\u3845\u0000\u3846\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3847\u7439\u0000"+ + "\u3848\u3849\u384A\u0000\u0000\u0000\u384B\u0000"+ + "\u0000\u384C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u384D\u384E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3850\u0000\u0000\u0000"+ + "\u0000\u0000\u3851\u0000\u384F\u0000\u0000\u0000"+ + "\u3852\u0000\u0000\u0000\u0000\u3853\u3854\u0000"+ + "\u3855\u0000\u3856\u0000\u3857\u0000\u3858\u0000"+ + "\u0000\u0000\u3859\u0000\u0000\u385A\u0000\u0000"+ + "\u0000\u385B\u385C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u385D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u385E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u385F\u3860\u0000"+ + "\u0000\u0000\u0000\u3861\u3862\u0000\u0000\u0000"+ + "\u0000\u0000\u3863\u3864\u3865\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3867\u0000\u0000"+ + "\u0000\u3868\u0000\u3869\u386A\u0000\u0000\u0000"+ + "\u386B\u0000\u0000\u0000\u0000\u0000\u0000\u386C"+ + "\u386D\u0000\u0000\u386E\u0000\u386F\u3870\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3871"+ + "\u0000\u0000\u0000\u3872\u0000\u0000\u3873\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3874\u3875\u0000\u0000\u0000\u0000"+ + "\u0000\u3876\u0000\u3877\u0000\u3878\u3879\u387A"+ + "\u0000\u387B\u0000\u387C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u387D\u0000\u387E\u0000\u3921"+ + "\u0000\u0000\u3922\u0000\u0000\u3923\u3924\u0000"+ + "\u0000\u3925\u0000\u3926\u3927\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3928\u3929\u0000\u392A\u0000"+ + "\u0000\u0000\u392B\u0000\u0000\u392C\u0000\u392D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u392E"+ + "\u0000\u0000\u0000\u0000\u392F\u0000\u0000\u3930"+ + "\u0000\u0000\u0000\u0000\u0000\u3931\u3932\u3933"+ + "\u3934\u0000\u0000\u3935\u0000\u0000\u0000\u3936"+ + "\u0000\u0000\u3937\u0000\u3938\u0000\u0000\u0000"+ + "\u0000\u3939\u0000\u393A\u393B\u0000\u0000\u0000"+ + "\u393C\u0000\u393D\u0000\u0000\u393E\u0000\u0000"+ + "\u0000\u0000\u393F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3940\u3941\u3942"+ + "\u0000\u0000\u0000\u3943\u3944\u0000\u0000\u3945"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3946\u3947"+ + "\u0000\u3948\u3949\u0000\u394A\u0000\u0000\u394B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u394C\u0000\u0000\u0000\u394D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u394E\u394F\u3950\u0000"+ + "\u0000\u0000\u3951\u3952\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3953\u0000"+ + "\u0000\u0000\u0000\u3954\u3955\u0000\u0000\u3956"+ + "\u3957\u0000\u3958\u0000\u0000\u3959\u0000\u0000"+ + "\u395A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u395B\u395C\u0000\u395D"+ + "\u395E\u0000\u0000\u0000\u395F\u0000\u0000\u0000"+ + "\u3960\u0000\u0000\u0000\u0000\u3961\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3962\u0000"+ + "\u0000\u0000\u0000\u3963\u0000\u3964\u0000\u3965"+ + "\u0000\u0000\u0000\u0000\u0000\u3966\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3967"+ + "\u0000\u0000\u3968\u3969\u0000\u0000\u396A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u396B\u0000\u0000\u0000\u0000"+ + "\u396C\u0000\u0000\u396D\u0000\u0000\u396E\u0000"+ + "\u0000\u396F\u0000\u0000\u3970\u0000\u3971\u3972"+ + "\u3973\u0000\u3974\u0000\u0000\u0000\u0000\u3975"+ + "\u0000\u0000\u0000\u0000\u3976\u0000\u0000\u0000"+ + "\u0000\u3977\u3978\u3979\u0000\u397A\u0000\u0000"+ + "\u397B\u0000\u397C\u397D\u0000\u0000\u0000\u397E"+ + "\u0000\u0000\u0000\u0000\u3A21\u0000\u3A22\u0000"+ + "\u3A23\u0000\u0000\u0000\u0000\u0000\u0000\u3A24"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3A25\u0000\u3A26\u0000\u0000\u0000"+ + "\u3A27\u0000\u0000\u0000\u0000\u3A28\u0000\u0000"+ + "\u0000\u0000\u3A29\u0000\u0000\u0000\u3A2A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3A2B\u3A2C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3A2D\u0000\u0000"+ + "\u3A2E\u3A2F\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3A30\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3A31"+ + "\u0000\u3A33\u0000\u3A34\u0000\u3A35\u0000\u0000"+ + "\u0000\u3A36\u0000\u0000\u0000\u3A37\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3A38\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3A32\u0000\u0000\u0000"+ + "\u3A39\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3A3A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3A3B\u3A3C\u0000\u0000\u0000"+ + "\u0000\u0000\u3A3D\u0000\u0000\u0000\u3A3E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3A3F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3A40\u0000\u0000\u0000\u0000\u0000\u3A41\u3A42"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3A43\u3A44\u3A45\u3A46"+ + "\u0000\u3A47\u0000\u0000\u3A48\u0000\u3A49\u0000"+ + "\u0000\u0000\u3A4A\u0000\u0000\u0000\u3A4B\u0000"+ + "\u3A4C\u3A4D\u0000\u3A4E\u3A4F\u0000\u3A50\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3A51\u3A52\u0000\u0000\u3A53\u3A54\u0000\u3A55"+ + "\u0000\u3A56\u3A57\u0000\u0000\u0000\u0000\u3A58"+ + "\u0000\u0000\u3A59\u0000\u3A5A\u0000\u0000\u0000"+ + "\u3A5B\u3A5C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3A5D\u0000\u3A5E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3A5F\u3A60"+ + "\u3A61\u3A62\u3A63\u0000\u0000\u0000\u0000\u0000"+ + "\u3A64\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u743A\u0000\u0000\u3A65"+ + "\u0000\u3A66\u0000\u0000\u3A67\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3A68\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3A69\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3A6A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3A6B\u3A6C"+ + "\u0000\u0000\u0000\u3A6D\u0000\u0000\u3A6E\u0000"+ + "\u0000\u3A6F\u0000\u3A70\u3A71\u0000\u3A72\u0000"+ + "\u3A73\u0000\u3A74\u0000\u0000\u3A75\u3A76\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3A77\u3A78\u0000\u3A79\u0000\u0000\u0000"+ + "\u0000\u0000\u3A7A\u3A7B\u0000\u0000\u0000\u3A7C"+ + "\u3A7D\u3A7E\u0000\u0000\u0000\u3B21\u0000\u0000"+ + "\u3B22\u0000\u0000\u0000\u3B23\u3B24\u0000\u0000"+ + "\u0000\u0000\u3B25\u3B26\u3B27\u3B28\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3B29"+ + "\u3B2A\u0000\u3B2B\u0000\u0000\u0000\u0000\u3B2C"+ + "\u0000\u0000\u3B2D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3B2E\u0000\u3B2F"+ + "\u3B30\u0000\u3B31\u3B32\u0000\u0000\u3B33\u0000"+ + "\u0000\u0000\u3B34\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3B35\u0000\u3B36\u3B37\u0000\u0000"+ + "\u0000\u0000\u3B38\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3B39\u0000\u3B3A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3B3B\u0000\u0000\u0000\u0000\u3B3D"+ + "\u0000\u0000\u0000\u0000\u0000\u3B3C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3B3E\u0000"+ + "\u0000\u3B3F\u3B40\u0000\u3B41\u743B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3B42\u0000\u0000\u0000\u0000\u3B43\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3B44\u0000\u0000"+ + "\u0000\u0000\u3B45\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3B47\u3B48\u0000\u3B49\u3B4A"+ + "\u0000\u0000\u0000\u3B46\u0000\u0000\u0000\u0000"+ + "\u0000\u3B4B\u0000\u0000\u3B4C\u0000\u0000\u0000"+ + "\u0000\u3B4D\u0000\u0000\u0000\u3B4E\u0000\u3B4F"+ + "\u0000\u0000\u3B50\u3B51\u0000\u0000\u3B52\u0000"+ + "\u3B53\u0000\u3B57\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3B55\u0000\u743C\u0000\u3B54\u0000\u0000"+ + "\u0000\u3B56\u0000\u0000\u0000\u0000\u0000\u3B58"+ + "\u3B59\u3B5A\u3B5B\u0000\u3B5C\u0000\u0000\u0000"+ + "\u0000\u0000\u3B5D\u0000\u0000\u3B5E\u0000\u0000"+ + "\u3B5F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3B60\u3B61\u0000\u0000\u0000\u3B62\u3B63"+ + "\u0000\u3B64\u0000\u3B65\u0000\u0000\u0000\u0000"+ + "\u3B66\u0000\u3B67\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3B68\u3B69\u3B6A\u3B6B\u0000\u0000"+ + "\u0000\u3B6C\u0000\u3B6D\u0000\u0000\u0000\u3B6E"+ + "\u3B6F\u0000\u0000\u0000\u0000\u0000\u0000\u3B70"+ + "\u0000\u0000\u0000\u3B71\u0000\u0000\u0000\u0000"+ + "\u3B72\u0000\u6674\u0000\u3B73\u0000\u0000\u0000"+ + "\u3B74\u3B75\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3B76\u0000\u0000\u0000\u3B77"+ + "\u0000\u0000\u0000\u3B78\u0000\u0000\u3B7A\u0000"+ + "\u3B79\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3B7B\u3B7C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3B7D\u0000\u0000\u0000\u3B7E\u0000\u0000\u0000"+ + "\u0000\u3C21\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3C22\u3C23\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3C24\u0000\u0000\u0000\u0000\u0000\u0000\u3C25"+ + "\u0000\u0000\u0000\u0000\u0000\u3C26\u0000\u0000"+ + "\u0000\u0000\u3C27\u0000\u3C28\u3C29\u0000\u0000"+ + "\u3C2A\u0000\u0000\u0000\u0000\u0000\u0000\u3C2B"+ + "\u3C2C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3C2E\u0000\u0000\u0000\u0000\u0000\u3C2D\u0000"+ + "\u0000\u0000\u3C2F\u0000\u0000\u3C30\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3C31\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3C34\u0000\u3C32\u0000\u0000\u0000\u0000"+ + "\u3C33\u3C35\u0000\u0000\u0000\u0000\u3C36\u0000"+ + "\u3C37\u0000\u0000\u3C38\u3C39\u0000\u3C3A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3C3B\u0000\u3C3C\u3C3D\u3C3E\u3C3F\u3C40\u0000"+ + "\u3C41\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3C42\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3C43\u0000\u0000\u3C44\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3C45\u0000\u3C46\u3C47\u0000\u0000"+ + "\u3C48\u0000\u3C49\u0000\u3C4A\u0000\u0000\u0000"+ + "\u0000\u3C4B\u0000\u3C4C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3C4D\u3C4E\u3C4F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3C50\u0000"+ + "\u0000\u0000\u0000\u3C52\u3C51\u0000\u3C53\u0000"+ + "\u0000\u3C54\u3C55\u0000\u3C56\u3C57\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3C58\u0000\u3C59\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3C5A\u0000\u0000"+ + "\u0000\u0000\u0000\u3C5B\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3C5C\u0000\u0000\u0000\u3C5D\u3C5E"+ + "\u3C5F\u0000\u0000\u0000\u0000\u0000\u3C60\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3C61\u0000\u0000\u3C62\u3C63\u0000\u0000"+ + "\u0000\u3C64\u3C65\u3C66\u3C67\u0000\u0000\u0000"+ + "\u3C68\u0000\u0000\u3C69\u3C6A\u0000\u3C6B\u0000"+ + "\u3C6C\u0000\u0000\u0000\u3C6D\u0000\u3C6E\u0000"+ + "\u0000\u0000\u0000\u3C6F\u0000\u3C70\u0000\u3C71"+ + "\u3C72\u0000\u0000\u0000\u3C73\u3C74\u0000\u3C75"+ + "\u0000\u0000\u0000\u0000\u0000\u3C76\u0000\u0000"+ + "\u3C77\u0000\u0000\u0000\u3C78\u0000\u0000\u0000"+ + "\u3C79\u0000\u0000\u3C7A\u0000\u0000\u0000\u0000"+ + "\u3C7B\u0000\u0000\u3C7C\u3C7D\u0000\u0000\u3C7E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3D21"+ + "\u0000\u0000\u3D22\u0000\u3D23\u3D24\u0000\u0000"+ + "\u3D25\u0000\u3D26\u0000\u0000\u3D27\u3D28\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3D29\u0000\u0000\u0000\u3D2A\u0000\u3D2B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3D2C\u0000"+ + "\u0000\u0000\u0000\u0000\u3D2D\u3D2E\u0000\u0000"+ + "\u0000\u0000\u3D2F\u0000\u3D32\u0000\u0000\u3D30"+ + "\u0000\u0000\u0000\u3D31\u3D33\u0000\u0000\u3D34"+ + "\u3D35\u3D36\u0000\u0000\u0000\u0000\u0000\u743E"+ + "\u3D37\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3D38\u0000\u0000\u3D39"+ + "\u3D3A\u3D3B\u0000\u3D3C\u0000\u0000\u0000\u0000"+ + "\u3D3D\u3D3E\u3D3F\u3D40\u3D41\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3D42\u0000"+ + "\u0000\u3D43\u3D44\u0000\u0000\u0000\u0000\u0000"+ + "\u3D45\u3D46\u3D47\u0000\u3D48\u3D49\u3D4A\u3D4B"+ + "\u0000\u0000\u3D4C\u3D4D\u0000\u0000\u3D4E\u0000"+ + "\u0000\u0000\u3D4F\u0000\u3D50\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u3D51"+ + "\u0000\u0000\u3D52\u0000\u0000\u3D53\u0000\u0000"+ + "\u0000\u0000\u0000\u3D54\u3D55\u0000\u0000\u3D56"+ + "\u3D57\u0000\u3D58\u0000\u0000\u0000\u0000\u3D59"+ + "\u0000\u0000\u0000\u0000\u3D5A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3D5B\u0000\u0000"+ + "\u0000\u0000\u0000\u3D5C\u0000\u3D5D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3D5E\u0000\u0000\u0000\u0000\u0000\u0000\u3D5F"+ + "\u3D60\u3D61\u0000\u0000\u3D62\u0000\u0000\u0000"+ + "\u0000\u3D63\u0000\u0000\u3D64\u0000\u3D65\u3D66"+ + "\u0000\u0000\u0000\u0000\u0000\u3D67\u0000\u0000"+ + "\u0000\u3D68\u0000\u0000\u0000\u0000\u0000\u3D69"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3D6A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3D6B\u3D6C"+ + "\u0000\u0000\u3D6D\u0000\u0000\u743F\u3D6E\u0000"+ + "\u3D6F\u0000\u3D70\u0000\u0000\u0000\u3D71\u0000"+ + "\u0000\u3D72\u0000\u3D73\u0000\u3D74\u0000\u0000"+ + "\u3D75\u0000\u0000\u0000\u0000\u3D76\u3D77\u0000"+ + "\u0000\u0000\u3D78\u0000\u3D79\u3D7A\u0000\u0000"+ + "\u3D7B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3D7C\u3D7D\u0000\u0000\u0000\u0000\u0000\u3D7E"+ + "\u0000\u0000\u0000\u3E21\u0000\u0000\u3E22\u0000"+ + "\u0000\u0000\u3E23\u0000\u3E24\u0000\u0000\u0000"+ + "\u3E25\u3E26\u3E27\u3E28\u0000\u0000\u3E29\u3E2A"+ + "\u0000\u0000\u0000\u0000\u3E2B\u3E2C\u0000\u0000"+ + "\u0000\u3E2D\u0000\u3E2E\u0000\u3E2F\u3E30\u0000"+ + "\u0000\u0000\u3E31\u0000\u0000\u3E32\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3E33\u0000\u0000\u3E34\u0000\u0000"+ + "\u3E35\u0000\u0000\u0000\u3E36\u3E37\u0000\u0000"+ + "\u0000\u0000\u3E38\u0000\u0000\u0000\u0000\u3E39"+ + "\u0000\u0000\u3E3A\u0000\u3E3B\u0000\u0000\u0000"+ + "\u3E3C\u3E3D\u3E3E\u3E3F\u3E40\u0000\u3E41\u3E42"+ + "\u0000\u3E43\u0000\u0000\u3E44\u0000\u3E45\u0000"+ + "\u7440\u0000\u3E46\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3E47\u3E48\u0000\u0000\u0000\u0000"+ + "\u3E49\u3E4A\u0000\u0000\u0000\u3E4B\u3E4C\u3E4D"+ + "\u0000\u3E4E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3E4F\u0000\u0000\u0000\u3E50\u3E51\u0000"+ + "\u0000\u3E52\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3E53\u0000"+ + "\u3E54\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3E55\u0000\u0000\u0000"+ + "\u0000\u0000\u3E56\u0000\u0000\u0000\u0000\u0000"+ + "\u3E57\u0000\u0000\u3E58\u3E59\u0000\u0000\u3E5A"+ + "\u3E5B\u3E5C\u0000\u3E5D\u3E5E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3E5F\u0000\u3E60\u0000\u0000"+ + "\u0000\u0000\u3E61\u3E62\u0000\u0000\u0000\u3E63"+ + "\u3E64\u0000\u0000\u0000\u3E65\u3E66\u0000\u3E67"+ + "\u3E68\u0000\u0000\u0000\u0000\u3E69\u0000\u0000"+ + "\u3E6A\u0000\u3E6B\u0000\u0000\u3E6C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u3E6D\u3E6E\u0000\u0000\u3E6F\u0000\u0000\u0000"+ + "\u3E70\u3E71\u3E72\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3E73\u3E74"+ + "\u0000\u0000\u0000\u0000\u0000\u3E75\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3E76\u3E77\u3E78\u3E79"+ + "\u0000\u3E7A\u3E7B\u0000\u0000\u3E7E\u0000\u3E7C"+ + "\u0000\u3E7D\u0000\u0000\u3F21\u3F22\u0000\u3F23"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3F24\u0000\u3F25\u3F26\u0000\u0000\u3F27"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3F28\u0000\u3F29\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3F2A\u0000\u0000\u0000"+ + "\u3F2B\u0000\u3F2C\u3F2D\u0000\u0000\u0000\u3F2E"+ + "\u0000\u3F2F\u0000\u3F30\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3F31\u0000\u0000\u0000\u3F32\u0000\u0000"+ + "\u0000\u0000\u3F33\u3F34\u3F35\u0000\u3F36\u0000"+ + "\u0000\u0000\u0000\u0000\u3F37\u0000\u0000\u0000"+ + "\u3F38\u3F39\u3F3A\u0000\u3F3B\u0000\u3F3C\u0000"+ + "\u0000\u0000\u3F3D\u0000\u3F3E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3F3F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3F40\u0000\u3F41"+ + "\u0000\u0000\u0000\u3F42\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3F43\u0000\u0000\u3F44\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3F45\u3F46\u3F47"+ + "\u3F48\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3F49\u0000"+ + "\u3F4A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u3F4B\u0000\u0000\u3F4C\u3F4D"+ + "\u0000\u0000\u3F4E\u0000\u0000\u0000\u3F4F\u3F50"+ + "\u0000\u0000\u0000\u0000\u3F51\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u3F52\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3F53\u3F54\u0000"+ + "\u0000\u0000\u3F55\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3F56\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u3F57\u0000\u3F58\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u3F59\u3F5A\u0000\u0000"+ + "\u0000\u0000\u0000\u3F5B\u3F5C\u0000\u0000\u0000"+ + "\u0000\u0000\u3F5D\u3F5E\u0000\u3F5F\u0000\u0000"+ + "\u3F60\u0000\u0000\u3F61\u0000\u0000\u3F62\u0000"+ + "\u3F63\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u3F64\u3F65\u0000\u0000\u3F66\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3F67\u3F68\u0000"+ + "\u0000\u3F69\u0000\u0000\u3F6A\u0000\u0000\u0000"+ + "\u0000\u3F6B\u3F6C\u3F6D\u3F6E\u0000\u3F6F\u0000"+ + "\u0000\u0000\u3F70\u3F71\u0000\u0000\u3F72\u0000"+ + "\u0000\u0000\u3F73\u3F74\u3F75\u0000\u0000\u0000"+ + "\u3F76\u0000\u0000\u3F77\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u3F78\u3F79\u0000"+ + "\u0000\u0000\u0000\u0000\u3F7A\u3F7B\u0000\u0000"+ + "\u0000\u3F7C\u0000\u0000\u3F7D\u3F7E\u0000\u0000"+ + "\u4021\u0000\u0000\u0000\u4022\u4023\u0000\u4024"+ + "\u0000\u0000\u4025\u0000\u4026\u0000\u0000\u4027"+ + "\u0000\u0000\u4028\u0000\u0000\u0000\u0000\u0000"+ + "\u4029\u0000\u0000\u0000\u402A\u402B\u0000\u0000"+ + "\u0000\u402C\u402D\u0000\u0000\u0000\u402E\u0000"+ + "\u0000\u0000\u0000\u0000\u402F\u0000\u4030\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4031\u4032\u4033"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4034\u0000\u0000"+ + "\u0000\u4035\u0000\u0000\u0000\u4036\u0000\u0000"+ + "\u4037\u0000\u0000\u0000\u0000\u0000\u4038\u0000"+ + "\u0000\u4039\u0000\u403A\u403B\u403C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u403D\u0000\u0000\u0000"+ + "\u403E\u0000\u0000\u0000\u0000\u403F\u0000\u0000"+ + "\u0000\u0000\u4040\u0000\u4041\u0000\u0000\u0000"+ + "\u0000\u0000\u4042\u4043\u0000\u4044\u0000\u0000"+ + "\u4045\u4046\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4047\u4048\u0000\u0000\u0000\u0000\u0000"+ + "\u4049\u0000\u404A\u0000\u404B\u0000\u0000\u0000"+ + "\u404C\u0000\u0000\u0000\u0000\u0000\u404D\u0000"+ + "\u404E\u0000\u404F\u0000\u4050\u4051\u0000\u0000"+ + "\u0000\u4052\u4053\u0000\u0000\u0000\u0000\u4054"+ + "\u4055\u0000\u0000\u0000\u0000\u4056\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4057\u0000\u4058"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4059\u0000\u0000\u0000\u405A"+ + "\u0000\u405B\u405C\u405D\u405E\u0000\u0000\u0000"+ + "\u0000\u0000\u405F\u4060\u4061\u4062\u0000\u4063"+ + "\u4064\u4065\u0000\u4066\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4067\u0000\u0000"+ + "\u0000\u0000\u0000\u4068\u4069\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u406A\u0000\u406B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u406C\u0000\u406D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u406E"+ + "\u406F\u4070\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4071\u4072\u0000\u4073\u0000\u4074\u0000\u4075"+ + "\u0000\u4076\u0000\u4077\u0000\u0000\u4078\u0000"+ + "\u4079\u0000\u0000\u0000\u407A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u407B\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u407C\u407D\u407E"+ + "\u0000\u0000\u0000\u0000\u4121\u0000\u0000\u0000"+ + "\u0000\u4122\u4123\u4124\u4125\u0000\u4126\u0000"+ + "\u4127\u4128\u0000\u0000\u0000\u4129\u0000\u412A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u412B\u412C\u0000\u0000"+ + "\u0000\u412D\u412E\u0000\u0000\u412F\u0000\u0000"+ + "\u4130\u0000\u0000\u0000\u0000\u4131\u0000\u4132"+ + "\u0000\u0000\u0000\u4133\u0000\u0000\u0000\u4134"+ + "\u0000\u4135\u0000\u0000\u4136\u0000\u0000\u0000"+ + "\u4137\u4138\u4139\u0000\u0000\u0000\u0000\u413A"+ + "\u0000\u0000\u0000\u413B\u413C\u0000\u413D\u0000"+ + "\u0000\u413E\u0000\u413F\u0000\u0000\u4140\u4141"+ + "\u0000\u0000\u4142\u0000\u0000\u0000\u4143\u0000"+ + "\u0000\u4144\u0000\u0000\u0000\u0000\u4145\u0000"+ + "\u0000\u4146\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4147\u0000\u4148\u4149\u0000\u0000"+ + "\u0000\u0000\u0000\u414A\u0000\u0000\u0000\u414B"+ + "\u0000\u414C\u0000\u0000\u0000\u0000\u7441\u0000"+ + "\u414D\u0000\u414E\u0000\u414F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4150"+ + "\u4151\u0000\u0000\u0000\u0000\u0000\u0000\u4152"+ + "\u0000\u0000\u0000\u4153\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4154\u0000\u0000\u4155\u0000\u0000"+ + "\u0000\u4156\u0000\u0000\u0000\u4157\u0000\u0000"+ + "\u0000\u0000\u4158\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4159\u0000\u0000\u415A\u0000\u0000"+ + "\u415B\u0000\u0000\u0000\u0000\u415C\u0000\u0000"+ + "\u415D\u0000\u0000\u415E\u0000\u0000\u415F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4160\u0000"+ + "\u0000\u0000\u4161\u4162\u4163\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4164"+ + "\u0000\u0000\u4165\u0000\u0000\u0000\u0000\u0000"+ + "\u4166\u4167\u0000\u0000\u0000\u0000\u4168\u0000"+ + "\u4169\u0000\u0000\u0000\u416A\u0000\u416B\u0000"+ + "\u416C\u0000\u0000\u0000\u0000\u0000\u0000\u416D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u416E\u0000\u416F\u0000\u4170\u4171\u0000\u0000"+ + "\u0000\u4172\u0000\u0000\u0000\u0000\u4173\u4174"+ + "\u4175\u0000\u0000\u0000\u4176\u0000\u0000\u0000"+ + "\u4177\u4178\u0000\u0000\u0000\u4179\u0000\u0000"+ + "\u0000\u417A\u417B\u0000\u0000\u417C\u417D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u417E\u4221\u0000"+ + "\u0000\u4222\u4223\u4224\u4225\u0000\u4226\u0000"+ + "\u0000\u4227\u4228\u4229\u422A\u0000\u422B\u0000"+ + "\u422C\u422D\u0000\u422E\u0000\u0000\u0000\u4230"+ + "\u0000\u422F\u0000\u7442\u0000\u0000\u0000\u0000"+ + "\u4231\u0000\u0000\u0000\u0000\u4232\u4233\u0000"+ + "\u0000\u0000\u4234\u0000\u4235\u0000\u4237\u0000"+ + "\u0000\u4236\u0000\u0000\u0000\u0000\u0000\u4238"+ + "\u4239\u423A\u0000\u423B\u423C\u0000\u0000\u0000"+ + "\u423D\u423E\u0000\u0000\u0000\u7443\u0000\u0000"+ + "\u0000\u0000\u4240\u4241\u4242\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4244\u0000\u4245\u0000\u4247"+ + "\u4248\u4249\u0000\u424A\u424C\u0000\u4243\u4246"+ + "\u424B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u424D\u424E\u424F\u0000\u0000"+ + "\u4250\u0000\u4251\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4252\u4253\u4254\u4255\u0000\u0000\u4256"+ + "\u4257\u0000\u0000\u0000\u4258\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4259\u0000\u0000"+ + "\u0000\u425A\u425B\u0000\u0000\u425C\u0000\u0000"+ + "\u0000\u0000\u0000\u425D\u0000\u0000\u0000\u425E"+ + "\u425F\u0000\u4260\u4261\u0000\u0000\u0000\u0000"+ + "\u4262\u0000\u0000\u0000\u4263\u0000\u4264\u4265"+ + "\u0000\u0000\u0000\u0000\u4266\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4267\u0000\u0000\u0000\u4268"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4269\u0000\u0000\u426A\u426B\u0000\u426C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u426D\u423F\u0000\u0000\u0000\u0000"; + + private final static String innerIndex2= + "\u0000\u0000\u0000\u0000\u0000\u426E\u0000\u426F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4270\u0000"+ + "\u0000\u0000\u0000\u4271\u0000\u0000\u0000\u0000"+ + "\u0000\u4272\u0000\u0000\u4273\u0000\u0000\u0000"+ + "\u4274\u0000\u4275\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4276\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4277\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4278\u0000\u4279"+ + "\u427A\u0000\u0000\u0000\u427B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u427C\u427D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u427E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4321\u0000"+ + "\u0000\u0000\u0000\u0000\u4322\u0000\u4323\u0000"+ + "\u0000\u0000\u0000\u0000\u4324\u0000\u4325\u0000"+ + "\u0000\u0000\u0000\u4326\u0000\u0000\u0000\u0000"+ + "\u0000\u4327\u0000\u0000\u4328\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4329\u432A"+ + "\u0000\u432B\u0000\u432C\u0000\u0000\u432D\u0000"+ + "\u432E\u432F\u0000\u4330\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4331\u4332\u4333\u0000\u0000\u4334\u0000\u0000"+ + "\u0000\u0000\u0000\u4335\u4336\u4337\u0000\u0000"+ + "\u4339\u0000\u433A\u433B\u0000\u433C\u0000\u0000"+ + "\u433D\u433E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u433F\u0000\u0000\u0000\u0000\u4340"+ + "\u0000\u4341\u0000\u0000\u4342\u0000\u0000\u0000"+ + "\u0000\u4343\u0000\u0000\u0000\u0000\u4344\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4345\u0000\u4346\u0000\u0000\u0000\u4347\u4348"+ + "\u0000\u4338\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u7446\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u434A\u0000\u0000\u0000"+ + "\u0000\u434B\u0000\u0000\u0000\u434C\u0000\u434D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u434F"+ + "\u434E\u0000\u0000\u0000\u4350\u4351\u0000\u4352"+ + "\u4353\u4354\u0000\u4355\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4356\u0000\u0000\u0000\u4357"+ + "\u0000\u0000\u0000\u0000\u4358\u4359\u0000\u0000"+ + "\u0000\u0000\u435A\u0000\u435B\u0000\u0000\u0000"+ + "\u0000\u0000\u4349\u0000\u0000\u435C\u0000\u435D"+ + "\u435E\u0000\u0000\u435F\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4360\u0000\u0000\u4361\u4362"+ + "\u4363\u4364\u4365\u0000\u0000\u4366\u0000\u0000"+ + "\u0000\u4367\u4368\u4369\u436A\u0000\u0000\u0000"+ + "\u0000\u0000\u436B\u0000\u436C\u0000\u436D\u0000"+ + "\u436E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u436F\u0000"+ + "\u4370\u0000\u4371\u0000\u4372\u0000\u0000\u0000"+ + "\u0000\u4373\u0000\u4374\u0000\u4375\u0000\u0000"+ + "\u0000\u4376\u4377\u0000\u0000\u0000\u4378\u0000"+ + "\u0000\u0000\u4379\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u437A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u437B\u0000\u0000"+ + "\u437C\u0000\u0000\u0000\u437D\u0000\u0000\u437E"+ + "\u4421\u4422\u0000\u4423\u0000\u0000\u4424\u0000"+ + "\u0000\u4425\u0000\u0000\u4426\u4427\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4428\u0000\u0000"+ + "\u4429\u0000\u442A\u442B\u442C\u442D\u0000\u0000"+ + "\u442E\u442F\u0000\u0000\u0000\u4430\u4431\u0000"+ + "\u0000\u0000\u0000\u4432\u4433\u4434\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4435\u0000"+ + "\u0000\u4436\u4437\u0000\u0000\u0000\u0000\u0000"+ + "\u4438\u4439\u0000\u443A\u0000\u0000\u443B\u443C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u443D\u0000\u443E\u0000\u443F\u0000\u0000"+ + "\u4440\u0000\u0000\u4441\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4442\u0000\u0000\u4443\u0000\u0000"+ + "\u0000\u4444\u0000\u0000\u0000\u0000\u4445\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4446"+ + "\u0000\u0000\u0000\u4447\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4448\u4449\u444A\u444B\u0000"+ + "\u444C\u444D\u0000\u0000\u444E\u0000\u0000\u0000"+ + "\u444F\u4450\u4451\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4452\u4453\u0000\u0000\u0000\u4454"+ + "\u4455\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4456\u0000\u0000"+ + "\u0000\u0000\u4457\u0000\u0000\u0000\u4458\u0000"+ + "\u4459\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u445A\u0000\u0000\u0000\u445B\u445C\u0000"+ + "\u445D\u0000\u0000\u445E\u0000\u445F\u0000\u4460"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4461"+ + "\u4462\u0000\u4463\u0000\u4464\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4465\u0000\u0000"+ + "\u4466\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4467\u0000\u0000\u0000\u0000\u4468\u4469"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u446A\u0000\u0000\u446B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u446C\u446D"+ + "\u0000\u446E\u0000\u446F\u0000\u4470\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4471\u0000"+ + "\u4472\u4473\u0000\u4474\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4475"+ + "\u0000\u4476\u0000\u0000\u0000\u4477\u0000\u0000"+ + "\u0000\u0000\u4478\u0000\u0000\u4479\u0000\u0000"+ + "\u447A\u0000\u0000\u0000\u447B\u0000\u0000\u0000"+ + "\u447C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u447D\u0000\u447E\u0000\u4521\u0000\u0000\u4522"+ + "\u0000\u0000\u0000\u4523\u0000\u0000\u4524\u4525"+ + "\u0000\u0000\u0000\u0000\u0000\u4526\u4527\u0000"+ + "\u0000\u4528\u4529\u0000\u0000\u0000\u452A\u0000"+ + "\u452B\u452C\u452D\u0000\u0000\u452E\u452F\u0000"+ + "\u0000\u0000\u0000\u4530\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4531\u0000\u0000\u4532"+ + "\u0000\u0000\u4533\u7449\u0000\u0000\u0000\u0000"+ + "\u0000\u4534\u0000\u4535\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4536\u0000"+ + "\u0000\u4537\u0000\u4538\u0000\u0000\u4539\u453A"+ + "\u0000\u453B\u0000\u453C\u0000\u0000\u0000\u0000"+ + "\u0000\u453D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u453E\u0000\u453F\u4540\u4541"+ + "\u0000\u0000\u0000\u0000\u0000\u4542\u0000\u0000"+ + "\u0000\u0000\u0000\u4543\u0000\u0000\u0000\u4544"+ + "\u4545\u4546\u0000\u0000\u4547\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4548\u4549\u454A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u454B\u0000"+ + "\u454D\u454C\u0000\u0000\u454E\u0000\u0000\u0000"+ + "\u454F\u0000\u0000\u0000\u4550\u4551\u4552\u0000"+ + "\u0000\u0000\u0000\u0000\u4553\u4554\u0000\u0000"+ + "\u0000\u0000\u744A\u0000\u4555\u0000\u0000\u4556"+ + "\u0000\u0000\u0000\u0000\u4557\u0000\u0000\u0000"+ + "\u4558\u4559\u455A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u455B\u455C\u0000\u0000"+ + "\u0000\u0000\u455D\u455E\u0000\u0000\u455F\u4560"+ + "\u0000\u4561\u0000\u0000\u0000\u0000\u0000\u4562"+ + "\u4563\u4564\u0000\u0000\u0000\u0000\u0000\u4565"+ + "\u0000\u0000\u0000\u4566\u0000\u0000\u4567\u0000"+ + "\u0000\u0000\u0000\u0000\u4568\u0000\u0000\u0000"+ + "\u4569\u0000\u0000\u456A\u456B\u0000\u0000\u456C"+ + "\u0000\u0000\u0000\u0000\u0000\u456D\u456E\u0000"+ + "\u0000\u0000\u0000\u456F\u0000\u0000\u0000\u4570"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4571\u0000"+ + "\u0000\u0000\u4572\u0000\u0000\u4573\u0000\u0000"+ + "\u0000\u0000\u4574\u0000\u0000\u0000\u4575\u0000"+ + "\u4576\u0000\u0000\u0000\u0000\u4577\u0000\u0000"+ + "\u4578\u0000\u0000\u0000\u0000\u0000\u0000\u4579"+ + "\u0000\u0000\u0000\u457A\u0000\u0000\u457B\u0000"+ + "\u457C\u0000\u0000\u0000\u0000\u457D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u457E\u4621\u0000"+ + "\u0000\u0000\u4622\u0000\u0000\u4623\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4624"+ + "\u0000\u0000\u0000\u4625\u0000\u0000\u0000\u4626"+ + "\u4627\u0000\u4628\u4629\u0000\u0000\u0000\u0000"+ + "\u462A\u462B\u0000\u0000\u462C\u462D\u462E\u0000"+ + "\u462F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4630\u4631\u0000\u0000\u0000\u4632\u4633\u0000"+ + "\u0000\u0000\u0000\u4634\u4635\u0000\u0000\u0000"+ + "\u0000\u4636\u0000\u0000\u4637\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4638\u0000"+ + "\u0000\u0000\u4639\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u463A\u0000\u463B\u0000\u0000\u463C\u463D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u463E\u0000"+ + "\u0000\u463F\u0000\u0000\u0000\u0000\u0000\u4640"+ + "\u0000\u4641\u0000\u0000\u0000\u0000\u0000\u4642"+ + "\u0000\u0000\u4643\u0000\u4644\u4645\u0000\u0000"+ + "\u0000\u4646\u0000\u0000\u0000\u4647\u4648\u0000"+ + "\u4649\u0000\u464A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u464B\u0000\u0000\u0000\u0000\u0000\u464C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u464D\u464E"+ + "\u464F\u0000\u0000\u0000\u4650\u0000\u4651\u0000"+ + "\u0000\u0000\u0000\u4652\u0000\u4653\u4654\u0000"+ + "\u0000\u0000\u4655\u4656\u0000\u0000\u0000\u4657"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4658\u4659\u0000\u465A\u0000\u465B"+ + "\u0000\u0000\u465C\u0000\u465D\u0000\u0000\u0000"+ + "\u0000\u465E\u0000\u465F\u4660\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4736"+ + "\u0000\u0000\u0000\u4661\u0000\u4662\u0000\u4663"+ + "\u0000\u0000\u0000\u0000\u4664\u0000\u4665\u0000"+ + "\u4666\u4667\u0000\u4668\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4669\u466A\u466B"+ + "\u0000\u466C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u466D\u466E\u0000\u466F"+ + "\u4670\u0000\u0000\u0000\u4671\u0000\u0000\u4672"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4673\u0000\u4674\u0000\u4675\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4676\u0000\u0000\u0000\u4677\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4678\u0000\u4679"+ + "\u467A\u467B\u467C\u0000\u467D\u0000\u467E\u0000"+ + "\u0000\u0000\u4721\u0000\u4722\u0000\u0000\u0000"+ + "\u4723\u0000\u0000\u0000\u0000\u0000\u0000\u4724"+ + "\u0000\u4725\u0000\u4726\u4727\u0000\u4728\u0000"+ + "\u0000\u0000\u4729\u0000\u472A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u472B\u0000\u0000\u472C"+ + "\u0000\u0000\u472D\u0000\u0000\u0000\u472E\u472F"+ + "\u0000\u4730\u0000\u4731\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4732\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4733\u4734"+ + "\u4735\u0000\u0000\u0000\u0000\u0000\u4737\u4738"+ + "\u0000\u4739\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u473A\u0000\u0000\u473B\u0000\u0000\u473C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u473D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u473E\u473F"+ + "\u0000\u4740\u0000\u0000\u0000\u4741\u0000\u4742"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4743"+ + "\u4744\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4745\u0000\u0000\u0000"+ + "\u0000\u0000\u4746\u0000\u0000\u0000\u0000\u4747"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4748\u4749\u0000\u474A\u0000\u474B\u474C"+ + "\u474D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u474E\u0000\u474F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4750\u0000\u0000\u4751"+ + "\u0000\u4752\u0000\u0000\u0000\u4753\u0000\u4754"+ + "\u0000\u0000\u0000\u0000\u4755\u0000\u0000\u0000"+ + "\u4756\u0000\u4757\u0000\u0000\u0000\u4758\u4759"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u475A\u0000"+ + "\u0000\u0000\u0000\u475B\u0000\u475C\u0000\u475D"+ + "\u475E\u0000\u475F\u0000\u0000\u4760\u0000\u0000"+ + "\u0000\u4761\u0000\u0000\u0000\u0000\u0000\u4762"+ + "\u4763\u0000\u744C\u0000\u4764\u0000\u4765\u0000"+ + "\u744B\u0000\u0000\u0000\u4766\u0000\u0000\u0000"+ + "\u4767\u0000\u0000\u0000\u4768\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4769\u0000"+ + "\u0000\u0000\u476A\u0000\u0000\u0000\u0000\u476B"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u476C\u0000\u0000\u0000\u476D\u0000"+ + "\u0000\u476E\u0000\u476F\u4770\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4771\u4772\u0000\u0000"+ + "\u4773\u4774\u0000\u4775\u0000\u0000\u0000\u4776"+ + "\u0000\u4777\u4778\u4779\u477A\u0000\u0000\u477B"+ + "\u0000\u0000\u0000\u0000\u477C\u477D\u477E\u0000"+ + "\u0000\u0000\u4821\u4822\u0000\u0000\u0000\u0000"+ + "\u4823\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4824\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4825\u0000\u4826\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4827\u0000\u0000"+ + "\u0000\u0000\u0000\u4828\u0000\u0000\u0000\u0000"+ + "\u0000\u4829\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u482A\u0000\u0000\u0000\u0000\u0000\u0000\u482B"+ + "\u0000\u0000\u0000\u0000\u0000\u482C\u482D\u0000"+ + "\u0000\u482E\u0000\u482F\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4830\u0000\u0000\u0000\u4831"+ + "\u4832\u4833\u0000\u4834\u0000\u0000\u0000\u4835"+ + "\u4836\u0000\u4837\u0000\u0000\u4838\u4839\u483A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u483B\u0000\u483C\u483D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u483E\u0000\u483F\u0000\u4840\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4841\u0000\u0000\u0000"+ + "\u4842\u0000\u4843\u0000\u4844\u4845\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4846\u0000"+ + "\u4847\u0000\u4848\u4849\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u484A\u0000"+ + "\u0000\u484B\u484C\u0000\u0000\u4853\u0000\u484D"+ + "\u484E\u0000\u0000\u484F\u0000\u0000\u4850\u0000"+ + "\u0000\u0000\u0000\u4851\u4852\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4854"+ + "\u0000\u4855\u4856\u4857\u0000\u0000\u0000\u4858"+ + "\u0000\u4859\u485A\u0000\u0000\u485B\u485C\u0000"+ + "\u0000\u485D\u485E\u0000\u0000\u0000\u0000\u0000"+ + "\u485F\u0000\u0000\u0000\u4860\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4861\u4862\u0000"+ + "\u0000\u0000\u0000\u4863\u0000\u0000\u0000\u4864"+ + "\u4865\u0000\u0000\u4866\u4867\u4868\u0000\u0000"+ + "\u4869\u0000\u486A\u486B\u486C\u0000\u486D\u0000"+ + "\u0000\u0000\u486E\u0000\u0000\u0000\u0000\u486F"+ + "\u4870\u0000\u0000\u0000\u0000\u4871\u4872\u4873"+ + "\u4874\u0000\u0000\u0000\u0000\u0000\u4875\u4876"+ + "\u4877\u0000\u0000\u0000\u0000\u4878\u4879\u0000"+ + "\u0000\u0000\u0000\u0000\u487A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u487B\u0000\u487C"+ + "\u487D\u0000\u487E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4921\u0000\u0000\u0000\u4922\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4923\u4924\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4925\u0000\u0000\u0000\u0000\u4926\u0000\u0000"+ + "\u0000\u4927\u0000\u0000\u4928\u4929\u0000\u0000"+ + "\u492A\u0000\u0000\u0000\u0000\u492B\u492C\u492D"+ + "\u0000\u0000\u0000\u0000\u0000\u492E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u492F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4930\u0000\u0000\u4931\u0000\u0000\u0000\u0000"+ + "\u744D\u0000\u0000\u0000\u0000\u0000\u0000\u4932"+ + "\u0000\u0000\u0000\u0000\u4933\u0000\u0000\u4934"+ + "\u0000\u4935\u0000\u0000\u4936\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4937\u4938\u0000\u0000\u0000"+ + "\u4939\u493A\u493B\u493C\u0000\u0000\u4941\u0000"+ + "\u0000\u0000\u0000\u0000\u493D\u493E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u493F\u4940\u0000"+ + "\u0000\u0000\u0000\u0000\u4942\u4943\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4944\u0000\u4945\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4946\u4947\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4948\u0000"+ + "\u0000\u4949\u0000\u0000\u0000\u494A\u494B\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u494C\u494D\u494E\u494F"+ + "\u4950\u0000\u0000\u4951\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4952\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4953\u0000\u0000\u0000\u0000"+ + "\u4954\u4955\u0000\u0000\u4956\u0000\u0000\u4957"+ + "\u0000\u0000\u0000\u742E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4958\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4959\u0000\u495A\u495B\u495C\u495D\u0000"+ + "\u495E\u0000\u0000\u0000\u495F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4960\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4961\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4962\u4963\u4964\u4965\u4966"+ + "\u0000\u0000\u0000\u4967\u4968\u0000\u0000\u4969"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u496A\u0000"+ + "\u496B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u496C\u0000\u496D\u0000\u496E"+ + "\u496F\u4970\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4971\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4972\u0000\u0000\u0000\u4973\u4974\u4975"+ + "\u0000\u0000\u4976\u4977\u0000\u0000\u0000\u0000"+ + "\u4978\u0000\u4979\u0000\u0000\u0000\u0000\u497A"+ + "\u0000\u0000\u497B\u0000\u497C\u0000\u497D\u0000"+ + "\u497E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4A21\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4A22\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4A23\u0000\u0000\u0000\u0000\u4A24\u0000\u4A25"+ + "\u0000\u0000\u0000\u0000\u4A26\u0000\u0000\u0000"+ + "\u0000\u0000\u4A27\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4A28\u4A29\u0000\u0000\u0000\u0000"+ + "\u4A2A\u0000\u4A2B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4A2C"+ + "\u4A2D\u0000\u4A2E\u4A2F\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4A30\u0000\u0000\u0000\u0000\u4A31"+ + "\u4A32\u4A33\u0000\u0000\u4A34\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A35\u4A36\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A37\u0000\u0000\u4A38\u0000"+ + "\u0000\u4A39\u4A3A\u0000\u4A3B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4A3C\u0000\u0000\u0000\u0000\u0000\u4A3D\u0000"+ + "\u4A3E\u0000\u0000\u0000\u0000\u0000\u0000\u4A3F"+ + "\u4A40\u4A41\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A42\u0000\u0000\u0000\u4A43"+ + "\u0000\u0000\u4A44\u0000\u0000\u4A45\u0000\u4A46"+ + "\u0000\u0000\u0000\u0000\u4A47\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A48\u0000\u0000\u0000\u4A49"+ + "\u0000\u0000\u0000\u0000\u4A4A\u0000\u0000\u0000"+ + "\u4A4B\u4A4C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4A4D\u4A4E\u4A4F\u0000\u4A50\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4A51\u4A52"+ + "\u4A53\u0000\u0000\u4A54\u0000\u4A55\u4A56\u0000"+ + "\u0000\u0000\u4A57\u0000\u4A58\u0000\u4A59\u0000"+ + "\u4A5A\u0000\u0000\u4A5B\u0000\u0000\u0000\u0000"+ + "\u4A5C\u0000\u0000\u4A5D\u0000\u0000\u4A5E\u4A5F"+ + "\u0000\u4A60\u0000\u0000\u0000\u0000\u0000\u4A61"+ + "\u4A62\u0000\u0000\u4A63\u4A64\u0000\u0000\u4A65"+ + "\u0000\u0000\u0000\u0000\u4A66\u0000\u0000\u0000"+ + "\u0000\u4A67\u0000\u0000\u0000\u4A68\u4A69\u0000"+ + "\u0000\u0000\u0000\u4A6A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A6B\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4A6C\u0000\u0000\u0000\u0000\u4A6D\u4A6E\u0000"+ + "\u0000\u4A6F\u0000\u0000\u4A70\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4A71\u0000"+ + "\u0000\u4A72\u0000\u0000\u0000\u0000\u0000\u4A73"+ + "\u0000\u4A74\u0000\u0000\u4A75\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4A76\u4A77\u0000"+ + "\u4A78\u0000\u0000\u0000\u0000\u0000\u0000\u4A79"+ + "\u0000\u0000\u0000\u0000\u0000\u4A7A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4A7B\u4A7C\u0000\u0000\u0000"+ + "\u0000\u0000\u4A7D\u4A7E\u0000\u0000\u4B21\u0000"+ + "\u0000\u0000\u4B22\u0000\u4B23\u4B24\u0000\u4B25"+ + "\u0000\u0000\u0000\u4B26\u0000\u4B27\u0000\u0000"+ + "\u0000\u0000\u4B28\u4B29\u0000\u0000\u0000\u0000"+ + "\u4B2A\u4B2B\u0000\u0000\u0000\u0000\u4B2C\u0000"+ + "\u0000\u0000\u4B2D\u0000\u4B2E\u0000\u0000\u4B2F"+ + "\u4B30\u0000\u0000\u0000\u4B31\u0000\u0000\u0000"+ + "\u0000\u4B32\u4B33\u0000\u0000\u4B34\u0000\u0000"+ + "\u0000\u0000\u4B35\u4B36\u0000\u4B37\u0000\u0000"+ + "\u0000\u0000\u0000\u4B38\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4B39\u0000\u0000"+ + "\u4B3A\u0000\u4B3B\u0000\u0000\u0000\u4B3C\u0000"+ + "\u4B3D\u0000\u0000\u0000\u0000\u4B3E\u4B3F\u4B40"+ + "\u4B41\u0000\u0000\u0000\u0000\u0000\u4B42\u4B43"+ + "\u0000\u4B44\u0000\u4B45\u4B46\u0000\u4B47\u4B48"+ + "\u0000\u4B49\u0000\u0000\u0000\u0000\u0000\u4B4A"+ + "\u0000\u4B4B\u0000\u0000\u4B4C\u0000\u0000\u0000"+ + "\u4B4D\u4B4E\u0000\u4B4F\u0000\u4B50\u4B51\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4B52\u0000"+ + "\u4B53\u0000\u0000\u4B54\u0000\u4B55\u0000\u4B56"+ + "\u4B57\u0000\u0000\u0000\u4B58\u0000\u4B59\u4B5A"+ + "\u4B5B\u0000\u4B5C\u0000\u0000\u4B5D\u4B5E\u0000"+ + "\u0000\u0000\u4B5F\u4B60\u0000\u4B61\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4B62\u0000\u4B63"+ + "\u0000\u4B64\u0000\u0000\u4B65\u4B66\u0000\u4B67"+ + "\u0000\u0000\u0000\u0000\u0000\u4B68\u4B69\u0000"+ + "\u0000\u4B6A\u0000\u4B6B\u4B6C\u0000\u0000\u4B6D"+ + "\u0000\u0000\u4B6E\u4B6F\u0000\u0000\u4B70\u0000"+ + "\u0000\u4B71\u0000\u0000\u0000\u4B72\u0000\u0000"+ + "\u0000\u4B73\u0000\u4B74\u0000\u0000\u4B75\u4B76"+ + "\u0000\u4B77\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4B78\u4B79\u0000\u4B7A"+ + "\u0000\u4B7B\u4B7C\u4B7D\u0000\u4B7E\u0000\u4C21"+ + "\u4C22\u4C23\u0000\u0000\u4C24\u0000\u0000\u4C25"+ + "\u0000\u0000\u4C26\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4C27\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4C28\u4C29\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4C2A\u0000\u4C2B\u0000"+ + "\u4C2C\u4C2D\u4C2E\u4C2F\u4C30\u4C31\u4C32\u4C33"+ + "\u4C34\u4C35\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4C36\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4C37\u0000\u0000\u4C38\u4C39\u0000\u4C3A\u4C3B"+ + "\u0000\u0000\u0000\u4C3C\u0000\u4C3D\u0000\u0000"+ + "\u0000\u4C3E\u4C3F\u0000\u0000\u0000\u0000\u4C40"+ + "\u0000\u0000\u0000\u0000\u0000\u4C41\u0000\u0000"+ + "\u0000\u0000\u4C42\u0000\u0000\u0000\u4C43\u4C44"+ + "\u4C45\u0000\u0000\u4C46\u0000\u4C47\u4C48\u0000"+ + "\u0000\u4C49\u4C4A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4C4B\u4C4C\u0000\u0000\u0000\u4C4D\u4C4E\u4C4F"+ + "\u0000\u4C50\u0000\u0000\u0000\u0000\u0000\u4C51"+ + "\u4C52\u4C53\u4C54\u0000\u0000\u0000\u0000\u0000"+ + "\u4C55\u4C56\u4C57\u0000\u4C58\u0000\u0000\u4C59"+ + "\u4C5A\u4C5B\u0000\u4C5C\u0000\u0000\u4C5D\u0000"+ + "\u4C5E\u4C5F\u4C60\u4C61\u0000\u0000\u4C62\u4C63"+ + "\u0000\u4C64\u4C65\u0000\u0000\u4C66\u0000\u0000"+ + "\u0000\u4C67\u0000\u4C68\u0000\u0000\u0000\u4C69"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4C6A\u4C6B\u0000\u0000\u4C6C\u0000\u0000\u0000"+ + "\u4C6D\u0000\u0000\u4C6E\u0000\u0000\u0000\u0000"+ + "\u4C6F\u0000\u4C70\u4C71\u0000\u0000\u4C72\u4C73"+ + "\u0000\u0000\u0000\u0000\u4C74\u0000\u0000\u0000"+ + "\u4C75\u0000\u4C76\u4C77\u0000\u0000\u0000\u4C78"+ + "\u0000\u0000\u0000\u0000\u4C79\u0000\u0000\u0000"+ + "\u0000\u0000\u4C7A\u4C7B\u4C7C\u0000\u0000\u4C7D"+ + "\u0000\u7450\u0000\u0000\u0000\u0000\u4C7E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4D21\u0000\u0000\u0000\u4D22\u4D23"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4D24\u4D25\u0000\u0000\u4D26\u0000\u0000\u4D27"+ + "\u0000\u4D28\u4D29\u0000\u0000\u0000\u0000\u4D2A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4D2B\u0000"+ + "\u0000\u4D2C\u0000\u0000\u0000\u4D2D\u4D2E\u4D2F"+ + "\u4D30\u0000\u0000\u4D31\u0000\u0000\u0000\u4D32"+ + "\u4D33\u0000\u0000\u0000\u0000\u0000\u4D34\u0000"+ + "\u4D35\u0000\u4D36\u0000\u0000\u0000\u0000\u4D37"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4D38\u4D39"+ + "\u0000\u4D3A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4D3B"+ + "\u0000\u4D3C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4D3D\u4D3E\u4D3F\u4D40\u4D41\u4D42\u0000"+ + "\u0000\u4D43\u0000\u0000\u0000\u4D44\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4D45\u0000\u4D46\u4D47\u0000\u4D48\u0000\u0000"+ + "\u0000\u4D49\u0000\u0000\u4D4A\u0000\u0000\u0000"+ + "\u0000\u0000\u4D4B\u0000\u4D4C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4D4D\u0000\u0000\u0000"+ + "\u0000\u0000\u4D4E\u0000\u0000\u0000\u0000\u4D4F"+ + "\u4D50\u4D51\u0000\u0000\u4D52\u0000\u4D53\u0000"+ + "\u0000\u0000\u0000\u0000\u4D54\u0000\u4D55\u4D56"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u4D57"+ + "\u0000\u0000\u0000\u0000\u4D58\u0000\u0000\u4D59"+ + "\u4D5A\u4D5B\u0000\u0000\u4D5C\u0000\u0000\u4D5D"+ + "\u0000\u0000\u0000\u0000\u4D5E\u0000\u4D5F\u4D60"+ + "\u0000\u4D61\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4D62\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4D63\u0000\u4D64\u4D65\u4D66\u0000\u0000\u4D67"+ + "\u4D68\u0000\u4D69\u0000\u4D6A\u0000\u0000\u4D6B"+ + "\u0000\u0000\u4D6C\u4D6D\u0000\u4D6E\u4D6F\u0000"+ + "\u0000\u4D70\u0000\u4D71\u4D72\u4D73\u4D74\u0000"+ + "\u0000\u0000\u0000\u4D75\u0000\u4D76\u4D77\u0000"+ + "\u0000\u4D78\u0000\u0000\u0000\u4D79\u0000\u0000"+ + "\u0000\u0000\u4D7A\u4D7B\u0000\u4D7C\u0000\u0000"+ + "\u4D7D\u4D7E\u4E21\u0000\u4E22\u0000\u0000\u0000"+ + "\u4E24\u4E25\u0000\u4E26\u4E27\u4E28\u0000\u0000"+ + "\u0000\u4E29\u4E23\u4E2A\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4E2B\u0000\u0000"+ + "\u0000\u4E2C\u0000\u0000\u0000\u0000\u0000\u4E2D"+ + "\u0000\u0000\u0000\u0000\u4E2E\u4E2F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4E30\u4E31\u4E32"+ + "\u0000\u4E33\u0000\u0000\u4E34\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4E35\u7451\u0000\u0000\u4E36\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4E37\u4E38\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4E39\u0000\u0000"+ + "\u0000\u0000\u0000\u4E3A\u4E3B\u4E3C\u7452\u4E3D"+ + "\u4E3E\u0000\u4E3F\u4E40\u4E41\u4E42\u4E43\u4E44"+ + "\u4E45\u0000\u4E46\u0000\u0000\u4E47\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4E48\u0000\u0000"+ + "\u0000\u4E49\u0000\u0000\u0000\u4E4A\u0000\u0000"+ + "\u0000\u4E4B\u0000\u4E4C\u4E4D\u0000\u4E4E\u0000"+ + "\u0000\u0000\u0000\u0000\u4E4F\u0000\u0000\u0000"+ + "\u0000\u4E50\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u4E51\u0000\u0000\u0000\u0000\u0000\u4E52\u0000"+ + "\u4E53\u0000\u0000\u0000\u4E54\u0000\u0000\u0000"+ + "\u4E55\u4E56\u0000\u0000\u0000\u0000\u4E57\u0000"+ + "\u0000\u4E58\u0000\u0000\u4E59\u0000\u0000\u0000"; + + private final static String innerIndex3= + "\u4E5A\u0000\u0000\u0000\u0000\u0000\u4E5B\u0000"+ + "\u0000\u0000\u4E5C\u0000\u0000\u0000\u4E5D\u0000"+ + "\u0000\u0000\u4E5E\u0000\u4E5F\u4E60\u0000\u4E61"+ + "\u0000\u4E62\u4E63\u0000\u4E64\u0000\u0000\u0000"+ + "\u0000\u0000\u4E65\u0000\u0000\u0000\u0000\u0000"+ + "\u4E66\u0000\u0000\u0000\u0000\u4E67\u4E68\u4E69"+ + "\u0000\u0000\u0000\u0000\u4E6A\u4E6B\u4E6C\u0000"+ + "\u0000\u4E6D\u0000\u0000\u0000\u4E6E\u4E6F\u0000"+ + "\u0000\u0000\u4E70\u0000\u0000\u4E71\u4E72\u0000"+ + "\u0000\u0000\u4E73\u0000\u0000\u4E74\u4E75\u4E76"+ + "\u0000\u0000\u4E77\u0000\u0000\u0000\u4E78\u4E79"+ + "\u0000\u0000\u0000\u0000\u4E7A\u0000\u4E7B\u4E7C"+ + "\u4E7D\u0000\u4E7E\u0000\u4F21\u0000\u0000\u4F22"+ + "\u0000\u0000\u4F23\u0000\u4F24\u0000\u0000\u0000"+ + "\u4F25\u0000\u4F26\u4F27\u4F28\u0000\u0000\u0000"+ + "\u0000\u0000\u4F29\u0000\u0000\u4F2A\u0000\u0000"+ + "\u4F2B\u0000\u0000\u0000\u4F2C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4F2D\u4F2E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4F2F\u4F30\u4F31\u0000"+ + "\u0000\u0000\u4F32\u0000\u0000\u0000\u0000\u4F33"+ + "\u0000\u0000\u4F34\u0000\u0000\u0000\u0000\u4F35"+ + "\u0000\u0000\u4F36\u0000\u0000\u0000\u4F37\u4F38"+ + "\u0000\u4F39\u0000\u0000\u0000\u4F3A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u4F3B\u0000"+ + "\u0000\u0000\u0000\u4F3C\u0000\u0000\u0000\u0000"+ + "\u0000\u4F3D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u4F3E\u4F3F\u0000\u0000\u4F40\u0000\u0000"+ + "\u0000\u4F41\u0000\u0000\u0000\u0000\u4F42\u4F43"+ + "\u4F44\u0000\u0000\u0000\u4F45\u0000\u4F46\u0000"+ + "\u0000\u0000\u4F47\u0000\u4F48\u0000\u0000\u0000"+ + "\u4F49\u4F4A\u0000\u0000\u4F4B\u0000\u0000\u0000"+ + "\u4F4C\u0000\u0000\u4F4D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4F4E\u4F4F\u0000"+ + "\u0000\u4F50\u0000\u0000\u0000\u4F51\u4F52\u0000"+ + "\u0000\u4F53\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4F54\u0000\u0000"+ + "\u0000\u4F55\u4F56\u4F57\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u4F58\u4F59\u0000"+ + "\u4F5A\u0000\u0000\u0000\u0000\u4F5B\u0000\u4F5C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u4F5D\u4F5E\u0000\u0000\u4F5F"+ + "\u4F60\u0000\u0000\u0000\u4F61\u0000\u4F62\u0000"+ + "\u0000\u0000\u4F63\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u4F64\u0000\u4F65\u0000"+ + "\u4F66\u4F67\u0000\u4F68\u4F69\u0000\u0000\u0000"+ + "\u4F6A\u0000\u4F6B\u0000\u0000\u0000\u4F6C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4F6D\u0000\u0000\u0000\u4F6E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u4F6F\u0000\u0000\u0000\u0000\u4F70"+ + "\u0000\u0000\u0000\u0000\u4F71\u0000\u0000\u0000"+ + "\u4F72\u0000\u0000\u0000\u0000\u4F74\u4F75\u4F76"+ + "\u0000\u4F73\u0000\u0000\u4F77\u0000\u0000\u0000"+ + "\u4F78\u0000\u0000\u0000\u4F79\u4F7A\u0000\u0000"+ + "\u4F7B\u4F7C\u4F7D\u4F7E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5021\u0000\u5022\u0000\u5023"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5024"+ + "\u5025\u5026\u0000\u0000\u5027\u0000\u5028\u0000"+ + "\u0000\u0000\u5029\u502A\u0000\u502B\u502C\u0000"+ + "\u0000\u0000\u0000\u502E\u0000\u0000\u0000\u502F"+ + "\u5030\u5031\u0000\u0000\u502D\u0000\u5032\u0000"+ + "\u0000\u0000\u5033\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5034\u5035\u0000\u0000\u5037\u5038"+ + "\u0000\u0000\u5039\u503A\u0000\u0000\u0000\u503B"+ + "\u5036\u0000\u0000\u0000\u0000\u0000\u503C\u0000"+ + "\u0000\u0000\u0000\u0000\u503D\u0000\u0000\u0000"+ + "\u503E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u503F\u0000\u5040\u0000\u5041\u5042"+ + "\u5043\u0000\u0000\u0000\u0000\u5044\u0000\u5045"+ + "\u0000\u5046\u0000\u0000\u0000\u5047\u0000\u0000"+ + "\u7454\u5048\u0000\u0000\u5049\u504A\u0000\u0000"+ + "\u0000\u0000\u0000\u504B\u0000\u504C\u0000\u504D"+ + "\u0000\u0000\u0000\u0000\u504E\u504F\u5050\u0000"+ + "\u0000\u0000\u5051\u5052\u0000\u0000\u0000\u5053"+ + "\u0000\u5054\u0000\u0000\u5055\u0000\u0000\u0000"+ + "\u5056\u0000\u0000\u5057\u5058\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5059"+ + "\u0000\u505A\u0000\u505B\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u505C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u505D\u0000\u505E\u505F\u0000\u5060\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5061\u5062\u0000\u0000\u0000"+ + "\u0000\u5063\u0000\u5064\u5065\u5066\u5067\u0000"+ + "\u5068\u0000\u0000\u5069\u506A\u0000\u0000\u0000"+ + "\u0000\u506B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u506C\u506D\u0000\u506E\u0000\u0000\u0000\u506F"+ + "\u0000\u5070\u0000\u0000\u5071\u0000\u0000\u0000"+ + "\u5072\u0000\u0000\u5073\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5074\u0000\u5075\u0000\u0000\u5076"+ + "\u5077\u0000\u5078\u0000\u0000\u0000\u0000\u5079"+ + "\u0000\u0000\u0000\u0000\u507A\u0000\u507B\u0000"+ + "\u0000\u0000\u507C\u0000\u0000\u507D\u507E\u0000"+ + "\u5121\u0000\u5122\u0000\u0000\u5123\u0000\u0000"+ + "\u0000\u0000\u5124\u5125\u0000\u5126\u0000\u0000"+ + "\u0000\u5127\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5128\u0000\u0000\u0000\u5129\u0000\u0000\u0000"+ + "\u0000\u0000\u512A\u512B\u0000\u0000\u0000\u512C"+ + "\u0000\u512D\u512E\u0000\u512F\u0000\u0000\u0000"+ + "\u0000\u5130\u0000\u0000\u0000\u5131\u0000\u0000"+ + "\u0000\u0000\u0000\u5132\u0000\u0000\u5133\u0000"+ + "\u0000\u5134\u0000\u0000\u0000\u0000\u0000\u5135"+ + "\u0000\u0000\u0000\u5136\u0000\u5137\u0000\u5138"+ + "\u5139\u0000\u0000\u0000\u513A\u513B\u0000\u0000"+ + "\u513C\u513D\u513E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u513F\u5140\u0000\u5141"+ + "\u5142\u0000\u0000\u0000\u5143\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5144\u5145\u0000"+ + "\u0000\u5146\u0000\u0000\u5147\u5148\u0000\u5149"+ + "\u514A\u0000\u0000\u0000\u0000\u514B\u0000\u514C"+ + "\u0000\u0000\u514D\u0000\u0000\u514E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u514F\u0000\u0000"+ + "\u5150\u0000\u0000\u0000\u0000\u0000\u5151\u0000"+ + "\u5152\u0000\u5153\u0000\u0000\u5154\u5155\u0000"+ + "\u0000\u0000\u5156\u5157\u0000\u0000\u0000\u0000"+ + "\u5158\u5159\u0000\u0000\u515A\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u515B\u0000"+ + "\u515C\u0000\u0000\u515D\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u515E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u515F\u0000\u5160\u0000\u0000"+ + "\u0000\u5161\u0000\u5162\u5163\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5164\u0000"+ + "\u0000\u5165\u0000\u0000\u5166\u0000\u5167\u0000"+ + "\u0000\u5168\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5169\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u7459"+ + "\u516A\u516B\u0000\u516C\u516D\u0000\u0000\u0000"+ + "\u0000\u516E\u0000\u0000\u516F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5170\u0000\u5171\u5172\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5173"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5174\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5175"+ + "\u0000\u0000\u0000\u5176\u0000\u0000\u0000\u5177"+ + "\u0000\u5178\u5179\u517A\u0000\u517B\u517C\u517D"+ + "\u517E\u5221\u0000\u0000\u5222\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5223\u0000\u5224"+ + "\u5225\u5226\u0000\u0000\u0000\u0000\u0000\u5227"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5228\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5229\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u522A\u0000\u0000\u0000\u522B\u0000\u522C\u0000"+ + "\u0000\u522D\u522E\u0000\u0000\u522F\u0000\u5230"+ + "\u0000\u0000\u5231\u5232\u0000\u0000\u0000\u5233"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5234\u0000\u0000\u0000"+ + "\u0000\u5235\u0000\u0000\u0000\u0000\u5236\u0000"+ + "\u5237\u5238\u0000\u0000\u0000\u0000\u5239\u0000"+ + "\u0000\u0000\u0000\u523A\u0000\u0000\u523B\u0000"+ + "\u523C\u0000\u0000\u0000\u0000\u523D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u523E\u0000\u0000\u523F"+ + "\u5240\u0000\u5241\u0000\u0000\u5242\u5243\u0000"+ + "\u0000\u0000\u5244\u5245\u5246\u5247\u0000\u0000"+ + "\u0000\u0000\u5248\u0000\u0000\u5249\u0000\u0000"+ + "\u524A\u0000\u524B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u524C\u0000\u524D\u524E"+ + "\u0000\u524F\u5250\u5251\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5252\u0000\u5253\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5254\u0000\u5255\u5256\u0000\u0000"+ + "\u5257\u5258\u5259\u0000\u525A\u0000\u525B\u0000"+ + "\u0000\u525C\u525D\u525E\u525F\u0000\u5260\u0000"+ + "\u0000\u5261\u0000\u5262\u5263\u0000\u5264\u5265"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5266\u0000\u5267\u0000\u0000\u0000\u0000"+ + "\u5268\u0000\u0000\u0000\u0000\u5269\u526A\u0000"+ + "\u526B\u0000\u0000\u0000\u526C\u0000\u0000\u0000"+ + "\u0000\u526D\u0000\u526E\u526F\u0000\u5270\u0000"+ + "\u0000\u5271\u5272\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5273\u0000"+ + "\u0000\u0000\u5274\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5276\u5277\u5278\u0000\u5275\u0000\u0000"+ + "\u0000\u5279\u527A\u527B\u527C\u527D\u527E\u0000"+ + "\u0000\u5321\u0000\u5322\u0000\u0000\u0000\u5323"+ + "\u0000\u5324\u0000\u0000\u0000\u5325\u5326\u0000"+ + "\u5327\u0000\u5328\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5329\u0000\u0000\u532A\u532B\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u532C\u532D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u532E"+ + "\u0000\u0000\u0000\u0000\u532F\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5330\u0000"+ + "\u5331\u0000\u0000\u0000\u0000\u0000\u5332\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5333\u0000\u0000\u0000\u0000\u0000\u5334\u5335"+ + "\u0000\u0000\u5336\u5337\u5338\u0000\u0000\u5339"+ + "\u0000\u0000\u0000\u0000\u533A\u0000\u0000\u533B"+ + "\u533C\u533D\u0000\u0000\u0000\u533E\u0000\u533F"+ + "\u0000\u0000\u0000\u5340\u5341\u5342\u0000\u5343"+ + "\u0000\u5344\u5345\u0000\u0000\u5346\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5347\u0000"+ + "\u0000\u5348\u0000\u5349\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u534A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u534B\u0000\u0000\u0000\u534C"+ + "\u534D\u534E\u0000\u0000\u0000\u0000\u0000\u534F"+ + "\u0000\u5350\u5351\u5352\u0000\u0000\u5353\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5354\u5355\u0000"+ + "\u0000\u0000\u0000\u5356\u0000\u0000\u5357\u0000"+ + "\u0000\u0000\u5358\u0000\u0000\u5359\u0000\u0000"+ + "\u0000\u535A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u535B\u535C\u535D\u0000"+ + "\u535E\u535F\u0000\u0000\u0000\u0000\u0000\u5360"+ + "\u5361\u0000\u0000\u0000\u0000\u5362\u0000\u0000"+ + "\u0000\u5363\u0000\u5364\u0000\u0000\u0000\u5365"+ + "\u0000\u5366\u5367\u0000\u5368\u5369\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u536A\u0000\u536B"+ + "\u0000\u0000\u536C\u0000\u0000\u0000\u0000\u0000"+ + "\u536D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u536E\u0000\u536F\u5370\u0000\u0000\u0000\u5371"+ + "\u0000\u5372\u5373\u5374\u0000\u5375\u5376\u0000"+ + "\u5377\u0000\u0000\u5378\u5379\u537A\u0000\u0000"+ + "\u0000\u537B\u0000\u0000\u0000\u0000\u537C\u537D"+ + "\u0000\u0000\u0000\u0000\u0000\u537E\u5421\u0000"+ + "\u745C\u0000\u0000\u0000\u0000\u0000\u5422\u5423"+ + "\u0000\u0000\u5424\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5425\u0000\u0000\u5426\u5427"+ + "\u0000\u5428\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5429\u542A\u542B\u542C\u542D\u0000"+ + "\u0000\u0000\u0000\u0000\u542E\u542F\u5430\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u745D\u5431"+ + "\u0000\u5432\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5434\u0000\u0000\u5435\u5436\u0000"+ + "\u0000\u0000\u5437\u5438\u0000\u5439\u0000\u0000"+ + "\u0000\u543A\u0000\u0000\u0000\u543B\u543C\u0000"+ + "\u0000\u543D\u543E\u0000\u0000\u0000\u0000\u0000"+ + "\u5433\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u543F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5440\u5441\u0000\u0000\u0000\u5442\u0000\u5443"+ + "\u0000\u0000\u0000\u0000\u5444\u5445\u0000\u0000"+ + "\u5446\u0000\u0000\u0000\u0000\u0000\u0000\u5447"+ + "\u5448\u0000\u0000\u0000\u5449\u544A\u0000\u544B"+ + "\u0000\u0000\u0000\u544C\u0000\u0000\u544D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u544E"+ + "\u0000\u0000\u0000\u0000\u544F\u5450\u0000\u5451"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5452\u0000"+ + "\u5453\u0000\u5454\u0000\u0000\u0000\u0000\u0000"+ + "\u5455\u0000\u0000\u0000\u0000\u0000\u0000\u5456"+ + "\u0000\u5457\u5458\u0000\u0000\u5459\u0000\u0000"+ + "\u0000\u0000\u0000\u545A\u0000\u0000\u545B\u545C"+ + "\u0000\u0000\u0000\u545D\u0000\u0000\u0000\u0000"+ + "\u545E\u0000\u0000\u0000\u0000\u0000\u545F\u0000"+ + "\u0000\u5460\u0000\u0000\u0000\u0000\u5461\u5462"+ + "\u0000\u0000\u5463\u0000\u0000\u5464\u0000\u0000"+ + "\u0000\u5465\u0000\u0000\u0000\u5466\u0000\u0000"+ + "\u5467\u0000\u5468\u0000\u0000\u5469\u546A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u546C\u546B\u546D\u546E\u546F"+ + "\u0000\u0000\u0000\u5470\u5471\u0000\u0000\u5472"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5473"+ + "\u0000\u0000\u5474\u5475\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5476\u5477\u5478\u0000\u0000"+ + "\u0000\u5479\u0000\u547A\u547B\u547C\u547D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u547E\u0000\u0000"+ + "\u0000\u5521\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5522\u5523\u5524"+ + "\u5525\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5526\u0000\u5527\u0000\u5528"+ + "\u5529\u552A\u0000\u0000\u0000\u0000\u552B\u552C"+ + "\u0000\u0000\u0000\u0000\u552D\u0000\u0000\u0000"+ + "\u0000\u552E\u552F\u0000\u0000\u0000\u5530\u0000"+ + "\u0000\u0000\u5531\u0000\u0000\u5532\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5533\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5534\u0000\u0000\u5535"+ + "\u5536\u0000\u0000\u5537\u0000\u0000\u0000\u0000"+ + "\u5538\u0000\u0000\u0000\u0000\u0000\u5539\u553A"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u553B\u0000\u0000\u0000\u553C"+ + "\u0000\u0000\u0000\u553D\u0000\u553E\u0000\u0000"+ + "\u553F\u0000\u0000\u0000\u5540\u0000\u5541\u5542"+ + "\u0000\u0000\u5543\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5544\u0000\u0000\u5545\u5546\u5547"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5548"+ + "\u5549\u0000\u554A\u0000\u0000\u554B\u554C\u554D"+ + "\u0000\u554E\u0000\u554F\u5550\u0000\u5551\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5552\u5553\u5554"+ + "\u5555\u0000\u0000\u0000\u5556\u0000\u5557\u0000"+ + "\u0000\u0000\u0000\u0000\u5558\u0000\u5559\u0000"+ + "\u555A\u0000\u0000\u0000\u555B\u555C\u0000\u555D"+ + "\u0000\u555E\u555F\u0000\u5560\u0000\u5561\u0000"+ + "\u5562\u0000\u0000\u0000\u5563\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5564\u0000\u0000\u0000\u5565\u0000\u5566\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5567\u0000\u0000"+ + "\u0000\u5568\u0000\u0000\u0000\u5569\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u556A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u556B\u0000\u0000\u0000\u0000\u0000\u556C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u556D\u0000\u556E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u556F\u5570"+ + "\u0000\u0000\u0000\u5571\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5572\u5573\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5574\u0000\u0000\u0000\u0000\u5575\u0000\u5576"+ + "\u0000\u0000\u5577\u0000\u5578\u5579\u0000\u557A"+ + "\u557B\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u557C\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u557D\u557E\u0000"+ + "\u5621\u0000\u5622\u5623\u0000\u0000\u5624\u0000"+ + "\u0000\u5625\u5626\u0000\u0000\u0000\u5627\u0000"+ + "\u0000\u0000\u0000\u5628\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5629\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u562A\u562B"+ + "\u562C\u0000\u0000\u0000\u562D\u0000\u562E\u0000"+ + "\u562F\u0000\u0000\u0000\u5630\u0000\u0000\u5631"+ + "\u0000\u0000\u0000\u0000\u5632\u0000\u0000\u0000"+ + "\u5633\u0000\u0000\u0000\u0000\u5634\u0000\u0000"+ + "\u0000\u0000\u5635\u0000\u5636\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5637\u0000\u5638"+ + "\u0000\u0000\u5639\u0000\u563A\u0000\u0000\u0000"+ + "\u0000\u0000\u563B\u0000\u0000\u0000\u0000\u563C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u563D\u563E\u0000\u0000\u0000\u0000\u0000\u563F"+ + "\u5640\u5641\u0000\u0000\u0000\u5642\u0000\u5643"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5644"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5645\u0000\u0000\u5647\u5648\u5649\u0000"+ + "\u0000\u0000\u0000\u564A\u0000\u0000\u564B\u0000"+ + "\u5646\u0000\u0000\u0000\u0000\u0000\u564C\u0000"+ + "\u564D\u0000\u0000\u564E\u0000\u0000\u564F\u0000"+ + "\u0000\u0000\u5650\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5651\u0000"+ + "\u0000\u0000\u5652\u0000\u5653\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5654\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5656\u0000\u5657\u0000\u0000"+ + "\u0000\u0000\u5658\u5655\u0000\u0000\u5659\u565A"+ + "\u0000\u0000\u0000\u0000\u0000\u565B\u0000\u565C"+ + "\u0000\u0000\u0000\u565D\u0000\u565E\u565F\u0000"+ + "\u0000\u5660\u0000\u0000\u5661\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5662\u5663\u0000\u0000\u0000"+ + "\u5664\u5665\u5666\u0000\u0000\u5667\u5668\u0000"+ + "\u5669\u566A\u0000\u0000\u0000\u566B\u0000\u566C"+ + "\u566D\u0000\u0000\u566E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u566F"+ + "\u0000\u0000\u0000\u5670\u5671\u0000\u0000\u0000"+ + "\u0000\u5672\u5673\u0000\u0000\u5674\u0000\u0000"+ + "\u0000\u5675\u5676\u0000\u0000\u0000\u0000\u0000"+ + "\u5677\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5678\u0000\u5679\u0000\u0000\u0000"+ + "\u0000\u0000\u567A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u567B\u567C\u567D\u567E\u0000"+ + "\u0000\u0000\u0000\u5721\u0000\u0000\u5722\u5723"+ + "\u0000\u5724\u0000\u0000\u0000\u0000\u5725\u0000"+ + "\u0000\u0000\u0000\u0000\u5726\u0000\u0000\u0000"+ + "\u5727\u0000\u0000\u5728\u0000\u0000\u0000\u5729"+ + "\u0000\u0000\u0000\u0000\u0000\u572A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u572B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u572C\u0000\u572D\u0000\u572E"+ + "\u572F\u5730\u0000\u5731\u5732\u0000\u0000\u5733"+ + "\u0000\u5734\u5735\u0000\u0000\u0000\u5736\u0000"+ + "\u0000\u5737\u0000\u0000\u5738\u0000\u5739\u0000"+ + "\u573A\u0000\u573B\u573C\u0000\u0000\u0000\u0000"+ + "\u573D\u573E\u0000\u573F\u5740\u0000\u0000\u5741"+ + "\u5742\u5743\u5744\u0000\u0000\u0000\u5745\u0000"+ + "\u5746\u0000\u5747\u0000\u5748\u0000\u0000\u5749"+ + "\u0000\u0000\u574A\u0000\u574B\u0000\u574C\u574D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u574E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u574F\u0000\u0000\u0000\u0000\u5750\u0000\u0000"+ + "\u0000\u0000\u5751\u0000\u0000\u0000\u0000\u0000"+ + "\u5752\u0000\u5753\u0000\u5754\u0000\u0000\u0000"+ + "\u5755\u0000\u5756\u0000\u0000\u5757\u0000\u5758"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5759\u575A"+ + "\u0000\u0000\u0000\u0000\u0000\u575B\u575C\u0000"+ + "\u575D\u575E\u0000\u0000\u0000\u0000\u0000\u575F"+ + "\u5760\u0000\u5761\u5762\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5764\u0000\u5765\u5766\u5767"+ + "\u0000\u5768\u5769\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u576A\u576B\u576C\u0000"+ + "\u576D\u0000\u0000\u576E\u0000\u0000\u0000\u576F"+ + "\u0000\u0000\u5770\u0000\u5771\u5772\u0000\u0000"+ + "\u0000\u0000\u5773\u5774\u5775\u0000\u0000\u5776"+ + "\u0000\u0000\u0000\u0000\u0000\u5777\u5778\u0000"+ + "\u0000\u5779\u0000\u583E\u5763\u577A\u577B\u577C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u745F\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u577D\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u577E\u0000\u0000\u0000\u0000\u5821\u0000\u5822"+ + "\u5823\u0000\u5824\u0000\u5825\u0000\u5826\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5827\u0000\u0000"+ + "\u0000\u0000\u5828\u0000\u5829\u582A\u0000\u0000"+ + "\u582B\u582C\u0000\u582D\u582E\u582F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5830\u5831"+ + "\u0000\u5832\u0000\u0000\u5833\u584C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5834\u5835"+ + "\u5836\u0000\u0000\u0000\u0000\u0000\u0000\u5837"+ + "\u0000\u5838\u0000\u0000\u0000\u0000\u0000\u5839"+ + "\u583A\u583B\u0000\u0000\u583C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u583D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u583F\u0000\u5840\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5841\u0000"+ + "\u5842\u5843\u0000\u0000\u5844\u0000\u0000\u0000"+ + "\u0000\u5845\u0000\u0000\u0000\u0000\u5846\u0000"+ + "\u0000\u0000\u5847\u0000\u0000\u0000\u0000\u5848"+ + "\u0000\u5849\u0000\u0000\u0000\u584A\u0000\u0000"+ + "\u0000\u584B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u584D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u584E\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u584F\u0000\u5850"+ + "\u5851\u0000\u5852\u0000\u0000\u5853\u0000\u5854"+ + "\u0000\u5855\u5856\u0000\u0000\u0000\u5857\u0000"+ + "\u5858\u5859\u585A\u0000\u585B\u0000\u0000\u0000"+ + "\u585C\u0000\u0000\u0000\u585D\u585E\u0000\u585F"+ + "\u0000\u0000\u5860\u0000\u0000\u0000\u0000\u0000"+ + "\u5861\u0000\u0000\u5862\u5863\u0000\u5864\u0000"+ + "\u5865\u0000\u0000\u0000\u5866\u5867\u0000\u0000"+ + "\u0000\u5868\u0000\u0000\u0000\u5869\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u586A\u586B\u0000\u586C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u586D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u586E\u0000"+ + "\u586F\u5870\u5871\u0000\u0000\u0000\u0000\u5872"+ + "\u0000\u5873\u0000\u0000\u5874\u0000\u0000\u0000"+ + "\u0000\u0000\u5875\u0000\u0000\u5876\u5877\u0000"+ + "\u5878\u0000\u5879\u0000\u0000\u0000\u0000\u587A"+ + "\u587B\u0000\u0000\u0000\u587C\u0000\u0000\u587D"+ + "\u0000\u0000\u0000\u587E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5921\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5922"+ + "\u0000\u0000\u5923\u0000\u0000\u0000\u0000\u5924"+ + "\u5925\u5926\u5927\u0000\u0000\u0000\u0000\u5928"+ + "\u0000\u0000\u592A\u592B\u0000\u592C\u0000\u0000"+ + "\u0000\u0000\u592D\u592E\u0000\u0000\u0000\u592F"+ + "\u0000\u0000\u0000\u0000\u5930\u0000\u5931\u0000"+ + "\u5932\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5933\u0000\u5934\u0000"+ + "\u0000\u0000\u5935\u5936\u5937\u5938\u0000\u5939"+ + "\u0000\u0000\u593A\u593B\u0000\u0000\u0000\u593C"+ + "\u0000\u0000\u5929\u593D\u593E\u0000\u593F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5940"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5941\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5942"+ + "\u5943\u5944\u5945\u5946\u0000\u0000\u5947\u0000"+ + "\u0000\u5948\u0000\u0000\u5949\u594A\u594B\u594C"+ + "\u594D\u594E\u594F\u0000\u5950\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5951\u0000\u0000\u0000\u5952"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5953\u5954\u5955\u0000\u5956\u0000\u5957"+ + "\u0000\u5958\u0000\u0000\u0000\u5959\u595A\u0000"+ + "\u0000\u595B\u0000\u595C\u595D\u0000\u0000\u595E"+ + "\u0000\u0000\u0000\u595F\u0000\u0000\u0000\u0000"+ + "\u5960\u0000\u0000\u0000\u0000\u5961\u0000\u5962"+ + "\u5963\u0000\u5964\u0000\u0000\u5965\u0000\u5966"+ + "\u0000\u0000\u0000\u0000\u0000\u5974\u0000\u0000"+ + "\u7461\u0000\u0000\u0000\u5967\u0000\u5968\u5969"+ + "\u596A\u0000\u0000\u0000\u596B\u596C\u596D\u596E"+ + "\u0000\u0000\u596F\u0000\u0000\u0000\u0000\u5970"+ + "\u0000\u0000\u5971\u5972\u0000\u0000\u5973\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5975\u0000\u5976\u0000\u0000\u0000\u0000\u5977"+ + "\u5978\u0000\u0000\u0000\u0000\u0000\u5979\u0000"+ + "\u597A\u0000\u0000\u0000\u0000\u597B\u0000\u0000"+ + "\u0000\u0000\u0000\u597C\u0000\u0000\u597D\u0000"+ + "\u0000\u0000\u0000\u0000\u597E\u0000\u0000\u5A21"+ + "\u5A22\u0000\u0000\u0000\u5A23\u5A24\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5A25\u5A26\u0000"+ + "\u5A27\u5A28\u5A29\u0000\u0000\u0000\u0000\u0000"+ + "\u5A2A\u5A2B\u0000\u5A2C\u0000\u0000\u5A2D\u0000"+ + "\u0000\u5A2E\u0000\u0000\u0000\u0000\u0000\u5A2F"+ + "\u0000\u5A30\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5A31\u0000"+ + "\u5A32\u0000\u5A33\u0000\u5A34\u5A35\u0000\u0000"+ + "\u5A36\u3866\u5A37\u0000\u0000\u0000\u5A38\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5A39\u5A3A\u0000\u0000\u5A3B\u5A3C"+ + "\u5A3D\u5A3E\u0000\u0000\u0000\u5A3F\u0000\u0000"+ + "\u5A40\u5A41\u5A42\u5A43\u5A44\u0000\u0000\u0000"+ + "\u0000\u5A45\u0000\u0000\u5A46\u0000\u0000\u5A47"+ + "\u0000\u0000\u0000\u0000\u0000\u5A48\u5A49\u5A4A"+ + "\u0000\u0000\u5A4B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5A6D\u0000\u0000\u0000\u0000\u5A4C\u0000\u0000"+ + "\u0000\u5A4D\u0000\u0000\u0000\u0000\u5A4E\u0000"+ + "\u5A4F\u0000\u5A50\u0000\u5A51\u0000\u0000\u0000"+ + "\u0000\u5A52\u0000\u0000\u0000\u0000\u5A53\u5A54"+ + "\u5A55\u0000\u0000\u0000\u0000\u5A56\u0000\u0000"+ + "\u0000\u5A57\u0000\u5A58\u5A59\u5A5A\u0000\u5A5B"+ + "\u5A5C\u5A5D\u0000\u0000\u0000\u0000\u0000\u5A5E"+ + "\u5A5F\u5A60\u0000\u5A61\u0000\u5A62\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5A63\u5A64\u0000\u0000\u5A65\u0000\u5A66"+ + "\u0000\u0000\u5A67\u0000\u5A68\u0000\u0000\u0000"+ + "\u5A69\u0000\u0000\u5A6A\u0000\u5A6B\u0000\u5A6C"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5A6E\u0000\u5A6F\u5A70\u0000\u0000"; + + private final static String innerIndex4= + "\u0000\u0000\u0000\u0000\u5A71\u5A72\u0000\u5A73"+ + "\u0000\u0000\u0000\u5A74\u0000\u0000\u5A75\u5A76"+ + "\u5A77\u0000\u0000\u5A78\u5A79\u0000\u0000\u0000"+ + "\u0000\u5A7A\u0000\u0000\u0000\u0000\u5A7B\u5A7C"+ + "\u0000\u5A7D\u0000\u5A7E\u0000\u0000\u0000\u0000"+ + "\u5B21\u0000\u0000\u0000\u0000\u0000\u5B22\u5B23"+ + "\u0000\u5B24\u5B25\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5B26\u5B27\u0000\u5B28\u5B29\u5B2A\u0000"+ + "\u5B2B\u0000\u0000\u5B2C\u0000\u5B2D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5B2E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5B2F\u0000\u0000\u0000\u0000\u5B30\u0000\u0000"+ + "\u0000\u5B31\u0000\u0000\u5B32\u5B33\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5B34"+ + "\u0000\u5B35\u5B36\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5B37\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5B38\u5B39\u5B3A\u5B3B\u5B3C"+ + "\u5B3D\u5B3E\u0000\u5B3F\u5B40\u0000\u0000\u0000"+ + "\u5B41\u0000\u0000\u5B42\u0000\u5B43\u0000\u5B44"+ + "\u5B45\u5B46\u0000\u0000\u0000\u0000\u5B47\u0000"+ + "\u5B48\u0000\u0000\u5B49\u0000\u0000\u0000\u5B4A"+ + "\u0000\u0000\u0000\u0000\u5B4B\u5B4C\u5B4D\u0000"+ + "\u0000\u5B4E\u0000\u0000\u0000\u5B4F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5B50\u5B51"+ + "\u0000\u5B52\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5B53\u5B54\u5B55\u0000\u0000\u0000\u5B56\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5B57\u5B58\u0000"+ + "\u0000\u5B59\u5B5A\u0000\u5B5B\u0000\u0000\u5B5C"+ + "\u0000\u0000\u5B5D\u5B5E\u5B5F\u0000\u0000\u0000"+ + "\u0000\u0000\u5B60\u5B61\u0000\u5B62\u0000\u0000"+ + "\u0000\u5B63\u0000\u5B64\u0000\u0000\u0000\u0000"+ + "\u5B65\u0000\u5B66\u0000\u0000\u0000\u0000\u5B67"+ + "\u0000\u5B68\u0000\u5B69\u0000\u0000\u5B6A\u7464"+ + "\u0000\u5B6B\u5B6C\u5B6D\u0000\u0000\u0000\u0000"+ + "\u5B6E\u0000\u5B70\u5B71\u5B72\u0000\u0000\u0000"+ + "\u5B73\u5B6F\u5B74\u5B75\u5B76\u0000\u5B77\u5B78"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5B79\u0000\u0000\u0000\u0000\u5B7A\u5B7B\u0000"+ + "\u5B7C\u0000\u5B7D\u0000\u0000\u5B7E\u0000\u0000"+ + "\u0000\u0000\u5C21\u0000\u5C22\u0000\u0000\u0000"+ + "\u0000\u5C23\u0000\u5C24\u0000\u5C25\u0000\u0000"+ + "\u5C26\u5C27\u5C28\u5C29\u0000\u0000\u5C2A\u0000"+ + "\u0000\u5C2B\u0000\u0000\u0000\u5C2C\u5C2D\u0000"+ + "\u5C2E\u0000\u5C2F\u0000\u5C30\u0000\u0000\u5C31"+ + "\u5C32\u0000\u0000\u0000\u5C33\u0000\u0000\u0000"+ + "\u0000\u5C34\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5C35\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5C36\u0000\u5C37\u0000\u0000\u0000\u0000"+ + "\u5C38\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5C39\u0000\u5C3A\u5C3B\u5C3C\u0000\u0000\u5C3D"+ + "\u5C3E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5C3F\u0000\u5C40\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5C41\u0000\u0000\u5C42\u5C43\u0000"+ + "\u5C44\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5C45\u5C46\u5C47\u5C48\u5C49\u0000"+ + "\u0000\u5C4A\u5C4B\u5C4C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5C4D\u0000\u0000\u5C4E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5C4F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5C50"+ + "\u5C51\u5C52\u0000\u0000\u0000\u5C53\u0000\u5C54"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5C55\u0000\u0000\u0000\u0000\u5C56\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5C57\u5C58\u5C59"+ + "\u0000\u0000\u0000\u0000\u0000\u5C5A\u5C5B\u0000"+ + "\u5C5C\u5C5D\u5C5E\u0000\u5C5F\u0000\u0000\u0000"+ + "\u5C60\u0000\u0000\u0000\u0000\u0000\u5C61\u5C62"+ + "\u5C63\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5C64\u5C65\u5C66\u0000\u0000\u5C67\u0000\u0000"+ + "\u0000\u5C68\u5C69\u0000\u0000\u0000\u5C6A\u0000"+ + "\u5C6B\u0000\u5C6C\u0000\u0000\u5C6D\u5C6E\u0000"+ + "\u0000\u5C6F\u0000\u0000\u0000\u0000\u0000\u5C70"+ + "\u0000\u0000\u5C71\u0000\u0000\u0000\u0000\u5C72"+ + "\u0000\u0000\u5C73\u5C74\u5C75\u0000\u0000\u0000"+ + "\u0000\u5C76\u5C77\u5C78\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u5C79\u0000\u0000\u5C7A\u0000"+ + "\u5C7B\u0000\u0000\u5C7C\u0000\u5C7D\u0000\u0000"+ + "\u0000\u0000\u5C7E\u5D21\u5D22\u5D23\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5D24\u0000\u0000\u0000\u5D25\u0000\u0000"+ + "\u5D26\u0000\u0000\u0000\u5D27\u5D28\u0000\u0000"+ + "\u0000\u0000\u0000\u5D29\u5D2A\u0000\u0000\u5D2B"+ + "\u5D2C\u0000\u0000\u0000\u0000\u5D2D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5D2E\u0000\u0000\u0000\u5D2F\u5D30\u5D31\u5D32"+ + "\u0000\u0000\u0000\u0000\u5D33\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5D34\u5D35\u5D36\u5D37"+ + "\u5D38\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5D39\u0000\u0000"+ + "\u0000\u5D3A\u0000\u5D3B\u0000\u5D3C\u0000\u0000"+ + "\u0000\u5D3D\u0000\u5D3E\u0000\u0000\u5D3F\u0000"+ + "\u0000\u5D40\u0000\u0000\u0000\u5D41\u0000\u5D42"+ + "\u0000\u0000\u0000\u0000\u5D43\u5D44\u0000\u5D45"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5D46"+ + "\u0000\u5D47\u5D48\u0000\u5D49\u5D4A\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5D4B\u0000"+ + "\u5D4C\u0000\u5D4D\u0000\u5D4E\u0000\u5D4F\u0000"+ + "\u0000\u0000\u0000\u5D50\u5D51\u0000\u0000\u5D52"+ + "\u0000\u0000\u0000\u0000\u0000\u5D53\u0000\u5D54"+ + "\u0000\u0000\u0000\u0000\u0000\u5D55\u5D56\u0000"+ + "\u5D57\u0000\u0000\u5D58\u0000\u5D59\u0000\u5D5A"+ + "\u0000\u5D5B\u0000\u0000\u0000\u5D5C\u5D5D\u0000"+ + "\u0000\u0000\u0000\u5D5E\u0000\u0000\u5D5F\u5D60"+ + "\u5D61\u0000\u0000\u0000\u5D62\u5D63\u0000\u0000"+ + "\u0000\u5D64\u0000\u0000\u0000\u5D65\u0000\u5D66"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5D67\u5D68\u5D69"+ + "\u0000\u5D6A\u5D6B\u5D6C\u0000\u0000\u5D6D\u5D6E"+ + "\u5D6F\u0000\u0000\u5D70\u0000\u0000\u5D71\u0000"+ + "\u0000\u0000\u0000\u5D72\u0000\u0000\u0000\u5D73"+ + "\u5D74\u0000\u5D75\u0000\u0000\u0000\u5D76\u5D77"+ + "\u0000\u5D78\u0000\u0000\u0000\u0000\u0000\u5D79"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5D7A"+ + "\u0000\u5D7B\u0000\u0000\u0000\u0000\u5D7C\u5D7D"+ + "\u0000\u0000\u0000\u5D7E\u0000\u0000\u5E21\u5E22"+ + "\u0000\u0000\u0000\u5E23\u0000\u0000\u5E24\u0000"+ + "\u0000\u0000\u0000\u5E25\u0000\u0000\u5E26\u0000"+ + "\u5E27\u5E28\u5E29\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5E2A\u0000\u5E2B\u5E2C\u5E2D\u0000\u5E2E"+ + "\u0000\u0000\u0000\u0000\u0000\u5E2F\u0000\u5E30"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5E31\u0000\u0000\u0000"+ + "\u5E32\u0000\u0000\u0000\u5E33\u5E34\u5E35\u0000"+ + "\u0000\u0000\u0000\u0000\u5E36\u0000\u0000\u5E37"+ + "\u0000\u0000\u0000\u0000\u0000\u5E38\u5E39\u0000"+ + "\u0000\u0000\u5E3F\u5E3A\u0000\u0000\u0000\u0000"+ + "\u0000\u5E3B\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5E3C\u0000\u5E3D\u5E3E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5E40\u0000\u0000"+ + "\u5E41\u0000\u0000\u0000\u0000\u0000\u0000\u5E42"+ + "\u0000\u0000\u0000\u0000\u5E43\u0000\u0000\u0000"+ + "\u0000\u0000\u5E44\u5E45\u5E46\u5E47\u5E48\u0000"+ + "\u5E49\u0000\u0000\u0000\u0000\u5E4E\u0000\u0000"+ + "\u0000\u0000\u5E4A\u5E4B\u5E4C\u0000\u0000\u0000"+ + "\u0000\u5E4D\u0000\u0000\u0000\u0000\u5E4F\u0000"+ + "\u0000\u0000\u0000\u5E50\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5E51\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5E52\u0000"+ + "\u5E53\u5E54\u0000\u0000\u5E55\u0000\u5E56\u7466"+ + "\u0000\u5E57\u0000\u0000\u5E58\u5E59\u0000\u0000"+ + "\u0000\u0000\u0000\u5E5A\u0000\u5E5B\u0000\u5E5C"+ + "\u0000\u0000\u0000\u0000\u5E5D\u5E5E\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5E5F\u0000\u5E60\u5E61"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5E62\u5E63\u0000\u0000\u0000\u5E64\u5E65\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5E66\u0000\u5E67"+ + "\u0000\u5E68\u0000\u5E69\u0000\u0000\u0000\u5E6A"+ + "\u0000\u5E6B\u0000\u5E6C\u5E6D\u0000\u0000\u5E6E"+ + "\u5E6F\u5E72\u0000\u5E70\u0000\u5E71\u0000\u0000"+ + "\u0000\u0000\u0000\u5E73\u5E74\u0000\u5E75\u0000"+ + "\u5E76\u5E77\u0000\u0000\u0000\u5E78\u0000\u0000"+ + "\u0000\u0000\u0000\u5E79\u0000\u5E7A\u5E7B\u0000"+ + "\u0000\u0000\u0000\u5E7C\u0000\u0000\u5E7D\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5E7E\u5F21"+ + "\u0000\u0000\u0000\u5F22\u0000\u0000\u0000\u0000"+ + "\u5F23\u0000\u5F24\u5F25\u0000\u0000\u0000\u0000"+ + "\u0000\u5F26\u0000\u5F27\u5F28\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5F29\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u5F2A\u5F2B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5F2C\u5F2D\u0000"+ + "\u0000\u5F2E\u0000\u5F2F\u0000\u0000\u0000\u5F30"+ + "\u0000\u0000\u0000\u0000\u0000\u5F32\u5F31\u0000"+ + "\u0000\u5F33\u0000\u0000\u0000\u5F34\u0000\u0000"+ + "\u0000\u5F35\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5F36\u0000\u0000\u0000\u5F37\u0000\u0000\u5F38"+ + "\u5F39\u0000\u5F3A\u0000\u7467\u5F3B\u0000\u5F3C"+ + "\u5F3D\u0000\u0000\u0000\u0000\u0000\u5F3E\u5F3F"+ + "\u0000\u5F40\u0000\u5F41\u0000\u0000\u0000\u0000"+ + "\u0000\u5F42\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u5F43\u0000\u0000\u0000\u0000\u5F44"+ + "\u0000\u0000\u0000\u5F45\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5F46\u0000\u0000"+ + "\u0000\u5F47\u0000\u0000\u5F48\u0000\u5F49\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u7468\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u5F4A"+ + "\u0000\u0000\u5F4B\u0000\u5F4C\u0000\u0000\u0000"+ + "\u5F4D\u0000\u0000\u0000\u0000\u5F4E\u0000\u0000"+ + "\u5F4F\u5F50\u0000\u0000\u0000\u5F51\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u5F52\u5F53"+ + "\u5F54\u0000\u0000\u0000\u0000\u0000\u5F55\u0000"+ + "\u0000\u0000\u0000\u5F56\u5F57\u0000\u0000\u5F58"+ + "\u0000\u0000\u5F59\u0000\u0000\u5F5A\u0000\u5F5B"+ + "\u0000\u5F5C\u0000\u5F5D\u5F6F\u0000\u0000\u0000"+ + "\u5F5E\u0000\u0000\u0000\u0000\u5F5F\u5F60\u5F61"+ + "\u5F62\u0000\u5F63\u0000\u0000\u0000\u5F64\u0000"+ + "\u0000\u5F65\u0000\u0000\u5F66\u5F67\u0000\u5F68"+ + "\u0000\u5F69\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u5F6A\u5F6B\u0000\u5F6C"+ + "\u0000\u0000\u0000\u0000\u5F6D\u0000\u0000\u0000"+ + "\u5F6E\u5F70\u5F71\u0000\u5F72\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u5F73\u0000\u0000"+ + "\u0000\u5F74\u0000\u0000\u5F75\u5F76\u5F77\u0000"+ + "\u0000\u0000\u0000\u5F78\u0000\u0000\u0000\u0000"+ + "\u0000\u5F79\u0000\u0000\u5F7A\u0000\u5F7B\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u5F7C\u5F7D\u5F7E\u6021\u0000\u0000\u6022\u6023"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6024\u0000\u6025\u0000\u0000\u6026\u6027"+ + "\u6028\u6029\u0000\u0000\u0000\u602A\u0000\u0000"+ + "\u602B\u602C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u602D\u0000\u602E\u602F\u6030"+ + "\u0000\u0000\u0000\u0000\u6031\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6032\u6033\u6034\u6035\u0000"+ + "\u0000\u6036\u6037\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6038\u0000\u0000\u6039\u603A\u0000\u603B"+ + "\u603C\u603D\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u603E\u603F\u6040\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6041\u6042\u0000\u0000\u0000\u0000"+ + "\u0000\u6043\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6044\u0000\u6045\u0000\u0000\u6046\u0000\u0000"+ + "\u0000\u0000\u6047\u6048\u0000\u6049\u604A\u0000"+ + "\u0000\u0000\u604B\u0000\u0000\u0000\u0000\u604C"+ + "\u0000\u604D\u0000\u0000\u0000\u604E\u604F\u0000"+ + "\u0000\u0000\u0000\u6050\u0000\u6051\u0000\u0000"+ + "\u0000\u0000\u6052\u6053\u0000\u0000\u0000\u0000"+ + "\u6054\u6055\u0000\u6056\u6057\u0000\u0000\u6058"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6059"+ + "\u0000\u605A\u0000\u0000\u605B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u605C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u605D\u0000\u0000\u0000\u0000\u6064\u605E\u0000"+ + "\u605F\u6060\u0000\u0000\u0000\u0000\u0000\u6061"+ + "\u0000\u6062\u6063\u0000\u0000\u0000\u0000\u0000"+ + "\u6065\u0000\u6066\u0000\u0000\u0000\u0000\u6067"+ + "\u6068\u0000\u0000\u0000\u0000\u0000\u0000\u6069"+ + "\u606A\u0000\u0000\u0000\u0000\u0000\u606B\u606C"+ + "\u606D\u0000\u0000\u0000\u0000\u0000\u606E\u0000"+ + "\u606F\u6070\u0000\u6071\u0000\u6072\u0000\u6073"+ + "\u6074\u0000\u0000\u0000\u6075\u6076\u6077\u0000"+ + "\u0000\u0000\u0000\u0000\u6078\u6079\u607A\u607B"+ + "\u0000\u0000\u607C\u0000\u0000\u0000\u0000\u0000"+ + "\u607D\u607E\u0000\u6121\u0000\u0000\u0000\u6122"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6123"+ + "\u0000\u6124\u6125\u6126\u6127\u6128\u0000\u0000"+ + "\u6129\u0000\u0000\u0000\u0000\u612A\u612B\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u612C\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u612D\u0000\u0000"+ + "\u612E\u612F\u0000\u0000\u6130\u6131\u6132\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6133\u6134\u0000"+ + "\u6135\u0000\u0000\u0000\u0000\u0000\u6136\u0000"+ + "\u6137\u6138\u0000\u0000\u0000\u0000\u6139\u0000"+ + "\u0000\u0000\u613A\u613B\u0000\u613C\u0000\u0000"+ + "\u613D\u0000\u613E\u613F\u0000\u6140\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6141\u0000\u0000\u6142\u6143\u0000\u0000\u0000"+ + "\u6144\u0000\u0000\u0000\u0000\u0000\u6145\u0000"+ + "\u0000\u6146\u0000\u0000\u0000\u6147\u6148\u0000"+ + "\u0000\u0000\u0000\u6149\u0000\u0000\u614A\u0000"+ + "\u0000\u0000\u614B\u0000\u614C\u0000\u0000\u0000"+ + "\u614D\u0000\u0000\u0000\u614E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u614F\u0000\u0000\u6150\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6151\u6152\u6154\u0000\u6155\u6156\u0000\u6153"+ + "\u0000\u0000\u0000\u6157\u6158\u0000\u0000\u6159"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u615A"+ + "\u0000\u0000\u0000\u615B\u615C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u615D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u615E\u0000\u615F\u0000\u0000"+ + "\u0000\u0000\u6160\u0000\u0000\u0000\u6161\u6162"+ + "\u0000\u0000\u0000\u0000\u6163\u0000\u0000\u0000"+ + "\u6164\u0000\u0000\u0000\u6165\u0000\u0000\u0000"+ + "\u0000\u6166\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6167\u0000\u0000"+ + "\u6168\u0000\u0000\u6169\u616A\u0000\u616B\u0000"+ + "\u616C\u0000\u0000\u0000\u0000\u616D\u0000\u616E"+ + "\u616F\u6170\u0000\u6171\u0000\u0000\u0000\u0000"+ + "\u6172\u6173\u6174\u0000\u0000\u6175\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6176\u0000\u6177\u6178\u6179\u0000\u617A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u617B\u617D\u0000"+ + "\u0000\u0000\u0000\u617E\u6221\u6222\u0000\u6223"+ + "\u6224\u0000\u0000\u0000\u617C\u0000\u0000\u0000"+ + "\u0000\u0000\u622D\u0000\u0000\u6225\u0000\u6226"+ + "\u6227\u6228\u0000\u0000\u6229\u622A\u746C\u622B"+ + "\u0000\u0000\u0000\u0000\u0000\u622C\u0000\u0000"+ + "\u0000\u0000\u0000\u622F\u0000\u0000\u0000\u6230"+ + "\u6231\u0000\u0000\u0000\u6232\u0000\u622E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6233\u6234"+ + "\u6235\u0000\u0000\u0000\u6236\u6237\u6238\u0000"+ + "\u6239\u0000\u0000\u0000\u0000\u623A\u0000\u0000"+ + "\u623B\u0000\u0000\u0000\u623C\u746E\u623D\u623E"+ + "\u623F\u0000\u6240\u0000\u6241\u0000\u6242\u0000"+ + "\u6243\u0000\u6245\u6246\u0000\u6244\u0000\u6247"+ + "\u0000\u6248\u0000\u0000\u0000\u0000\u6249\u624A"+ + "\u0000\u624B\u0000\u0000\u624C\u0000\u624D\u624E"+ + "\u0000\u624F\u6250\u0000\u6251\u6252\u0000\u0000"+ + "\u0000\u0000\u0000\u6253\u0000\u0000\u0000\u6254"+ + "\u6255\u0000\u0000\u0000\u0000\u0000\u0000\u6256"+ + "\u0000\u0000\u0000\u6257\u0000\u0000\u0000\u6258"+ + "\u0000\u6259\u625A\u625B\u0000\u0000\u0000\u0000"+ + "\u0000\u625C\u0000\u0000\u625D\u0000\u0000\u625E"+ + "\u0000\u0000\u0000\u0000\u0000\u625F\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6260\u0000\u0000\u0000"+ + "\u0000\u6261\u6262\u6263\u0000\u0000\u0000\u0000"+ + "\u0000\u6264\u0000\u6265\u0000\u6266\u6267\u0000"+ + "\u0000\u0000\u6268\u0000\u0000\u0000\u6269\u0000"+ + "\u0000\u626A\u0000\u626B\u626C\u626D\u0000\u0000"+ + "\u626E\u0000\u0000\u0000\u0000\u0000\u626F\u0000"+ + "\u0000\u6270\u0000\u0000\u0000\u0000\u6271\u0000"+ + "\u6272\u0000\u0000\u0000\u6273\u6274\u6275\u0000"+ + "\u6276\u6277\u6278\u6279\u0000\u0000\u627A\u0000"+ + "\u0000\u0000\u0000\u627B\u627C\u627D\u0000\u627E"+ + "\u0000\u0000\u6321\u6322\u0000\u6323\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6324\u6325\u0000\u0000\u6326"+ + "\u0000\u6327\u6328\u0000\u0000\u0000\u6329\u0000"+ + "\u0000\u0000\u0000\u0000\u632A\u632B\u0000\u0000"+ + "\u0000\u632C\u632D\u0000\u632E\u632F\u6330\u6331"+ + "\u6332\u6333\u0000\u0000\u0000\u0000\u0000\u6334"+ + "\u0000\u6335\u0000\u6336\u0000\u6337\u0000\u0000"+ + "\u6338\u6339\u0000\u0000\u633A\u633B\u633C\u633D"+ + "\u0000\u633E\u633F\u0000\u6340\u0000\u0000\u0000"+ + "\u6341\u0000\u6342\u6343\u0000\u0000\u6344\u0000"+ + "\u6345\u0000\u0000\u0000\u6346\u6347\u0000\u0000"+ + "\u0000\u0000\u0000\u6348\u6349\u634A\u634B\u0000"+ + "\u634C\u0000\u0000\u0000\u0000\u0000\u634D\u634E"+ + "\u634F\u0000\u0000\u6350\u0000\u6351\u6352\u0000"+ + "\u6353\u6354\u6355\u0000\u6356\u0000\u6357\u0000"+ + "\u6358\u0000\u6359\u635A\u0000\u0000\u635B\u635C"+ + "\u0000\u0000\u635D\u0000\u0000\u635E\u635F\u6360"+ + "\u0000\u6361\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6362\u6363\u0000\u0000\u6364\u6365\u0000\u0000"+ + "\u6366\u6367\u0000\u0000\u0000\u6368\u0000\u6369"+ + "\u636A\u636B\u0000\u0000\u0000\u0000\u636C\u636D"+ + "\u636E\u0000\u0000\u0000\u0000\u636F\u6370\u6371"+ + "\u6372\u6373\u0000\u6374\u6375\u6376\u0000\u6377"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6378\u6379\u637A\u0000\u0000\u637B\u637C\u0000"+ + "\u0000\u0000\u637D\u0000\u0000\u0000\u0000\u637E"+ + "\u0000\u6421\u0000\u0000\u0000\u0000\u0000\u6422"+ + "\u6423\u0000\u0000\u0000\u6424\u6425\u0000\u6426"+ + "\u6427\u0000\u0000\u6428\u0000\u0000\u0000\u6429"+ + "\u0000\u0000\u642A\u0000\u0000\u0000\u642B\u0000"+ + "\u642C\u0000\u642D\u642E\u642F\u6430\u0000\u6431"+ + "\u6432\u6433\u6434\u6435\u0000\u6436\u6437\u6438"+ + "\u6439\u0000\u0000\u643A\u643B\u643C\u643D\u0000"+ + "\u643E\u0000\u0000\u643F\u0000\u6440\u0000\u6441"+ + "\u6442\u6443\u0000\u0000\u6444\u6445\u0000\u6446"+ + "\u6447\u6448\u0000\u6449\u0000\u644A\u0000\u644B"+ + "\u644C\u0000\u0000\u0000\u644D\u0000\u644E\u0000"+ + "\u644F\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6450\u0000\u6451\u0000\u0000\u0000\u6452"+ + "\u6453\u0000\u6454\u0000\u0000\u0000\u0000\u0000"+ + "\u6455\u0000\u0000\u0000\u0000\u6456\u0000\u0000"+ + "\u0000\u6457\u0000\u0000\u6458\u6459\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u645A\u645B\u645C\u645D"+ + "\u0000\u645E\u0000\u0000\u645F\u6460\u0000\u6461"+ + "\u0000\u6462\u6463\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6464\u6465\u0000\u6466\u6467"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6468"+ + "\u6469\u646A\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u646B\u646C\u646D\u0000\u0000\u646E\u0000\u646F"+ + "\u6470\u0000\u6471\u0000\u0000\u0000\u6472\u0000"+ + "\u0000\u0000\u0000\u0000\u6473\u6474\u0000\u6475"+ + "\u0000\u6476\u6477\u0000\u0000\u6478\u0000\u6479"+ + "\u647A\u647B\u0000\u647C\u647D\u0000\u647E\u0000"+ + "\u0000\u0000\u6521\u0000\u0000\u6522\u0000\u6523"+ + "\u6524\u6525\u6526\u0000\u0000\u0000\u0000\u0000"+ + "\u6527\u0000\u6528\u6529\u0000\u652A\u0000\u652B"+ + "\u0000\u0000\u652C\u0000\u0000\u652D\u0000\u0000"+ + "\u652E\u0000\u0000\u652F\u0000\u0000\u6530\u0000"+ + "\u0000\u6531\u0000\u6532\u6533\u0000\u6534\u0000"+ + "\u6535\u653B\u0000\u6536\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6537\u6538\u6539\u0000"+ + "\u0000\u0000\u653A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u653C\u0000\u0000\u653D\u653E\u653F\u6540"+ + "\u0000\u6541\u6542\u6543\u6544\u6545\u0000\u0000"+ + "\u0000\u0000\u0000\u6546\u0000\u0000\u0000\u0000"+ + "\u0000\u6547\u0000\u0000\u6548\u0000\u6549\u654A"+ + "\u0000\u0000\u654B\u0000\u0000\u0000\u654C\u654D"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u654F"+ + "\u6550\u654E\u6551\u6552\u0000\u6553\u0000\u0000"+ + "\u0000\u6554\u6555\u0000\u6556\u0000\u0000\u0000"+ + "\u6557\u6558\u0000\u0000\u0000\u6559\u655A\u655B"+ + "\u0000\u0000\u0000\u0000\u0000\u655C\u655D\u655E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u655F"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6560\u6561"+ + "\u0000\u6562\u6563\u6564\u6565\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6566\u0000\u6568\u0000\u6567"+ + "\u0000\u0000\u0000\u6569\u0000\u656A\u0000\u0000"+ + "\u656B\u0000\u656C\u0000\u656D\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u656E\u0000\u0000"+ + "\u0000\u656F\u0000\u0000\u6570\u0000\u0000\u6571"+ + "\u0000\u6572\u0000\u6573\u0000\u0000\u0000\u0000"+ + "\u6574\u0000\u0000\u6575\u0000\u6576\u6577\u6578"+ + "\u0000\u6579\u657A\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u657C\u657B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u657D\u657E\u0000\u0000\u0000\u0000\u6621\u0000"+ + "\u0000\u0000\u0000\u0000\u6622\u0000\u0000\u0000"+ + "\u6623\u0000\u0000\u0000\u6624\u6625\u6626\u0000"+ + "\u0000\u0000\u7471\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6627\u6628\u6629"+ + "\u0000\u662A\u0000\u0000\u0000\u0000\u662B\u0000"+ + "\u0000\u662C\u0000\u662D\u662E\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u662F\u0000\u6630\u0000"+ + "\u0000\u0000\u6631\u0000\u0000\u6632\u0000\u6633"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6634\u0000"+ + "\u6635\u6636\u0000\u6637\u0000\u0000\u0000\u0000"+ + "\u6638\u6639\u663A\u663B\u0000\u0000\u0000\u0000"+ + "\u0000\u663C\u663D\u0000\u0000\u663E\u663F\u6640"+ + "\u6641\u0000\u0000\u0000\u6642\u0000\u6643\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6644\u6645\u0000"+ + "\u0000\u0000\u6646\u0000\u6647\u6648\u6649\u0000"+ + "\u0000\u0000\u0000\u0000\u664A\u0000\u0000\u0000"+ + "\u0000\u664B\u0000\u664C\u0000\u0000\u0000\u664D"+ + "\u664E\u664F\u6650\u0000\u6651\u6652\u0000\u0000"+ + "\u0000\u6653\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6654\u0000\u6655\u0000\u6656\u6657"+ + "\u6658\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6659\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u665A\u0000"+ + "\u0000\u0000\u0000\u0000\u665B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u665C\u665D\u0000\u665E\u665F"+ + "\u0000\u6660\u6661\u6662\u6663\u0000\u0000\u0000"+ + "\u0000\u6664\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6665\u0000\u0000\u0000\u0000\u6666\u0000"+ + "\u0000\u0000\u6667\u0000\u0000\u6668\u0000\u6669"+ + "\u0000\u0000\u0000\u0000\u666A\u666B\u666C\u0000"+ + "\u0000\u666D\u0000\u0000\u0000\u0000\u666E\u666F"+ + "\u0000\u0000\u0000\u6670\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6671\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6672\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6673\u0000\u0000\u0000\u0000\u0000"+ + "\u6675\u0000\u6676\u0000\u0000\u6677\u6678\u6679"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u667A\u0000\u0000\u0000\u0000\u0000\u667B"+ + "\u0000\u667C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u667D\u0000\u0000\u0000\u0000\u0000"; + + private final static String innerIndex5= + "\u0000\u0000\u667E\u6721\u0000\u6722\u0000\u0000"+ + "\u0000\u6723\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6724\u6725\u0000\u6726\u0000\u0000"+ + "\u0000\u6727\u6728\u6729\u0000\u0000\u0000\u0000"+ + "\u672A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u672B\u0000\u672C\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u7474\u0000\u0000\u0000\u0000"+ + "\u0000\u672D\u0000\u672E\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u672F\u0000\u0000\u7475\u6730\u6731"+ + "\u0000\u7476\u0000\u0000\u0000\u6732\u0000\u6733"+ + "\u6734\u0000\u6735\u6736\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6737\u0000\u0000\u0000\u6738"+ + "\u0000\u0000\u6739\u0000\u0000\u0000\u673A\u0000"+ + "\u0000\u0000\u0000\u673B\u0000\u0000\u673C\u673D"+ + "\u673E\u0000\u0000\u673F\u0000\u6740\u0000\u6741"+ + "\u6742\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6743\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6744\u6745\u6746"+ + "\u0000\u6747\u6748\u0000\u0000\u0000\u6749\u674A"+ + "\u0000\u0000\u674B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u674C\u0000\u674D\u0000"+ + "\u0000\u674E\u674F\u0000\u0000\u6750\u6751\u0000"+ + "\u6752\u6753\u6754\u0000\u6755\u0000\u6756\u6757"+ + "\u0000\u6758\u0000\u0000\u6759\u675A\u0000\u675B"+ + "\u0000\u675C\u675D\u0000\u675E\u675F\u6760\u0000"+ + "\u6761\u6762\u0000\u0000\u6763\u0000\u0000\u6764"+ + "\u6765\u6766\u0000\u676A\u0000\u6767\u6768\u0000"+ + "\u6769\u676B\u0000\u0000\u676C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u676D"+ + "\u0000\u676E\u0000\u0000\u676F\u0000\u0000\u6770"+ + "\u6771\u0000\u6772\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6773"+ + "\u0000\u0000\u6774\u0000\u0000\u6776\u6777\u0000"+ + "\u0000\u0000\u0000\u0000\u6778\u0000\u6779\u0000"+ + "\u0000\u6775\u0000\u0000\u677A\u0000\u677B\u0000"+ + "\u677C\u0000\u0000\u677D\u0000\u6828\u677E\u0000"+ + "\u0000\u0000\u0000\u6821\u0000\u0000\u6822\u6823"+ + "\u6824\u0000\u6825\u6826\u0000\u6827\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6829\u0000"+ + "\u0000\u0000\u0000\u0000\u682A\u0000\u0000\u682B"+ + "\u0000\u0000\u682C\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u682D\u682E\u682F\u0000\u0000\u6830\u6831"+ + "\u0000\u6832\u6833\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6834\u6835\u0000\u6836\u6837\u0000"+ + "\u0000\u0000\u6838\u0000\u6839\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u683A\u0000\u683B\u683C\u0000"+ + "\u683D\u0000\u0000\u0000\u683E\u0000\u0000\u683F"+ + "\u6840\u0000\u6841\u6842\u0000\u0000\u0000\u6843"+ + "\u0000\u0000\u6844\u0000\u0000\u6845\u0000\u0000"+ + "\u6846\u0000\u0000\u0000\u6847\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6848\u0000\u6849\u0000\u684A\u684B\u684C"+ + "\u0000\u0000\u684D\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u684E\u0000\u0000\u684F\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6850\u0000\u0000\u0000\u0000\u6851"+ + "\u6852\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6853\u0000\u0000\u0000\u6854\u6855\u6856"+ + "\u0000\u0000\u6857\u6858\u6859\u0000\u0000\u685A"+ + "\u0000\u0000\u685B\u0000\u0000\u0000\u685C\u685D"+ + "\u0000\u0000\u0000\u685E\u0000\u0000\u0000\u0000"+ + "\u0000\u685F\u6860\u6861\u6862\u6863\u0000\u0000"+ + "\u0000\u6864\u6865\u6866\u6867\u0000\u0000\u0000"+ + "\u6868\u6869\u0000\u0000\u0000\u0000\u686A\u686B"+ + "\u686C\u0000\u0000\u0000\u0000\u686D\u686E\u0000"+ + "\u0000\u0000\u0000\u0000\u686F\u0000\u0000\u0000"+ + "\u6870\u6871\u0000\u6872\u6873\u0000\u6874\u6875"+ + "\u6876\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6877\u0000\u6878\u747A\u6879"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u687A\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u687B\u687C\u687D\u0000\u0000\u687E\u0000\u0000"+ + "\u0000\u6921\u6922\u0000\u0000\u6923\u0000\u6924"+ + "\u0000\u0000\u0000\u6925\u0000\u0000\u0000\u0000"+ + "\u0000\u6926\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6927\u6928\u0000\u0000\u0000"+ + "\u0000\u6929\u692A\u0000\u692B\u0000\u692C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u692D"+ + "\u0000\u0000\u692E\u692F\u6930\u0000\u0000\u0000"+ + "\u6931\u0000\u0000\u0000\u6932\u6933\u0000\u0000"+ + "\u0000\u6934\u0000\u0000\u0000\u6935\u6936\u0000"+ + "\u0000\u0000\u6937\u6938\u6939\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u693A\u693B\u0000\u0000\u0000"+ + "\u693C\u693D\u0000\u0000\u0000\u0000\u693E\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u693F\u0000"+ + "\u6940\u0000\u6941\u6942\u6943\u0000\u0000\u6944"+ + "\u0000\u0000\u0000\u0000\u0000\u6945\u6946\u0000"+ + "\u0000\u0000\u0000\u6947\u0000\u6948\u6949\u0000"+ + "\u694A\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u694C\u0000\u0000\u694D\u0000\u0000\u694B"+ + "\u0000\u0000\u694E\u694F\u6950\u0000\u6951\u0000"+ + "\u0000\u6952\u0000\u0000\u6953\u0000\u6954\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6955\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6956\u0000\u6957\u0000\u6958\u6959"+ + "\u0000\u0000\u695A\u0000\u695B\u695C\u695D\u0000"+ + "\u0000\u695E\u0000\u695F\u0000\u0000\u6960\u6961"+ + "\u0000\u6962\u0000\u6963\u0000\u0000\u6964\u0000"+ + "\u6965\u0000\u0000\u0000\u0000\u0000\u6966\u0000"+ + "\u6967\u0000\u6968\u0000\u0000\u6969\u696A\u696B"+ + "\u0000\u747B\u0000\u696C\u696D\u0000\u0000\u0000"+ + "\u696E\u0000\u0000\u0000\u696F\u6970\u0000\u6971"+ + "\u0000\u6972\u0000\u0000\u6973\u0000\u0000\u0000"+ + "\u0000\u0000\u6974\u6975\u0000\u6976\u0000\u0000"+ + "\u0000\u6977\u6978\u0000\u0000\u6979\u0000\u697A"+ + "\u697B\u697C\u697D\u697E\u6A21\u6A22\u0000\u0000"+ + "\u6A23\u6A24\u0000\u6A25\u6A26\u6A27\u6A28\u0000"+ + "\u6A29\u0000\u6A2A\u0000\u0000\u0000\u6A2B\u0000"+ + "\u0000\u6A2C\u0000\u6A2D\u6A2E\u0000\u0000\u0000"+ + "\u6A2F\u0000\u0000\u0000\u0000\u0000\u6A30\u0000"+ + "\u0000\u0000\u0000\u6A31\u0000\u6A32\u0000\u0000"+ + "\u0000\u0000\u0000\u6A33\u6A34\u6A35\u0000\u6A36"+ + "\u0000\u6A37\u6A38\u0000\u0000\u6A39\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6A3A\u0000\u0000\u6A3B\u6A3C\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u6A3D\u6A3E\u6A3F"+ + "\u0000\u0000\u0000\u6A40\u0000\u0000\u6A41\u0000"+ + "\u0000\u6A42\u0000\u6A43\u0000\u6A44\u6A45\u0000"+ + "\u6A46\u0000\u6A47\u6A48\u6A49\u6A4A\u6A4B\u0000"+ + "\u0000\u0000\u747C\u6A4C\u0000\u6A4D\u0000\u6A4E"+ + "\u6A4F\u6A50\u0000\u0000\u0000\u0000\u0000\u6A51"+ + "\u6A52\u0000\u0000\u0000\u6A53\u6A54\u6A55\u6A56"+ + "\u0000\u6A57\u6A58\u6A59\u0000\u6A5A\u0000\u6A5B"+ + "\u6A5C\u0000\u0000\u0000\u6A5D\u0000\u0000\u0000"+ + "\u0000\u0000\u6A5E\u0000\u0000\u6A5F\u6A60\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6A61\u6A62"+ + "\u0000\u6A63\u0000\u0000\u6A64\u0000\u0000\u0000"+ + "\u6A65\u6A66\u6A67\u0000\u0000\u0000\u0000\u6A68"+ + "\u6A69\u0000\u0000\u6A6A\u6A6B\u0000\u6A6C\u6A6D"+ + "\u0000\u6A6E\u0000\u0000\u0000\u0000\u0000\u6A6F"+ + "\u6A70\u0000\u0000\u0000\u0000\u0000\u6A71\u0000"+ + "\u6A72\u0000\u0000\u0000\u0000\u0000\u0000\u6A73"+ + "\u6A74\u0000\u0000\u0000\u0000\u6A75\u0000\u6A76"+ + "\u0000\u0000\u0000\u0000\u0000\u6A77\u0000\u6A78"+ + "\u0000\u0000\u6A79\u6A7A\u0000\u0000\u0000\u6A7B"+ + "\u0000\u0000\u0000\u6A7C\u0000\u0000\u0000\u6A7D"+ + "\u6A7E\u6B21\u6B22\u0000\u0000\u6B23\u0000\u6B24"+ + "\u6B25\u0000\u6B26\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6B27\u0000\u0000\u0000\u6B28"+ + "\u0000\u6B29\u0000\u0000\u0000\u0000\u6B2A\u0000"+ + "\u6B2B\u6B2C\u6B2D\u0000\u6B2E\u0000\u6B2F\u0000"+ + "\u0000\u0000\u6B30\u6B31\u0000\u0000\u6B32\u6B33"+ + "\u6B34\u6B35\u6B36\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6B37\u0000\u0000\u0000\u6B38\u6B39\u6B3A"+ + "\u0000\u0000\u0000\u0000\u0000\u6B3B\u0000\u0000"+ + "\u0000\u6B3C\u0000\u6B3D\u6B3E\u6B3F\u0000\u0000"+ + "\u0000\u6B40\u6B41\u0000\u0000\u0000\u6B42\u6B43"+ + "\u6B44\u0000\u0000\u6B45\u6B46\u0000\u6B47\u0000"+ + "\u6B48\u0000\u0000\u6B49\u6B50\u6B4A\u6B4B\u6B4C"+ + "\u0000\u0000\u0000\u6B4D\u0000\u0000\u0000\u0000"+ + "\u6B52\u6B4E\u6B4F\u6B51\u0000\u0000\u6B53\u0000"+ + "\u6B54\u0000\u6B55\u0000\u0000\u6B56\u0000\u6B57"+ + "\u0000\u0000\u0000\u6B58\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6B59\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6B5A\u0000\u0000\u0000\u0000\u6B5B"+ + "\u0000\u6B5C\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6B5E\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6B5D\u0000\u0000\u0000\u0000"+ + "\u0000\u6B5F\u0000\u0000\u0000\u0000\u0000\u6B60"+ + "\u6B61\u0000\u0000\u0000\u6B62\u6B63\u6B64\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6B65"+ + "\u6B66\u0000\u6B67\u6B68\u6B69\u0000\u0000\u0000"+ + "\u0000\u0000\u6B6A\u0000\u6B6B\u6B6D\u0000\u0000"+ + "\u0000\u0000\u6B6E\u6B6F\u0000\u6B6C\u0000\u6B70"+ + "\u0000\u0000\u6B71\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6B72\u6B73\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6B74"+ + "\u0000\u0000\u6B76\u6B75\u0000\u6B77\u0000\u0000"+ + "\u0000\u6B78\u6B79\u6B7A\u0000\u0000\u0000\u0000"+ + "\u6B7B\u0000\u0000\u0000\u0000\u0000\u6B7C\u6B7D"+ + "\u0000\u0000\u0000\u6B7E\u6C21\u0000\u6C22\u0000"+ + "\u0000\u0000\u0000\u6C23\u6C24\u0000\u6C25\u0000"+ + "\u0000\u0000\u6C26\u0000\u0000\u6C27\u6C28\u0000"+ + "\u0000\u0000\u6C29\u6C2A\u0000\u6C2B\u6C2C\u6C2D"+ + "\u6C2E\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u6C2F\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6C30\u0000\u6C31\u0000\u6C32\u0000"+ + "\u0000\u6C33\u0000\u0000\u0000\u6C34\u0000\u0000"+ + "\u0000\u6C35\u0000\u0000\u6C36\u0000\u0000\u6C37"+ + "\u0000\u0000\u0000\u6C38\u0000\u0000\u0000\u6C39"+ + "\u0000\u6C3A\u6C3B\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u6C3C\u6C3D\u6C3E\u6C3F"+ + "\u0000\u0000\u6C40\u0000\u0000\u0000\u6C41\u6C42"+ + "\u6C43\u0000\u0000\u0000\u0000\u6C44\u0000\u6C45"+ + "\u0000\u6C46\u0000\u6C47\u0000\u0000\u6C48\u0000"+ + "\u6C49\u0000\u0000\u6C4A\u6C4B\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6C4C\u0000"+ + "\u0000\u0000\u6C4E\u0000\u0000\u0000\u0000\u6C4F"+ + "\u0000\u0000\u6C4D\u0000\u0000\u0000\u6C50\u0000"+ + "\u6C51\u6C52\u6C53\u0000\u0000\u6C54\u6C55\u0000"+ + "\u0000\u6C56\u0000\u0000\u6C57\u6C58\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u6C59\u6C5A\u6C5B\u0000\u0000\u0000"+ + "\u6C5C\u0000\u6C5D\u6C5E\u6C5F\u6C60\u0000\u6C61"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6C62\u6C63"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6C64\u0000"+ + "\u6C65\u0000\u0000\u6C66\u0000\u0000\u6C67\u0000"+ + "\u0000\u0000\u0000\u0000\u6C68\u0000\u0000\u0000"+ + "\u6C69\u0000\u0000\u0000\u6C6A\u0000\u6C6B\u6C6C"+ + "\u6C6D\u0000\u0000\u6C6E\u6C6F\u6C70\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6C71\u0000"+ + "\u6C72\u0000\u0000\u6C73\u0000\u0000\u0000\u0000"+ + "\u0000\u747E\u0000\u0000\u0000\u6C74\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6C75"+ + "\u0000\u0000\u0000\u0000\u6C76\u0000\u0000\u6C77"+ + "\u0000\u0000\u0000\u0000\u6C78\u6C79\u6C7A\u0000"+ + "\u6C7B\u6C7C\u6C7D\u0000\u0000\u6C7E\u0000\u0000"+ + "\u6D21\u0000\u0000\u0000\u0000\u0000\u0000\u6D22"+ + "\u0000\u0000\u6D23\u6D24\u0000\u0000\u0000\u0000"+ + "\u0000\u6D25\u0000\u0000\u0000\u0000\u0000\u6D26"+ + "\u6D27\u6D28\u6D29\u0000\u6D2A\u0000\u6D2B\u6D2C"+ + "\u0000\u6D2D\u6D2E\u6D2F\u0000\u0000\u0000\u6D30"+ + "\u0000\u0000\u6D31\u0000\u0000\u0000\u6D32\u0000"+ + "\u0000\u0000\u6D33\u6D34\u0000\u0000\u0000\u6D35"+ + "\u0000\u6D36\u6D37\u0000\u6D38\u0000\u0000\u6D39"+ + "\u0000\u6D3A\u6D3B\u0000\u6D3C\u6D3D\u0000\u6D3E"+ + "\u0000\u6D3F\u0000\u6D40\u6D41\u6D42\u6D43\u6D44"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u6D45\u0000\u6D46\u6D47\u6D48"+ + "\u6D49\u0000\u6D4A\u0000\u0000\u6D4B\u6D4C\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u6D4D\u6D4E\u0000\u0000\u0000\u6D4F\u6D50\u6D51"+ + "\u6D52\u6D53\u0000\u6D54\u0000\u6D55\u0000\u0000"+ + "\u0000\u0000\u6D56\u0000\u0000\u6D57\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u6D58"+ + "\u6D59\u6D5A\u6D5B\u0000\u6D5C\u0000\u6D5D\u6D5E"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u6D5F\u0000"+ + "\u0000\u6D60\u6D61\u6D62\u0000\u6D63\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u2271\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u7445\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u7472\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u7434\u7437"+ + "\u7438\u743D\u7444\u7447\u7448\u744E\u744F\u7453"+ + "\u7455\u7456\u7457\u7458\u745A\u745B\u745E\u7460"+ + "\u7462\u7463\u7465\u7469\u746A\u746B\u746D\u746F"+ + "\u7470\u7473\u7477\u7478\u7479\u747D\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u742A\u0000\u0000\u0000\u0000\u7429"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u2237\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"+ + "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; + + private final static short index1[] = { + 1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 89, 0, 0, 90, 91, 0, 0, 0, 0, 92 + }; + + private final static String index2[] = { + innerIndex0, + innerIndex1, + innerIndex2, + innerIndex3, + innerIndex4, + innerIndex5 + }; +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/MS932_OLD.java --- a/test/sun/nio/cs/OLD/MS932_OLD.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/nio/cs/OLD/MS932_OLD.java Fri Aug 24 09:29:17 2012 +0100 @@ -45,7 +45,7 @@ public boolean contains(Charset cs) { return ((cs.name().equals("US-ASCII")) - || (cs instanceof JIS_X_0201) + || (cs instanceof JIS_X_0201_OLD) || (cs instanceof MS932_OLD)); } @@ -61,11 +61,11 @@ // implements DelegatableDecoder { - JIS_X_0201.Decoder jisDec0201; + JIS_X_0201_OLD.Decoder jisDec0201; private Decoder(Charset cs) { super(cs); - jisDec0201 = new JIS_X_0201.Decoder(cs); + jisDec0201 = new JIS_X_0201_OLD.Decoder(cs); } protected char decodeSingle(int b) { @@ -90,12 +90,12 @@ private static class Encoder extends MS932DB.Encoder { - private JIS_X_0201.Encoder jisEnc0201; + private JIS_X_0201_OLD.Encoder jisEnc0201; private Encoder(Charset cs) { super(cs); - jisEnc0201 = new JIS_X_0201.Encoder(cs); + jisEnc0201 = new JIS_X_0201_OLD.Encoder(cs); } protected int encodeSingle(char inputChar) { diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/PCK_OLD.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/PCK_OLD.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.CoderResult; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import sun.nio.cs.HistoricallyNamedCharset; + +public class PCK_OLD + extends Charset + implements HistoricallyNamedCharset +{ + + public PCK_OLD() { + super("x-PCK_OLD", null); + } + + public String historicalName() { + return "PCK"; + } + + public boolean contains(Charset cs) { + return ((cs.name().equals("US-ASCII")) + || (cs instanceof JIS_X_0201_OLD) + || (cs instanceof PCK_OLD)); + } + + public CharsetDecoder newDecoder() { + return new Decoder(this); + } + + public CharsetEncoder newEncoder() { + + // Need to force the replacement byte to 0x3f + // because JIS_X_0208_Encoder defines its own + // alternative 2 byte substitution to permit it + // to exist as a self-standing Encoder + + byte[] replacementBytes = { (byte)0x3f }; + return new Encoder(this).replaceWith(replacementBytes); + } + + private static class Decoder extends SJIS_OLD.Decoder { + + JIS_X_0208_Solaris_Decoder jis0208; + private static final char REPLACE_CHAR='\uFFFD'; + + private Decoder(Charset cs) { + super(cs); + jis0208 = new JIS_X_0208_Solaris_Decoder(cs); + } + + protected char decodeDouble(int c1, int c2) { + char outChar; + + if ((outChar = super.decodeDouble(c1, c2)) != '\uFFFD') { + // Map JIS X 0208:1983 0x213D <--> U+2015 + return ((outChar != '\u2014')? outChar: '\u2015'); + } else { + int adjust = c2 < 0x9F ? 1 : 0; + int rowOffset = c1 < 0xA0 ? 0x70 : 0xB0; + int cellOffset = (adjust == 1) ? (c2 > 0x7F ? 0x20 : 0x1F) : 0x7E; + int b1 = ((c1 - rowOffset) << 1) - adjust; + int b2 = c2 - cellOffset; + char outChar2 = jis0208.decodeDouble(b1, b2); + return outChar2; + } + } + } + + private static class Encoder extends SJIS_OLD.Encoder { + + private JIS_X_0201_OLD.Encoder jis0201; + + private static final short[] j0208Index1 = + JIS_X_0208_Solaris_Encoder.getIndex1(); + private static final String[] j0208Index2 = + JIS_X_0208_Solaris_Encoder.getIndex2(); + + private Encoder(Charset cs) { + super(cs); + jis0201 = new JIS_X_0201_OLD.Encoder(cs); + } + + protected int encodeDouble(char ch) { + int result = 0; + + // PCK uses JIS_X_0208:1983 rather than JIS_X_0208:1997 + + switch (ch) { + case '\u2015': + return 0x815C; + case '\u2014': + return 0; + default: + break; + } + + if ((result = super.encodeDouble(ch)) != 0) { + return result; + } + else { + int offset = j0208Index1[ch >> 8] << 8; + int pos = j0208Index2[offset >> 12].charAt((offset & 0xfff) + (ch & 0xff)); + if (pos != 0) { + int c1 = (pos >> 8) & 0xff; + int c2 = pos & 0xff; + int rowOffset = c1 < 0x5F ? 0x70 : 0xB0; + int cellOffset = (c1 % 2 == 1) ? (c2 > 0x5F ? 0x20 : 0x1F) : 0x7E; + result = ((((c1 + 1 ) >> 1) + rowOffset) << 8) | (c2 + cellOffset); + } + } + return result; + } + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/SJIS_OLD.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/SJIS_OLD.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + +import java.nio.*; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.CoderResult; +import sun.nio.cs.HistoricallyNamedCharset; + +public class SJIS_OLD + extends Charset + implements HistoricallyNamedCharset +{ + + public SJIS_OLD() { + super("Shift_JIS_OLD", null); + } + + public String historicalName() { + return "SJIS"; + } + + public boolean contains(Charset cs) { + return ((cs.name().equals("US-ASCII")) + || (cs instanceof JIS_X_0201_OLD) + || (cs instanceof SJIS_OLD) + || (cs instanceof JIS_X_0208_OLD)); + } + + public CharsetDecoder newDecoder() { + return new Decoder(this); + } + + public CharsetEncoder newEncoder() { + + // Need to force the replacement byte to 0x3f + // because JIS_X_0208_Encoder defines its own + // alternative 2 byte substitution to permit it + // to exist as a self-standing Encoder + + byte[] replacementBytes = { (byte)0x3f }; + return new Encoder(this).replaceWith(replacementBytes); + } + + static class Decoder extends JIS_X_0208_Decoder { + + JIS_X_0201_OLD.Decoder jis0201; + + protected Decoder(Charset cs) { + super(cs); + jis0201 = new JIS_X_0201_OLD.Decoder(cs); + } + + protected char decodeSingle(int b) { + // If the high bits are all off, it's ASCII == Unicode + if ((b & 0xFF80) == 0) { + return (char)b; + } + return jis0201.decode(b); + } + + protected char decodeDouble(int c1, int c2) { + int adjust = c2 < 0x9F ? 1 : 0; + int rowOffset = c1 < 0xA0 ? 0x70 : 0xB0; + int cellOffset = (adjust == 1) ? (c2 > 0x7F ? 0x20 : 0x1F) : 0x7E; + int b1 = ((c1 - rowOffset) << 1) - adjust; + int b2 = c2 - cellOffset; + return super.decodeDouble(b1, b2); + } + + // Make some protected methods public for use by JISAutoDetect + public CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) { + return super.decodeLoop(src, dst); + } + public void implReset() { + super.implReset(); + } + public CoderResult implFlush(CharBuffer out) { + return super.implFlush(out); + } + } + + static class Encoder extends JIS_X_0208_Encoder { + + private JIS_X_0201_OLD.Encoder jis0201; + + private static final short[] j0208Index1 = + JIS_X_0208_Encoder.getIndex1(); + private static final String[] j0208Index2 = + JIS_X_0208_Encoder.getIndex2(); + + protected Encoder(Charset cs) { + super(cs); + jis0201 = new JIS_X_0201_OLD.Encoder(cs); + } + + protected int encodeSingle(char inputChar) { + byte b; + + // \u0000 - \u007F map straight through + if ((inputChar & 0xFF80) == 0) + return (byte)inputChar; + + if ((b = jis0201.encode(inputChar)) == 0) + return -1; + else + return b; + } + + protected int encodeDouble(char ch) { + int offset = j0208Index1[ch >> 8] << 8; + int pos = j0208Index2[offset >> 12].charAt((offset & 0xfff) + (ch & 0xff)); + if (pos == 0) { + /* Zero value indicates this Unicode has no mapping to + * JIS0208. + * We bail here because the JIS -> SJIS algorithm produces + * bogus SJIS values for invalid JIS input. Zero should be + * the only invalid JIS value in our table. + */ + return 0; + } + /* + * This algorithm for converting from JIS to SJIS comes from + * Ken Lunde's "Understanding Japanese Information Processing", + * pg 163. + */ + int c1 = (pos >> 8) & 0xff; + int c2 = pos & 0xff; + int rowOffset = c1 < 0x5F ? 0x70 : 0xB0; + int cellOffset = (c1 % 2 == 1) ? (c2 > 0x5F ? 0x20 : 0x1F) : 0x7E; + return ((((c1 + 1 ) >> 1) + rowOffset) << 8) | (c2 + cellOffset); + } + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/SingleByteDecoder.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/SingleByteDecoder.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + + +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CoderResult; +import java.nio.charset.CharacterCodingException; +import java.nio.charset.MalformedInputException; +import java.nio.charset.UnmappableCharacterException; + + +public abstract class SingleByteDecoder + extends CharsetDecoder +{ + + private final String byteToCharTable; + + protected SingleByteDecoder(Charset cs, String byteToCharTable) { + super(cs, 1.0f, 1.0f); + this.byteToCharTable = byteToCharTable; + } + + private CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) { + byte[] sa = src.array(); + int sp = src.arrayOffset() + src.position(); + int sl = src.arrayOffset() + src.limit(); + assert (sp <= sl); + sp = (sp <= sl ? sp : sl); + char[] da = dst.array(); + int dp = dst.arrayOffset() + dst.position(); + int dl = dst.arrayOffset() + dst.limit(); + assert (dp <= dl); + dp = (dp <= dl ? dp : dl); + + try { + while (sp < sl) { + int b = sa[sp]; + + char c = decode(b); + if (c == '\uFFFD') + return CoderResult.unmappableForLength(1); + if (dl - dp < 1) + return CoderResult.OVERFLOW; + da[dp++] = c; + sp++; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(sp - src.arrayOffset()); + dst.position(dp - dst.arrayOffset()); + } + } + + private CoderResult decodeBufferLoop(ByteBuffer src, CharBuffer dst) { + int mark = src.position(); + try { + while (src.hasRemaining()) { + int b = src.get(); + + char c = decode(b); + if (c == '\uFFFD') + return CoderResult.unmappableForLength(1); + if (!dst.hasRemaining()) + return CoderResult.OVERFLOW; + mark++; + dst.put(c); + } + return CoderResult.UNDERFLOW; + } finally { + src.position(mark); + } + } + + protected CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) { + if (true && src.hasArray() && dst.hasArray()) + return decodeArrayLoop(src, dst); + else + return decodeBufferLoop(src, dst); + } + + public char decode(int byteIndex) { + int n = byteIndex + 128; + if (n >= byteToCharTable.length() || n < 0) + return '\uFFFD'; + return byteToCharTable.charAt(n); + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/SingleByteEncoder.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/nio/cs/OLD/SingleByteEncoder.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + */ + + +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.Charset; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.CoderResult; +import java.nio.charset.CharacterCodingException; +import java.nio.charset.MalformedInputException; +import java.nio.charset.UnmappableCharacterException; +import sun.nio.cs.Surrogate; + + +public abstract class SingleByteEncoder + extends CharsetEncoder +{ + + private final short index1[]; + private final String index2; + private final int mask1; + private final int mask2; + private final int shift; + + private final Surrogate.Parser sgp = new Surrogate.Parser(); + + protected SingleByteEncoder(Charset cs, + short[] index1, String index2, + int mask1, int mask2, int shift) + { + super(cs, 1.0f, 1.0f); + this.index1 = index1; + this.index2 = index2; + this.mask1 = mask1; + this.mask2 = mask2; + this.shift = shift; + } + + public boolean canEncode(char c) { + char testEncode = index2.charAt(index1[(c & mask1) >> shift] + + (c & mask2)); + return testEncode != '\u0000' || c == '\u0000'; + } + + private CoderResult encodeArrayLoop(CharBuffer src, ByteBuffer dst) { + char[] sa = src.array(); + int sp = src.arrayOffset() + src.position(); + int sl = src.arrayOffset() + src.limit(); + assert (sp <= sl); + sp = (sp <= sl ? sp : sl); + byte[] da = dst.array(); + int dp = dst.arrayOffset() + dst.position(); + int dl = dst.arrayOffset() + dst.limit(); + assert (dp <= dl); + dp = (dp <= dl ? dp : dl); + + try { + while (sp < sl) { + char c = sa[sp]; + if (Character.isSurrogate(c)) { + if (sgp.parse(c, sa, sp, sl) < 0) + return sgp.error(); + return sgp.unmappableResult(); + } + if (c >= '\uFFFE') + return CoderResult.unmappableForLength(1); + if (dl - dp < 1) + return CoderResult.OVERFLOW; + + char e = index2.charAt(index1[(c & mask1) >> shift] + + (c & mask2)); + + // If output byte is zero because input char is zero + // then character is mappable, o.w. fail + if (e == '\u0000' && c != '\u0000') + return CoderResult.unmappableForLength(1); + + sp++; + da[dp++] = (byte)e; + } + return CoderResult.UNDERFLOW; + } finally { + src.position(sp - src.arrayOffset()); + dst.position(dp - dst.arrayOffset()); + } + } + + private CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) { + int mark = src.position(); + try { + while (src.hasRemaining()) { + char c = src.get(); + if (Character.isSurrogate(c)) { + if (sgp.parse(c, src) < 0) + return sgp.error(); + return sgp.unmappableResult(); + } + if (c >= '\uFFFE') + return CoderResult.unmappableForLength(1); + if (!dst.hasRemaining()) + return CoderResult.OVERFLOW; + + char e = index2.charAt(index1[(c & mask1) >> shift] + + (c & mask2)); + + // If output byte is zero because input char is zero + // then character is mappable, o.w. fail + if (e == '\u0000' && c != '\u0000') + return CoderResult.unmappableForLength(1); + + mark++; + dst.put((byte)e); + } + return CoderResult.UNDERFLOW; + } finally { + src.position(mark); + } + } + + protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) { + if (true && src.hasArray() && dst.hasArray()) + return encodeArrayLoop(src, dst); + else + return encodeBufferLoop(src, dst); + } + + public byte encode(char inputChar) { + return (byte)index2.charAt(index1[(inputChar & mask1) >> shift] + + (inputChar & mask2)); + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/OLD/TestIBMDB.java --- a/test/sun/nio/cs/OLD/TestIBMDB.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/nio/cs/OLD/TestIBMDB.java Fri Aug 24 09:29:17 2012 +0100 @@ -24,8 +24,8 @@ /* * @test * @bug 6843578 - * @summary Test IBM DB charsets - * @build IBM930_OLD IBM933_OLD IBM935_OLD IBM937_OLD IBM939_OLD IBM942_OLD IBM943_OLD IBM948_OLD IBM949_OLD IBM950_OLD IBM970_OLD IBM942C_OLD IBM943C_OLD IBM949C_OLD IBM1381_OLD IBM1383_OLD EUC_CN_OLD EUC_KR_OLD GBK_OLD Johab_OLD MS932_OLD MS936_OLD MS949_OLD MS950_OLD + * @summary Test old and new implementation of db charsets + * @build IBM930_OLD IBM933_OLD IBM935_OLD IBM937_OLD IBM939_OLD IBM942_OLD IBM943_OLD IBM948_OLD IBM949_OLD IBM950_OLD IBM970_OLD IBM942C_OLD IBM943C_OLD IBM949C_OLD IBM1381_OLD IBM1383_OLD EUC_CN_OLD EUC_KR_OLD GBK_OLD Johab_OLD MS932_OLD MS936_OLD MS949_OLD MS950_OLD SJIS_OLD PCK_OLD EUC_JP_OLD EUC_JP_LINUX_OLD EUC_JP_Open_OLD * @run main TestIBMDB */ @@ -490,6 +490,7 @@ } static String[] csnames = new String[] { + "IBM930", "IBM933", "IBM935", @@ -515,12 +516,20 @@ "MS936", "MS949", "MS950", + + "EUC_JP", + "EUC_JP_LINUX", + "EUC_JP_Open", + "SJIS", + "PCK", }; public static void main(String[] args) throws Exception { for (String csname: csnames) { System.out.printf("-----------------------------------%n"); String oldname = csname + "_OLD"; + if ("EUC_JP_Open".equals(csname)) + csname = "eucjp-open"; checkInit(csname); Charset csOld = (Charset)Class.forName(oldname).newInstance(); Charset csNew = Charset.forName(csname); diff -r d15095dfd348 -r aa2c9ce06632 test/sun/nio/cs/TestX11JIS0201.java --- a/test/sun/nio/cs/TestX11JIS0201.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/nio/cs/TestX11JIS0201.java Fri Aug 24 09:29:17 2012 +0100 @@ -50,5 +50,20 @@ if (! cs.name().equals("X11JIS0201")){ throw new Exception("X11JIS0201 does not work correctly"); } + CharsetEncoder enc = cs.newEncoder(); + char[] cc = new char[0xffff]; + for (char c = 0; c < 0xffff; c++) { + cc[c] = c; + if (enc.canEncode(c) != + ((c >= 0xff61 && c <= 0xff9f) || c == 0x203e || c == 0xa5)) { + throw new RuntimeException("x11jis0201 canEncod() failed!"); + } + } + String s = new String(cc); + byte[] bb_x11 = s.getBytes(cs); + byte[] bb = s.getBytes("jis0201"); + if (!java.util.Arrays.equals(bb, bb_x11)) { + throw new RuntimeException("x11jis0201 encoding failed"); + } } } diff -r d15095dfd348 -r aa2c9ce06632 test/sun/security/krb5/auto/BadKdc.java --- a/test/sun/security/krb5/auto/BadKdc.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/security/krb5/auto/BadKdc.java Fri Aug 24 09:29:17 2012 +0100 @@ -67,7 +67,7 @@ * This is tough. * c. Feed the KDC a UDP packet first. The current "solution". */ - public static void go(int[]... expected) + public static void go(String... expected) throws Exception { try { go0(expected); @@ -83,7 +83,7 @@ } } - public static void go0(int[]... expected) + public static void go0(String... expected) throws Exception { System.setProperty("sun.security.krb5.debug", "true"); @@ -148,8 +148,9 @@ return k; } - private static void test(int... expected) throws Exception { + private static void test(String expected) throws Exception { ByteArrayOutputStream bo = new ByteArrayOutputStream(); + System.out.println("----------------- TEST -----------------"); try { test0(bo, expected); } catch (Exception e) { @@ -164,31 +165,34 @@ * One round of test for max_retries and timeout. * @param expected the expected kdc# timeout kdc# timeout... */ - private static void test0(ByteArrayOutputStream bo, int... expected) + private static void test0(ByteArrayOutputStream bo, String expected) throws Exception { PrintStream oldout = System.out; + boolean failed = false; System.setOut(new PrintStream(bo)); try { Context.fromUserPass(OneKDC.USER, OneKDC.PASS, false); + } catch (Exception e) { + failed = true; } finally { System.setOut(oldout); } String[] lines = new String(bo.toByteArray()).split("\n"); - System.out.println("----------------- TEST -----------------"); - int count = 0; + StringBuilder sb = new StringBuilder(); for (String line: lines) { Matcher m = re.matcher(line); if (m.find()) { System.out.println(line); - if (Integer.parseInt(m.group(1)) != expected[count++] || - Integer.parseInt(m.group(2)) != expected[count++]) { - throw new Exception("Fail here"); - } + sb.append(m.group(1)).append(m.group(2)); } } - if (count != expected.length) { - throw new Exception("Less rounds"); + if (failed) sb.append('-'); + + String output = sb.toString(); + System.out.println("Expected: " + expected + ", actual " + output); + if (!output.matches(expected)) { + throw new Exception("Does not match"); } } } diff -r d15095dfd348 -r aa2c9ce06632 test/sun/security/krb5/auto/BadKdc1.java --- a/test/sun/security/krb5/auto/BadKdc1.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/security/krb5/auto/BadKdc1.java Fri Aug 24 09:29:17 2012 +0100 @@ -37,16 +37,16 @@ throws Exception { Security.setProperty("krb5.kdc.bad.policy", "tryLess"); BadKdc.go( - new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,2,2,2,3,2}, // 1, 2 - // The above line means try kdc1 for 2 seconds, then kdc1 - // for 2 seconds,..., finally kdc3 for 2 seconds. - new int[]{1,2,2,2,3,2,1,2,2,2,3,2}, // 1, 2 + "121212222222(32){1,2}1222(32){1,2}", // 1 2 + // The above line means try kdc1 for 2 seconds then kdc1 + // for 2 seconds... finally kdc3 for 2 seconds. + "1222(32){1,2}1222(32){1,2}", // 1 2 // refresh - new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,2,2,2,3,2}, // 1, 2 - // k3 off, k2 on - new int[]{1,2,2,2,1,2,2,2}, // 1 + "121212222222(32){1,2}1222(32){1,2}", // 1 2 + // k3 off k2 on + "(122212(22){1,2}|1222323232-)", // 1 // k1 on - new int[]{1,2,1,2} // empty + "(12(12){1,2}|122232-)" // empty ); } } diff -r d15095dfd348 -r aa2c9ce06632 test/sun/security/krb5/auto/BadKdc2.java --- a/test/sun/security/krb5/auto/BadKdc2.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/security/krb5/auto/BadKdc2.java Fri Aug 24 09:29:17 2012 +0100 @@ -37,14 +37,14 @@ throws Exception { Security.setProperty("krb5.kdc.bad.policy", "tryLess:2,1000"); BadKdc.go( - new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,1,1,1,2,1,2,1,3,2}, // 1, 2 - new int[]{1,1,1,1,2,1,2,1,3,2,1,1,1,1,2,1,2,1,3,2}, // 1, 2 + "121212222222(32){1,2}11112121(32){1,2}", // 1 2 + "11112121(32){1,2}11112121(32){1,2}", // 1 2 // refresh - new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,1,1,1,2,1,2,1,3,2}, // 1, 2 - // k3 off, k2 on - new int[]{1,1,1,1,2,1,1,1,1,1,2,2}, // 1 + "121212222222(32){1,2}11112121(32){1,2}", // 1 2 + // k3 off k2 on + "1111(21){1,2}1111(22){1,2}", // 1 // k1 on - new int[]{1,1,1,2} // empty + "(11){1,2}(12){1,2}" // empty ); } } diff -r d15095dfd348 -r aa2c9ce06632 test/sun/security/krb5/auto/BadKdc3.java --- a/test/sun/security/krb5/auto/BadKdc3.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/security/krb5/auto/BadKdc3.java Fri Aug 24 09:29:17 2012 +0100 @@ -37,14 +37,14 @@ throws Exception { Security.setProperty("krb5.kdc.bad.policy", "tryLast"); BadKdc.go( - new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,3,2}, // 1, 2 - new int[]{3,2,3,2}, // 1, 2 + "121212222222(32){2,4}", // 1 2 + "(32){2,4}", // 1 2 // refresh - new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,3,2}, // 1, 2 - // k3 off, k2 on - new int[]{3,2,3,2,3,2,1,2,1,2,1,2,2,2,2,2}, // 1, 3 + "121212222222(32){2,4}", // 1 2 + // k3 off k2 on + "323232121212(22){2,4}", // 1 3 // k1 on - new int[]{2,2,2,2} // 1, 3 + "(22){2,4}" // 1 3 ); } } diff -r d15095dfd348 -r aa2c9ce06632 test/sun/security/krb5/auto/BadKdc4.java --- a/test/sun/security/krb5/auto/BadKdc4.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/security/krb5/auto/BadKdc4.java Fri Aug 24 09:29:17 2012 +0100 @@ -37,14 +37,14 @@ throws Exception { Security.setProperty("krb5.kdc.bad.policy", ""); BadKdc.go( - new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,2,1,2,1,2,2,2,2,2,2,2,3,2}, - new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,2,1,2,1,2,2,2,2,2,2,2,3,2}, + "121212222222(32){1,2}121212222222(32){1,2}", + "121212222222(32){1,2}121212222222(32){1,2}", // refresh - new int[]{1,2,1,2,1,2,2,2,2,2,2,2,3,2,1,2,1,2,1,2,2,2,2,2,2,2,3,2}, - // k3 off, k2 on - new int[]{1,2,1,2,1,2,2,2,1,2,1,2,1,2,2,2}, + "121212222222(32){1,2}121212222222(32){1,2}", + // k3 off k2 on + "121212(22){1,2}121212(22){1,2}", // k1 on - new int[]{1,2,1,2} + "(12){2,4}" ); } } diff -r d15095dfd348 -r aa2c9ce06632 test/sun/security/mscapi/ShortRSAKey1024.sh --- a/test/sun/security/mscapi/ShortRSAKey1024.sh Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/security/mscapi/ShortRSAKey1024.sh Fri Aug 24 09:29:17 2012 +0100 @@ -62,6 +62,13 @@ case "$OS" in Windows* | CYGWIN* ) + echo "Removing the keypair if it already exists (for unknown reason)..." + ${TESTJAVA}${FS}bin${FS}keytool \ + -delete \ + -storetype Windows-My \ + -debug \ + -alias 7106773.$BITS + echo "Creating a temporary RSA keypair in the Windows-My store..." ${TESTJAVA}${FS}bin${FS}keytool \ -genkeypair \ diff -r d15095dfd348 -r aa2c9ce06632 test/sun/security/x509/AlgorithmId/NonStandardNames.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/security/x509/AlgorithmId/NonStandardNames.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7180907 + * @summary Jarsigner -verify fails if rsa file used sha-256 with authenticated attributes + */ + +import java.security.MessageDigest; +import java.security.Signature; +import java.security.cert.X509Certificate; +import sun.security.pkcs.ContentInfo; +import sun.security.pkcs.PKCS7; +import sun.security.pkcs.PKCS9Attribute; +import sun.security.pkcs.PKCS9Attributes; +import sun.security.pkcs.SignerInfo; +import sun.security.tools.CertAndKeyGen; +import sun.security.x509.AlgorithmId; +import sun.security.x509.X500Name; + +public class NonStandardNames { + + public static void main(String[] args) throws Exception { + + byte[] data = "Hello".getBytes(); + X500Name n = new X500Name("cn=Me"); + + CertAndKeyGen cakg = new CertAndKeyGen("RSA", "SHA256withRSA"); + cakg.generate(1024); + X509Certificate cert = cakg.getSelfCertificate(n, 1000); + + MessageDigest md = MessageDigest.getInstance("SHA-256"); + PKCS9Attributes authed = new PKCS9Attributes(new PKCS9Attribute[]{ + new PKCS9Attribute(PKCS9Attribute.CONTENT_TYPE_OID, ContentInfo.DATA_OID), + new PKCS9Attribute(PKCS9Attribute.MESSAGE_DIGEST_OID, md.digest(data)), + }); + + Signature s = Signature.getInstance("SHA256withRSA"); + s.initSign(cakg.getPrivateKey()); + s.update(authed.getDerEncoding()); + byte[] sig = s.sign(); + + SignerInfo signerInfo = new SignerInfo( + n, + cert.getSerialNumber(), + AlgorithmId.get("SHA-256"), + authed, + AlgorithmId.get("SHA256withRSA"), + sig, + null + ); + + PKCS7 pkcs7 = new PKCS7( + new AlgorithmId[] {signerInfo.getDigestAlgorithmId()}, + new ContentInfo(data), + new X509Certificate[] {cert}, + new SignerInfo[] {signerInfo}); + + if (pkcs7.verify(signerInfo, data) == null) { + throw new Exception("Not verified"); + } + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/security/x509/X509CRLImpl/Verify.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/security/x509/X509CRLImpl/Verify.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,153 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7026347 + * @summary X509CRL should have verify(PublicKey key, Provider sigProvider) + */ + +import java.io.ByteArrayInputStream; +import java.security.*; +import java.security.cert.*; + +public class Verify { + + static String selfSignedCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICPjCCAaegAwIBAgIBADANBgkqhkiG9w0BAQQFADAfMQswCQYDVQQGEwJVUzEQ\n" + + "MA4GA1UEChMHRXhhbXBsZTAeFw0wOTA0MjcwMjI0MzJaFw0zMDA0MDcwMjI0MzJa\n" + + "MB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMIGfMA0GCSqGSIb3DQEB\n" + + "AQUAA4GNADCBiQKBgQC4OTag24sTxL2tXTNuvpmUEtdxrYAZoFsslFQ60T+WD9wQ\n" + + "Jeiw87FSPsR2vxRuv0j8DNm2a4h7LNNIFcLurfNldbz5pvgZ7VqdbbUMPE9qP85n\n" + + "jgDl4woyRTSUeRI4A7O0CO6NpES21dtbdhroWQrEkHxpnrDPxsxrz5gf2m3gqwID\n" + + "AQABo4GJMIGGMB0GA1UdDgQWBBSCJd0hpl5PdAD9IZS+Hzng4lXLGzBHBgNVHSME\n" + + "QDA+gBSCJd0hpl5PdAD9IZS+Hzng4lXLG6EjpCEwHzELMAkGA1UEBhMCVVMxEDAO\n" + + "BgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUwAwEB/zALBgNVHQ8EBAMCAgQw\n" + + "DQYJKoZIhvcNAQEEBQADgYEAluy6HIjWcq009lTLmhp+Np6dxU78pInBK8RZkza0\n" + + "484qGaxFGD3UGyZkI5uWmsH2XuMbuox5khfIq6781gmkPBHXBIEtJN8eLusOHEye\n" + + "iE8h7WI+N3qa6Pj56WionMrioqC/3X+b06o147bbhx8U0vkYv/HyPaITOFfMXTdz\n" + + "Vjw=\n" + + "-----END CERTIFICATE-----"; + + static String crlIssuerCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICKzCCAZSgAwIBAgIBAjANBgkqhkiG9w0BAQQFADAfMQswCQYDVQQGEwJVUzEQ\n" + + "MA4GA1UEChMHRXhhbXBsZTAeFw0wOTA0MjcwMjI0MzNaFw0yOTAxMTIwMjI0MzNa\n" + + "MB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMIGfMA0GCSqGSIb3DQEB\n" + + "AQUAA4GNADCBiQKBgQDMJeBMBybHykI/YpwUJ4O9euqDSLb1kpWpceBS8TVqvgBC\n" + + "SgUJWtFZL0i6bdvF6mMdlbuBkGzhXqHiVAi96/zRLbUC9F8SMEJ6MuD+YhQ0ZFTQ\n" + + "atKy8zf8O9XzztelLJ26Gqb7QPV133WY3haAqHtCXOhEKkCN16NOYNC37DTaJwID\n" + + "AQABo3cwdTAdBgNVHQ4EFgQULXSWzXzUOIpOJpzbSCpW42IJUugwRwYDVR0jBEAw\n" + + "PoAUgiXdIaZeT3QA/SGUvh854OJVyxuhI6QhMB8xCzAJBgNVBAYTAlVTMRAwDgYD\n" + + "VQQKEwdFeGFtcGxlggEAMAsGA1UdDwQEAwIBAjANBgkqhkiG9w0BAQQFAAOBgQAY\n" + + "eMnf5AHSNlyUlzXk8o2S0h4gCuvKX6C3kFfKuZcWvFAbx4yQOWLS2s15/nzR4+AP\n" + + "FGX3lgJjROyAh7fGedTQK+NFWwkM2ag1g3hXktnlnT1qHohi0w31nVBJxXEDO/Ck\n" + + "uJTpJGt8XxxbFaw5v7cHy7XuTAeU/sekvjEiNHW00Q==\n" + + "-----END CERTIFICATE-----"; + + static String crlStr = + "-----BEGIN X509 CRL-----\n" + + "MIIBGzCBhQIBATANBgkqhkiG9w0BAQQFADAfMQswCQYDVQQGEwJVUzEQMA4GA1UE\n" + + "ChMHRXhhbXBsZRcNMDkwNDI3MDIzODA0WhcNMjgwNjI2MDIzODA0WjAiMCACAQUX\n" + + "DTA5MDQyNzAyMzgwMFowDDAKBgNVHRUEAwoBBKAOMAwwCgYDVR0UBAMCAQIwDQYJ\n" + + "KoZIhvcNAQEEBQADgYEAoarfzXEtw3ZDi4f9U8eSvRIipHSyxOrJC7HR/hM5VhmY\n" + + "CErChny6x9lBVg9s57tfD/P9PSzBLusCcHwHMAbMOEcTltVVKUWZnnbumpywlYyg\n" + + "oKLrE9+yCOkYUOpiRlz43/3vkEL5hjIKMcDSZnPKBZi1h16Yj2hPe9GMibNip54=\n" + + "-----END X509 CRL-----"; + + private static X509CRL crl; + private static PublicKey selfSignedCertPubKey; + private static PublicKey crlIssuerCertPubKey; + + public static void main(String[] args) throws Exception { + setup(); + + /* + * Verify CRL with its own public key. + * Should pass. + */ + verifyCRL(crlIssuerCertPubKey, "SunRsaSign"); + + /* + * Try to verify CRL with a provider that does not have a Signature + * implementation. + * Should fail with NoSuchAlgorithmException. + */ + try { + verifyCRL(crlIssuerCertPubKey, "SunPCSC"); + throw new RuntimeException("Didn't catch the exception properly"); + } catch (NoSuchAlgorithmException e) { + System.out.println("Caught the correct exception."); + } + + /* + * Try to verify CRL with a provider that has a Signature implementation + * but not of the right algorithm (MD5withRSA). + * Should fail with NoSuchAlgorithmException. + */ + try { + verifyCRL(crlIssuerCertPubKey, "SUN"); + throw new RuntimeException("Didn't catch the exception properly"); + } catch (NoSuchAlgorithmException e) { + System.out.println("Caught the correct exception."); + } + + /* + * Try to verify CRL with the wrong public key. + * Should fail with SignatureException. + */ + try { + verifyCRL(selfSignedCertPubKey, "SunRsaSign"); + throw new RuntimeException("Didn't catch the exception properly"); + } catch (SignatureException e) { + System.out.println("Caught the correct exception."); + } + } + + private static void setup() throws CertificateException, CRLException { + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + + /* Create CRL */ + ByteArrayInputStream inputStream = + new ByteArrayInputStream(crlStr.getBytes()); + crl = (X509CRL)cf.generateCRL(inputStream); + + /* Get public key of the CRL issuer cert */ + inputStream = new ByteArrayInputStream(crlIssuerCertStr.getBytes()); + X509Certificate cert + = (X509Certificate)cf.generateCertificate(inputStream); + crlIssuerCertPubKey = cert.getPublicKey(); + + /* Get public key of the self-signed Cert */ + inputStream = new ByteArrayInputStream(selfSignedCertStr.getBytes()); + selfSignedCertPubKey = cf.generateCertificate(inputStream).getPublicKey(); + } + + private static void verifyCRL(PublicKey key, String providerName) + throws CRLException, NoSuchAlgorithmException, InvalidKeyException, + SignatureException { + Provider provider = Security.getProvider(providerName); + crl.verify(key, provider); + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/security/x509/X509CertImpl/Verify.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/security/x509/X509CertImpl/Verify.java Fri Aug 24 09:29:17 2012 +0100 @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7026347 + * @summary Certificate should have + * verify(PublicKey key, Provider sigProvider) + */ + +import java.io.ByteArrayInputStream; +import java.security.*; +import java.security.cert.*; + +public class Verify { + + static String selfSignedCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICPjCCAaegAwIBAgIBADANBgkqhkiG9w0BAQQFADAfMQswCQYDVQQGEwJVUzEQ\n" + + "MA4GA1UEChMHRXhhbXBsZTAeFw0wOTA0MjcwMjI0MzJaFw0zMDA0MDcwMjI0MzJa\n" + + "MB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMIGfMA0GCSqGSIb3DQEB\n" + + "AQUAA4GNADCBiQKBgQC4OTag24sTxL2tXTNuvpmUEtdxrYAZoFsslFQ60T+WD9wQ\n" + + "Jeiw87FSPsR2vxRuv0j8DNm2a4h7LNNIFcLurfNldbz5pvgZ7VqdbbUMPE9qP85n\n" + + "jgDl4woyRTSUeRI4A7O0CO6NpES21dtbdhroWQrEkHxpnrDPxsxrz5gf2m3gqwID\n" + + "AQABo4GJMIGGMB0GA1UdDgQWBBSCJd0hpl5PdAD9IZS+Hzng4lXLGzBHBgNVHSME\n" + + "QDA+gBSCJd0hpl5PdAD9IZS+Hzng4lXLG6EjpCEwHzELMAkGA1UEBhMCVVMxEDAO\n" + + "BgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUwAwEB/zALBgNVHQ8EBAMCAgQw\n" + + "DQYJKoZIhvcNAQEEBQADgYEAluy6HIjWcq009lTLmhp+Np6dxU78pInBK8RZkza0\n" + + "484qGaxFGD3UGyZkI5uWmsH2XuMbuox5khfIq6781gmkPBHXBIEtJN8eLusOHEye\n" + + "iE8h7WI+N3qa6Pj56WionMrioqC/3X+b06o147bbhx8U0vkYv/HyPaITOFfMXTdz\n" + + "Vjw=\n" + + "-----END CERTIFICATE-----"; + + static String crlIssuerCertStr = + "-----BEGIN CERTIFICATE-----\n" + + "MIICKzCCAZSgAwIBAgIBAjANBgkqhkiG9w0BAQQFADAfMQswCQYDVQQGEwJVUzEQ\n" + + "MA4GA1UEChMHRXhhbXBsZTAeFw0wOTA0MjcwMjI0MzNaFw0yOTAxMTIwMjI0MzNa\n" + + "MB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMIGfMA0GCSqGSIb3DQEB\n" + + "AQUAA4GNADCBiQKBgQDMJeBMBybHykI/YpwUJ4O9euqDSLb1kpWpceBS8TVqvgBC\n" + + "SgUJWtFZL0i6bdvF6mMdlbuBkGzhXqHiVAi96/zRLbUC9F8SMEJ6MuD+YhQ0ZFTQ\n" + + "atKy8zf8O9XzztelLJ26Gqb7QPV133WY3haAqHtCXOhEKkCN16NOYNC37DTaJwID\n" + + "AQABo3cwdTAdBgNVHQ4EFgQULXSWzXzUOIpOJpzbSCpW42IJUugwRwYDVR0jBEAw\n" + + "PoAUgiXdIaZeT3QA/SGUvh854OJVyxuhI6QhMB8xCzAJBgNVBAYTAlVTMRAwDgYD\n" + + "VQQKEwdFeGFtcGxlggEAMAsGA1UdDwQEAwIBAjANBgkqhkiG9w0BAQQFAAOBgQAY\n" + + "eMnf5AHSNlyUlzXk8o2S0h4gCuvKX6C3kFfKuZcWvFAbx4yQOWLS2s15/nzR4+AP\n" + + "FGX3lgJjROyAh7fGedTQK+NFWwkM2ag1g3hXktnlnT1qHohi0w31nVBJxXEDO/Ck\n" + + "uJTpJGt8XxxbFaw5v7cHy7XuTAeU/sekvjEiNHW00Q==\n" + + "-----END CERTIFICATE-----"; + + private static X509Certificate cert; + private static PublicKey selfSignedCertPubKey; + private static PublicKey crlIssuerCertPubKey; + + public static void main(String[] args) throws Exception { + setup(); + + /* + * Verify certificate with its own public key. + * Should pass. + */ + verifyCert(selfSignedCertPubKey,"SunRsaSign"); + + /* + * Try to verify certificate with a provider that does not have a + * Signature implementation. + * Should fail with NoSuchAlgorithmException. + */ + try { + verifyCert(selfSignedCertPubKey, "SunPCSC"); + throw new RuntimeException("Didn't catch the exception properly"); + } catch (NoSuchAlgorithmException e) { + System.out.println("Caught the correct exception."); + } + + /* + * Try to verify certificate with a provider that has a Signature + * implementation but not of the right algorithm (MD5withRSA). + * Should fail with NoSuchAlgorithmException. + */ + try { + verifyCert(selfSignedCertPubKey, "SUN"); + throw new RuntimeException("Didn't catch the exception properly"); + } catch (NoSuchAlgorithmException e) { + System.out.println("Caught the correct exception."); + } + + /* + * Try to verify certificate with the wrong public key. + * Should fail with SignatureException. + */ + try { + verifyCert(crlIssuerCertPubKey, "SunRsaSign"); + throw new RuntimeException("Didn't catch the exception properly"); + } catch (SignatureException e) { + System.out.println("Caught the correct exception."); + } + } + + private static void setup() throws CertificateException, CRLException { + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + + /* Get public key of the CRL issuer cert */ + ByteArrayInputStream inputStream + = new ByteArrayInputStream(crlIssuerCertStr.getBytes()); + cert = (X509Certificate)cf.generateCertificate(inputStream); + crlIssuerCertPubKey = cert.getPublicKey(); + + /* Get public key of the self-signed Cert */ + inputStream = new ByteArrayInputStream(selfSignedCertStr.getBytes()); + selfSignedCertPubKey = cf.generateCertificate(inputStream).getPublicKey(); + } + + private static void verifyCert(PublicKey key, String providerName) + throws CertificateException, NoSuchAlgorithmException, + InvalidKeyException, SignatureException { + Provider provider = Security.getProvider(providerName); + cert.verify(key, provider); + } +} diff -r d15095dfd348 -r aa2c9ce06632 test/sun/text/resources/LocaleData --- a/test/sun/text/resources/LocaleData Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/text/resources/LocaleData Fri Aug 24 09:29:17 2012 +0100 @@ -655,7 +655,6 @@ FormatData/es_UY/NumberElements/2=; CurrencyNames/es_VE/VEB=Bs # bug 6570259 -CurrencyNames/es_VE/VEF=BsF. FormatData/es_VE/NumberPatterns/0=#,##0.###;-#,##0.### # FormatData/es_VE/NumberPatterns/1=Bs#,##0.00;Bs -#,##0.00 # Changed; see bug 4122840 FormatData/es_VE/NumberPatterns/2=#,##0% @@ -7034,3 +7033,5 @@ FormatData/sl/DateTimePatterns/4=EEEE, dd. MMMM y FormatData/sl/DateTimePatterns/5=dd. MMMM y +# bug 7189611 +CurrencyNames/es_VE/VEF=Bs.F. diff -r d15095dfd348 -r aa2c9ce06632 test/sun/text/resources/LocaleDataTest.java --- a/test/sun/text/resources/LocaleDataTest.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/text/resources/LocaleDataTest.java Fri Aug 24 09:29:17 2012 +0100 @@ -34,7 +34,7 @@ * 6509039 6609737 6610748 6645271 6507067 6873931 6450945 6645268 6646611 * 6645405 6650730 6910489 6573250 6870908 6585666 6716626 6914413 6916787 * 6919624 6998391 7019267 7020960 7025837 7020583 7036905 7066203 7101495 - * 7003124 7085757 7028073 7171028 + * 7003124 7085757 7028073 7171028 7189611 * @summary Verify locale data * */ diff -r d15095dfd348 -r aa2c9ce06632 test/sun/tools/jcmd/help_help.out --- a/test/sun/tools/jcmd/help_help.out Fri Aug 03 20:56:16 2012 +0100 +++ b/test/sun/tools/jcmd/help_help.out Fri Aug 24 09:29:17 2012 +0100 @@ -1,7 +1,7 @@ help For more information about a specific command use 'help '. With no argument this will show a list of available commands. 'help all' will show help for all commands. -Impact: Low: +Impact: Low Syntax : help [options] [] diff -r d15095dfd348 -r aa2c9ce06632 test/tools/launcher/Arrrghs.java --- a/test/tools/launcher/Arrrghs.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/tools/launcher/Arrrghs.java Fri Aug 24 09:29:17 2012 +0100 @@ -24,7 +24,7 @@ /** * @test * @bug 5030233 6214916 6356475 6571029 6684582 6742159 4459600 6758881 6753938 - * 6894719 6968053 7151434 + * 6894719 6968053 7151434 7146424 * @summary Argument parsing validation. * @compile -XDignore.symbol.file Arrrghs.java * @run main Arrrghs @@ -36,7 +36,13 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class Arrrghs extends TestHelper { private Arrrghs(){} @@ -75,7 +81,7 @@ /* * This method detects the cookie in the output stream of the process. */ - private static boolean detectCookie(InputStream istream, + private boolean detectCookie(InputStream istream, String expectedArguments) throws IOException { BufferedReader rd = new BufferedReader(new InputStreamReader(istream)); boolean retval = false; @@ -105,7 +111,7 @@ return retval; } - private static boolean doTest0(ProcessBuilder pb, String expectedArguments) { + private boolean doReExecTest0(ProcessBuilder pb, String expectedArguments) { boolean retval = false; try { pb.redirectErrorStream(true); @@ -121,26 +127,27 @@ } /** - * This method return true if the expected and detected arguments are the same. + * This method returns true if the expected and detected arguments are the same. * Quoting could cause dissimilar testArguments and expected arguments. */ - static int doTest(String testArguments, String expectedPattern) { + int doReExecTest(String testArguments, String expectedPattern) { ProcessBuilder pb = new ProcessBuilder(javaCmd, VersionStr, testArguments); Map env = pb.environment(); - env.put("_JAVA_LAUNCHER_DEBUG", "true"); - return doTest0(pb, testArguments) ? 0 : 1; + env.put(JLDEBUG_KEY, "true"); + return doReExecTest0(pb, testArguments) ? 0 : 1; } /** * A convenience method for identical test pattern and expected arguments */ - static int doTest(String testPattern) { - return doTest(testPattern, testPattern); + int doReExecTest(String testPattern) { + return doReExecTest(testPattern, testPattern); } - static void quoteParsingTests() { + @Test + void testQuoteParsingThroughReExec() { /* * Tests for 6214916 * These tests require that a JVM (any JVM) be installed in the system registry. @@ -154,103 +161,433 @@ } // Basic test - testExitValue += doTest("-a -b -c -d"); + testExitValue += doReExecTest("-a -b -c -d"); // Basic test with many spaces - testExitValue += doTest("-a -b -c -d"); + testExitValue += doReExecTest("-a -b -c -d"); // Quoted whitespace does matter ? - testExitValue += doTest("-a \"\"-b -c\"\" -d"); + testExitValue += doReExecTest("-a \"\"-b -c\"\" -d"); // Escaped quotes outside of quotes as literals - testExitValue += doTest("-a \\\"-b -c\\\" -d"); + testExitValue += doReExecTest("-a \\\"-b -c\\\" -d"); // Check for escaped quotes inside of quotes as literal - testExitValue += doTest("-a \"-b \\\"stuff\\\"\" -c -d"); + testExitValue += doReExecTest("-a \"-b \\\"stuff\\\"\" -c -d"); // A quote preceeded by an odd number of slashes is a literal quote - testExitValue += doTest("-a -b\\\\\\\" -c -d"); + testExitValue += doReExecTest("-a -b\\\\\\\" -c -d"); // A quote preceeded by an even number of slashes is a literal quote // see 6214916. - testExitValue += doTest("-a -b\\\\\\\\\" -c -d"); + testExitValue += doReExecTest("-a -b\\\\\\\\\" -c -d"); // Make sure that whitespace doesn't interfere with the removal of the // appropriate tokens. (space-tab-space preceeds -jre-restict-search). - testExitValue += doTest("-a -b \t -jre-restrict-search -c -d","-a -b -c -d"); + testExitValue += doReExecTest("-a -b \t -jre-restrict-search -c -d", "-a -b -c -d"); // Make sure that the mJRE tokens being stripped, aren't stripped if // they happen to appear as arguments to the main class. - testExitValue += doTest("foo -version:1.1+"); + testExitValue += doReExecTest("foo -version:1.1+"); + + System.out.println("Completed arguments quoting tests with " + + testExitValue + " errors"); + } + // the pattern we hope to see in the output + static final Pattern ArgPattern = Pattern.compile("\\s*argv\\[[0-9]*\\].*=.*"); + + void checkArgumentParsing(String inArgs, String... expArgs) throws IOException { + List scratchpad = new ArrayList<>(); + scratchpad.add("set " + JLDEBUG_KEY + "=true"); + // GAK, -version needs to be added so that windows can flush its stderr + // exiting the process prematurely can terminate the stderr. + scratchpad.add(javaCmd + " -version " + inArgs); + File batFile = new File("atest.bat"); + java.nio.file.Files.deleteIfExists(batFile.toPath()); + createFile(batFile, scratchpad); + + TestResult tr = doExec(batFile.getName()); + + ArrayList expList = new ArrayList<>(); + expList.add(javaCmd); + expList.add("-version"); + expList.addAll(Arrays.asList(expArgs)); + + List gotList = new ArrayList<>(); + for (String x : tr.testOutput) { + Matcher m = ArgPattern.matcher(x); + if (m.matches()) { + String a[] = x.split("="); + gotList.add(a[a.length - 1].trim()); + } + } + if (!gotList.equals(expList)) { + System.out.println(tr); + System.out.println("Expected args:"); + System.out.println(expList); + System.out.println("Obtained args:"); + System.out.println(gotList); + throw new RuntimeException("Error: args do not match"); + } + System.out.println("\'" + inArgs + "\'" + " - Test passed"); + } + + /* + * This tests general quoting and are specific to Windows, *nixes + * need not worry about this, these have been tested with Windows + * implementation and those that are known to work are used against + * the java implementation. Note that the ProcessBuilder gets in the + * way when testing some of these arguments, therefore we need to + * create and execute a .bat file containing the arguments. + */ + @Test + void testArgumentParsing() throws IOException { + if (!isWindows) + return; + // no quotes + checkArgumentParsing("a b c d", "a", "b", "c", "d"); + + // single quotes + checkArgumentParsing("\"a b c d\"", "a b c d"); + + //double quotes + checkArgumentParsing("\"\"a b c d\"\"", "a", "b", "c", "d"); + + // triple quotes + checkArgumentParsing("\"\"\"a b c d\"\"\"", "\"a b c d\""); + + // a literal within single quotes + checkArgumentParsing("\"a\"b c d\"e\"", "ab", "c", "de"); + + // a literal within double quotes + checkArgumentParsing("\"\"a\"b c d\"e\"\"", "ab c de"); + + // a literal quote + checkArgumentParsing("a\\\"b", "a\"b"); + + // double back-slash + checkArgumentParsing("\"a b c d\\\\\"", "a b c d\\"); + + // triple back-slash + checkArgumentParsing("a\\\\\\\"b", "a\\\"b"); + + // dangling quote + checkArgumentParsing("\"a b c\"\"", "a b c\""); + + // expansions of white space separators + checkArgumentParsing("a b", "a", "b"); + checkArgumentParsing("a\tb", "a", "b"); + checkArgumentParsing("a \t b", "a", "b"); + + checkArgumentParsing("\"C:\\TEST A\\\\\"", "C:\\TEST A\\"); + checkArgumentParsing("\"\"C:\\TEST A\\\\\"\"", "C:\\TEST", "A\\"); + + // MS Windows tests + // triple back-slash + checkArgumentParsing("a\\\\\\d", "a\\\\\\d"); + + // triple back-slash in quotes + checkArgumentParsing("\"a\\\\\\d\"", "a\\\\\\d"); + + // slashes separating characters + checkArgumentParsing("X\\Y\\Z", "X\\Y\\Z"); + checkArgumentParsing("\\X\\Y\\Z", "\\X\\Y\\Z"); + + // literals within dangling quotes, etc. + checkArgumentParsing("\"a b c\" d e", "a b c", "d", "e"); + checkArgumentParsing("\"ab\\\"c\" \"\\\\\" d", "ab\"c", "\\", "d"); + checkArgumentParsing("a\\\\\\c d\"e f\"g h", "a\\\\\\c", "de fg", "h"); + checkArgumentParsing("a\\\\\\\"b c d", "a\\\"b", "c", "d"); + checkArgumentParsing("a\\\\\\\\\"g c\" d e", "a\\\\g c", "d", "e"); + + // treatment of back-slashes + checkArgumentParsing("*\\", "*\\"); + checkArgumentParsing("*/", "*/"); + checkArgumentParsing(".\\*", ".\\*"); + checkArgumentParsing("./*", "./*"); + checkArgumentParsing("..\\..\\*", "..\\..\\*"); + checkArgumentParsing("../../*", "../../*"); + checkArgumentParsing("..\\..\\", "..\\..\\"); + checkArgumentParsing("../../", "../../"); + } + + private void initEmptyDir(File emptyDir) throws IOException { + if (emptyDir.exists()) { + recursiveDelete(emptyDir); + } + emptyDir.mkdir(); + } + + private void initDirWithJavaFiles(File libDir) throws IOException { + + if (libDir.exists()) { + recursiveDelete(libDir); + } + libDir.mkdirs(); + ArrayList scratchpad = new ArrayList<>(); + scratchpad.add("package lib;"); + scratchpad.add("public class Fbo {"); + scratchpad.add("public static void main(String... args){Foo.f();}"); + scratchpad.add("public static void f(){}"); + scratchpad.add("}"); + createFile(new File(libDir, "Fbo.java"), scratchpad); + + scratchpad.clear(); + scratchpad.add("package lib;"); + scratchpad.add("public class Foo {"); + scratchpad.add("public static void main(String... args){"); + scratchpad.add("for (String x : args) {"); + scratchpad.add("System.out.println(x);"); + scratchpad.add("}"); + scratchpad.add("Fbo.f();"); + scratchpad.add("}"); + scratchpad.add("public static void f(){}"); + scratchpad.add("}"); + createFile(new File(libDir, "Foo.java"), scratchpad); + } + + void checkArgumentWildcard(String inArgs, String... expArgs) throws IOException { + String[] in = {inArgs}; + checkArgumentWildcard(in, expArgs); - System.out.println("Completed arguments quoting tests with " + - testExitValue + " errors"); + // now add arbitrary arguments before and after + String[] outInArgs = { "-Q", inArgs, "-R"}; + + String[] outExpArgs = new String[expArgs.length + 2]; + outExpArgs[0] = "-Q"; + System.arraycopy(expArgs, 0, outExpArgs, 1, expArgs.length); + outExpArgs[expArgs.length + 1] = "-R"; + checkArgumentWildcard(outInArgs, outExpArgs); + } + + void checkArgumentWildcard(String[] inArgs, String[] expArgs) throws IOException { + ArrayList argList = new ArrayList<>(); + argList.add(javaCmd); + argList.add("-cp"); + argList.add("lib" + File.separator + "*"); + argList.add("lib.Foo"); + argList.addAll(Arrays.asList(inArgs)); + String[] cmds = new String[argList.size()]; + argList.toArray(cmds); + TestResult tr = doExec(cmds); + if (!tr.isOK()) { + System.out.println(tr); + throw new RuntimeException("Error: classpath single entry wildcard entry"); + } + + ArrayList expList = new ArrayList<>(); + expList.addAll(Arrays.asList(expArgs)); + + List gotList = new ArrayList<>(); + for (String x : tr.testOutput) { + gotList.add(x.trim()); + } + if (!gotList.equals(expList)) { + System.out.println(tr); + System.out.println("Expected args:"); + System.out.println(expList); + System.out.println("Obtained args:"); + System.out.println(gotList); + throw new RuntimeException("Error: args do not match"); + } + System.out.print("\'"); + for (String x : inArgs) { + System.out.print(x + " "); + } + System.out.println("\'" + " - Test passed"); } /* + * These tests are not expected to work on *nixes, and are ignored. + */ + @Test + void testWildCardArgumentProcessing() throws IOException { + if (!isWindows) + return; + File cwd = new File("."); + File libDir = new File(cwd, "lib"); + initDirWithJavaFiles(libDir); + initEmptyDir(new File(cwd, "empty")); + + // test if javac (the command) can compile *.java + TestResult tr = doExec(javacCmd, libDir.getName() + File.separator + "*.java"); + if (!tr.isOK()) { + System.out.println(tr); + throw new RuntimeException("Error: compiling java wildcards"); + } + + // use the jar cmd to create jars using the ? wildcard + File jarFoo = new File(libDir, "Foo.jar"); + tr = doExec(jarCmd, "cvf", jarFoo.getAbsolutePath(), "lib" + File.separator + "F?o.class"); + if (!tr.isOK()) { + System.out.println(tr); + throw new RuntimeException("Error: creating jar with wildcards"); + } + + // now the litmus test!, this should work + checkArgumentWildcard("a", "a"); + + // test for basic expansion + checkArgumentWildcard("lib\\F*java", "lib\\Fbo.java", "lib\\Foo.java"); + + // basic expansion in quotes + checkArgumentWildcard("\"lib\\F*java\"", "lib\\F*java"); + + checkArgumentWildcard("lib\\**", "lib\\Fbo.class", "lib\\Fbo.java", + "lib\\Foo.class", "lib\\Foo.jar", "lib\\Foo.java"); + + checkArgumentWildcard("lib\\*?", "lib\\Fbo.class", "lib\\Fbo.java", + "lib\\Foo.class", "lib\\Foo.jar", "lib\\Foo.java"); + + checkArgumentWildcard("lib\\?*", "lib\\Fbo.class", "lib\\Fbo.java", + "lib\\Foo.class", "lib\\Foo.jar", "lib\\Foo.java"); + + checkArgumentWildcard("lib\\?", "lib\\?"); + + // test for basic expansion + checkArgumentWildcard("lib\\*java", "lib\\Fbo.java", "lib\\Foo.java"); + + // basic expansion in quotes + checkArgumentWildcard("\"lib\\*.java\"", "lib\\*.java"); + + // suffix expansion + checkArgumentWildcard("lib\\*.class", "lib\\Fbo.class", "lib\\Foo.class"); + + // suffix expansion in quotes + checkArgumentWildcard("\"lib\\*.class\"", "lib\\*.class"); + + // check for ? expansion now + checkArgumentWildcard("lib\\F?o.java", "lib\\Fbo.java", "lib\\Foo.java"); + + // check ? in quotes + checkArgumentWildcard("\"lib\\F?o.java\"", "lib\\F?o.java"); + + // check ? as suffixes + checkArgumentWildcard("lib\\F?o.????", "lib\\Fbo.java", "lib\\Foo.java"); + + // check ? in a leading role + checkArgumentWildcard("lib\\???.java", "lib\\Fbo.java", "lib\\Foo.java"); + checkArgumentWildcard("\"lib\\???.java\"", "lib\\???.java"); + + // check ? prefixed with - + checkArgumentWildcard("-?", "-?"); + + // check * prefixed with - + checkArgumentWildcard("-*", "-*"); + + // check on empty directory + checkArgumentWildcard("empty\\*", "empty\\*"); + checkArgumentWildcard("empty\\**", "empty\\**"); + checkArgumentWildcard("empty\\?", "empty\\?"); + checkArgumentWildcard("empty\\??", "empty\\??"); + checkArgumentWildcard("empty\\*?", "empty\\*?"); + checkArgumentWildcard("empty\\?*", "empty\\?*"); + + } + + void doArgumentCheck(String inArgs, String... expArgs) { + Map env = new HashMap<>(); + env.put(JLDEBUG_KEY, "true"); + TestResult tr = doExec(env, javaCmd, inArgs); + System.out.println(tr); + int sindex = tr.testOutput.indexOf("Command line args:"); + if (sindex < 0) { + System.out.println(tr); + throw new RuntimeException("Error: no output"); + } + sindex++; // skip over the tag + List gotList = new ArrayList<>(); + for (String x : tr.testOutput.subList(sindex, sindex + expArgs.length)) { + String a[] = x.split("="); + gotList.add(a[a.length - 1].trim()); + } + List expList = Arrays.asList(expArgs); + if (!gotList.equals(expList)) { + System.out.println(tr); + System.out.println("Expected args:"); + System.out.println(expList); + System.out.println("Obtained args:"); + System.out.println(gotList); + throw new RuntimeException("Error: args do not match"); + } + } + + + /* * These tests are usually run on non-existent targets to check error results */ - static void runBasicErrorMessageTests() { + @Test + void testBasicErrorMessages() { // Tests for 5030233 TestResult tr = doExec(javaCmd, "-cp"); tr.checkNegative(); tr.isNotZeroOutput(); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); tr = doExec(javaCmd, "-classpath"); tr.checkNegative(); tr.isNotZeroOutput(); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); tr = doExec(javaCmd, "-jar"); tr.checkNegative(); tr.isNotZeroOutput(); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); tr = doExec(javacCmd, "-cp"); tr.checkNegative(); tr.isNotZeroOutput(); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // Test for 6356475 "REGRESSION:"java -X" from cmdline fails" tr = doExec(javaCmd, "-X"); tr.checkPositive(); tr.isNotZeroOutput(); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); tr = doExec(javaCmd, "-help"); tr.checkPositive(); tr.isNotZeroOutput(); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // 6753938, test for non-negative exit value for an incorrectly formed // command line, '% java' tr = doExec(javaCmd); tr.checkNegative(); tr.isNotZeroOutput(); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // 6753938, test for non-negative exit value for an incorrectly formed // command line, '% java -Xcomp' tr = doExec(javaCmd, "-Xcomp"); tr.checkNegative(); tr.isNotZeroOutput(); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // 7151434, test for non-negative exit value for an incorrectly formed // command line, '% java -jar -W', note the bogus -W tr = doExec(javaCmd, "-jar", "-W"); tr.checkNegative(); tr.contains("Unrecognized option: -W"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); } /* * Tests various dispositions of the main method, these tests are limited * to English locales as they check for error messages that are localized. */ - static void runMainMethodTests() throws FileNotFoundException { + @Test + void testMainMethod() throws FileNotFoundException { if (!isEnglishLocale()) { return; } @@ -262,55 +599,65 @@ (String[])null); tr = doExec(javaCmd, "-jar", "some.jar"); tr.contains("Error: Could not find or load main class MIA"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // use classpath to check tr = doExec(javaCmd, "-cp", "some.jar", "MIA"); tr.contains("Error: Could not find or load main class MIA"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // incorrect method access createJar(new File("some.jar"), new File("Foo"), "private static void main(String[] args){}"); tr = doExec(javaCmd, "-jar", "some.jar"); tr.contains("Error: Main method not found in class Foo"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // use classpath to check tr = doExec(javaCmd, "-cp", "some.jar", "Foo"); tr.contains("Error: Main method not found in class Foo"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // incorrect return type createJar(new File("some.jar"), new File("Foo"), "public static int main(String[] args){return 1;}"); tr = doExec(javaCmd, "-jar", "some.jar"); tr.contains("Error: Main method must return a value of type void in class Foo"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // use classpath to check tr = doExec(javaCmd, "-cp", "some.jar", "Foo"); tr.contains("Error: Main method must return a value of type void in class Foo"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // incorrect parameter type createJar(new File("some.jar"), new File("Foo"), "public static void main(Object[] args){}"); tr = doExec(javaCmd, "-jar", "some.jar"); tr.contains("Error: Main method not found in class Foo"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // use classpath to check tr = doExec(javaCmd, "-cp", "some.jar", "Foo"); tr.contains("Error: Main method not found in class Foo"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // incorrect method type - non-static createJar(new File("some.jar"), new File("Foo"), "public void main(String[] args){}"); tr = doExec(javaCmd, "-jar", "some.jar"); tr.contains("Error: Main method is not static in class Foo"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // use classpath to check tr = doExec(javaCmd, "-cp", "some.jar", "Foo"); tr.contains("Error: Main method is not static in class Foo"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // amongst a potpourri of kindred main methods, is the right one chosen ? createJar(new File("some.jar"), new File("Foo"), @@ -322,25 +669,29 @@ "public static void main(String[] args) {System.out.println(\"THE_CHOSEN_ONE\");}"); tr = doExec(javaCmd, "-jar", "some.jar"); tr.contains("THE_CHOSEN_ONE"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // use classpath to check tr = doExec(javaCmd, "-cp", "some.jar", "Foo"); tr.contains("THE_CHOSEN_ONE"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // test for extraneous whitespace in the Main-Class attribute createJar(" Foo ", new File("some.jar"), new File("Foo"), "public static void main(String... args){}"); tr = doExec(javaCmd, "-jar", "some.jar"); tr.checkPositive(); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); } /* * tests 6968053, ie. we turn on the -Xdiag (for now) flag and check if * the suppressed stack traces are exposed, ignore these tests for localized * locales, limiting to English only. */ - static void runDiagOptionTests() throws FileNotFoundException { + @Test + void testDiagOptions() throws FileNotFoundException { if (!isEnglishLocale()) { // only english version return; } @@ -351,48 +702,51 @@ tr = doExec(javaCmd, "-Xdiag", "-jar", "some.jar"); tr.contains("Error: Could not find or load main class MIA"); tr.contains("java.lang.ClassNotFoundException: MIA"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // use classpath to check tr = doExec(javaCmd, "-Xdiag", "-cp", "some.jar", "MIA"); tr.contains("Error: Could not find or load main class MIA"); tr.contains("java.lang.ClassNotFoundException: MIA"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); // a missing class on the classpath tr = doExec(javaCmd, "-Xdiag", "NonExistentClass"); tr.contains("Error: Could not find or load main class NonExistentClass"); tr.contains("java.lang.ClassNotFoundException: NonExistentClass"); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); } - static void test6894719() { + @Test + static void testJreRestrictSearchFlag() { // test both arguments to ensure they exist TestResult tr = null; tr = doExec(javaCmd, "-no-jre-restrict-search", "-version"); tr.checkPositive(); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); tr = doExec(javaCmd, "-jre-restrict-search", "-version"); tr.checkPositive(); - System.out.println(tr); + if (!tr.testStatus) + System.out.println(tr); } /** * @param args the command line arguments * @throws java.io.FileNotFoundException */ - public static void main(String[] args) throws FileNotFoundException { + public static void main(String[] args) throws Exception { if (debug) { System.out.println("Starting Arrrghs tests"); } - quoteParsingTests(); - runBasicErrorMessageTests(); - runMainMethodTests(); - test6894719(); - runDiagOptionTests(); + Arrrghs a = new Arrrghs(); + a.run(args); if (testExitValue > 0) { System.out.println("Total of " + testExitValue + " failed"); System.exit(1); diff -r d15095dfd348 -r aa2c9ce06632 test/tools/launcher/TestHelper.java --- a/test/tools/launcher/TestHelper.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/tools/launcher/TestHelper.java Fri Aug 24 09:29:17 2012 +0100 @@ -21,6 +21,12 @@ * questions. */ +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.lang.reflect.Method; +import java.util.regex.Pattern; import java.io.StringWriter; import java.io.PrintWriter; import java.util.Set; @@ -63,6 +69,8 @@ static final String javawCmd; static final String java64Cmd; static final String javacCmd; + static final String jarCmd; + static final JavaCompiler compiler; static final boolean debug = Boolean.getBoolean("TestHelper.Debug"); @@ -131,6 +139,15 @@ : new File(binDir, "javac"); javacCmd = javacCmdFile.getAbsolutePath(); + File jarCmdFile = (isWindows) + ? new File(binDir, "jar.exe") + : new File(binDir, "jar"); + jarCmd = jarCmdFile.getAbsolutePath(); + if (!jarCmdFile.canExecute()) { + throw new RuntimeException("java <" + TestHelper.jarCmd + + "> must exist and should be executable"); + } + if (isWindows) { File javawCmdFile = new File(binDir, "javaw.exe"); javawCmd = javawCmdFile.getAbsolutePath(); @@ -158,6 +175,37 @@ java64Cmd = null; } } + void run(String[] args) throws Exception { + int passed = 0, failed = 0; + final Pattern p = (args != null && args.length > 0) + ? Pattern.compile(args[0]) + : null; + for (Method m : this.getClass().getDeclaredMethods()) { + boolean selected = (p == null) + ? m.isAnnotationPresent(Test.class) + : p.matcher(m.getName()).matches(); + if (selected) { + try { + m.invoke(this, (Object[]) null); + System.out.println(m.getName() + ": OK"); + passed++; + System.out.printf("Passed: %d, Failed: %d, ExitValue: %d%n", + passed, failed, testExitValue); + } catch (Throwable ex) { + System.out.printf("Test %s failed: %s %n", m, ex.getCause()); + failed++; + } + } + } + System.out.printf("Total: Passed: %d, Failed %d%n", passed, failed); + if (failed > 0) { + throw new RuntimeException("Tests failed: " + failed); + } + if (passed == 0 && failed == 0) { + throw new AssertionError("No test(s) selected: passed = " + + passed + ", failed = " + failed + " ??????????"); + } + } /* * is a dual mode available in the test jdk @@ -395,6 +443,7 @@ List testOutput; Map env; Throwable t; + boolean testStatus; public TestResult(String str, int rv, List oList, Map env, Throwable t) { @@ -405,9 +454,12 @@ testOutput = oList; this.env = env; this.t = t; + testStatus = true; } void appendError(String x) { + testStatus = false; + testExitValue++; status.println(TEST_PREFIX + x); } @@ -418,14 +470,12 @@ void checkNegative() { if (exitValue == 0) { appendError("test must not return 0 exit value"); - testExitValue++; } } void checkPositive() { if (exitValue != 0) { appendError("test did not return 0 exit value"); - testExitValue++; } } @@ -436,7 +486,6 @@ boolean isZeroOutput() { if (!testOutput.isEmpty()) { appendError("No message from cmd please"); - testExitValue++; return false; } return true; @@ -445,7 +494,6 @@ boolean isNotZeroOutput() { if (testOutput.isEmpty()) { appendError("Missing message"); - testExitValue++; return false; } return true; @@ -454,6 +502,7 @@ @Override public String toString() { status.println("++++Begin Test Info++++"); + status.println("Test Status: " + (testStatus ? "PASS" : "FAIL")); status.println("++++Test Environment++++"); for (String x : env.keySet()) { indentStatus(x + "=" + env.get(x)); @@ -481,7 +530,6 @@ } } appendError("string <" + str + "> not found"); - testExitValue++; return false; } @@ -492,8 +540,13 @@ } } appendError("string <" + stringToMatch + "> not found"); - testExitValue++; return false; } } + /** + * Indicates that the annotated method is a test method. + */ + @Retention(RetentionPolicy.RUNTIME) + @Target(ElementType.METHOD) + public @interface Test {} } diff -r d15095dfd348 -r aa2c9ce06632 test/tools/launcher/ToolsOpts.java --- a/test/tools/launcher/ToolsOpts.java Fri Aug 03 20:56:16 2012 +0100 +++ b/test/tools/launcher/ToolsOpts.java Fri Aug 24 09:29:17 2012 +0100 @@ -160,7 +160,7 @@ for (String arg[] : optionPatterns) { jpos = indexOfJoption(arg); //Build a cmd string for output in results reporting. - String cmdString = javacCmd + JBCP_PREPEND + sTestJar; + String cmdString = javacCmd + " " + JBCP_PREPEND + sTestJar; for (String opt : arg) { cmdString = cmdString.concat(" " + opt); }