aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/com/sun/crypto/provider/KeyFactory/TestProviderLeak.java2
-rw-r--r--test/com/sun/jdi/MonitorFrameInfo.java32
-rw-r--r--test/com/sun/jdi/ResumeOneThreadTest.java233
-rw-r--r--test/com/sun/jdi/SourceNameFilterTest.java35
-rw-r--r--test/com/sun/jdi/VMConnection.java2
-rw-r--r--test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.java2
-rw-r--r--test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticOptions.java2
-rw-r--r--test/com/sun/management/HotSpotDiagnosticMXBean/GetVMOption.java2
-rw-r--r--test/com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java2
-rw-r--r--test/java/awt/Component/isLightweightCrash/IsLightweightCrash.java2
-rw-r--r--test/java/awt/Component/isLightweightCrash/StubPeerCrash.java2
-rw-r--r--test/java/awt/Focus/RestoreFocusOnDisabledComponentTest/RestoreFocusOnDisabledComponentTest.java2
-rw-r--r--test/java/awt/Mixing/ValidBounds.java2
-rw-r--r--test/java/awt/Modal/WsDisabledStyle/CloseBlocker/CloseBlocker.java2
-rw-r--r--test/java/awt/Modal/WsDisabledStyle/OverBlocker/OverBlocker.java2
-rw-r--r--test/java/awt/Modal/WsDisabledStyle/Winkey/Winkey.java2
-rw-r--r--test/java/awt/event/MouseEvent/SmoothWheel/SmoothWheel.java2
-rw-r--r--test/java/awt/font/Threads/FontThread.java2
-rw-r--r--test/java/beans/Introspector/Test4896879.java2
-rw-r--r--test/java/beans/Introspector/Test4935607.java2
-rw-r--r--test/java/beans/XMLEncoder/Test4935607.java2
-rw-r--r--test/java/beans/XMLEncoder/java_io_File.java47
-rw-r--r--test/java/io/File/MaxPath.java56
-rw-r--r--test/java/io/File/SetLastModified.java31
-rw-r--r--test/java/io/File/SetReadOnly.java15
-rw-r--r--test/java/io/FileOutputStream/AtomicAppend.java2
-rw-r--r--test/java/lang/ProcessBuilder/Basic.java2
-rw-r--r--test/java/lang/System/Versions.java4
-rw-r--r--test/java/lang/instrument/BootClassPath/BootClassPathTest.sh2
-rw-r--r--test/java/lang/instrument/MakeJAR2.sh2
-rw-r--r--test/java/lang/instrument/NativeMethodPrefixAgent.java2
-rw-r--r--test/java/lang/instrument/PremainClass/DummyMain.java2
-rw-r--r--test/java/lang/instrument/PremainClass/PremainClassTest.sh2
-rw-r--r--test/java/lang/instrument/RetransformAgent.java2
-rw-r--r--test/java/lang/instrument/TransformerManagementThreadAddTests.java2
-rw-r--r--test/java/lang/instrument/TransformerManagementThreadRemoveTests.java2
-rw-r--r--test/java/lang/instrument/appendToClassLoaderSearch/CircularityErrorTest.sh2
-rw-r--r--test/java/lang/instrument/appendToClassLoaderSearch/ClassUnloadTest.sh2
-rw-r--r--test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh2
-rw-r--r--test/java/lang/instrument/appendToClassLoaderSearch/run_tests.sh2
-rw-r--r--test/java/net/CookieHandler/CookieManagerTest.java2
-rw-r--r--test/java/nio/Buffer/StringCharBufferSliceTest.java2
-rw-r--r--test/java/nio/channels/AsyncCloseAndInterrupt.java6
-rw-r--r--test/java/nio/channels/FileChannel/ExpandingMap.java11
-rw-r--r--test/java/nio/channels/FileChannel/LongTransferTest.java6
-rw-r--r--test/java/nio/channels/Selector/Wakeup.java197
-rw-r--r--test/java/nio/channels/SocketChannel/AsyncCloseChannel.java78
-rw-r--r--test/java/nio/channels/TestUtil.java2
-rw-r--r--test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java2
-rw-r--r--test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java2
-rw-r--r--test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails_Stub.java2
-rw-r--r--test/java/rmi/activation/ActivateFailedException/activateFails/ActivateMe.java2
-rw-r--r--test/java/rmi/activation/ActivateFailedException/activateFails/ShutdownThread.java2
-rw-r--r--test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java2
-rw-r--r--test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup_Stub.java2
-rw-r--r--test/java/rmi/activation/ActivationGroup/downloadActivationGroup/MyActivationGroupImpl.java2
-rw-r--r--test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java2
-rw-r--r--test/java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java2
-rw-r--r--test/java/rmi/activation/ActivationSystem/modifyDescriptor/ActivateMe.java2
-rw-r--r--test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java2
-rw-r--r--test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor_Stub.java2
-rw-r--r--test/java/rmi/activation/ActivationSystem/stubClassesPermitted/CanCreateStubs.java2
-rw-r--r--test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java2
-rw-r--r--test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted_Stub.java2
-rw-r--r--test/java/rmi/activation/ActivationSystem/unregisterGroup/ActivateMe.java2
-rw-r--r--test/java/rmi/activation/ActivationSystem/unregisterGroup/CallbackInterface.java2
-rw-r--r--test/java/rmi/activation/ActivationSystem/unregisterGroup/Callback_Stub.java2
-rw-r--r--test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java2
-rw-r--r--test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup_Stub.java2
-rw-r--r--test/java/rmi/dgc/VMID/CheckVMID.java2
-rw-r--r--test/java/rmi/dgc/dgcAckFailure/DGCAckFailure.java2
-rw-r--r--test/java/rmi/dgc/dgcAckFailure/DGCAckFailure_Stub.java2
-rw-r--r--test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation.java2
-rw-r--r--test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation_Stub.java2
-rw-r--r--test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls.java2
-rw-r--r--test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls_Stub.java2
-rw-r--r--test/java/rmi/registry/altSecurityManager/AltSecurityManager.java2
-rw-r--r--test/java/rmi/registry/altSecurityManager/TestSecurityManager.java2
-rw-r--r--test/java/rmi/registry/checkusage/CheckUsage.java2
-rw-r--r--test/java/rmi/registry/classPathCodebase/ClassPathCodebase.java2
-rw-r--r--test/java/rmi/registry/classPathCodebase/Dummy.java2
-rw-r--r--test/java/rmi/registry/emptyName/EmptyName.java2
-rw-r--r--test/java/rmi/registry/interfaceHash/InterfaceHash.java2
-rw-r--r--test/java/rmi/registry/interfaceHash/ReferenceRegistryStub.java2
-rw-r--r--test/java/rmi/registry/multipleRegistries/MultipleRegistries.java2
-rw-r--r--test/java/rmi/registry/reexport/Reexport.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/BenchServer.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/BenchServerImpl.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/BooleanArrayCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/BooleanCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/ByteArrayCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/ByteCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/CharArrayCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/CharCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/ClassLoading.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/DoubleArrayCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/DoubleCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/ExceptionCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/ExportObjs.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/FloatArrayCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/FloatCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/IntArrayCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/IntCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/LongArrayCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/LongCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/Main.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/NullCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/ObjArrayCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/ObjTreeCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/ProxyArrayCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/RemoteObjArrayCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/ShortArrayCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/ShortCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/rmi/SmallObjTreeCalls.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/BooleanArrays.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/Booleans.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/ByteArrays.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/Bytes.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/CharArrays.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/Chars.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/ClassDesc.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/Cons.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/CustomDefaultObjTrees.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/CustomObjTrees.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/DoubleArrays.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/Doubles.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/ExternObjTrees.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/FloatArrays.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/Floats.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/GetPutFieldTrees.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/IntArrays.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/Ints.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/LongArrays.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/Longs.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/Main.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/ObjArrays.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/ObjTrees.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/ProxyArrays.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/ProxyClassDesc.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/RepeatObjs.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/ReplaceTrees.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/ShortArrays.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/Shorts.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/SmallObjTrees.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/StreamBuffer.java2
-rw-r--r--test/java/rmi/reliability/benchmark/bench/serial/Strings.java2
-rw-r--r--test/java/rmi/reliability/juicer/Apple.java2
-rw-r--r--test/java/rmi/reliability/juicer/AppleEvent.java2
-rw-r--r--test/java/rmi/reliability/juicer/AppleImpl.java2
-rw-r--r--test/java/rmi/reliability/juicer/AppleUser.java2
-rw-r--r--test/java/rmi/reliability/juicer/AppleUserImpl.java2
-rw-r--r--test/java/rmi/reliability/juicer/ApplicationServer.java2
-rw-r--r--test/java/rmi/reliability/juicer/Orange.java2
-rw-r--r--test/java/rmi/reliability/juicer/OrangeEcho.java2
-rw-r--r--test/java/rmi/reliability/juicer/OrangeEchoImpl.java2
-rw-r--r--test/java/rmi/reliability/juicer/OrangeImpl.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressConstants.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressInputStream.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressOutputStream.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/Echo.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl_Stub.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/MultiSocketFactory.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Compress.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Hello.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl_Stub.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressConstants.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressInputStream.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressOutputStream.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/Echo.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl_Stub.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/MultiSocketFactory.java2
-rw-r--r--test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java2
-rw-r--r--test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName_Stub.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall_Stub.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/Shutdown.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl_Stub.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownMonitor.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2_Stub.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport_Stub.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/unexportObject/Ping.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak_Stub.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies.java2
-rw-r--r--test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies_Stub.java2
-rw-r--r--test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread.java2
-rw-r--r--test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread_Stub.java2
-rw-r--r--test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshall.java2
-rw-r--r--test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/PoisonPill.java2
-rw-r--r--test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/RuntimeExceptionParameter.java2
-rw-r--r--test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java2
-rw-r--r--test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency_Stub.java2
-rw-r--r--test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java2
-rw-r--r--test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval_Stub.java2
-rw-r--r--test/java/rmi/server/Unreferenced/leaseCheckInterval/SelfTerminator.java2
-rw-r--r--test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet.java2
-rw-r--r--test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet_Stub.java2
-rw-r--r--test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java2
-rw-r--r--test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext_Stub.java2
-rw-r--r--test/java/rmi/transport/acceptLoop/CloseServerSocketOnTermination.java2
-rw-r--r--test/java/rmi/transport/checkFQDN/CheckFQDN.java2
-rw-r--r--test/java/rmi/transport/checkFQDN/CheckFQDNClient.java2
-rw-r--r--test/java/rmi/transport/checkFQDN/CheckFQDN_Stub.java2
-rw-r--r--test/java/rmi/transport/checkFQDN/TellServerName.java2
-rw-r--r--test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java2
-rw-r--r--test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak_Stub.java2
-rw-r--r--test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeak.java2
-rw-r--r--test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java2
-rw-r--r--test/java/rmi/transport/closeServerSocket/CloseServerSocket.java2
-rw-r--r--test/java/rmi/transport/dgcDeadLock/DGCDeadLock.java2
-rw-r--r--test/java/rmi/transport/dgcDeadLock/Test.java2
-rw-r--r--test/java/rmi/transport/dgcDeadLock/TestImpl.java2
-rw-r--r--test/java/rmi/transport/dgcDeadLock/TestImpl_Stub.java2
-rw-r--r--test/java/rmi/transport/handshakeFailure/HandshakeFailure.java2
-rw-r--r--test/java/rmi/transport/handshakeTimeout/HandshakeTimeout.java2
-rw-r--r--test/java/rmi/transport/httpSocket/HttpSocketTest.java2
-rw-r--r--test/java/rmi/transport/httpSocket/HttpSocketTest_Stub.java2
-rw-r--r--test/java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java2
-rw-r--r--test/java/rmi/transport/pinLastArguments/PinLastArguments.java2
-rw-r--r--test/java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java2
-rw-r--r--test/java/rmi/transport/readTimeout/ReadTimeoutTest.java2
-rw-r--r--test/java/rmi/transport/readTimeout/TestIface.java2
-rw-r--r--test/java/rmi/transport/readTimeout/TestImpl.java2
-rw-r--r--test/java/rmi/transport/readTimeout/TestImpl_Stub.java2
-rw-r--r--test/java/rmi/transport/reuseDefaultPort/ReuseDefaultPort.java2
-rw-r--r--test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak.java2
-rw-r--r--test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak_Stub.java2
-rw-r--r--test/java/security/cert/CertPathBuilder/targetConstraints/BuildEEBasicConstraints.java79
-rw-r--r--test/java/security/cert/CertPathBuilder/targetConstraints/anchor.cer8
-rw-r--r--test/java/security/cert/CertPathBuilder/targetConstraints/ca.cer9
-rw-r--r--test/java/security/cert/CertPathBuilder/targetConstraints/ee.cer9
-rw-r--r--test/java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java2
-rw-r--r--test/java/util/concurrent/SynchronousQueue/Fairness.java2
-rw-r--r--test/javax/management/Introspector/AnnotatedMBeanTest.java337
-rw-r--r--test/javax/management/Introspector/AnnotatedNotificationInfoTest.java271
-rw-r--r--test/javax/management/Introspector/LegacyIntrospectorTest.java75
-rw-r--r--test/javax/management/Introspector/MBeanDescriptionTest.java830
-rw-r--r--test/javax/management/Introspector/ParameterNameTest.java116
-rw-r--r--test/javax/management/Introspector/ResourceInjectionTest.java656
-rw-r--r--test/javax/management/Introspector/annot/Name.java32
-rw-r--r--test/javax/management/mxbean/ComparatorExceptionTest.java90
-rw-r--r--test/javax/management/mxbean/CustomTypeTest.java590
-rw-r--r--test/javax/management/mxbean/JMXServiceURLTest.java2
-rw-r--r--test/javax/management/mxbean/MXBeanTest.java37
-rw-r--r--test/javax/management/mxbean/SameObjectTwoNamesTest.java76
-rw-r--r--test/javax/management/mxbean/customtypes/CustomLongMXBean.java31
-rw-r--r--test/javax/management/mxbean/customtypes/CustomMXBean.java30
-rw-r--r--test/javax/management/mxbean/customtypes/IntegerIsLongFactory.java74
-rw-r--r--test/javax/management/mxbean/customtypes/IntegerIsStringFactory.java76
-rw-r--r--test/javax/management/mxbean/customtypes/package-info.java27
-rw-r--r--test/javax/management/query/QueryExpStringTest.java41
-rw-r--r--test/javax/management/query/QueryNotifFilterTest.java2
-rw-r--r--test/javax/management/query/QueryParseTest.java33
-rw-r--r--test/javax/management/relation/RelationNotificationSeqNoTest.java2
-rw-r--r--test/javax/swing/JFileChooser/4252173/bug4252173.java2
-rw-r--r--test/javax/swing/JPopupMenu/6694823/bug6694823.java122
-rw-r--r--test/javax/swing/JSlider/4987336/box.gifbin0 -> 4241 bytes
-rw-r--r--test/javax/swing/JSlider/4987336/bug4987336.html9
-rw-r--r--test/javax/swing/JSlider/4987336/bug4987336.java120
-rw-r--r--test/javax/swing/JSlider/4987336/cupanim.gifbin0 -> 5856 bytes
-rw-r--r--test/sun/java2d/cmm/ProfileOp/ReadProfileTest.java2
-rw-r--r--test/sun/management/HotspotClassLoadingMBean/GetClassInitializationTime.java2
-rw-r--r--test/sun/management/HotspotClassLoadingMBean/GetClassLoadingTime.java2
-rw-r--r--test/sun/management/HotspotClassLoadingMBean/GetInitializedClassCount.java2
-rw-r--r--test/sun/management/HotspotClassLoadingMBean/GetLoadedClassSize.java2
-rw-r--r--test/sun/management/HotspotClassLoadingMBean/GetMethodDataSize.java2
-rw-r--r--test/sun/management/HotspotClassLoadingMBean/GetUnloadedClassSize.java2
-rw-r--r--test/sun/management/HotspotRuntimeMBean/GetSafepointCount.java2
-rw-r--r--test/sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java2
-rw-r--r--test/sun/management/HotspotRuntimeMBean/GetTotalSafepointTime.java2
-rw-r--r--test/sun/management/HotspotThreadMBean/GetInternalThreads.java2
-rw-r--r--test/sun/net/www/http/ChunkedOutputStream/Test.java2
-rw-r--r--test/sun/nio/cs/BufferUnderflowEUCTWTest.java64
-rw-r--r--test/sun/nio/cs/CheckCaseInsensitiveEncAliases.java99
-rw-r--r--test/sun/nio/cs/CheckHistoricalNames.java313
-rw-r--r--test/sun/nio/cs/ConvertSingle.java65
-rw-r--r--test/sun/nio/cs/Decode.java67
-rw-r--r--test/sun/nio/cs/DecoderOverflow.java65
-rw-r--r--test/sun/nio/cs/EUCJPUnderflowDecodeTest.java104
-rw-r--r--test/sun/nio/cs/EucJpLinux0212.java79
-rw-r--r--test/sun/nio/cs/EucJpLinuxDecoderRecoveryTest.java70
-rw-r--r--test/sun/nio/cs/EuroConverter.java158
-rw-r--r--test/sun/nio/cs/FindASCIICodingBugs.java90
-rw-r--r--test/sun/nio/cs/FindASCIIRangeCodingBugs.java78
-rw-r--r--test/sun/nio/cs/FindCanEncodeBugs.java93
-rw-r--r--test/sun/nio/cs/FindDecoderBugs.java442
-rw-r--r--test/sun/nio/cs/FindEncoderBugs.java529
-rw-r--r--test/sun/nio/cs/FindOneCharEncoderBugs.java169
-rw-r--r--test/sun/nio/cs/HWKatakanaMS932EncodeTest.java54
-rw-r--r--test/sun/nio/cs/ISCIITest.java350
-rw-r--r--test/sun/nio/cs/ISO2022JP.trailEsc454
-rw-r--r--test/sun/nio/cs/ISO8859x.java105
-rw-r--r--test/sun/nio/cs/JISAutoDetectTest.java158
-rw-r--r--test/sun/nio/cs/LatinCharReplacementTWTest.java80
-rw-r--r--test/sun/nio/cs/LeftOverSurrogate.java55
-rw-r--r--test/sun/nio/cs/MalformedSurrogates.java85
-rw-r--r--test/sun/nio/cs/NIOJISAutoDetectTest.java282
-rw-r--r--test/sun/nio/cs/ReadZero.java58
-rw-r--r--test/sun/nio/cs/SJISCanEncode.java73
-rw-r--r--test/sun/nio/cs/StreamEncoderClose.java76
-rw-r--r--test/sun/nio/cs/SurrogateGB18030Test.java121
-rw-r--r--test/sun/nio/cs/SurrogateTestEUCTW.java95
-rw-r--r--test/sun/nio/cs/SurrogateTestEUCTW.plane15.surrogates6476
-rw-r--r--test/sun/nio/cs/SurrogateTestEUCTW.plane3.surrogates71
-rw-r--r--test/sun/nio/cs/SurrogateTestEUCTW.plane4.surrogates3476
-rw-r--r--test/sun/nio/cs/SurrogateTestEUCTW.plane5.surrogates8143
-rw-r--r--test/sun/nio/cs/SurrogateTestEUCTW.plane6.surrogates6158
-rw-r--r--test/sun/nio/cs/SurrogateTestEUCTW.plane7.surrogates6388
-rw-r--r--test/sun/nio/cs/SurrogateTestHKSCS.java1191
-rw-r--r--test/sun/nio/cs/Test4200310.sh41
-rw-r--r--test/sun/nio/cs/Test4206507.java38
-rw-r--r--test/sun/nio/cs/Test6254467.java38
-rw-r--r--test/sun/nio/cs/Test6275027.java42
-rw-r--r--test/sun/nio/cs/Test6392804.java59
-rw-r--r--test/sun/nio/cs/TestCompoundTest.java47
-rw-r--r--test/sun/nio/cs/TestConverterDroppedCharacters.java92
-rw-r--r--test/sun/nio/cs/TestCp834_SBCS.java101
-rw-r--r--test/sun/nio/cs/TestCp93xSISO.java52
-rw-r--r--test/sun/nio/cs/TestIBMBugs.java146
-rw-r--r--test/sun/nio/cs/TestISCII91.java71
-rw-r--r--test/sun/nio/cs/TestISO2022CNDecoder.java440
-rw-r--r--test/sun/nio/cs/TestISO2022JP.java612
-rw-r--r--test/sun/nio/cs/TestISO2022JPEncoder.java73
-rw-r--r--test/sun/nio/cs/TestISO2022JPSubBytes.java101
-rw-r--r--test/sun/nio/cs/TestIllegalISO2022Esc.java60
-rw-r--r--test/sun/nio/cs/TestIllegalSJIS.java50
-rw-r--r--test/sun/nio/cs/TestJIS0208Decoder.java61
-rw-r--r--test/sun/nio/cs/TestJIS0212Decoder.java62
-rw-r--r--test/sun/nio/cs/TestMS5022X.java750
-rw-r--r--test/sun/nio/cs/TestMiscEUC_JP.java62
-rw-r--r--test/sun/nio/cs/TestSJIS0213.java116
-rw-r--r--test/sun/nio/cs/TestTrailingEscapesISO2022JP.java65
-rw-r--r--test/sun/nio/cs/TestUTF8BOM.java92
-rw-r--r--test/sun/nio/cs/TestUTF_16.java196
-rw-r--r--test/sun/nio/cs/TestUTF_32.java197
-rw-r--r--test/sun/nio/cs/TestUni2HKSCS.java327
-rw-r--r--test/sun/nio/cs/TestX11JIS0201.java54
-rw-r--r--test/sun/nio/cs/UkrainianIsNotRussian.java76
-rw-r--r--test/sun/nio/cs/ZeroedByteArrayEUCTWTest.java52
-rw-r--r--test/sun/security/krb5/OptionPADataInKDCReq.java2
-rw-r--r--test/sun/security/krb5/TimeInCCache.java2
-rw-r--r--test/sun/security/pkcs11/Cipher/TestSymmCiphers.java30
-rw-r--r--test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/RSAExport.java561
-rw-r--r--test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/AsyncSSLSocketClose.java2
-rw-r--r--test/sun/security/tools/keytool/StartDateTest.java2
-rw-r--r--test/sun/security/tools/keytool/autotest.sh8
-rw-r--r--test/sun/security/tools/keytool/console.sh9
357 files changed, 45767 insertions, 469 deletions
diff --git a/test/com/sun/crypto/provider/KeyFactory/TestProviderLeak.java b/test/com/sun/crypto/provider/KeyFactory/TestProviderLeak.java
index 6fe480cb6..369947fc5 100644
--- a/test/com/sun/crypto/provider/KeyFactory/TestProviderLeak.java
+++ b/test/com/sun/crypto/provider/KeyFactory/TestProviderLeak.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/com/sun/jdi/MonitorFrameInfo.java b/test/com/sun/jdi/MonitorFrameInfo.java
index e93fa3390..8f7bfce34 100644
--- a/test/com/sun/jdi/MonitorFrameInfo.java
+++ b/test/com/sun/jdi/MonitorFrameInfo.java
@@ -25,7 +25,8 @@
* @test
* @bug 6230699
* @summary Test ThreadReference.ownedMonitorsAndFrames()
- *
+ * @bug 6701700
+ * @summary MonitorInfo objects aren't invalidated when the owning thread is resumed
* @author Swamy Venkataramanappa
*
* @run build TestScaffold VMConnection TargetListener TargetAdapter
@@ -100,15 +101,15 @@ public class MonitorFrameInfo extends TestScaffold {
if (!mainThread.frame(0).location().method().name()
.equals("foo3")) {
- failure("frame failed");
+ failure("FAILED: frame failed");
}
if (mainThread.frames().size() != (initialSize + 3)) {
- failure("frames size failed");
+ failure("FAILED: frames size failed");
}
if (mainThread.frames().size() != mainThread.frameCount()) {
- failure("frames size not equal to frameCount");
+ failure("FAILED: frames size not equal to frameCount");
}
/* Test monitor frame info.
@@ -119,13 +120,32 @@ public class MonitorFrameInfo extends TestScaffold {
if (monitors.size() != expectedCount) {
failure("monitors count is not equal to expected count");
}
+ MonitorInfo mon = null;
for (int j=0; j < monitors.size(); j++) {
- MonitorInfo mon = (MonitorInfo)monitors.get(j);
+ mon = (MonitorInfo)monitors.get(j);
System.out.println("Monitor obj " + mon.monitor() + "depth =" +mon.stackDepth());
if (mon.stackDepth() != expectedDepth[j]) {
- failure("monitor stack depth is not equal to expected depth");
+ failure("FAILED: monitor stack depth is not equal to expected depth");
}
}
+
+ // The last gotten monInfo is in mon. When we resume the thread,
+ // it should become invalid. We will step out of the top frame
+ // so that the frame depth in this mon object will no longer be correct.
+ // That is why the monInfo's have to become invalid when the thread is
+ // resumed.
+ stepOut(mainThread);
+ boolean ok = false;
+ try {
+ System.out.println("*** Saved Monitor obj " + mon.monitor() + "depth =" +mon.stackDepth());
+ } catch(InvalidStackFrameException ee) {
+ // ok
+ ok = true;
+ System.out.println("Got expected InvalidStackFrameException after a resume");
+ }
+ if (!ok) {
+ failure("FAILED: MonitorInfo object was not invalidated by a resume");
+ }
} else {
System.out.println("can not get monitors frame info");
}
diff --git a/test/com/sun/jdi/ResumeOneThreadTest.java b/test/com/sun/jdi/ResumeOneThreadTest.java
new file mode 100644
index 000000000..aec4c0d7c
--- /dev/null
+++ b/test/com/sun/jdi/ResumeOneThreadTest.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6700889
+ * @summary Thread resume invalidates all stack frames, even from other threads
+ *
+ * @author jjh
+ *
+ * @run build TestScaffold VMConnection TargetListener TargetAdapter
+ * @run compile -g ResumeOneThreadTest.java
+ * @run main ResumeOneThreadTest
+ */
+import com.sun.jdi.*;
+import com.sun.jdi.event.*;
+import com.sun.jdi.request.*;
+
+import java.util.*;
+
+class ResumeOneThreadTarg extends Thread {
+ static String name1 = "Thread 1";
+ static String name2 = "Thread 2";
+
+ public ResumeOneThreadTarg(String name) {
+ super(name);
+ }
+
+ public static void main(String[] args) {
+ System.out.println(" Debuggee: Howdy!");
+ ResumeOneThreadTarg t1 = new ResumeOneThreadTarg(name1);
+ ResumeOneThreadTarg t2 = new ResumeOneThreadTarg(name2);
+
+ t1.start();
+ t2.start();
+ }
+
+ // This just starts two threads. Each runs to a bkpt.
+ public void run() {
+ if (getName().equals(name1)) {
+ run1();
+ } else {
+ run2();
+ }
+ }
+
+ public void bkpt1(String p1) {
+ System.out.println(" Debuggee: bkpt 1");
+ }
+
+ public void run1() {
+ bkpt1("Hello Alviso!");
+ }
+
+
+
+ public void bkpt2() {
+ System.out.println(" Debuggee: bkpt 2");
+ }
+
+ public void run2() {
+ bkpt2();
+ }
+}
+
+/********** test program **********/
+
+public class ResumeOneThreadTest extends TestScaffold {
+ ReferenceType targetClass;
+ ThreadReference mainThread;
+
+ BreakpointRequest request1;
+ BreakpointRequest request2;
+
+ ThreadReference thread1 = null;
+ ThreadReference thread2 = null;;
+ boolean theVMisDead = false;
+
+ ResumeOneThreadTest (String args[]) {
+ super(args);
+ }
+
+ public static void main(String[] args) throws Exception {
+ new ResumeOneThreadTest(args).startTests();
+ }
+
+
+ synchronized public void breakpointReached(BreakpointEvent event) {
+ println("-- Got bkpt at: " + event.location());
+ ThreadReference eventThread = event.thread();
+
+ if (eventThread.name().equals(ResumeOneThreadTarg.name1)) {
+ thread1 = eventThread;
+ }
+
+ if (eventThread.name().equals(ResumeOneThreadTarg.name2)) {
+ thread2 = eventThread;
+ }
+ }
+
+ public void vmDied(VMDeathEvent event) {
+ theVMisDead = true;
+ }
+
+ synchronized public void eventSetComplete(EventSet set) {
+ if (theVMisDead) {
+ return;
+ }
+ if (thread1 == null || thread2 == null) {
+ // Don't do a set.resume(), just let the other thread
+ // keep running until it hits its bkpt.
+ return;
+ }
+
+ // Both threads are stopped at their bkpts. Get a StackFrame from
+ // Thread 1 then resume Thread 2 and verify that the saved StackFrame is
+ // still valid.
+
+ // suspend everything.
+ println("-- All threads suspended");
+ vm().suspend();
+
+ StackFrame t1sf0 = null;
+ try {
+ t1sf0 = thread1.frame(0);
+ } catch (IncompatibleThreadStateException ee) {
+ failure("FAILED: Exception: " + ee);
+ }
+
+ println("-- t1sf0 args: " + t1sf0.getArgumentValues());
+
+ // Ok, we have a StackFrame for thread 1. Resume just thread 2
+ // Note that thread 2 has been suspended twice - by the SUSPEND_ALL
+ // bkpt, and by the above vm().suspend(), so we have to resume
+ // it twice.
+ request2.disable();
+
+ thread2.resume();
+ thread2.resume();
+ println("-- Did Resume on thread 2");
+
+ // Can we get frames for thread1?
+ try {
+ StackFrame t1sf0_1 = thread1.frame(0);
+ if (!t1sf0.equals(t1sf0_1)) {
+ failure("FAILED: Got a different frame 0 for thread 1 after resuming thread 2");
+ }
+ } catch (IncompatibleThreadStateException ee) {
+ failure("FAILED: Could not get frames for thread 1: Exception: " + ee);
+ } catch (Exception ee) {
+ failure("FAILED: Could not get frames for thread 1: Exception: " + ee);
+ }
+
+
+ try {
+ println("-- t1sf0 args: " + t1sf0.getArgumentValues());
+ } catch (InvalidStackFrameException ee) {
+ // This is the failure.
+ failure("FAILED Got InvalidStackFrameException");
+ vm().dispose();
+ throw(ee);
+ }
+
+ // Let the debuggee finish
+ request1.disable();
+ thread1.resume();
+ vm().resume();
+ println("--------------");
+ }
+
+ /********** test core **********/
+
+ protected void runTests() throws Exception {
+
+ /*
+ * Get to the top of main()
+ * to determine targetClass and mainThread
+ */
+ BreakpointEvent bpe = startToMain("ResumeOneThreadTarg");
+ targetClass = bpe.location().declaringType();
+ mainThread = bpe.thread();
+ EventRequestManager erm = vm().eventRequestManager();
+ final Thread mainThread = Thread.currentThread();
+
+ /*
+ * Set event requests
+ */
+
+ Location loc1 = findMethod(targetClass, "bkpt1", "(Ljava/lang/String;)V").location();
+ request1 = erm.createBreakpointRequest(loc1);
+ request1.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD);
+ request1.enable();
+
+ Location loc2 = findMethod(targetClass, "bkpt2", "()V").location();
+ request2 = erm.createBreakpointRequest(loc2);
+ request2.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD);
+ request2.enable();
+
+ /*
+ * resume the target, listening for events
+ */
+ listenUntilVMDisconnect();
+ /*
+ * deal with results of test
+ * if anything has called failure("foo") testFailed will be true
+ */
+ if (!testFailed) {
+ println("ResumeOneThreadTest: passed");
+ } else {
+ throw new Exception("ResumeOneThreadTest: failed");
+ }
+ }
+}
diff --git a/test/com/sun/jdi/SourceNameFilterTest.java b/test/com/sun/jdi/SourceNameFilterTest.java
index 1565a8886..cb8260646 100644
--- a/test/com/sun/jdi/SourceNameFilterTest.java
+++ b/test/com/sun/jdi/SourceNameFilterTest.java
@@ -23,7 +23,7 @@
/**
* @test
- * @bug 4836939
+ * @bug 4836939 6646613
* @summary JDI add addSourceNameFilter to ClassPrepareRequest
*
* @author jjh
@@ -31,7 +31,11 @@
* @run build TestScaffold VMConnection TargetListener TargetAdapter
* @run compile -g SourceNameFilterTest.java
* @run main SourceNameFilterTest
+ * @run compile -g:none SourceNameFilterTest.java
+ * @run main SourceNameFilterTest
*/
+// The compile -g:none suppresses the lineNumber table to trigger bug 6646613.
+
import com.sun.jdi.*;
import com.sun.jdi.event.*;
import com.sun.jdi.request.*;
@@ -84,7 +88,6 @@ public class SourceNameFilterTest extends TestScaffold {
boolean gotEvent1 = false;
boolean gotEvent2 = false;
boolean gotEvent3 = false;
-
ClassPrepareRequest cpReq;
boolean shouldResume = false;
SourceNameFilterTest (String args[]) {
@@ -151,6 +154,18 @@ public class SourceNameFilterTest extends TestScaffold {
*/
BreakpointEvent bpe = startToMain("SourceNameFilterTarg");
targetClass = bpe.location().declaringType();
+ boolean noSourceName = false;
+ try {
+ targetClass.sourceName();
+ } catch (AbsentInformationException ee) {
+ noSourceName = true;
+ }
+ if (noSourceName) {
+ println("-- Running with no source names");
+ } else {
+ println("-- Running with source names");
+ }
+
mainThread = bpe.thread();
EventRequestManager erm = vm().eventRequestManager();
addListener(this);
@@ -175,7 +190,9 @@ public class SourceNameFilterTest extends TestScaffold {
/*
* This should cause us to get a class prepare event for
- * LoadedLater3
+ * LoadedLater3 except in the case where -g:none
+ * was used to compile so that there is no LineNumberTable
+ * and therefore, no source name for the class.
*/
cpReq = erm.createClassPrepareRequest();
cpReq.addSourceNameFilter("SourceNameFilterTest.java");
@@ -186,17 +203,21 @@ public class SourceNameFilterTest extends TestScaffold {
if (!gotEvent1) {
failure("failure: Did not get a class prepare request " +
- "for Loadedlater1");
+ "for LoadedLater1");
}
if (gotEvent2) {
failure("failure: Did get a class prepare request " +
- "for Loadedlater2");
+ "for LoadedLater2");
}
- if (!gotEvent3) {
+ if (gotEvent3 && noSourceName) {
+ failure("failure: Did get a class prepare request " +
+ "for LoadedLater3");
+ }
+ else if (!gotEvent3 && !noSourceName) {
failure("failure: Did not get a class prepare request " +
- "for Loadedlater3");
+ "for LoadedLater3");
}
/*
diff --git a/test/com/sun/jdi/VMConnection.java b/test/com/sun/jdi/VMConnection.java
index f370bf46b..c9cb83f72 100644
--- a/test/com/sun/jdi/VMConnection.java
+++ b/test/com/sun/jdi/VMConnection.java
@@ -115,7 +115,7 @@ class VMConnection {
return cmdLine;
}
// Insert the options at position 1. Blanks in args are not allowed!
- String[] v1 = opts.split(" ");
+ String[] v1 = opts.split(" +");
String[] retVal = new String[cmdLine.length + v1.length];
retVal[0] = cmdLine[0];
System.arraycopy(v1, 0, retVal, 1, v1.length);
diff --git a/test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.java b/test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.java
index 6ad2581e8..dc9d44afe 100644
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.java
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2006-2008 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
diff --git a/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticOptions.java b/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticOptions.java
index c71888bba..5c3b9b0bc 100644
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticOptions.java
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticOptions.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/com/sun/management/HotSpotDiagnosticMXBean/GetVMOption.java b/test/com/sun/management/HotSpotDiagnosticMXBean/GetVMOption.java
index 1f835173a..3dfa60b81 100644
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/GetVMOption.java
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/GetVMOption.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java b/test/com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java
index 404a7373d..c3526fba1 100644
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/java/awt/Component/isLightweightCrash/IsLightweightCrash.java b/test/java/awt/Component/isLightweightCrash/IsLightweightCrash.java
index 37674dbdc..c44b0c081 100644
--- a/test/java/awt/Component/isLightweightCrash/IsLightweightCrash.java
+++ b/test/java/awt/Component/isLightweightCrash/IsLightweightCrash.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/java/awt/Component/isLightweightCrash/StubPeerCrash.java b/test/java/awt/Component/isLightweightCrash/StubPeerCrash.java
index ccdac15f8..20f6145e3 100644
--- a/test/java/awt/Component/isLightweightCrash/StubPeerCrash.java
+++ b/test/java/awt/Component/isLightweightCrash/StubPeerCrash.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/java/awt/Focus/RestoreFocusOnDisabledComponentTest/RestoreFocusOnDisabledComponentTest.java b/test/java/awt/Focus/RestoreFocusOnDisabledComponentTest/RestoreFocusOnDisabledComponentTest.java
index b813ce959..220ccaf6b 100644
--- a/test/java/awt/Focus/RestoreFocusOnDisabledComponentTest/RestoreFocusOnDisabledComponentTest.java
+++ b/test/java/awt/Focus/RestoreFocusOnDisabledComponentTest/RestoreFocusOnDisabledComponentTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/java/awt/Mixing/ValidBounds.java b/test/java/awt/Mixing/ValidBounds.java
index dec7e6fce..49a3da466 100644
--- a/test/java/awt/Mixing/ValidBounds.java
+++ b/test/java/awt/Mixing/ValidBounds.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/java/awt/Modal/WsDisabledStyle/CloseBlocker/CloseBlocker.java b/test/java/awt/Modal/WsDisabledStyle/CloseBlocker/CloseBlocker.java
index ad48949b3..a632334b5 100644
--- a/test/java/awt/Modal/WsDisabledStyle/CloseBlocker/CloseBlocker.java
+++ b/test/java/awt/Modal/WsDisabledStyle/CloseBlocker/CloseBlocker.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/java/awt/Modal/WsDisabledStyle/OverBlocker/OverBlocker.java b/test/java/awt/Modal/WsDisabledStyle/OverBlocker/OverBlocker.java
index 15d963baa..09c409e19 100644
--- a/test/java/awt/Modal/WsDisabledStyle/OverBlocker/OverBlocker.java
+++ b/test/java/awt/Modal/WsDisabledStyle/OverBlocker/OverBlocker.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/java/awt/Modal/WsDisabledStyle/Winkey/Winkey.java b/test/java/awt/Modal/WsDisabledStyle/Winkey/Winkey.java
index 59297463a..90ce56f82 100644
--- a/test/java/awt/Modal/WsDisabledStyle/Winkey/Winkey.java
+++ b/test/java/awt/Modal/WsDisabledStyle/Winkey/Winkey.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/java/awt/event/MouseEvent/SmoothWheel/SmoothWheel.java b/test/java/awt/event/MouseEvent/SmoothWheel/SmoothWheel.java
index 00e07c84d..e3f7f6498 100644
--- a/test/java/awt/event/MouseEvent/SmoothWheel/SmoothWheel.java
+++ b/test/java/awt/event/MouseEvent/SmoothWheel/SmoothWheel.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/java/awt/font/Threads/FontThread.java b/test/java/awt/font/Threads/FontThread.java
index 3eb47d743..0db9ae2c3 100644
--- a/test/java/awt/font/Threads/FontThread.java
+++ b/test/java/awt/font/Threads/FontThread.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/java/beans/Introspector/Test4896879.java b/test/java/beans/Introspector/Test4896879.java
index 2423841c7..4e1ef7e1f 100644
--- a/test/java/beans/Introspector/Test4896879.java
+++ b/test/java/beans/Introspector/Test4896879.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/beans/Introspector/Test4935607.java b/test/java/beans/Introspector/Test4935607.java
index 7ce48c9b6..6e94f0006 100644
--- a/test/java/beans/Introspector/Test4935607.java
+++ b/test/java/beans/Introspector/Test4935607.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/java/beans/XMLEncoder/Test4935607.java b/test/java/beans/XMLEncoder/Test4935607.java
index 3d5e70e6d..da8bbe3fd 100644
--- a/test/java/beans/XMLEncoder/Test4935607.java
+++ b/test/java/beans/XMLEncoder/Test4935607.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/java/beans/XMLEncoder/java_io_File.java b/test/java/beans/XMLEncoder/java_io_File.java
new file mode 100644
index 000000000..282949b01
--- /dev/null
+++ b/test/java/beans/XMLEncoder/java_io_File.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 6708550
+ * @summary Tests File encoding
+ * @author Sergey Malenkov
+ */
+
+import java.io.File;
+
+public final class java_io_File extends AbstractTest<File> {
+ public static void main(String[] args) {
+ new java_io_File().test(true);
+ }
+
+ @Override
+ protected File getObject() {
+ return new File("test.txt"); // NON-NLS: local file
+ }
+
+ @Override
+ protected File getAnotherObject() {
+ return new File("/pub/demo/"); // NON-NLS: path
+ }
+}
diff --git a/test/java/io/File/MaxPath.java b/test/java/io/File/MaxPath.java
new file mode 100644
index 000000000..115f05ee8
--- /dev/null
+++ b/test/java/io/File/MaxPath.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 6481955
+ @summary Path length less than MAX_PATH (260) works on Windows
+ */
+
+import java.io.*;
+
+public class MaxPath {
+ public static void main(String[] args) throws Exception {
+ String osName = System.getProperty("os.name");
+ if (!osName.startsWith("Windows")) {
+ return;
+ }
+ int MAX_PATH = 260;
+ String dir = new File(".").getAbsolutePath() + "\\";
+ String padding = "1234567890123456789012345678901234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890";
+ for (int i = 240 - dir.length(); i < MAX_PATH - dir.length(); i++) {
+ String longname = dir + padding.substring(0, i);
+ try {
+ File f = new File(longname);
+ if (f.createNewFile()) {
+ if (!f.exists() || !f.canRead()) {
+ throw new RuntimeException("Failed at length: " + longname.length());
+ }
+ f.delete();
+ }
+ } catch (IOException e) {
+ System.out.println("Failed at length: " + longname.length());
+ throw e;
+ }
+ }
+ }
+}
diff --git a/test/java/io/File/SetLastModified.java b/test/java/io/File/SetLastModified.java
index 22cb53265..bcb7070c5 100644
--- a/test/java/io/File/SetLastModified.java
+++ b/test/java/io/File/SetLastModified.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
@@ -22,11 +22,13 @@
*/
/* @test
- @bug 4091757
+ @bug 4091757 6652379
@summary Basic test for setLastModified method
*/
import java.io.*;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
public class SetLastModified {
@@ -95,13 +97,24 @@ public class SetLastModified {
if (f.setLastModified(nt))
throw new Exception("Succeeded on non-existent file: " + f);
- OutputStream o = new FileOutputStream(f);
- o.write('x');
- o.close();
- ot = f.lastModified();
- if (!f.setLastModified(nt))
- throw new Exception("setLastModified failed on file: " + f);
- ck(f, nt, f.lastModified());
+ // set/check last modified on files of size 1, 1GB+1, 2GB+1, ..
+ // On Windows we only test with a tiny file as that platform doesn't
+ // support sparse files by default and so the test takes too long.
+ final long G = 1024L * 1024L * 1024L;
+ final long MAX_POSITION =
+ System.getProperty("os.name").startsWith("Windows") ? 0L : 3L*G;
+ long pos = 0L;
+ while (pos <= MAX_POSITION) {
+ FileChannel fc = new FileOutputStream(f).getChannel();
+ fc.position(pos).write(ByteBuffer.wrap("x".getBytes()));
+ fc.close();
+ ot = f.lastModified();
+ System.out.format("check with file size: %d\n", f.length());
+ if (!f.setLastModified(nt))
+ throw new Exception("setLastModified failed on file: " + f);
+ ck(f, nt, f.lastModified());
+ pos += G;
+ }
if (!f.delete()) throw new Exception("Can't delete test file " + f);
if (!d2.delete()) throw new Exception("Can't delete test directory " + d2);
diff --git a/test/java/io/File/SetReadOnly.java b/test/java/io/File/SetReadOnly.java
index ed89513f8..ecd7e6aae 100644
--- a/test/java/io/File/SetReadOnly.java
+++ b/test/java/io/File/SetReadOnly.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
@@ -22,7 +22,7 @@
*/
/* @test
- @bug 4091757
+ @bug 4091757 4939819
@summary Basic test for setReadOnly method
*/
@@ -59,8 +59,15 @@ public class SetReadOnly {
throw new Exception(f + ": Cannot create directory");
if (!f.setReadOnly())
throw new Exception(f + ": Failed on directory");
- if (f.canWrite())
- throw new Exception(f + ": Directory is writeable");
+ // The readonly attribute on Windows does not make a folder read-only
+ if (System.getProperty("os.name").startsWith("Windows")) {
+ if (!f.canWrite())
+ throw new Exception(f + ": Directory is not writeable");
+ } else {
+ if (f.canWrite())
+ throw new Exception(f + ": Directory is writeable");
+ }
+
if (!f.delete())
throw new Exception(f + ": Cannot delete directory");
diff --git a/test/java/io/FileOutputStream/AtomicAppend.java b/test/java/io/FileOutputStream/AtomicAppend.java
index f5f0c2360..f76e61175 100644
--- a/test/java/io/FileOutputStream/AtomicAppend.java
+++ b/test/java/io/FileOutputStream/AtomicAppend.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/java/lang/ProcessBuilder/Basic.java b/test/java/lang/ProcessBuilder/Basic.java
index b0bfe12f2..d5ac05f45 100644
--- a/test/java/lang/ProcessBuilder/Basic.java
+++ b/test/java/lang/ProcessBuilder/Basic.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/lang/System/Versions.java b/test/java/lang/System/Versions.java
index d94d3b451..7464fc884 100644
--- a/test/java/lang/System/Versions.java
+++ b/test/java/lang/System/Versions.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2004-2008 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
@@ -23,7 +23,7 @@
/**
* @test
- * @bug 4989690 6259855
+ * @bug 4989690 6259855 6706299
* @summary Check that version-related system property invariants hold.
* @author Martin Buchholz
*/
diff --git a/test/java/lang/instrument/BootClassPath/BootClassPathTest.sh b/test/java/lang/instrument/BootClassPath/BootClassPathTest.sh
index 937b66004..c26ef8573 100644
--- a/test/java/lang/instrument/BootClassPath/BootClassPathTest.sh
+++ b/test/java/lang/instrument/BootClassPath/BootClassPathTest.sh
@@ -1,5 +1,5 @@
#
-# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2004-2008 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
diff --git a/test/java/lang/instrument/MakeJAR2.sh b/test/java/lang/instrument/MakeJAR2.sh
index 6b6721ed5..3cd6b1c65 100644
--- a/test/java/lang/instrument/MakeJAR2.sh
+++ b/test/java/lang/instrument/MakeJAR2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2005-2008 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
diff --git a/test/java/lang/instrument/NativeMethodPrefixAgent.java b/test/java/lang/instrument/NativeMethodPrefixAgent.java
index 5ff3d5599..20b25a8f2 100644
--- a/test/java/lang/instrument/NativeMethodPrefixAgent.java
+++ b/test/java/lang/instrument/NativeMethodPrefixAgent.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/java/lang/instrument/PremainClass/DummyMain.java b/test/java/lang/instrument/PremainClass/DummyMain.java
index 0cf20ef6c..517574dee 100644
--- a/test/java/lang/instrument/PremainClass/DummyMain.java
+++ b/test/java/lang/instrument/PremainClass/DummyMain.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2004-2008 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
diff --git a/test/java/lang/instrument/PremainClass/PremainClassTest.sh b/test/java/lang/instrument/PremainClass/PremainClassTest.sh
index d6c34e44f..c3d3cb776 100644
--- a/test/java/lang/instrument/PremainClass/PremainClassTest.sh
+++ b/test/java/lang/instrument/PremainClass/PremainClassTest.sh
@@ -1,5 +1,5 @@
#
-# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2004-2008 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
diff --git a/test/java/lang/instrument/RetransformAgent.java b/test/java/lang/instrument/RetransformAgent.java
index cd8db7458..dc19dce5e 100644
--- a/test/java/lang/instrument/RetransformAgent.java
+++ b/test/java/lang/instrument/RetransformAgent.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/java/lang/instrument/TransformerManagementThreadAddTests.java b/test/java/lang/instrument/TransformerManagementThreadAddTests.java
index de1573a53..771535fe8 100644
--- a/test/java/lang/instrument/TransformerManagementThreadAddTests.java
+++ b/test/java/lang/instrument/TransformerManagementThreadAddTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/lang/instrument/TransformerManagementThreadRemoveTests.java b/test/java/lang/instrument/TransformerManagementThreadRemoveTests.java
index a7d381ff8..c31fb2476 100644
--- a/test/java/lang/instrument/TransformerManagementThreadRemoveTests.java
+++ b/test/java/lang/instrument/TransformerManagementThreadRemoveTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/lang/instrument/appendToClassLoaderSearch/CircularityErrorTest.sh b/test/java/lang/instrument/appendToClassLoaderSearch/CircularityErrorTest.sh
index 3f4e08b9c..eab604e58 100644
--- a/test/java/lang/instrument/appendToClassLoaderSearch/CircularityErrorTest.sh
+++ b/test/java/lang/instrument/appendToClassLoaderSearch/CircularityErrorTest.sh
@@ -1,5 +1,5 @@
#
-# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2005-2008 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
diff --git a/test/java/lang/instrument/appendToClassLoaderSearch/ClassUnloadTest.sh b/test/java/lang/instrument/appendToClassLoaderSearch/ClassUnloadTest.sh
index 5b7411ac9..a71b49e07 100644
--- a/test/java/lang/instrument/appendToClassLoaderSearch/ClassUnloadTest.sh
+++ b/test/java/lang/instrument/appendToClassLoaderSearch/ClassUnloadTest.sh
@@ -1,5 +1,5 @@
#
-# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2005-2008 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
diff --git a/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh b/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh
index 2cd7032ce..0fdce4ba0 100644
--- a/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh
+++ b/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2005-2008 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
diff --git a/test/java/lang/instrument/appendToClassLoaderSearch/run_tests.sh b/test/java/lang/instrument/appendToClassLoaderSearch/run_tests.sh
index ba6d985f2..06ebd6f10 100644
--- a/test/java/lang/instrument/appendToClassLoaderSearch/run_tests.sh
+++ b/test/java/lang/instrument/appendToClassLoaderSearch/run_tests.sh
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2005-2008 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
diff --git a/test/java/net/CookieHandler/CookieManagerTest.java b/test/java/net/CookieHandler/CookieManagerTest.java
index b83c27fce..99af61498 100644
--- a/test/java/net/CookieHandler/CookieManagerTest.java
+++ b/test/java/net/CookieHandler/CookieManagerTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/java/nio/Buffer/StringCharBufferSliceTest.java b/test/java/nio/Buffer/StringCharBufferSliceTest.java
index 82d593c5d..1caf72507 100644
--- a/test/java/nio/Buffer/StringCharBufferSliceTest.java
+++ b/test/java/nio/Buffer/StringCharBufferSliceTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/java/nio/channels/AsyncCloseAndInterrupt.java b/test/java/nio/channels/AsyncCloseAndInterrupt.java
index 8ec350cff..834e7431e 100644
--- a/test/java/nio/channels/AsyncCloseAndInterrupt.java
+++ b/test/java/nio/channels/AsyncCloseAndInterrupt.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 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
@@ -22,7 +22,7 @@
*/
/* @test
- * @bug 4460583 4470470 4840199 6419424
+ * @bug 4460583 4470470 4840199 6419424 6710579 6596323
* @summary Comprehensive test of asynchronous closing and interruption
* @author Mark Reinhold
*/
@@ -582,7 +582,7 @@ public class AsyncCloseAndInterrupt {
log.println("WARNING: transferFrom/close not tested");
return;
}
- if ((op == TRANSFER_TO) && TestUtil.onSolaris()) {
+ if ((op == TRANSFER_TO) && !TestUtil.onWindows()) {
log.println("WARNING: transferTo/close not tested");
return;
}
diff --git a/test/java/nio/channels/FileChannel/ExpandingMap.java b/test/java/nio/channels/FileChannel/ExpandingMap.java
index 23ef97a6b..278badb97 100644
--- a/test/java/nio/channels/FileChannel/ExpandingMap.java
+++ b/test/java/nio/channels/FileChannel/ExpandingMap.java
@@ -22,7 +22,7 @@
*/
/* @test
- * @bug 4938372
+ * @bug 4938372 6541641
* @summary Flushing dirty pages prior to unmap can cause Cleaner thread to
* abort VM if memory system has pages locked
*/
@@ -39,7 +39,7 @@ import java.util.ArrayList;
public class ExpandingMap {
- public static void main(String[] args) throws IOException {
+ public static void main(String[] args) throws Exception {
int initialSize = 20480*1024;
int maximumMapSize = 16*1024*1024;
@@ -103,6 +103,13 @@ public class ExpandingMap {
}
}
+ fc.close();
+ // cleanup the ref to mapped buffers so they can be GCed
+ for (int i = 0; i < buffers.length; i++)
+ buffers[i] = null;
+ System.gc();
+ // Take a nap to wait for the Cleaner to cleanup those unrefed maps
+ Thread.sleep(1000);
System.out.println("TEST PASSED");
}
diff --git a/test/java/nio/channels/FileChannel/LongTransferTest.java b/test/java/nio/channels/FileChannel/LongTransferTest.java
index 068e6d0d8..eb20ef43d 100644
--- a/test/java/nio/channels/FileChannel/LongTransferTest.java
+++ b/test/java/nio/channels/FileChannel/LongTransferTest.java
@@ -22,7 +22,7 @@
*/
/* @test
- @bug 5105464 6269047
+ @bug 5105464 6269047 6541631
* @summary Test to transfer bytes with a size bigger than Integer.MAX_VALUE
*/
@@ -81,9 +81,11 @@ public class LongTransferTest {
System.out.println("LongTransferTest-main: OK!");
socket.close();
-
server.close();
+ inChannel.close();
+ outChannel.close();
+
inFile.delete();
outFile.delete();
}
diff --git a/test/java/nio/channels/Selector/Wakeup.java b/test/java/nio/channels/Selector/Wakeup.java
new file mode 100644
index 000000000..808ba8316
--- /dev/null
+++ b/test/java/nio/channels/Selector/Wakeup.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright 2001-2003 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.
+ *
+ * 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.
+ */
+
+/* @test
+ * @bug 6405995
+ * @summary Unit test for selector wakeup and interruption
+ * @library ..
+ */
+
+import java.io.*;
+import java.net.*;
+import java.nio.*;
+import java.nio.channels.*;
+import java.util.Random;
+
+public class Wakeup {
+
+ static void sleep(int millis) {
+ try {
+ Thread.sleep(millis);
+ } catch (InterruptedException x) {
+ x.printStackTrace();
+ }
+ }
+
+ static class Sleeper extends TestThread {
+ volatile boolean started = false;
+ volatile int entries = 0;
+ volatile int wakeups = 0;
+ volatile boolean wantInterrupt = false;
+ volatile boolean gotInterrupt = false;
+ volatile Exception exception = null;
+ volatile boolean closed = false;
+ Object gate = new Object();
+
+ Selector sel;
+
+ Sleeper(Selector sel) {
+ super("Sleeper", System.err);
+ this.sel = sel;
+ }
+
+ public void go() throws Exception {
+ started = true;
+ for (;;) {
+ synchronized (gate) { }
+ entries++;
+ try {
+ sel.select();
+ } catch (ClosedSelectorException x) {
+ closed = true;
+ }
+ boolean intr = Thread.currentThread().isInterrupted();
+ wakeups++;
+ System.err.println("Wakeup " + wakeups
+ + (closed ? " (closed)" : "")
+ + (intr ? " (intr)" : ""));
+ if (wakeups > 1000)
+ throw new Exception("Too many wakeups");
+ if (closed)
+ return;
+ if (wantInterrupt) {
+ while (!Thread.interrupted())
+ Thread.yield();
+ gotInterrupt = true;
+ wantInterrupt = false;
+ }
+ }
+ }
+
+ }
+
+ private static int checkedWakeups = 0;
+
+ private static void check(Sleeper sleeper, boolean intr)
+ throws Exception
+ {
+ checkedWakeups++;
+ if (sleeper.wakeups > checkedWakeups) {
+ sleeper.finish(100);
+ throw new Exception("Sleeper has run ahead");
+ }
+ int n = 0;
+ while (sleeper.wakeups < checkedWakeups) {
+ sleep(50);
+ if ((n += 50) > 1000) {
+ sleeper.finish(100);
+ throw new Exception("Sleeper appears to be dead ("
+ + checkedWakeups + ")");
+ }
+ }
+ if (sleeper.wakeups > checkedWakeups) {
+ sleeper.finish(100);
+ throw new Exception("Too many wakeups: Expected "
+ + checkedWakeups
+ + ", got " + sleeper.wakeups);
+ }
+ if (intr) {
+ n = 0;
+ // Interrupts can sometimes be delayed, so wait
+ while (!sleeper.gotInterrupt) {
+ sleep(50);
+ if ((n += 50) > 1000) {
+ sleeper.finish(100);
+ throw new Exception("Interrupt never delivered");
+ }
+ }
+ sleeper.gotInterrupt = false;
+ }
+ System.err.println("Check " + checkedWakeups
+ + (intr ? " (intr " + n + ")" : ""));
+ }
+
+ public static void main(String[] args) throws Exception {
+
+ Selector sel = Selector.open();
+
+ // Wakeup before select
+ sel.wakeup();
+
+ Sleeper sleeper = new Sleeper(sel);
+
+ sleeper.start();
+ while (!sleeper.started)
+ sleep(50);
+
+ check(sleeper, false); // 1
+
+ for (int i = 2; i < 5; i++) {
+ // Wakeup during select
+ sel.wakeup();
+ check(sleeper, false); // 2 .. 4
+ }
+
+ // Double wakeup
+ synchronized (sleeper.gate) {
+ sel.wakeup();
+ check(sleeper, false); // 5
+ sel.wakeup();
+ sel.wakeup();
+ }
+ check(sleeper, false); // 6
+
+ // Interrupt
+ synchronized (sleeper.gate) {
+ sleeper.wantInterrupt = true;
+ sleeper.interrupt();
+ check(sleeper, true); // 7
+ }
+
+ // Interrupt before select
+ while (sleeper.entries < 8)
+ Thread.yield();
+ synchronized (sleeper.gate) {
+ sel.wakeup();
+ check(sleeper, false); // 8
+ sleeper.wantInterrupt = true;
+ sleeper.interrupt();
+ sleep(50);
+ }
+ check(sleeper, true); // 9
+
+ // Close during select
+ while (sleeper.entries < 10)
+ Thread.yield();
+ synchronized (sleeper.gate) {
+ sel.close();
+ check(sleeper, false); // 10
+ }
+
+ if (sleeper.finish(200) == 0)
+ throw new Exception("Test failed");
+ if (!sleeper.closed)
+ throw new Exception("Selector not closed");
+ }
+
+}
diff --git a/test/java/nio/channels/SocketChannel/AsyncCloseChannel.java b/test/java/nio/channels/SocketChannel/AsyncCloseChannel.java
index eca929576..b14301dc7 100644
--- a/test/java/nio/channels/SocketChannel/AsyncCloseChannel.java
+++ b/test/java/nio/channels/SocketChannel/AsyncCloseChannel.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2006-2008 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
@@ -22,7 +22,7 @@
*/
/* @test
- * @bug 6285901
+ * @bug 6285901 6501089
* @summary Check no data is written to wrong socket channel during async closing.
* @author Xueming Shen
*/
@@ -33,13 +33,13 @@ import java.nio.channels.*;
import java.net.*;
public class AsyncCloseChannel {
- static boolean failed = false;
- static boolean keepGoing = true;
+ static volatile boolean failed = false;
+ static volatile boolean keepGoing = true;
+ static int maxAcceptCount = 100;
+ static volatile int acceptCount = 0;
static String host = "127.0.0.1";
- static int sensorPort = 3010;
- static int targetPort = 3020;
- static int maxAcceptCount = 1000;
- static int acceptCount = 0;
+ static int sensorPort;
+ static int targetPort;
public static void main(String args[]) throws Exception {
if (System.getProperty("os.name").startsWith("Windows")) {
@@ -48,11 +48,15 @@ public class AsyncCloseChannel {
}
Thread ss = new SensorServer(); ss.start();
Thread ts = new TargetServer(); ts.start();
+
+ sensorPort = ((ServerThread)ss).server.getLocalPort();
+ targetPort = ((ServerThread)ts).server.getLocalPort();
+
Thread sc = new SensorClient(); sc.start();
Thread tc = new TargetClient(); tc.start();
while(acceptCount < maxAcceptCount && !failed) {
- Thread.yield();
+ Thread.sleep(10);
}
keepGoing = false;
try {
@@ -66,11 +70,8 @@ public class AsyncCloseChannel {
+ acceptCount + "> times of accept!");
}
-
- static class SensorServer extends ThreadEx {
+ static class SensorServer extends ServerThread {
public void runEx() throws Exception {
- ServerSocket server;
- server = new ServerSocket(sensorPort);
while(keepGoing) {
try {
final Socket s = server.accept();
@@ -80,7 +81,7 @@ public class AsyncCloseChannel {
int c = s.getInputStream().read();
if(c != -1) {
// No data is ever written to the peer's socket!
- System.out.println("Oops: read a character: "
+ System.err.println("Oops: read a character: "
+ (char) c);
failed = true;
}
@@ -92,17 +93,14 @@ public class AsyncCloseChannel {
}
}.start();
} catch (IOException ex) {
- //ex.printStackTrace();
+ System.err.println("Exception on sensor server " + ex.getMessage());
}
}
}
}
- static class TargetServer extends ThreadEx {
+ static class TargetServer extends ServerThread {
public void runEx() throws Exception {
-
- ServerSocket server;
- server = new ServerSocket(targetPort);
while (keepGoing) {
try {
final Socket s = server.accept();
@@ -127,7 +125,7 @@ public class AsyncCloseChannel {
}
}.start();
} catch (IOException ex) {
- //ex.printStackTrace();
+ System.err.println("Exception on target server " + ex.getMessage());
}
}
}
@@ -142,19 +140,19 @@ public class AsyncCloseChannel {
try {
s = new Socket();
synchronized(this) {
- while(!wake) {
+ while(!wake && keepGoing) {
try {
wait();
} catch (InterruptedException ex) { }
}
+ wake = false;
}
- wake = false;
s.connect(new InetSocketAddress(host, sensorPort));
try {
Thread.sleep(10);
} catch (InterruptedException ex) { }
} catch (IOException ex) {
- System.out.println("Exception on sensor client " + ex.getMessage());
+ System.err.println("Exception on sensor client " + ex.getMessage());
} finally {
if(s != null) {
try {
@@ -200,26 +198,49 @@ public class AsyncCloseChannel {
}
} catch (IOException ex) {
if(!(ex instanceof ClosedChannelException))
- System.out.println("Exception in target client child "
+ System.err.println("Exception in target client child "
+ ex.toString());
}
}
};
t.start();
- while(!ready)
- Thread.yield();
+ while(!ready && keepGoing) {
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException ex) {}
+ }
s.close();
SensorClient.wakeMe();
t.join();
} catch (IOException ex) {
- System.out.println("Exception in target client parent "
+ System.err.println("Exception in target client parent "
+ ex.getMessage());
} catch (InterruptedException ex) {}
}
}
}
- static abstract class ThreadEx extends Thread {
+ static abstract class ServerThread extends Thread {
+ ServerSocket server;
+ public ServerThread() {
+ super();
+ try {
+ server = new ServerSocket(0);
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public void interrupt() {
+ super.interrupt();
+ if (server != null) {
+ try {
+ server.close();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ }
+ }
public void run() {
try {
runEx();
@@ -231,7 +252,6 @@ public class AsyncCloseChannel {
abstract void runEx() throws Exception;
}
-
public static void closeIt(Socket s) {
try {
if(s != null)
diff --git a/test/java/nio/channels/TestUtil.java b/test/java/nio/channels/TestUtil.java
index 94dcb9976..63e8537ea 100644
--- a/test/java/nio/channels/TestUtil.java
+++ b/test/java/nio/channels/TestUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java b/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java
index f91916430..d73706abe 100644
--- a/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java
+++ b/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java b/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java
index b5aa53603..edf789191 100644
--- a/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java
+++ b/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails_Stub.java b/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails_Stub.java
index 5c1047f78..1148f5493 100644
--- a/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails_Stub.java
+++ b/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateMe.java b/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateMe.java
index 92d7df3fa..95b3cbd02 100644
--- a/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateMe.java
+++ b/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateMe.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/activation/ActivateFailedException/activateFails/ShutdownThread.java b/test/java/rmi/activation/ActivateFailedException/activateFails/ShutdownThread.java
index a90228923..82b973f51 100644
--- a/test/java/rmi/activation/ActivateFailedException/activateFails/ShutdownThread.java
+++ b/test/java/rmi/activation/ActivateFailedException/activateFails/ShutdownThread.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java b/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java
index a60a6b2f9..3082ab424 100644
--- a/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java
+++ b/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 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
diff --git a/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup_Stub.java b/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup_Stub.java
index 0ce899c6f..e6eca0332 100644
--- a/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup_Stub.java
+++ b/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 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
diff --git a/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/MyActivationGroupImpl.java b/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/MyActivationGroupImpl.java
index f4392af2f..bd3a130e7 100644
--- a/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/MyActivationGroupImpl.java
+++ b/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/MyActivationGroupImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 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
diff --git a/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java b/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java
index eed889c0e..9e26a24d2 100644
--- a/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java
+++ b/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java b/test/java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java
index 589b93bb6..23f8248a4 100644
--- a/test/java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java
+++ b/test/java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ActivateMe.java b/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ActivateMe.java
index c6a55411e..0cf0be6b4 100644
--- a/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ActivateMe.java
+++ b/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ActivateMe.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java b/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java
index 3f9ef2b2f..9273d39f1 100644
--- a/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java
+++ b/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor_Stub.java b/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor_Stub.java
index d7f9080c2..e0ac40adf 100644
--- a/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor_Stub.java
+++ b/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/CanCreateStubs.java b/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/CanCreateStubs.java
index 7ee66f59c..cad4274b6 100644
--- a/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/CanCreateStubs.java
+++ b/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/CanCreateStubs.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java b/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java
index 8b47547f8..ab312dcf6 100644
--- a/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java
+++ b/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted_Stub.java b/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted_Stub.java
index a8cb2d81f..1ec8c5ba1 100644
--- a/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted_Stub.java
+++ b/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/activation/ActivationSystem/unregisterGroup/ActivateMe.java b/test/java/rmi/activation/ActivationSystem/unregisterGroup/ActivateMe.java
index d9848e3c8..16b268975 100644
--- a/test/java/rmi/activation/ActivationSystem/unregisterGroup/ActivateMe.java
+++ b/test/java/rmi/activation/ActivationSystem/unregisterGroup/ActivateMe.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/activation/ActivationSystem/unregisterGroup/CallbackInterface.java b/test/java/rmi/activation/ActivationSystem/unregisterGroup/CallbackInterface.java
index e737ac916..b6d08de76 100644
--- a/test/java/rmi/activation/ActivationSystem/unregisterGroup/CallbackInterface.java
+++ b/test/java/rmi/activation/ActivationSystem/unregisterGroup/CallbackInterface.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/activation/ActivationSystem/unregisterGroup/Callback_Stub.java b/test/java/rmi/activation/ActivationSystem/unregisterGroup/Callback_Stub.java
index 4e8a85d75..c9ca5ebac 100644
--- a/test/java/rmi/activation/ActivationSystem/unregisterGroup/Callback_Stub.java
+++ b/test/java/rmi/activation/ActivationSystem/unregisterGroup/Callback_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java b/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java
index 605b66b1e..141d92be5 100644
--- a/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java
+++ b/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup_Stub.java b/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup_Stub.java
index e9a5bcfb1..9418ad279 100644
--- a/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup_Stub.java
+++ b/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/dgc/VMID/CheckVMID.java b/test/java/rmi/dgc/VMID/CheckVMID.java
index 09e4cbec9..75484c053 100644
--- a/test/java/rmi/dgc/VMID/CheckVMID.java
+++ b/test/java/rmi/dgc/VMID/CheckVMID.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure.java b/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure.java
index 2a0e4309b..b727ffa90 100644
--- a/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure.java
+++ b/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure_Stub.java b/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure_Stub.java
index b58190501..793c208aa 100644
--- a/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure_Stub.java
+++ b/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation.java b/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation.java
index 3f06432f3..0c48d53fa 100644
--- a/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation.java
+++ b/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation_Stub.java b/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation_Stub.java
index b73581aa1..db0f31951 100644
--- a/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation_Stub.java
+++ b/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls.java b/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls.java
index b74931a09..5fe6b64ab 100644
--- a/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls.java
+++ b/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls_Stub.java b/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls_Stub.java
index f35e8dccb..85dc0548c 100644
--- a/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls_Stub.java
+++ b/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/registry/altSecurityManager/AltSecurityManager.java b/test/java/rmi/registry/altSecurityManager/AltSecurityManager.java
index 4263351b2..8e9a18882 100644
--- a/test/java/rmi/registry/altSecurityManager/AltSecurityManager.java
+++ b/test/java/rmi/registry/altSecurityManager/AltSecurityManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/registry/altSecurityManager/TestSecurityManager.java b/test/java/rmi/registry/altSecurityManager/TestSecurityManager.java
index 5d9e16253..df818e0dd 100644
--- a/test/java/rmi/registry/altSecurityManager/TestSecurityManager.java
+++ b/test/java/rmi/registry/altSecurityManager/TestSecurityManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/registry/checkusage/CheckUsage.java b/test/java/rmi/registry/checkusage/CheckUsage.java
index 37556efb8..81469a665 100644
--- a/test/java/rmi/registry/checkusage/CheckUsage.java
+++ b/test/java/rmi/registry/checkusage/CheckUsage.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/registry/classPathCodebase/ClassPathCodebase.java b/test/java/rmi/registry/classPathCodebase/ClassPathCodebase.java
index ad7ba02d3..7d501f8a4 100644
--- a/test/java/rmi/registry/classPathCodebase/ClassPathCodebase.java
+++ b/test/java/rmi/registry/classPathCodebase/ClassPathCodebase.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/registry/classPathCodebase/Dummy.java b/test/java/rmi/registry/classPathCodebase/Dummy.java
index ad4024457..1680a2eea 100644
--- a/test/java/rmi/registry/classPathCodebase/Dummy.java
+++ b/test/java/rmi/registry/classPathCodebase/Dummy.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/registry/emptyName/EmptyName.java b/test/java/rmi/registry/emptyName/EmptyName.java
index 7507dc7fa..9231bd250 100644
--- a/test/java/rmi/registry/emptyName/EmptyName.java
+++ b/test/java/rmi/registry/emptyName/EmptyName.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/registry/interfaceHash/InterfaceHash.java b/test/java/rmi/registry/interfaceHash/InterfaceHash.java
index 8ab80dd26..4f1a0c565 100644
--- a/test/java/rmi/registry/interfaceHash/InterfaceHash.java
+++ b/test/java/rmi/registry/interfaceHash/InterfaceHash.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/registry/interfaceHash/ReferenceRegistryStub.java b/test/java/rmi/registry/interfaceHash/ReferenceRegistryStub.java
index 9db88da59..6abfc24c4 100644
--- a/test/java/rmi/registry/interfaceHash/ReferenceRegistryStub.java
+++ b/test/java/rmi/registry/interfaceHash/ReferenceRegistryStub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/registry/multipleRegistries/MultipleRegistries.java b/test/java/rmi/registry/multipleRegistries/MultipleRegistries.java
index 8bca932dd..141954a00 100644
--- a/test/java/rmi/registry/multipleRegistries/MultipleRegistries.java
+++ b/test/java/rmi/registry/multipleRegistries/MultipleRegistries.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/registry/reexport/Reexport.java b/test/java/rmi/registry/reexport/Reexport.java
index 5c88736d4..d47e41553 100644
--- a/test/java/rmi/registry/reexport/Reexport.java
+++ b/test/java/rmi/registry/reexport/Reexport.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/BenchServer.java b/test/java/rmi/reliability/benchmark/bench/rmi/BenchServer.java
index a57d614e9..d36b37cb0 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/BenchServer.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/BenchServer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/BenchServerImpl.java b/test/java/rmi/reliability/benchmark/bench/rmi/BenchServerImpl.java
index a0133f523..1c7c50e51 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/BenchServerImpl.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/BenchServerImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/BooleanArrayCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/BooleanArrayCalls.java
index a9005d980..6e896fdd1 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/BooleanArrayCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/BooleanArrayCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/BooleanCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/BooleanCalls.java
index 52d2810b7..f4f6db251 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/BooleanCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/BooleanCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/ByteArrayCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/ByteArrayCalls.java
index d0401315c..63ab2e891 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/ByteArrayCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/ByteArrayCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/ByteCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/ByteCalls.java
index 8368c2ea0..943462081 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/ByteCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/ByteCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/CharArrayCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/CharArrayCalls.java
index 659030704..204388a40 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/CharArrayCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/CharArrayCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/CharCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/CharCalls.java
index eeeb836be..9ecd73cdb 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/CharCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/CharCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/ClassLoading.java b/test/java/rmi/reliability/benchmark/bench/rmi/ClassLoading.java
index e6451c36e..58fe4d026 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/ClassLoading.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/ClassLoading.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/DoubleArrayCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/DoubleArrayCalls.java
index 44f12010e..faead2c30 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/DoubleArrayCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/DoubleArrayCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/DoubleCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/DoubleCalls.java
index c847391f6..80b61448c 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/DoubleCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/DoubleCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/ExceptionCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/ExceptionCalls.java
index f7f521ae3..a4337fcf6 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/ExceptionCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/ExceptionCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/ExportObjs.java b/test/java/rmi/reliability/benchmark/bench/rmi/ExportObjs.java
index 72071177a..f2e280cc1 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/ExportObjs.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/ExportObjs.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/FloatArrayCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/FloatArrayCalls.java
index d044f06eb..bac5fcbff 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/FloatArrayCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/FloatArrayCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/FloatCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/FloatCalls.java
index 564a81c1c..b41dbb015 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/FloatCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/FloatCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/IntArrayCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/IntArrayCalls.java
index f8897639e..d31432264 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/IntArrayCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/IntArrayCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/IntCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/IntCalls.java
index e1777c3ac..d47b7c7dd 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/IntCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/IntCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/LongArrayCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/LongArrayCalls.java
index 15cbeb799..cd57bcda5 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/LongArrayCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/LongArrayCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/LongCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/LongCalls.java
index 109ec9526..24b69cbcc 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/LongCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/LongCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/Main.java b/test/java/rmi/reliability/benchmark/bench/rmi/Main.java
index 3e06a8887..af8e38642 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/Main.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/Main.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/NullCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/NullCalls.java
index 0616f2e97..bcc7f91a6 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/NullCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/NullCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/ObjArrayCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/ObjArrayCalls.java
index 3fa66cdbc..3ae1ff503 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/ObjArrayCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/ObjArrayCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/ObjTreeCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/ObjTreeCalls.java
index 02a9f066f..35dac2ffd 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/ObjTreeCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/ObjTreeCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/ProxyArrayCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/ProxyArrayCalls.java
index 7242a4f31..5a6e42b83 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/ProxyArrayCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/ProxyArrayCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/RemoteObjArrayCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/RemoteObjArrayCalls.java
index 5bf6a3b92..96637a756 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/RemoteObjArrayCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/RemoteObjArrayCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/ShortArrayCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/ShortArrayCalls.java
index 91589b8d4..9f6274587 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/ShortArrayCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/ShortArrayCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/ShortCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/ShortCalls.java
index 2ba8e0f3a..e9c29c219 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/ShortCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/ShortCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/rmi/SmallObjTreeCalls.java b/test/java/rmi/reliability/benchmark/bench/rmi/SmallObjTreeCalls.java
index a43defb52..679f47f70 100644
--- a/test/java/rmi/reliability/benchmark/bench/rmi/SmallObjTreeCalls.java
+++ b/test/java/rmi/reliability/benchmark/bench/rmi/SmallObjTreeCalls.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/BooleanArrays.java b/test/java/rmi/reliability/benchmark/bench/serial/BooleanArrays.java
index 5e6ff7656..1f852b49c 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/BooleanArrays.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/BooleanArrays.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/Booleans.java b/test/java/rmi/reliability/benchmark/bench/serial/Booleans.java
index abf8ef8c5..485ab9cf6 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/Booleans.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/Booleans.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/ByteArrays.java b/test/java/rmi/reliability/benchmark/bench/serial/ByteArrays.java
index b300e8af7..9c7fc8f6e 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/ByteArrays.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/ByteArrays.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/Bytes.java b/test/java/rmi/reliability/benchmark/bench/serial/Bytes.java
index 31d6465c3..7069b8fed 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/Bytes.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/Bytes.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/CharArrays.java b/test/java/rmi/reliability/benchmark/bench/serial/CharArrays.java
index a9b1353b0..2cca3d24d 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/CharArrays.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/CharArrays.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/Chars.java b/test/java/rmi/reliability/benchmark/bench/serial/Chars.java
index 1ee2c88ed..7104665ee 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/Chars.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/Chars.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/ClassDesc.java b/test/java/rmi/reliability/benchmark/bench/serial/ClassDesc.java
index a7ad155ce..f755af7bd 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/ClassDesc.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/ClassDesc.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/Cons.java b/test/java/rmi/reliability/benchmark/bench/serial/Cons.java
index 99d58c054..5b8ec5117 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/Cons.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/Cons.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/CustomDefaultObjTrees.java b/test/java/rmi/reliability/benchmark/bench/serial/CustomDefaultObjTrees.java
index 14ddbee4f..ebb52d6cb 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/CustomDefaultObjTrees.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/CustomDefaultObjTrees.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/CustomObjTrees.java b/test/java/rmi/reliability/benchmark/bench/serial/CustomObjTrees.java
index d5f10a873..90e472dbc 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/CustomObjTrees.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/CustomObjTrees.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/DoubleArrays.java b/test/java/rmi/reliability/benchmark/bench/serial/DoubleArrays.java
index f216ebab6..52ced9bdf 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/DoubleArrays.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/DoubleArrays.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/Doubles.java b/test/java/rmi/reliability/benchmark/bench/serial/Doubles.java
index e43df322c..212bcde25 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/Doubles.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/Doubles.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/ExternObjTrees.java b/test/java/rmi/reliability/benchmark/bench/serial/ExternObjTrees.java
index bb9053a78..06c9de1d9 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/ExternObjTrees.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/ExternObjTrees.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/FloatArrays.java b/test/java/rmi/reliability/benchmark/bench/serial/FloatArrays.java
index 8feae044d..382fe7b7d 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/FloatArrays.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/FloatArrays.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/Floats.java b/test/java/rmi/reliability/benchmark/bench/serial/Floats.java
index 1dca696a6..8bd6048b6 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/Floats.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/Floats.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/GetPutFieldTrees.java b/test/java/rmi/reliability/benchmark/bench/serial/GetPutFieldTrees.java
index c5794f05b..87d3b1376 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/GetPutFieldTrees.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/GetPutFieldTrees.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/IntArrays.java b/test/java/rmi/reliability/benchmark/bench/serial/IntArrays.java
index c50059bb6..c846f7e66 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/IntArrays.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/IntArrays.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/Ints.java b/test/java/rmi/reliability/benchmark/bench/serial/Ints.java
index 90cfb3021..dd9f36b51 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/Ints.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/Ints.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/LongArrays.java b/test/java/rmi/reliability/benchmark/bench/serial/LongArrays.java
index 802bb82cf..bbb256119 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/LongArrays.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/LongArrays.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/Longs.java b/test/java/rmi/reliability/benchmark/bench/serial/Longs.java
index fdc1e04e6..706af604f 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/Longs.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/Longs.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/Main.java b/test/java/rmi/reliability/benchmark/bench/serial/Main.java
index 49e8e813f..072a61aaa 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/Main.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/Main.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/ObjArrays.java b/test/java/rmi/reliability/benchmark/bench/serial/ObjArrays.java
index b9b1ec5fb..a88fd2243 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/ObjArrays.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/ObjArrays.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/ObjTrees.java b/test/java/rmi/reliability/benchmark/bench/serial/ObjTrees.java
index f9405ba1d..316139c8b 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/ObjTrees.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/ObjTrees.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/ProxyArrays.java b/test/java/rmi/reliability/benchmark/bench/serial/ProxyArrays.java
index c6ad86dd5..f20f38270 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/ProxyArrays.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/ProxyArrays.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/ProxyClassDesc.java b/test/java/rmi/reliability/benchmark/bench/serial/ProxyClassDesc.java
index 4a0576361..7f809e931 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/ProxyClassDesc.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/ProxyClassDesc.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/RepeatObjs.java b/test/java/rmi/reliability/benchmark/bench/serial/RepeatObjs.java
index 08ae15908..3d8084a37 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/RepeatObjs.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/RepeatObjs.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/ReplaceTrees.java b/test/java/rmi/reliability/benchmark/bench/serial/ReplaceTrees.java
index e117453bd..bc80bfe45 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/ReplaceTrees.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/ReplaceTrees.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/ShortArrays.java b/test/java/rmi/reliability/benchmark/bench/serial/ShortArrays.java
index 45339999c..460942edb 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/ShortArrays.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/ShortArrays.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/Shorts.java b/test/java/rmi/reliability/benchmark/bench/serial/Shorts.java
index dafdf53c9..1d16579b8 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/Shorts.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/Shorts.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/SmallObjTrees.java b/test/java/rmi/reliability/benchmark/bench/serial/SmallObjTrees.java
index bb0394f39..a079d8de6 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/SmallObjTrees.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/SmallObjTrees.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/StreamBuffer.java b/test/java/rmi/reliability/benchmark/bench/serial/StreamBuffer.java
index 33efee872..8a8f86bae 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/StreamBuffer.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/StreamBuffer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/benchmark/bench/serial/Strings.java b/test/java/rmi/reliability/benchmark/bench/serial/Strings.java
index 512e1a33d..6faff8fdd 100644
--- a/test/java/rmi/reliability/benchmark/bench/serial/Strings.java
+++ b/test/java/rmi/reliability/benchmark/bench/serial/Strings.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/reliability/juicer/Apple.java b/test/java/rmi/reliability/juicer/Apple.java
index f1b6b6403..ce04dee13 100644
--- a/test/java/rmi/reliability/juicer/Apple.java
+++ b/test/java/rmi/reliability/juicer/Apple.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/reliability/juicer/AppleEvent.java b/test/java/rmi/reliability/juicer/AppleEvent.java
index c76a6fd27..a845d42d2 100644
--- a/test/java/rmi/reliability/juicer/AppleEvent.java
+++ b/test/java/rmi/reliability/juicer/AppleEvent.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/reliability/juicer/AppleImpl.java b/test/java/rmi/reliability/juicer/AppleImpl.java
index f1f1c3ee9..b31dd2e0a 100644
--- a/test/java/rmi/reliability/juicer/AppleImpl.java
+++ b/test/java/rmi/reliability/juicer/AppleImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/reliability/juicer/AppleUser.java b/test/java/rmi/reliability/juicer/AppleUser.java
index be86b053b..ec0f8b621 100644
--- a/test/java/rmi/reliability/juicer/AppleUser.java
+++ b/test/java/rmi/reliability/juicer/AppleUser.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/reliability/juicer/AppleUserImpl.java b/test/java/rmi/reliability/juicer/AppleUserImpl.java
index d2f8b681f..cc64a5755 100644
--- a/test/java/rmi/reliability/juicer/AppleUserImpl.java
+++ b/test/java/rmi/reliability/juicer/AppleUserImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/reliability/juicer/ApplicationServer.java b/test/java/rmi/reliability/juicer/ApplicationServer.java
index e17528af8..c4f01a370 100644
--- a/test/java/rmi/reliability/juicer/ApplicationServer.java
+++ b/test/java/rmi/reliability/juicer/ApplicationServer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/reliability/juicer/Orange.java b/test/java/rmi/reliability/juicer/Orange.java
index 40e670a7e..c358ca5b7 100644
--- a/test/java/rmi/reliability/juicer/Orange.java
+++ b/test/java/rmi/reliability/juicer/Orange.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/reliability/juicer/OrangeEcho.java b/test/java/rmi/reliability/juicer/OrangeEcho.java
index 8077afad8..203bc6921 100644
--- a/test/java/rmi/reliability/juicer/OrangeEcho.java
+++ b/test/java/rmi/reliability/juicer/OrangeEcho.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/reliability/juicer/OrangeEchoImpl.java b/test/java/rmi/reliability/juicer/OrangeEchoImpl.java
index 5472138bd..270ff7436 100644
--- a/test/java/rmi/reliability/juicer/OrangeEchoImpl.java
+++ b/test/java/rmi/reliability/juicer/OrangeEchoImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/reliability/juicer/OrangeImpl.java b/test/java/rmi/reliability/juicer/OrangeImpl.java
index 9643ca52f..d4f681a27 100644
--- a/test/java/rmi/reliability/juicer/OrangeImpl.java
+++ b/test/java/rmi/reliability/juicer/OrangeImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressConstants.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressConstants.java
index cc7526077..e2fbf470d 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressConstants.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressConstants.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressInputStream.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressInputStream.java
index 31577a1c2..a0be6e0fa 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressInputStream.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressInputStream.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressOutputStream.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressOutputStream.java
index 5d38e147b..39118af82 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressOutputStream.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressOutputStream.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/Echo.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/Echo.java
index 074781b25..2be704b31 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/Echo.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/Echo.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl.java
index 7b334fe03..be133e34f 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl_Stub.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl_Stub.java
index 134446486..0e85e0a2b 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl_Stub.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/MultiSocketFactory.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/MultiSocketFactory.java
index 9ebfa3236..81e03e2d1 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/MultiSocketFactory.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/MultiSocketFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java
index b3e7a77b9..cebd38942 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Compress.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Compress.java
index 88057b954..bd957ea76 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Compress.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Compress.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Hello.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Hello.java
index 347dd9cc8..727c89a7c 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Hello.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Hello.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl.java
index 13f74488a..716dc51c1 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl_Stub.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl_Stub.java
index a2858f1ec..8bd94735e 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl_Stub.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java
index 3bce0037a..c2f928b83 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressConstants.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressConstants.java
index cc7526077..e2fbf470d 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressConstants.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressConstants.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressInputStream.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressInputStream.java
index 31577a1c2..a0be6e0fa 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressInputStream.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressInputStream.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressOutputStream.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressOutputStream.java
index 5d38e147b..39118af82 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressOutputStream.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressOutputStream.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/Echo.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/Echo.java
index 03441f25a..88992f960 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/Echo.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/Echo.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl.java
index c156ff903..bbed54757 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl_Stub.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl_Stub.java
index 05e866e61..666d26ace 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl_Stub.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/MultiSocketFactory.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/MultiSocketFactory.java
index 9ebfa3236..81e03e2d1 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/MultiSocketFactory.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/MultiSocketFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java
index f1b01f9b7..e28a0a6b2 100644
--- a/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java
+++ b/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java b/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java
index 5d191fe67..8b55d0e5a 100644
--- a/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java
+++ b/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName.java b/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName.java
index 436d70a40..8d4ac6349 100644
--- a/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName.java
+++ b/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName_Stub.java b/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName_Stub.java
index f42eda7d4..a81a07105 100644
--- a/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName_Stub.java
+++ b/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java b/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java
index 9ea571a41..e558d88c5 100644
--- a/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java
+++ b/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall_Stub.java b/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall_Stub.java
index 9583f5354..3389fe497 100644
--- a/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall_Stub.java
+++ b/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/Shutdown.java b/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/Shutdown.java
index 4dadbe51b..7b8c3c56b 100644
--- a/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/Shutdown.java
+++ b/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/Shutdown.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl.java b/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl.java
index 32c0c118b..8f4b9f53b 100644
--- a/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl.java
+++ b/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl_Stub.java b/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl_Stub.java
index 97c62ca33..8fb1ed3fa 100644
--- a/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl_Stub.java
+++ b/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownMonitor.java b/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownMonitor.java
index 29f630b1f..ffca458a6 100644
--- a/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownMonitor.java
+++ b/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownMonitor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport.java b/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport.java
index 0fb37c622..685cc875b 100644
--- a/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport.java
+++ b/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2.java b/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2.java
index 7e8d35928..e61404153 100644
--- a/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2.java
+++ b/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2_Stub.java b/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2_Stub.java
index bbefd5248..51e0c7507 100644
--- a/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2_Stub.java
+++ b/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2002-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport_Stub.java b/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport_Stub.java
index 535fffa00..1b83c3432 100644
--- a/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport_Stub.java
+++ b/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/unexportObject/Ping.java b/test/java/rmi/server/UnicastRemoteObject/unexportObject/Ping.java
index 682915cfc..37eb1c21d 100644
--- a/test/java/rmi/server/UnicastRemoteObject/unexportObject/Ping.java
+++ b/test/java/rmi/server/UnicastRemoteObject/unexportObject/Ping.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java b/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java
index de1cef781..085bd9816 100644
--- a/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java
+++ b/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak_Stub.java b/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak_Stub.java
index 56102aa54..52a561bdf 100644
--- a/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak_Stub.java
+++ b/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies.java b/test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies.java
index 62b0ae933..28764a094 100644
--- a/test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies.java
+++ b/test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies_Stub.java b/test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies_Stub.java
index b567c29eb..b8570dd34 100644
--- a/test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies_Stub.java
+++ b/test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread.java b/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread.java
index a12af61e4..fe5006117 100644
--- a/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread.java
+++ b/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread_Stub.java b/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread_Stub.java
index 612fe5db4..2753d6eac 100644
--- a/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread_Stub.java
+++ b/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshall.java b/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshall.java
index 327081c9d..770388770 100644
--- a/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshall.java
+++ b/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshall.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/PoisonPill.java b/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/PoisonPill.java
index 3c885926c..c657b2f1b 100644
--- a/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/PoisonPill.java
+++ b/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/PoisonPill.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/RuntimeExceptionParameter.java b/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/RuntimeExceptionParameter.java
index 8d8f5e94c..3c1636aa2 100644
--- a/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/RuntimeExceptionParameter.java
+++ b/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/RuntimeExceptionParameter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java b/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java
index 05f30142b..87416c6a9 100644
--- a/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java
+++ b/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency_Stub.java b/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency_Stub.java
index 97c275b4f..fdc6f12f3 100644
--- a/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency_Stub.java
+++ b/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java b/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java
index 6687b9202..5f3403f5b 100644
--- a/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java
+++ b/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval_Stub.java b/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval_Stub.java
index 950e30982..f351b1172 100644
--- a/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval_Stub.java
+++ b/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/Unreferenced/leaseCheckInterval/SelfTerminator.java b/test/java/rmi/server/Unreferenced/leaseCheckInterval/SelfTerminator.java
index 65e65f3e0..a1b84ad82 100644
--- a/test/java/rmi/server/Unreferenced/leaseCheckInterval/SelfTerminator.java
+++ b/test/java/rmi/server/Unreferenced/leaseCheckInterval/SelfTerminator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet.java b/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet.java
index ea3a25d29..f8db48a3b 100644
--- a/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet.java
+++ b/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-2008 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
diff --git a/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet_Stub.java b/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet_Stub.java
index 55189cad7..41466745b 100644
--- a/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet_Stub.java
+++ b/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java b/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java
index eafb5e041..eeae2e36e 100644
--- a/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java
+++ b/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext_Stub.java b/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext_Stub.java
index 0e35db25c..b24abffe7 100644
--- a/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext_Stub.java
+++ b/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/transport/acceptLoop/CloseServerSocketOnTermination.java b/test/java/rmi/transport/acceptLoop/CloseServerSocketOnTermination.java
index 02bb3d7f4..068c68aa3 100644
--- a/test/java/rmi/transport/acceptLoop/CloseServerSocketOnTermination.java
+++ b/test/java/rmi/transport/acceptLoop/CloseServerSocketOnTermination.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/java/rmi/transport/checkFQDN/CheckFQDN.java b/test/java/rmi/transport/checkFQDN/CheckFQDN.java
index 00dadb2f3..4115cf77a 100644
--- a/test/java/rmi/transport/checkFQDN/CheckFQDN.java
+++ b/test/java/rmi/transport/checkFQDN/CheckFQDN.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/transport/checkFQDN/CheckFQDNClient.java b/test/java/rmi/transport/checkFQDN/CheckFQDNClient.java
index ef644b197..d0f872446 100644
--- a/test/java/rmi/transport/checkFQDN/CheckFQDNClient.java
+++ b/test/java/rmi/transport/checkFQDN/CheckFQDNClient.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/transport/checkFQDN/CheckFQDN_Stub.java b/test/java/rmi/transport/checkFQDN/CheckFQDN_Stub.java
index 3c318cae9..c0ea6eb17 100644
--- a/test/java/rmi/transport/checkFQDN/CheckFQDN_Stub.java
+++ b/test/java/rmi/transport/checkFQDN/CheckFQDN_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/transport/checkFQDN/TellServerName.java b/test/java/rmi/transport/checkFQDN/TellServerName.java
index d5625c5cb..61632aa1b 100644
--- a/test/java/rmi/transport/checkFQDN/TellServerName.java
+++ b/test/java/rmi/transport/checkFQDN/TellServerName.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java b/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java
index 94847ffc0..e126e6c99 100644
--- a/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java
+++ b/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak_Stub.java b/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak_Stub.java
index 52b5d89a5..f3dde3076 100644
--- a/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak_Stub.java
+++ b/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeak.java b/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeak.java
index de412cda3..d08368c57 100644
--- a/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeak.java
+++ b/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeak.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java b/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java
index b42f23d2e..9bfff58da 100644
--- a/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java
+++ b/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/transport/closeServerSocket/CloseServerSocket.java b/test/java/rmi/transport/closeServerSocket/CloseServerSocket.java
index 54ca8fd2a..6a94319ae 100644
--- a/test/java/rmi/transport/closeServerSocket/CloseServerSocket.java
+++ b/test/java/rmi/transport/closeServerSocket/CloseServerSocket.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/java/rmi/transport/dgcDeadLock/DGCDeadLock.java b/test/java/rmi/transport/dgcDeadLock/DGCDeadLock.java
index 820d4c410..52fa270dd 100644
--- a/test/java/rmi/transport/dgcDeadLock/DGCDeadLock.java
+++ b/test/java/rmi/transport/dgcDeadLock/DGCDeadLock.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/transport/dgcDeadLock/Test.java b/test/java/rmi/transport/dgcDeadLock/Test.java
index 5fcd90c38..4fb2c4cf5 100644
--- a/test/java/rmi/transport/dgcDeadLock/Test.java
+++ b/test/java/rmi/transport/dgcDeadLock/Test.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/transport/dgcDeadLock/TestImpl.java b/test/java/rmi/transport/dgcDeadLock/TestImpl.java
index 0f23ae73a..e5a68e25b 100644
--- a/test/java/rmi/transport/dgcDeadLock/TestImpl.java
+++ b/test/java/rmi/transport/dgcDeadLock/TestImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/transport/dgcDeadLock/TestImpl_Stub.java b/test/java/rmi/transport/dgcDeadLock/TestImpl_Stub.java
index f82df1fff..53cca3af7 100644
--- a/test/java/rmi/transport/dgcDeadLock/TestImpl_Stub.java
+++ b/test/java/rmi/transport/dgcDeadLock/TestImpl_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-2008 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
diff --git a/test/java/rmi/transport/handshakeFailure/HandshakeFailure.java b/test/java/rmi/transport/handshakeFailure/HandshakeFailure.java
index e14de6adc..28d0d7c96 100644
--- a/test/java/rmi/transport/handshakeFailure/HandshakeFailure.java
+++ b/test/java/rmi/transport/handshakeFailure/HandshakeFailure.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/transport/handshakeTimeout/HandshakeTimeout.java b/test/java/rmi/transport/handshakeTimeout/HandshakeTimeout.java
index c74c021b4..68879915c 100644
--- a/test/java/rmi/transport/handshakeTimeout/HandshakeTimeout.java
+++ b/test/java/rmi/transport/handshakeTimeout/HandshakeTimeout.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/transport/httpSocket/HttpSocketTest.java b/test/java/rmi/transport/httpSocket/HttpSocketTest.java
index 8fbba5460..1ca996b8b 100644
--- a/test/java/rmi/transport/httpSocket/HttpSocketTest.java
+++ b/test/java/rmi/transport/httpSocket/HttpSocketTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/transport/httpSocket/HttpSocketTest_Stub.java b/test/java/rmi/transport/httpSocket/HttpSocketTest_Stub.java
index a8b2e3424..60cc780ed 100644
--- a/test/java/rmi/transport/httpSocket/HttpSocketTest_Stub.java
+++ b/test/java/rmi/transport/httpSocket/HttpSocketTest_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java b/test/java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java
index 8f1bd834b..6e7bc8ec8 100644
--- a/test/java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java
+++ b/test/java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/java/rmi/transport/pinLastArguments/PinLastArguments.java b/test/java/rmi/transport/pinLastArguments/PinLastArguments.java
index b85ad3a80..e4b162fac 100644
--- a/test/java/rmi/transport/pinLastArguments/PinLastArguments.java
+++ b/test/java/rmi/transport/pinLastArguments/PinLastArguments.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java b/test/java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java
index fa810c443..eea5ec4ee 100644
--- a/test/java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java
+++ b/test/java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/java/rmi/transport/readTimeout/ReadTimeoutTest.java b/test/java/rmi/transport/readTimeout/ReadTimeoutTest.java
index 0bdd65d5b..823953a63 100644
--- a/test/java/rmi/transport/readTimeout/ReadTimeoutTest.java
+++ b/test/java/rmi/transport/readTimeout/ReadTimeoutTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/transport/readTimeout/TestIface.java b/test/java/rmi/transport/readTimeout/TestIface.java
index a7096a0b2..015389767 100644
--- a/test/java/rmi/transport/readTimeout/TestIface.java
+++ b/test/java/rmi/transport/readTimeout/TestIface.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/transport/readTimeout/TestImpl.java b/test/java/rmi/transport/readTimeout/TestImpl.java
index 3fc6af8b2..c6441681d 100644
--- a/test/java/rmi/transport/readTimeout/TestImpl.java
+++ b/test/java/rmi/transport/readTimeout/TestImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/transport/readTimeout/TestImpl_Stub.java b/test/java/rmi/transport/readTimeout/TestImpl_Stub.java
index 223ce7915..8720e9400 100644
--- a/test/java/rmi/transport/readTimeout/TestImpl_Stub.java
+++ b/test/java/rmi/transport/readTimeout/TestImpl_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-2008 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
diff --git a/test/java/rmi/transport/reuseDefaultPort/ReuseDefaultPort.java b/test/java/rmi/transport/reuseDefaultPort/ReuseDefaultPort.java
index cf3862809..f220a41de 100644
--- a/test/java/rmi/transport/reuseDefaultPort/ReuseDefaultPort.java
+++ b/test/java/rmi/transport/reuseDefaultPort/ReuseDefaultPort.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak.java b/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak.java
index 245942ddc..ceb7cb18f 100644
--- a/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak.java
+++ b/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak_Stub.java b/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak_Stub.java
index bc17d11e8..d67a147e0 100644
--- a/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak_Stub.java
+++ b/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak_Stub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-2008 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
diff --git a/test/java/security/cert/CertPathBuilder/targetConstraints/BuildEEBasicConstraints.java b/test/java/security/cert/CertPathBuilder/targetConstraints/BuildEEBasicConstraints.java
new file mode 100644
index 000000000..0ec0be61c
--- /dev/null
+++ b/test/java/security/cert/CertPathBuilder/targetConstraints/BuildEEBasicConstraints.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 6714842
+ * @library ../../../testlibrary
+ * @build CertUtils
+ * @run main BuildEEBasicConstraints
+ * @summary make sure a PKIX CertPathBuilder builds a path to an
+ * end entity certificate when the setBasicConstraints method of the
+ * X509CertSelector of the targetConstraints PKIXBuilderParameters
+ * parameter is set to -2.
+ */
+
+import java.security.cert.Certificate;
+import java.security.cert.CertPath;
+import java.security.cert.CertStore;
+import java.security.cert.CollectionCertStoreParameters;
+import java.security.cert.PKIXBuilderParameters;
+import java.security.cert.PKIXCertPathBuilderResult;
+import java.security.cert.TrustAnchor;
+import java.security.cert.X509Certificate;
+import java.security.cert.X509CertSelector;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public final class BuildEEBasicConstraints {
+
+ public static void main(String[] args) throws Exception {
+
+ X509Certificate rootCert = CertUtils.getCertFromFile("anchor.cer");
+ TrustAnchor anchor = new TrustAnchor
+ (rootCert.getSubjectX500Principal(), rootCert.getPublicKey(), null);
+ X509CertSelector sel = new X509CertSelector();
+ sel.setBasicConstraints(-2);
+ PKIXBuilderParameters params = new PKIXBuilderParameters
+ (Collections.singleton(anchor), sel);
+ params.setRevocationEnabled(false);
+ X509Certificate eeCert = CertUtils.getCertFromFile("ee.cer");
+ X509Certificate caCert = CertUtils.getCertFromFile("ca.cer");
+ ArrayList<X509Certificate> certs = new ArrayList<X509Certificate>();
+ certs.add(caCert);
+ certs.add(eeCert);
+ CollectionCertStoreParameters ccsp =
+ new CollectionCertStoreParameters(certs);
+ CertStore cs = CertStore.getInstance("Collection", ccsp);
+ params.addCertStore(cs);
+ PKIXCertPathBuilderResult res = CertUtils.build(params);
+ CertPath cp = res.getCertPath();
+ // check that first certificate is an EE cert
+ List<? extends Certificate> certList = cp.getCertificates();
+ X509Certificate cert = (X509Certificate) certList.get(0);
+ if (cert.getBasicConstraints() != -1) {
+ throw new Exception("Target certificate is not an EE certificate");
+ }
+ }
+}
diff --git a/test/java/security/cert/CertPathBuilder/targetConstraints/anchor.cer b/test/java/security/cert/CertPathBuilder/targetConstraints/anchor.cer
new file mode 100644
index 000000000..bfb5d5847
--- /dev/null
+++ b/test/java/security/cert/CertPathBuilder/targetConstraints/anchor.cer
@@ -0,0 +1,8 @@
+-----BEGIN CERTIFICATE-----
+MIIBFzCBwgIBATANBgkqhkiG9w0BAQQFADAXMRUwEwYDVQQDEwxUcnVzdCBBbmNo
+b3IwHhcNMDIxMTA3MTE1NzAzWhcNMjIxMTA3MTE1NzAzWjAXMRUwEwYDVQQDEwxU
+cnVzdCBBbmNob3IwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA9uCj12hwDgC1n9go
+0ozQAVMM+DfX0vpKOemyGNp+ycSLfAq3pxBcUKbQhjSRL7YjPkEL8XC6pRLwyEoF
+osWweQIDAQABMA0GCSqGSIb3DQEBBAUAA0EAzZta5M1qbbozj7jWnNyTgB4HUpzv
+4eP0VYQb1pQY1/xEMczaRt+RuoIDnHCq5a1vOiwk6ZbdG6GlJKx9lj0oMQ==
+-----END CERTIFICATE-----
diff --git a/test/java/security/cert/CertPathBuilder/targetConstraints/ca.cer b/test/java/security/cert/CertPathBuilder/targetConstraints/ca.cer
new file mode 100644
index 000000000..26ffb68c1
--- /dev/null
+++ b/test/java/security/cert/CertPathBuilder/targetConstraints/ca.cer
@@ -0,0 +1,9 @@
+-----BEGIN CERTIFICATE-----
+MIIBSjCB9aADAgECAgECMA0GCSqGSIb3DQEBBAUAMBcxFTATBgNVBAMTDFRydXN0
+IEFuY2hvcjAeFw0wMjExMDcxMTU3MDNaFw0yMjExMDcxMTU3MDNaMA0xCzAJBgNV
+BAMTAkNBMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ8mP3x37PablDfwldGL5G0+
+l9NgMJSdxVNWBg+ySzQNsZklEFCxGfxPQW+EFYfafHbTbmnni2gsgU1mgPBTQDsC
+AwEAAaM2MDQwCwYDVR0PBAQDAgIEMBcGA1UdIAQQMA4wBgYEVR0gADAEBgIqADAM
+BgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA0EA9oCyzh0UKmNsKb+KpppbKYs8
+iA8sDm9oDCwyVSXBM46zrP38nRcx3EdKFvGTwbb/Np+lcZALUsKVYQy3rlU+cQ==
+-----END CERTIFICATE-----
diff --git a/test/java/security/cert/CertPathBuilder/targetConstraints/ee.cer b/test/java/security/cert/CertPathBuilder/targetConstraints/ee.cer
new file mode 100644
index 000000000..f20c937ed
--- /dev/null
+++ b/test/java/security/cert/CertPathBuilder/targetConstraints/ee.cer
@@ -0,0 +1,9 @@
+-----BEGIN CERTIFICATE-----
+MIIBLTCB2KADAgECAgEDMA0GCSqGSIb3DQEBBAUAMA0xCzAJBgNVBAMTAkNBMB4X
+DTAyMTEwNzExNTcwM1oXDTIyMTEwNzExNTcwM1owFTETMBEGA1UEAxMKRW5kIEVu
+dGl0eTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDVBDfF+uBr5s5jzzDs1njKlZNt
+h8hHzEt3ASh67Peos+QrDzgpUyFXT6fdW2h7iPf0ifjM8eW2xa+3EnPjjU5jAgMB
+AAGjGzAZMBcGA1UdIAQQMA4wBgYEVR0gADAEBgIqADANBgkqhkiG9w0BAQQFAANB
+AFo//WOboCNOCcA1fvcWW9oc4MvV8ZPvFIAbyEbgyFd4id5lGDTRbRPvvNZRvdsN
+NM2gXYr+f87NHIXc9EF3pzw=
+-----END CERTIFICATE-----
diff --git a/test/java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java b/test/java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java
index baca8f1b0..e66dfb704 100644
--- a/test/java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java
+++ b/test/java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/java/util/concurrent/SynchronousQueue/Fairness.java b/test/java/util/concurrent/SynchronousQueue/Fairness.java
index 5adb71d99..f29a40df7 100644
--- a/test/java/util/concurrent/SynchronousQueue/Fairness.java
+++ b/test/java/util/concurrent/SynchronousQueue/Fairness.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2004-2008 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
diff --git a/test/javax/management/Introspector/AnnotatedMBeanTest.java b/test/javax/management/Introspector/AnnotatedMBeanTest.java
new file mode 100644
index 000000000..b0782d39c
--- /dev/null
+++ b/test/javax/management/Introspector/AnnotatedMBeanTest.java
@@ -0,0 +1,337 @@
+/*
+ * Copyright 2007 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test %M% %I%
+ * @bug 6323980
+ * @summary Test MBeans defined with &#64;MBean
+ * @author Eamonn McManus
+ * @run main/othervm -ea AnnotatedMBeanTest
+ */
+
+import java.io.File;
+import java.io.PrintWriter;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+import javax.management.Attribute;
+import javax.management.Descriptor;
+import javax.management.DescriptorKey;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanOperationInfo;
+import javax.management.MBeanParameterInfo;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.MXBean;
+import javax.management.MalformedObjectNameException;
+import javax.management.ManagedAttribute;
+import javax.management.ManagedOperation;
+import javax.management.MBean;
+import javax.management.ObjectName;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeType;
+
+public class AnnotatedMBeanTest {
+ private static MBeanServer mbs;
+ private static final ObjectName objectName;
+ static {
+ try {
+ objectName = new ObjectName("test:type=Test");
+ } catch (MalformedObjectNameException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ if (!AnnotatedMBeanTest.class.desiredAssertionStatus())
+ throw new Exception("Test must be run with -ea");
+
+ File policyFile = File.createTempFile("jmxperms", ".policy");
+ policyFile.deleteOnExit();
+ PrintWriter pw = new PrintWriter(policyFile);
+ pw.println("grant {");
+ pw.println(" permission javax.management.MBeanPermission \"*\", \"*\";");
+ pw.println(" permission javax.management.MBeanServerPermission \"*\";");
+ pw.println(" permission javax.management.MBeanTrustPermission \"*\";");
+ pw.println("};");
+ pw.close();
+
+ System.setProperty("java.security.policy", policyFile.getAbsolutePath());
+ System.setSecurityManager(new SecurityManager());
+
+ String failure = null;
+
+ for (Method m : AnnotatedMBeanTest.class.getDeclaredMethods()) {
+ if (Modifier.isStatic(m.getModifiers()) &&
+ m.getName().startsWith("test") &&
+ m.getParameterTypes().length == 0) {
+ mbs = MBeanServerFactory.newMBeanServer();
+ try {
+ m.invoke(null);
+ System.out.println(m.getName() + " OK");
+ } catch (InvocationTargetException ite) {
+ System.out.println(m.getName() + " got exception:");
+ Throwable t = ite.getCause();
+ t.printStackTrace(System.out);
+ failure = m.getName() + ": " + t.toString();
+ }
+ }
+ }
+ if (failure == null)
+ System.out.println("TEST PASSED");
+ else
+ throw new Exception("TEST FAILED: " + failure);
+ }
+
+ public static class Stats {
+ private final int used;
+ private final int size;
+ private final boolean interesting;
+
+ public Stats(int used, int size, boolean interesting) {
+ this.used = used;
+ this.size = size;
+ this.interesting = interesting;
+ }
+
+ public int getUsed() {
+ return used;
+ }
+
+ public int getSize() {
+ return size;
+ }
+
+ public boolean isInteresting() {
+ return interesting;
+ }
+ }
+
+ @Retention(RetentionPolicy.RUNTIME)
+ public static @interface Units {
+ @DescriptorKey("units")
+ String value();
+ }
+
+ @MBean
+ public static class Cache {
+ private int used = 23;
+ private int size = 99;
+
+ @ManagedAttribute
+ @Units("bytes")
+ public int getUsed() {
+ return used;
+ }
+
+ @ManagedAttribute
+ public int getSize() {
+ return size;
+ }
+
+ @ManagedAttribute
+ public void setSize(int x) {
+ this.size = x;
+ }
+
+ @ManagedAttribute
+ public boolean isInteresting() {
+ return false;
+ }
+
+ @ManagedAttribute
+ public Stats getStats() {
+ return new Stats(used, size, false);
+ }
+
+ @ManagedOperation
+ public int dropOldest(int n) {
+ return 55;
+ }
+
+ private void irrelevantMethod() {}
+ private int getIrrelevant() {return 0;}
+ public int getIrrelevant2() {return 0;}
+
+ public int otherIrrelevantMethod() {return 5;}
+ }
+
+ public static class SubCache extends Cache {
+ // SubCache does not have the @MBean annotation
+ // but its parent does. It doesn't add any @ManagedAttribute or
+ // @ManagedOperation methods, so its management interface
+ // should be the same.
+ private void irrelevantMethod2() {}
+ public int otherIrrelevantMethod3() {return 0;}
+
+ public int getX() {return 0;}
+ public void setX(int x) {}
+ }
+
+ @MXBean
+ public static class CacheMX {
+ private int used = 23;
+ private int size = 99;
+
+ @ManagedAttribute
+ @Units("bytes")
+ public int getUsed() {
+ return used;
+ }
+
+ @ManagedAttribute
+ public int getSize() {
+ return size;
+ }
+
+ @ManagedAttribute
+ public void setSize(int x) {
+ this.size = x;
+ }
+
+ @ManagedAttribute
+ public boolean isInteresting() {
+ return false;
+ }
+
+ @ManagedAttribute
+ public Stats getStats() {
+ return new Stats(used, size, false);
+ }
+
+ @ManagedOperation
+ public int dropOldest(int n) {
+ return 55;
+ }
+
+ private void irrelevantMethod() {}
+ private int getIrrelevant() {return 0;}
+ public int getIrrelevant2() {return 0;}
+
+ public int otherIrrelevantMethod() {return 5;}
+ }
+
+ public static class SubCacheMX extends CacheMX {
+ private void irrelevantMethod2() {}
+ public int otherIrrelevantMethod3() {return 0;}
+
+ public int getX() {return 0;}
+ public void setX(int x) {}
+ }
+
+ private static void testSimpleManagedResource() throws Exception {
+ testResource(new Cache(), false);
+ }
+
+ private static void testSubclassManagedResource() throws Exception {
+ testResource(new SubCache(), false);
+ }
+
+ private static void testMXBeanResource() throws Exception {
+ testResource(new CacheMX(), true);
+ }
+
+ private static void testSubclassMXBeanResource() throws Exception {
+ testResource(new SubCacheMX(), true);
+ }
+
+ private static void testResource(Object resource, boolean mx) throws Exception {
+ mbs.registerMBean(resource, objectName);
+
+ MBeanInfo mbi = mbs.getMBeanInfo(objectName);
+ assert mbi.getDescriptor().getFieldValue("mxbean").equals(Boolean.toString(mx));
+
+ MBeanAttributeInfo[] mbais = mbi.getAttributes();
+
+ assert mbais.length == 4: mbais.length;
+
+ for (MBeanAttributeInfo mbai : mbais) {
+ String name = mbai.getName();
+ if (name.equals("Used")) {
+ assert mbai.isReadable();
+ assert !mbai.isWritable();
+ assert !mbai.isIs();
+ assert mbai.getType().equals("int");
+ assert "bytes".equals(mbai.getDescriptor().getFieldValue("units"));
+ } else if (name.equals("Size")) {
+ assert mbai.isReadable();
+ assert mbai.isWritable();
+ assert !mbai.isIs();
+ assert mbai.getType().equals("int");
+ } else if (name.equals("Interesting")) {
+ assert mbai.isReadable();
+ assert !mbai.isWritable();
+ assert mbai.isIs();
+ assert mbai.getType().equals("boolean");
+ } else if (name.equals("Stats")) {
+ assert mbai.isReadable();
+ assert !mbai.isWritable();
+ assert !mbai.isIs();
+ Descriptor d = mbai.getDescriptor();
+ if (mx) {
+ assert mbai.getType().equals(CompositeData.class.getName());
+ assert d.getFieldValue("originalType").equals(Stats.class.getName());
+ CompositeType ct = (CompositeType) d.getFieldValue("openType");
+ Set<String> names = new HashSet<String>(
+ Arrays.asList("used", "size", "interesting"));
+ assert ct.keySet().equals(names) : ct.keySet();
+ } else {
+ assert mbai.getType().equals(Stats.class.getName());
+ }
+ } else
+ assert false : name;
+ }
+
+ MBeanOperationInfo[] mbois = mbi.getOperations();
+
+ assert mbois.length == 1: mbois.length;
+
+ MBeanOperationInfo mboi = mbois[0];
+ assert mboi.getName().equals("dropOldest");
+ assert mboi.getReturnType().equals("int");
+ MBeanParameterInfo[] mbpis = mboi.getSignature();
+ assert mbpis.length == 1: mbpis.length;
+ assert mbpis[0].getType().equals("int");
+
+ assert mbs.getAttribute(objectName, "Used").equals(23);
+
+ assert mbs.getAttribute(objectName, "Size").equals(99);
+ mbs.setAttribute(objectName, new Attribute("Size", 55));
+ assert mbs.getAttribute(objectName, "Size").equals(55);
+
+ assert mbs.getAttribute(objectName, "Interesting").equals(false);
+
+ Object stats = mbs.getAttribute(objectName, "Stats");
+ assert (mx ? CompositeData.class : Stats.class).isInstance(stats) : stats.getClass();
+
+ int ret = (Integer) mbs.invoke(
+ objectName, "dropOldest", new Object[] {66}, new String[] {"int"});
+ assert ret == 55;
+ }
+}
diff --git a/test/javax/management/Introspector/AnnotatedNotificationInfoTest.java b/test/javax/management/Introspector/AnnotatedNotificationInfoTest.java
new file mode 100644
index 000000000..bc6a335df
--- /dev/null
+++ b/test/javax/management/Introspector/AnnotatedNotificationInfoTest.java
@@ -0,0 +1,271 @@
+/*
+ * Copyright 2007 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test %M% %I%
+ * @bug 6323980
+ * @summary Test &#64;NotificationInfo annotation
+ * @author Eamonn McManus
+ * @run main/othervm -ea AnnotatedNotificationInfoTest
+ */
+
+import java.io.Serializable;
+import java.lang.management.ManagementFactory;
+import java.lang.reflect.Field;
+import javax.annotation.Resource;
+import javax.management.AttributeChangeNotification;
+import javax.management.Description;
+import javax.management.Descriptor;
+import javax.management.ImmutableDescriptor;
+import javax.management.MBean;
+import javax.management.MBeanInfo;
+import javax.management.MBeanNotificationInfo;
+import javax.management.MBeanServer;
+import javax.management.MXBean;
+import javax.management.NotificationBroadcasterSupport;
+import javax.management.NotificationInfo;
+import javax.management.NotificationInfos;
+import javax.management.ObjectName;
+import javax.management.SendNotification;
+
+public class AnnotatedNotificationInfoTest {
+ // Data for the first test. This tests that MBeanNotificationInfo
+ // is correctly derived from @NotificationInfo.
+ // Every static field called mbean* is expected to be an MBean
+ // with a single MBeanNotificationInfo that has the same value
+ // in each case.
+
+ @NotificationInfo(
+ types = {"foo", "bar"},
+ notificationClass = AttributeChangeNotification.class,
+ description = @Description(
+ value = "description",
+ bundleBaseName = "bundle",
+ key = "key"),
+ descriptorFields = {"foo=bar"})
+ public static interface Intf1MBean {}
+
+ public static class Intf1
+ extends NotificationBroadcasterSupport implements Intf1MBean {}
+
+ private static Object mbeanIntf1 = new Intf1();
+
+ @NotificationInfos(
+ @NotificationInfo(
+ types = {"foo", "bar"},
+ notificationClass = AttributeChangeNotification.class,
+ description = @Description(
+ value = "description",
+ bundleBaseName = "bundle",
+ key = "key"),
+ descriptorFields = {"foo=bar"}))
+ public static interface Intf2MBean {}
+
+ public static class Intf2
+ extends NotificationBroadcasterSupport implements Intf2MBean {}
+
+ private static Object mbeanIntf2 = new Intf2();
+
+ @NotificationInfos({})
+ @NotificationInfo(
+ types = {"foo", "bar"},
+ notificationClass = AttributeChangeNotification.class,
+ description = @Description(
+ value = "description",
+ bundleBaseName = "bundle",
+ key = "key"),
+ descriptorFields = {"foo=bar"})
+ public static interface Intf3MBean {}
+
+ public static class Intf3
+ extends NotificationBroadcasterSupport implements Intf3MBean {}
+
+ private static Object mbeanIntf3 = new Intf3();
+
+ @NotificationInfo(
+ types = {"foo", "bar"},
+ notificationClass = AttributeChangeNotification.class,
+ description = @Description(
+ value = "description",
+ bundleBaseName = "bundle",
+ key = "key"),
+ descriptorFields = {"foo=bar"})
+ public static interface ParentIntf {}
+
+ public static interface Intf4MBean extends Serializable, ParentIntf, Cloneable {}
+
+ public static class Intf4
+ extends NotificationBroadcasterSupport implements Intf4MBean {}
+
+ private static Object mbeanIntf4 = new Intf4();
+
+ @NotificationInfo(
+ types = {"foo", "bar"},
+ notificationClass = AttributeChangeNotification.class,
+ description = @Description(
+ value = "description",
+ bundleBaseName = "bundle",
+ key = "key"),
+ descriptorFields = {"foo=bar"})
+ public static interface Intf5MXBean {}
+
+ public static class Intf5Impl
+ extends NotificationBroadcasterSupport implements Intf5MXBean {}
+
+ private static Object mbeanIntf5 = new Intf5Impl();
+
+ public static interface Impl1MBean {}
+
+ @NotificationInfo(
+ types = {"foo", "bar"},
+ notificationClass = AttributeChangeNotification.class,
+ description = @Description(
+ value = "description",
+ bundleBaseName = "bundle",
+ key = "key"),
+ descriptorFields = {"foo=bar"})
+ public static class Impl1
+ extends NotificationBroadcasterSupport implements Impl1MBean {}
+
+ private static Object mbeanImpl1 = new Impl1();
+
+ @NotificationInfo(
+ types = {"foo", "bar"},
+ notificationClass = AttributeChangeNotification.class,
+ description = @Description(
+ value = "description",
+ bundleBaseName = "bundle",
+ key = "key"),
+ descriptorFields = {"foo=bar"})
+ public static class ParentImpl extends NotificationBroadcasterSupport {}
+
+ public static interface Impl2MBean {}
+
+ public static class Impl2 extends ParentImpl implements Impl2MBean {}
+
+ private static Object mbeanImpl2 = new Impl2();
+
+ public static interface Impl3MXBean {}
+
+ @NotificationInfo(
+ types = {"foo", "bar"},
+ notificationClass = AttributeChangeNotification.class,
+ description = @Description(
+ value = "description",
+ bundleBaseName = "bundle",
+ key = "key"),
+ descriptorFields = {"foo=bar"})
+ public static class Impl3
+ extends NotificationBroadcasterSupport implements Impl3MXBean {}
+
+ private static Object mbeanImpl3 = new Impl3();
+
+ public static class Impl4 extends ParentImpl implements Impl3MXBean {}
+
+ private static Object mbeanImpl4 = new Impl4();
+
+ @MBean
+ @NotificationInfo(
+ types = {"foo", "bar"},
+ notificationClass = AttributeChangeNotification.class,
+ description = @Description(
+ value = "description",
+ bundleBaseName = "bundle",
+ key = "key"),
+ descriptorFields = {"foo=bar"})
+ public static class MBean1 extends NotificationBroadcasterSupport {}
+
+ private static Object mbeanMBean1 = new MBean1();
+
+ @MBean
+ public static class MBean2 extends ParentImpl {}
+
+ private static Object mbeanMBean2 = new MBean2();
+
+ // Following disabled until we support it
+// @MBean
+// @NotificationInfo(
+// types = {"foo", "bar"},
+// notificationClass = AttributeChangeNotification.class,
+// description = @Description(
+// value = "description",
+// bundleBaseName = "bundle",
+// key = "key"),
+// descriptorFields = {"foo=bar"})
+// public static class MBean3 {
+// @Resource
+// private volatile SendNotification send;
+// }
+//
+// private static Object mbeanMBean3 = new MBean3();
+
+ @MXBean
+ @NotificationInfo(
+ types = {"foo", "bar"},
+ notificationClass = AttributeChangeNotification.class,
+ description = @Description(
+ value = "description",
+ bundleBaseName = "bundle",
+ key = "key"),
+ descriptorFields = {"foo=bar"})
+ public static class MXBean1 extends NotificationBroadcasterSupport {}
+
+ private static Object mbeanMXBean1 = new MXBean1();
+
+ @MXBean
+ public static class MXBean2 extends ParentImpl {}
+
+ private static Object mbeanMXBean2 = new MXBean2();
+
+ public static void main(String[] args) throws Exception {
+ if (!AnnotatedNotificationInfoTest.class.desiredAssertionStatus())
+ throw new Exception("Test must be run with -ea");
+
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ ObjectName on = new ObjectName("a:b=c");
+
+ Descriptor expectedDescriptor = new ImmutableDescriptor(
+ "foo=bar", "descriptionResourceBundleBaseName=bundle",
+ "descriptionResourceKey=key");
+ MBeanNotificationInfo expected = new MBeanNotificationInfo(
+ new String[] {"foo", "bar"},
+ AttributeChangeNotification.class.getName(),
+ "description",
+ expectedDescriptor);
+
+ System.out.println("Testing MBeans...");
+ for (Field mbeanField :
+ AnnotatedNotificationInfoTest.class.getDeclaredFields()) {
+ if (!mbeanField.getName().startsWith("mbean"))
+ continue;
+ System.out.println("..." + mbeanField.getName());
+ Object mbean = mbeanField.get(null);
+ mbs.registerMBean(mbean, on);
+ MBeanInfo mbi = mbs.getMBeanInfo(on);
+ MBeanNotificationInfo[] mbnis = mbi.getNotifications();
+ assert mbnis.length == 1 : mbnis.length;
+ assert mbnis[0].equals(expected) : mbnis[0];
+ mbs.unregisterMBean(on);
+ }
+ }
+}
diff --git a/test/javax/management/Introspector/LegacyIntrospectorTest.java b/test/javax/management/Introspector/LegacyIntrospectorTest.java
deleted file mode 100644
index 19499dde0..000000000
--- a/test/javax/management/Introspector/LegacyIntrospectorTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2005 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 6316460
- * @summary Test that the legacy com.sun.management.jmx.Introspector
- * methods work.
- * @author Eamonn McManus
- * @run clean LegacyIntrospectorTest
- * @run build LegacyIntrospectorTest
- * @run main LegacyIntrospectorTest
- */
-
-import javax.management.*;
-import com.sun.management.jmx.*;
-
-public class LegacyIntrospectorTest {
- public static interface TestMBean {
- public int getWhatever();
- }
- public static class Test implements TestMBean {
- public int getWhatever() {return 0;}
- }
-
- @SuppressWarnings("deprecation")
- public static void main(String[] args) throws Exception {
- MBeanInfo mbi = Introspector.testCompliance(Test.class);
- MBeanAttributeInfo mbai = mbi.getAttributes()[0];
- if (!mbai.getName().equals("Whatever"))
- throw new Exception("Wrong attribute name: " + mbai.getName());
- Class c = Introspector.getMBeanInterface(Test.class);
- if (c != TestMBean.class)
- throw new Exception("Wrong interface: " + c);
-
- MBeanServer mbs1 = new MBeanServerImpl();
- if (!mbs1.getDefaultDomain().equals("DefaultDomain"))
- throw new Exception("Wrong default domain: " + mbs1.getDefaultDomain());
-
- MBeanServer mbs2 = new MBeanServerImpl("Foo");
- if (!mbs2.getDefaultDomain().equals("Foo"))
- throw new Exception("Wrong default domain: " + mbs2.getDefaultDomain());
-
- ObjectName delegateName =
- new ObjectName("JMImplementation:type=MBeanServerDelegate");
- MBeanInfo delegateInfo = mbs2.getMBeanInfo(delegateName);
- MBeanInfo refDelegateInfo =
- MBeanServerFactory.newMBeanServer().getMBeanInfo(delegateName);
- if (!delegateInfo.equals(refDelegateInfo))
- throw new Exception("Wrong delegate info from MBeanServerImpl: " +
- delegateInfo);
-
- System.out.println("TEST PASSED");
- }
-}
diff --git a/test/javax/management/Introspector/MBeanDescriptionTest.java b/test/javax/management/Introspector/MBeanDescriptionTest.java
new file mode 100644
index 000000000..5fc77f9c1
--- /dev/null
+++ b/test/javax/management/Introspector/MBeanDescriptionTest.java
@@ -0,0 +1,830 @@
+/*
+ * Copyright 2007 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test %M% %I%
+ * @bug 6323980
+ * @summary Test &#64;Description
+ * @author Eamonn McManus
+ */
+
+import java.lang.management.ManagementFactory;
+import javax.management.Description;
+import javax.management.IntrospectionException;
+import javax.management.MBean;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanConstructorInfo;
+import javax.management.MBeanFeatureInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanOperationInfo;
+import javax.management.MBeanParameterInfo;
+import javax.management.MBeanServer;
+import javax.management.MXBean;
+import javax.management.ManagedAttribute;
+import javax.management.ManagedOperation;
+import javax.management.NotCompliantMBeanException;
+import javax.management.ObjectName;
+import javax.management.StandardMBean;
+
+public class MBeanDescriptionTest {
+ private static String failure;
+ private static final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ private static final ObjectName name;
+ static {
+ try {
+ name = new ObjectName("a:b=c");
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static interface Interface {
+ @Description("A description")
+ public String getA();
+
+ @Description("B description")
+ public int getB();
+ public void setB(int x);
+
+ public boolean isC();
+ @Description("C description")
+ public void setC(boolean x);
+
+ @Description("D description")
+ public void setD(float x);
+
+ @Description("H description")
+ public int getH();
+ @Description("H description")
+ public void setH(int x);
+
+ public String getE();
+
+ public int getF();
+ public void setF(int x);
+
+ public void setG(boolean x);
+
+ @Description("opA description")
+ public int opA(
+ @Description("p1 description")
+ int p1,
+ @Description("p2 description")
+ int p2);
+
+ public void opB(float x);
+ }
+
+ @Description("MBean description")
+ public static interface TestMBean extends Interface {}
+
+ public static class Test implements TestMBean {
+ @Description("0-arg constructor description")
+ public Test() {}
+
+ public Test(String why) {}
+
+ @Description("2-arg constructor description")
+ public Test(
+ @Description("p1 description")
+ int x,
+ @Description("p2 description")
+ String y) {
+ }
+
+ public String getA() {
+ return null;
+ }
+
+ public int getB() {
+ return 0;
+ }
+
+ public void setB(int x) {
+ }
+
+ public boolean isC() {
+ return false;
+ }
+
+ public void setC(boolean x) {
+ }
+
+ public void setD(float x) {
+ }
+
+ public String getE() {
+ return null;
+ }
+
+ public int getF() {
+ return 0;
+ }
+
+ public void setF(int x) {
+ }
+
+ public void setG(boolean x) {
+ }
+
+ public int getH() {
+ return 0;
+ }
+
+ public void setH(int x) {
+ }
+
+ public int opA(int p1, int p2) {
+ return 0;
+ }
+
+ public void opB(float x) {
+ }
+ }
+
+ public static class TestSub extends Test {
+ @Description("0-arg constructor description")
+ public TestSub() {}
+
+ public TestSub(String why) {}
+
+ @Description("2-arg constructor description")
+ public TestSub(
+ @Description("p1 description")
+ int x,
+ @Description("p2 description")
+ String y) {
+ }
+ }
+
+ public static class StandardSub extends StandardMBean implements TestMBean {
+ @Description("0-arg constructor description")
+ public StandardSub() {
+ super(TestMBean.class, false);
+ }
+
+ public StandardSub(String why) {
+ super(TestMBean.class, false);
+ }
+
+ @Description("2-arg constructor description")
+ public StandardSub(
+ @Description("p1 description")
+ int x,
+ @Description("p2 description")
+ String y) {
+ super(TestMBean.class, false);
+ }
+
+ public String getA() {
+ return null;
+ }
+
+ public int getB() {
+ return 0;
+ }
+
+ public void setB(int x) {
+ }
+
+ public boolean isC() {
+ return false;
+ }
+
+ public void setC(boolean x) {
+ }
+
+ public void setD(float x) {
+ }
+
+ public String getE() {
+ return null;
+ }
+
+ public int getF() {
+ return 0;
+ }
+
+ public void setF(int x) {
+ }
+
+ public void setG(boolean x) {
+ }
+
+ public int opA(int p1, int p2) {
+ return 0;
+ }
+
+ public void opB(float x) {
+ }
+
+ public int getH() {
+ return 0;
+ }
+
+ public void setH(int x) {
+ }
+ }
+
+ @Description("MBean description")
+ public static interface TestMXBean extends Interface {}
+
+ public static class TestMXBeanImpl implements TestMXBean {
+ @Description("0-arg constructor description")
+ public TestMXBeanImpl() {}
+
+ public TestMXBeanImpl(String why) {}
+
+ @Description("2-arg constructor description")
+ public TestMXBeanImpl(
+ @Description("p1 description")
+ int x,
+ @Description("p2 description")
+ String y) {
+ }
+
+ public String getA() {
+ return null;
+ }
+
+ public int getB() {
+ return 0;
+ }
+
+ public void setB(int x) {
+ }
+
+ public boolean isC() {
+ return false;
+ }
+
+ public void setC(boolean x) {
+ }
+
+ public void setD(float x) {
+ }
+
+ public String getE() {
+ return null;
+ }
+
+ public int getF() {
+ return 0;
+ }
+
+ public void setF(int x) {
+ }
+
+ public void setG(boolean x) {
+ }
+
+ public int opA(int p1, int p2) {
+ return 0;
+ }
+
+ public void opB(float x) {
+ }
+
+ public int getH() {
+ return 0;
+ }
+
+ public void setH(int x) {
+ }
+ }
+
+ public static class StandardMXSub extends StandardMBean implements TestMXBean {
+ @Description("0-arg constructor description")
+ public StandardMXSub() {
+ super(TestMXBean.class, true);
+ }
+
+ public StandardMXSub(String why) {
+ super(TestMXBean.class, true);
+ }
+
+ @Description("2-arg constructor description")
+ public StandardMXSub(
+ @Description("p1 description")
+ int x,
+ @Description("p2 description")
+ String y) {
+ super(TestMXBean.class, true);
+ }
+
+ public String getA() {
+ return null;
+ }
+
+ public int getB() {
+ return 0;
+ }
+
+ public void setB(int x) {
+ }
+
+ public boolean isC() {
+ return false;
+ }
+
+ public void setC(boolean x) {
+ }
+
+ public void setD(float x) {
+ }
+
+ public String getE() {
+ return null;
+ }
+
+ public int getF() {
+ return 0;
+ }
+
+ public void setF(int x) {
+ }
+
+ public void setG(boolean x) {
+ }
+
+ public int opA(int p1, int p2) {
+ return 0;
+ }
+
+ public void opB(float x) {
+ }
+
+ public int getH() {
+ return 0;
+ }
+
+ public void setH(int x) {
+ }
+ }
+
+ @MBean
+ @Description("MBean description")
+ public static class AnnotatedMBean {
+ @Description("0-arg constructor description")
+ public AnnotatedMBean() {}
+
+ public AnnotatedMBean(String why) {}
+
+ @Description("2-arg constructor description")
+ public AnnotatedMBean(
+ @Description("p1 description")
+ int x,
+ @Description("p2 description")
+ String y) {}
+
+ @ManagedAttribute
+ @Description("A description")
+ public String getA() {
+ return null;
+ }
+
+ @ManagedAttribute
+ @Description("B description")
+ public int getB() {
+ return 0;
+ }
+
+ @ManagedAttribute
+ public void setB(int x) {
+ }
+
+ @ManagedAttribute
+ public boolean isC() {
+ return false;
+ }
+
+ @ManagedAttribute
+ @Description("C description")
+ public void setC(boolean x) {
+ }
+
+ @ManagedAttribute
+ @Description("D description")
+ public void setD(float x) {
+ }
+
+ @ManagedAttribute
+ public String getE() {
+ return null;
+ }
+
+ @ManagedAttribute
+ public int getF() {
+ return 0;
+ }
+
+ @ManagedAttribute
+ public void setF(int x) {
+ }
+
+ @ManagedAttribute
+ public void setG(boolean x) {
+ }
+
+ @ManagedAttribute
+ @Description("H description")
+ public int getH() {
+ return 0;
+ }
+
+ @ManagedAttribute
+ @Description("H description")
+ public void setH(int x) {
+ }
+
+ @ManagedOperation
+ @Description("opA description")
+ public int opA(
+ @Description("p1 description") int p1,
+ @Description("p2 description") int p2) {
+ return 0;
+ }
+
+ @ManagedOperation
+ public void opB(float x) {
+ }
+ }
+
+ @MXBean
+ @Description("MBean description")
+ public static class AnnotatedMXBean {
+ @Description("0-arg constructor description")
+ public AnnotatedMXBean() {}
+
+ public AnnotatedMXBean(String why) {}
+
+ @Description("2-arg constructor description")
+ public AnnotatedMXBean(
+ @Description("p1 description")
+ int x,
+ @Description("p2 description")
+ String y) {}
+
+ @ManagedAttribute
+ @Description("A description")
+ public String getA() {
+ return null;
+ }
+
+ @ManagedAttribute
+ @Description("B description")
+ public int getB() {
+ return 0;
+ }
+
+ @ManagedAttribute
+ public void setB(int x) {
+ }
+
+ @ManagedAttribute
+ public boolean isC() {
+ return false;
+ }
+
+ @ManagedAttribute
+ @Description("C description")
+ public void setC(boolean x) {
+ }
+
+ @ManagedAttribute
+ @Description("D description")
+ public void setD(float x) {
+ }
+
+ @ManagedAttribute
+ public String getE() {
+ return null;
+ }
+
+ @ManagedAttribute
+ public int getF() {
+ return 0;
+ }
+
+ @ManagedAttribute
+ public void setF(int x) {
+ }
+
+ @ManagedAttribute
+ public void setG(boolean x) {
+ }
+
+ @ManagedAttribute
+ @Description("H description")
+ public int getH() {
+ return 0;
+ }
+
+ @ManagedAttribute
+ @Description("H description")
+ public void setH(int x) {
+ }
+
+ @ManagedOperation
+ @Description("opA description")
+ public int opA(
+ @Description("p1 description") int p1,
+ @Description("p2 description") int p2) {
+ return 0;
+ }
+
+ @ManagedOperation
+ public void opB(float x) {
+ }
+ }
+
+ // Negative tests follow.
+
+ // Inconsistent descriptions
+ public static interface BadInterface {
+ @Description("foo")
+ public String getFoo();
+ @Description("bar")
+ public void setFoo(String x);
+ }
+
+ public static interface BadMBean extends BadInterface {}
+
+ public static class Bad implements BadMBean {
+ public String getFoo() {
+ return null;
+ }
+
+ public void setFoo(String x) {
+ }
+ }
+
+ public static interface BadMXBean extends BadInterface {}
+
+ public static class BadMXBeanImpl implements BadMXBean {
+ public String getFoo() {
+ return null;
+ }
+
+ public void setFoo(String x) {
+ }
+ }
+
+ private static interface Defaults {
+ public String defaultAttributeDescription(String name);
+ public String defaultOperationDescription(String name);
+ public String defaultParameterDescription(int index);
+ }
+
+ private static class StandardDefaults implements Defaults {
+ public String defaultAttributeDescription(String name) {
+ return "Attribute exposed for management";
+ }
+
+ public String defaultOperationDescription(String name) {
+ return "Operation exposed for management";
+ }
+
+ public String defaultParameterDescription(int index) {
+ return "";
+ }
+ }
+ private static final Defaults standardDefaults = new StandardDefaults();
+
+ private static class MXBeanDefaults implements Defaults {
+ public String defaultAttributeDescription(String name) {
+ return name;
+ }
+
+ public String defaultOperationDescription(String name) {
+ return name;
+ }
+
+ public String defaultParameterDescription(int index) {
+ return "p" + index;
+ }
+ }
+ private static final Defaults mxbeanDefaults = new MXBeanDefaults();
+
+ private static class TestCase {
+ final String name;
+ final Object mbean;
+ final Defaults defaults;
+ TestCase(String name, Object mbean, Defaults defaults) {
+ this.name = name;
+ this.mbean = mbean;
+ this.defaults = defaults;
+ }
+ }
+
+ private static class ExceptionTest {
+ final String name;
+ final Object mbean;
+ ExceptionTest(String name, Object mbean) {
+ this.name = name;
+ this.mbean = mbean;
+ }
+ }
+
+ private static final TestCase[] tests = {
+ new TestCase("Standard MBean", new Test(), standardDefaults),
+ new TestCase("Standard MBean subclass", new TestSub(), standardDefaults),
+ new TestCase("StandardMBean delegating",
+ new StandardMBean(new Test(), TestMBean.class, false),
+ standardDefaults),
+ new TestCase("StandardMBean delegating to subclass",
+ new StandardMBean(new TestSub(), TestMBean.class, false),
+ standardDefaults),
+ new TestCase("StandardMBean subclass", new StandardSub(), standardDefaults),
+
+ new TestCase("MXBean", new TestMXBeanImpl(), mxbeanDefaults),
+ new TestCase("StandardMBean MXBean delegating",
+ new StandardMBean(new TestMXBeanImpl(), TestMXBean.class, true),
+ mxbeanDefaults),
+ new TestCase("StandardMBean MXBean subclass",
+ new StandardMXSub(), mxbeanDefaults),
+
+ new TestCase("@MBean", new AnnotatedMBean(), standardDefaults),
+ new TestCase("@MXBean", new AnnotatedMXBean(), mxbeanDefaults),
+ new TestCase("StandardMBean @MBean delegating",
+ new StandardMBean(new AnnotatedMBean(), null, false),
+ standardDefaults),
+ new TestCase("StandardMBean @MXBean delegating",
+ new StandardMBean(new AnnotatedMXBean(), null, true),
+ mxbeanDefaults),
+ };
+
+ private static final ExceptionTest[] exceptionTests = {
+ new ExceptionTest("Standard MBean with inconsistent get/set", new Bad()),
+ new ExceptionTest("MXBean with inconsistent get/set", new BadMXBeanImpl()),
+ };
+
+ public static void main(String[] args) throws Exception {
+ System.out.println("=== Testing correct MBeans ===");
+ for (TestCase test : tests) {
+ System.out.println("Testing " + test.name + "...");
+ mbs.registerMBean(test.mbean, name);
+ boolean expectConstructors =
+ (test.mbean.getClass() != StandardMBean.class);
+ check(mbs.getMBeanInfo(name), test.defaults, expectConstructors);
+ mbs.unregisterMBean(name);
+ }
+ System.out.println();
+
+ System.out.println("=== Testing incorrect MBeans ===");
+ for (ExceptionTest test : exceptionTests) {
+ System.out.println("Testing " + test.name);
+ try {
+ mbs.registerMBean(test.mbean, name);
+ fail("Registration succeeded but should not have");
+ mbs.unregisterMBean(name);
+ } catch (NotCompliantMBeanException e) {
+ // OK
+ } catch (Exception e) {
+ fail("Registration failed with wrong exception: " +
+ "expected NotCompliantMBeanException, got " +
+ e.getClass().getName());
+ }
+ }
+ System.out.println();
+
+ if (failure == null)
+ System.out.println("TEST PASSED");
+ else
+ throw new Exception("TEST FAILED: " + failure);
+ }
+
+ private static void check(
+ MBeanInfo mbi, Defaults defaults, boolean expectConstructors)
+ throws Exception {
+ assertEquals("MBean description", mbi.getDescription());
+
+ // These attributes have descriptions
+ for (String attr : new String[] {"A", "B", "C", "D", "H"}) {
+ MBeanAttributeInfo mbai = getAttributeInfo(mbi, attr);
+ assertEquals(attr + " description", mbai.getDescription());
+ }
+
+ // These attributes don't have descriptions
+ for (String attr : new String[] {"E", "F", "G"}) {
+ // If we ever change the default description, we'll need to change
+ // this test accordingly.
+ MBeanAttributeInfo mbai = getAttributeInfo(mbi, attr);
+ assertEquals(
+ defaults.defaultAttributeDescription(attr), mbai.getDescription());
+ }
+
+ // This operation has a description, as do its parameters
+ MBeanOperationInfo opA = getOperationInfo(mbi, "opA");
+ assertEquals("opA description", opA.getDescription());
+ checkSignature(opA.getSignature());
+
+ // This operation has the default description, as does its parameter
+ MBeanOperationInfo opB = getOperationInfo(mbi, "opB");
+ assertEquals(defaults.defaultOperationDescription("opB"), opB.getDescription());
+ MBeanParameterInfo opB0 = opB.getSignature()[0];
+ assertEquals(defaults.defaultParameterDescription(0), opB0.getDescription());
+
+ if (expectConstructors) {
+ // The 0-arg and 2-arg constructors have descriptions
+ MBeanConstructorInfo con0 = getConstructorInfo(mbi, 0);
+ assertEquals("0-arg constructor description", con0.getDescription());
+ MBeanConstructorInfo con2 = getConstructorInfo(mbi, 2);
+ assertEquals("2-arg constructor description", con2.getDescription());
+ checkSignature(con2.getSignature());
+
+ // The 1-arg constructor does not have a description.
+ // The default description for constructors and their
+ // parameters is the same for all types of MBean.
+ MBeanConstructorInfo con1 = getConstructorInfo(mbi, 1);
+ assertEquals("Public constructor of the MBean", con1.getDescription());
+ assertEquals("", con1.getSignature()[0].getDescription());
+ }
+ }
+
+ private static void checkSignature(MBeanParameterInfo[] params) {
+ for (int i = 0; i < params.length; i++) {
+ MBeanParameterInfo mbpi = params[i];
+ assertEquals("p" + (i+1) + " description", mbpi.getDescription());
+ }
+ }
+
+ private static MBeanAttributeInfo getAttributeInfo(MBeanInfo mbi, String attr)
+ throws Exception {
+ return getFeatureInfo(mbi.getAttributes(), attr);
+ }
+
+ private static MBeanOperationInfo getOperationInfo(MBeanInfo mbi, String op)
+ throws Exception {
+ return getFeatureInfo(mbi.getOperations(), op);
+ }
+
+ private static MBeanConstructorInfo getConstructorInfo(MBeanInfo mbi, int nparams)
+ throws Exception {
+ for (MBeanConstructorInfo mbci : mbi.getConstructors()) {
+ if (mbci.getSignature().length == nparams)
+ return mbci;
+ }
+ throw new Exception("Constructor not found: " + nparams);
+ }
+
+ private static <T extends MBeanFeatureInfo> T getFeatureInfo(
+ T[] features, String name) throws Exception {
+ for (T feature : features) {
+ if (feature.getName().equals(name))
+ return feature;
+ }
+ throw new Exception("Feature not found: " + name);
+ }
+
+ private static void assertEquals(Object expected, Object actual) {
+ if (!expected.equals(actual))
+ fail("Expected " + string(expected) + ", got " + string(actual));
+ }
+
+ private static String string(Object x) {
+ if (x instanceof String)
+ return quote((String) x);
+ else
+ return String.valueOf(x);
+ }
+
+ private static String quote(String s) {
+ return '"' + s.replace("\\", "\\\\").replace("\"", "\\\"") + '"';
+ }
+
+ private static void fail(String why) {
+ StackTraceElement[] stack = new Throwable().getStackTrace();
+ int n = 0;
+ for (StackTraceElement elmt : stack) {
+ String method = elmt.getMethodName();
+ if (method.equals("fail") || method.equals("assertEquals") ||
+ method.equals("checkSignature"))
+ continue;
+ n = elmt.getLineNumber();
+ break;
+ }
+ System.out.println("FAILED: " + why + " (line " + n + ")");
+ failure = why;
+ }
+}
diff --git a/test/javax/management/Introspector/ParameterNameTest.java b/test/javax/management/Introspector/ParameterNameTest.java
new file mode 100644
index 000000000..fada6cccb
--- /dev/null
+++ b/test/javax/management/Introspector/ParameterNameTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2007 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test %M% %I%
+ * @bug 6323980
+ * @summary Test that parameter names can be specified with &#64;Name.
+ * @author Eamonn McManus
+ */
+
+import javax.management.MBean;
+import javax.management.MBeanInfo;
+import javax.management.MBeanOperationInfo;
+import javax.management.MBeanParameterInfo;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.MXBean;
+import javax.management.ObjectName;
+
+import annot.Name;
+import javax.management.ManagedOperation;
+
+public class ParameterNameTest {
+ public static interface NoddyMBean {
+ public int add(int x, @Name("y") int y);
+ }
+
+ public static class Noddy implements NoddyMBean {
+ public int add(int x, int y) {
+ return x + y;
+ }
+ }
+
+ public static interface NoddyMXBean {
+ public int add(int x, @Name("y") int y);
+ }
+
+ public static class NoddyImpl implements NoddyMXBean {
+ public int add(int x, int y) {
+ return x + y;
+ }
+ }
+
+ @MBean
+ public static class NoddyAnnot {
+ @ManagedOperation
+ public int add(int x, @Name("y") int y) {
+ return x + y;
+ }
+ }
+
+ @MXBean
+ public static class NoddyAnnotMX {
+ @ManagedOperation
+ public int add(int x, @Name("y") int y) {
+ return x + y;
+ }
+ }
+
+ private static final Object[] mbeans = {
+ new Noddy(), new NoddyImpl(), new NoddyAnnot(), new NoddyAnnotMX(),
+ };
+
+ public static void main(String[] args) throws Exception {
+ MBeanServer mbs = MBeanServerFactory.newMBeanServer();
+ ObjectName name = new ObjectName("a:b=c");
+ for (Object mbean : mbeans) {
+ System.out.println("Testing " + mbean.getClass().getName());
+ mbs.registerMBean(mbean, name);
+ MBeanInfo mbi = mbs.getMBeanInfo(name);
+ MBeanOperationInfo[] mbois = mbi.getOperations();
+ assertEquals(1, mbois.length);
+ MBeanParameterInfo[] mbpis = mbois[0].getSignature();
+ assertEquals(2, mbpis.length);
+ boolean mx = Boolean.parseBoolean(
+ (String) mbi.getDescriptor().getFieldValue("mxbean"));
+ assertEquals(mx ? "p0" : "p1", mbpis[0].getName());
+ assertEquals("y", mbpis[1].getName());
+ mbs.unregisterMBean(name);
+ }
+ System.out.println("TEST PASSED");
+ }
+
+ private static void assertEquals(Object expect, Object actual)
+ throws Exception {
+ boolean eq;
+ if (expect == null)
+ eq = (actual == null);
+ else
+ eq = expect.equals(actual);
+ if (!eq) {
+ throw new Exception(
+ "TEST FAILED: expected " + expect + ", found " + actual);
+ }
+ }
+}
diff --git a/test/javax/management/Introspector/ResourceInjectionTest.java b/test/javax/management/Introspector/ResourceInjectionTest.java
new file mode 100644
index 000000000..ad45ccc02
--- /dev/null
+++ b/test/javax/management/Introspector/ResourceInjectionTest.java
@@ -0,0 +1,656 @@
+/*
+ * Copyright 2007 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test %M% %I%
+ * @bug 6323980
+ * @summary Test resource injection via &#64;Resource
+ * @author Eamonn McManus
+ * @run main/othervm -ea ResourceInjectionTest
+ */
+
+import java.io.File;
+import java.io.PrintWriter;
+import java.io.Serializable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+import javax.annotation.Resource;
+import javax.management.Attribute;
+import javax.management.AttributeList;
+import javax.management.AttributeNotFoundException;
+import javax.management.DynamicMBean;
+import javax.management.InstanceNotFoundException;
+import javax.management.MBean;
+import javax.management.MBeanException;
+import javax.management.MBeanInfo;
+import javax.management.MBeanRegistrationException;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.MXBean;
+import javax.management.MalformedObjectNameException;
+import javax.management.ManagedAttribute;
+import javax.management.ManagedOperation;
+import javax.management.NotCompliantMBeanException;
+import javax.management.Notification;
+import javax.management.NotificationEmitter;
+import javax.management.NotificationListener;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
+import javax.management.SendNotification;
+import javax.management.StandardEmitterMBean;
+import javax.management.StandardMBean;
+import javax.management.openmbean.MXBeanMappingFactory;
+
+public class ResourceInjectionTest {
+ private static MBeanServer mbs;
+ private static final ObjectName objectName;
+ static {
+ try {
+ objectName = new ObjectName("test:type=Test");
+ } catch (MalformedObjectNameException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /* This is somewhat nasty. In the current state of affairs, a
+ * StandardEmitterMBean can only get the
+ * MBeanServer to rewrite the source of a Notification from
+ * the originating object's reference to its ObjectName IF
+ * StandardEmitterMBean.getResource() returns a reference to the
+ * wrapped object. By default it doesn't, and you need to specify
+ * the option below to make it do so. We may hope that this is
+ * obscure enough for users to run into it rarely if ever.
+ */
+ private static final StandardMBean.Options withWrappedVisible;
+ private static final StandardMBean.Options withWrappedVisibleMX;
+ static {
+ withWrappedVisible = new StandardMBean.Options();
+ withWrappedVisible.setWrappedObjectVisible(true);
+ withWrappedVisibleMX = withWrappedVisible.clone();
+ withWrappedVisibleMX.setMXBeanMappingFactory(MXBeanMappingFactory.DEFAULT);
+ }
+
+ @Retention(RetentionPolicy.RUNTIME)
+ private static @interface ExpectException {
+ Class<? extends Exception> value();
+ }
+
+ public static void main(String[] args) throws Exception {
+ if (!ResourceInjectionTest.class.desiredAssertionStatus())
+ throw new Exception("Test must be run with -ea");
+
+ File policyFile = File.createTempFile("jmxperms", ".policy");
+ policyFile.deleteOnExit();
+ PrintWriter pw = new PrintWriter(policyFile);
+ pw.println("grant {");
+ pw.println(" permission javax.management.MBeanPermission \"*\", \"*\";");
+ pw.println(" permission javax.management.MBeanServerPermission \"*\";");
+ pw.println(" permission javax.management.MBeanTrustPermission \"*\";");
+ pw.println("};");
+ pw.close();
+
+ System.setProperty("java.security.policy", policyFile.getAbsolutePath());
+ System.setSecurityManager(new SecurityManager());
+
+ String failure = null;
+
+ for (Method m : ResourceInjectionTest.class.getDeclaredMethods()) {
+ if (Modifier.isStatic(m.getModifiers()) &&
+ m.getName().startsWith("test") &&
+ m.getParameterTypes().length == 0) {
+ ExpectException expexc = m.getAnnotation(ExpectException.class);
+ mbs = MBeanServerFactory.newMBeanServer();
+ try {
+ m.invoke(null);
+ if (expexc != null) {
+ failure =
+ m.getName() + " did not got expected exception " +
+ expexc.value().getName();
+ System.out.println(failure);
+ } else
+ System.out.println(m.getName() + " OK");
+ } catch (InvocationTargetException ite) {
+ Throwable t = ite.getCause();
+ String prob = null;
+ if (expexc != null) {
+ if (expexc.value().isInstance(t)) {
+ System.out.println(m.getName() + " OK (got expected " +
+ expexc.value().getName() + ")");
+ } else
+ prob = "got wrong exception";
+ } else
+ prob = "got exception";
+ if (prob != null) {
+ failure = m.getName() + ": " + prob + " " +
+ t.getClass().getName();
+ System.out.println(failure);
+ t.printStackTrace(System.out);
+ }
+ }
+ }
+ }
+ if (failure == null)
+ System.out.println("TEST PASSED");
+ else
+ throw new Exception("TEST FAILED: " + failure);
+ }
+
+ private static interface Send {
+ public void send();
+ }
+
+ // Test @Resource in MBean defined by annotations
+
+ @MBean
+ public static class Annotated {
+ @Resource
+ private volatile MBeanServer mbeanServer;
+ @Resource
+ private volatile ObjectName myName;
+
+ @ManagedAttribute
+ public ObjectName getMyName() {
+ return myName;
+ }
+
+ @ManagedOperation
+ public void unregisterSelf()
+ throws InstanceNotFoundException, MBeanRegistrationException {
+ mbeanServer.unregisterMBean(myName);
+ }
+ }
+
+ private static void testAnnotated() throws Exception {
+ testMBean(new Annotated());
+ }
+
+ private static void testAnnotatedWrapped() throws Exception {
+ testMBean(new StandardMBean(new Annotated(), null));
+ }
+
+ @MBean
+ public static class AnnotatedSend extends Annotated implements Send {
+ @Resource
+ private volatile SendNotification sender;
+
+ @ManagedOperation
+ public void send() {
+ sender.sendNotification(new Notification("type", this, 0L));
+ }
+ }
+
+ private static void testAnnotatedSend() throws Exception {
+ testMBean(new AnnotatedSend());
+ }
+
+ private static void testAnnotatedSendWrapped() throws Exception {
+ testMBean(new StandardEmitterMBean(
+ new AnnotatedSend(), null, withWrappedVisible, null));
+ }
+
+ // Test @Resource in MXBean defined by annotations
+
+ @MXBean
+ public static class AnnotatedMX {
+ @Resource
+ private volatile MBeanServer mbeanServer;
+ @Resource
+ private volatile ObjectName myName;
+
+ @ManagedAttribute
+ public ObjectName getMyName() {
+ return myName;
+ }
+
+ @ManagedOperation
+ public void unregisterSelf()
+ throws InstanceNotFoundException, MBeanRegistrationException {
+ mbeanServer.unregisterMBean(myName);
+ }
+ }
+
+ private static void testAnnotatedMX() throws Exception {
+ testMBean(new AnnotatedMX());
+ }
+
+ private static void testAnnotatedMXWrapped() throws Exception {
+ testMBean(new StandardMBean(new AnnotatedMX(), null, true));
+ }
+
+ public static class AnnotatedMXSend extends AnnotatedMX implements Send {
+ @Resource
+ private volatile SendNotification sender;
+
+ @ManagedOperation
+ public void send() {
+ sender.sendNotification(new Notification("type", this, 0L));
+ }
+ }
+
+ private static void testAnnotatedMXSend() throws Exception {
+ testMBean(new AnnotatedMXSend());
+ }
+
+ private static void testAnnotatedMXSendWrapped() throws Exception {
+ testMBean(new StandardEmitterMBean(
+ new AnnotatedMXSend(), null, withWrappedVisibleMX, null));
+ }
+
+ // Test @Resource in Standard MBean
+
+ public static interface SimpleStandardMBean {
+ public ObjectName getMyName();
+ public void unregisterSelf() throws Exception;
+ }
+
+ public static class SimpleStandard implements SimpleStandardMBean {
+ @Resource(type = MBeanServer.class)
+ private volatile Object mbeanServer;
+ @Resource(type = ObjectName.class)
+ private volatile Object myName;
+
+ public ObjectName getMyName() {
+ return (ObjectName) myName;
+ }
+
+ public void unregisterSelf() throws Exception {
+ ((MBeanServer) mbeanServer).unregisterMBean(getMyName());
+ }
+ }
+
+ private static void testStandard() throws Exception {
+ testMBean(new SimpleStandard());
+ }
+
+ private static void testStandardWrapped() throws Exception {
+ testMBean(new StandardMBean(new SimpleStandard(), SimpleStandardMBean.class));
+ }
+
+ public static interface SimpleStandardSendMBean extends SimpleStandardMBean {
+ public void send();
+ }
+
+ public static class SimpleStandardSend
+ extends SimpleStandard implements SimpleStandardSendMBean {
+ @Resource(type = SendNotification.class)
+ private volatile Object sender;
+
+ public void send() {
+ ((SendNotification) sender).sendNotification(
+ new Notification("type", this, 0L));
+ }
+ }
+
+ private static void testStandardSend() throws Exception {
+ testMBean(new SimpleStandardSend());
+ }
+
+ private static void testStandardSendWrapped() throws Exception {
+ testMBean(new StandardEmitterMBean(
+ new SimpleStandardSend(), SimpleStandardSendMBean.class,
+ withWrappedVisible, null));
+ }
+
+ // Test @Resource in MXBean
+
+ public static interface SimpleMXBean {
+ public ObjectName getMyName();
+ public void unregisterSelf() throws Exception;
+ }
+
+ public static class SimpleMX implements SimpleMXBean {
+ @Resource(type = MBeanServer.class)
+ private volatile Object mbeanServer;
+ @Resource(type = ObjectName.class)
+ private volatile Object myName;
+
+ public ObjectName getMyName() {
+ return (ObjectName) myName;
+ }
+
+ public void unregisterSelf() throws Exception {
+ ((MBeanServer) mbeanServer).unregisterMBean(getMyName());
+ }
+ }
+
+ private static void testMX() throws Exception {
+ testMBean(new SimpleMX());
+ }
+
+ private static void testMXWrapped() throws Exception {
+ testMBean(new StandardMBean(new SimpleMX(), SimpleMXBean.class, true));
+ }
+
+ public static interface SimpleMXBeanSend extends SimpleMXBean {
+ public void send();
+ }
+
+ public MBeanServer getMbs() {
+ return mbs;
+ }
+
+ public static class SimpleMXSend extends SimpleMX implements SimpleMXBeanSend {
+ @Resource(type = SendNotification.class)
+ private volatile Object sender;
+
+ public void send() {
+ ((SendNotification) sender).sendNotification(
+ new Notification("type", this, 0L));
+ }
+ }
+
+ private static void testMXSend() throws Exception {
+ testMBean(new SimpleMXSend());
+ }
+
+ private static void testMXSendWrapped() throws Exception {
+ testMBean(new StandardEmitterMBean(
+ new SimpleMXSend(), SimpleMXBeanSend.class,
+ withWrappedVisibleMX, null));
+ }
+
+ // Test @Resource in Dynamic MBean
+
+ private static class SimpleDynamic implements DynamicMBean {
+ private MBeanServer mbeanServer;
+ private ObjectName myName;
+
+ @Resource
+ private synchronized void setMBeanServer(MBeanServer mbs) {
+ mbeanServer = mbs;
+ }
+
+ @Resource(type = ObjectName.class)
+ private synchronized void setObjectName(Serializable name) {
+ myName = (ObjectName) name;
+ }
+
+ public synchronized Object getAttribute(String attribute)
+ throws AttributeNotFoundException {
+ if (attribute.equals("MyName"))
+ return myName;
+ throw new AttributeNotFoundException(attribute);
+ }
+
+ public void setAttribute(Attribute attribute)
+ throws AttributeNotFoundException {
+ throw new AttributeNotFoundException(attribute.getName());
+ }
+
+ public synchronized AttributeList getAttributes(String[] attributes) {
+ AttributeList list = new AttributeList();
+ for (String name : attributes) {
+ if (name.equals("MyName"))
+ list.add(new Attribute("MyName", myName));
+ }
+ return list;
+ }
+
+ public AttributeList setAttributes(AttributeList attributes) {
+ return new AttributeList();
+ }
+
+ public synchronized Object invoke(
+ String actionName, Object[] params, String[] signature)
+ throws MBeanException, ReflectionException {
+ if (actionName.equals("unregisterSelf") &&
+ (params == null || params.length == 0) &&
+ (signature == null || signature.length == 0)) {
+ try {
+ mbeanServer.unregisterMBean(myName);
+ return null;
+ } catch (Exception x) {
+ throw new MBeanException(x);
+ }
+ } else {
+ Exception x = new NoSuchMethodException(
+ actionName + Arrays.toString(signature));
+ throw new MBeanException(x);
+ }
+ }
+
+ public MBeanInfo getMBeanInfo() {
+ DynamicMBean mbean = new StandardMBean(
+ new SimpleStandard(), SimpleStandardMBean.class, false);
+ return mbean.getMBeanInfo();
+ }
+ }
+
+ private static void testDynamic() throws Exception {
+ testMBean(new SimpleDynamic());
+ }
+
+ private static class SimpleDynamicSend extends SimpleDynamic {
+ private SendNotification sender;
+
+ @Resource
+ private synchronized void setSender(SendNotification sender) {
+ this.sender = sender;
+ }
+
+ @Override
+ public synchronized Object invoke(
+ String actionName, Object[] params, String[] signature)
+ throws MBeanException, ReflectionException {
+ if (actionName.equals("send")) {
+ sender.sendNotification(new Notification("type", this, 0L));
+ return null;
+ } else
+ return super.invoke(actionName, params, signature);
+ }
+ }
+
+ private static void testDynamicSend() throws Exception {
+ testMBean(new SimpleDynamicSend());
+ }
+
+ // Test that @Resource classes don't have to be public
+ // They can even be defined within methods!
+ // But you can't have any @ManagedAttributes or @ManagedOperations
+ // in such MBeans so their utility is limited.
+
+ private static void testNonPublic() throws Exception {
+ @MBean
+ class NonPublic {
+ @Resource
+ ObjectName myName;
+ }
+ assert !Modifier.isPublic(NonPublic.class.getModifiers());
+ NonPublic mbean = new NonPublic();
+ mbs.registerMBean(mbean, objectName);
+ assert objectName.equals(mbean.myName);
+ }
+
+ // Test inheritance and multiple injections of the same value
+
+ private static class ManyResources extends AnnotatedSend {
+ @Resource
+ private volatile ObjectName myName; // same name as in parent!
+ @Resource(type=ObjectName.class)
+ private volatile Object myOtherName;
+ private volatile ObjectName myThirdName;
+ private volatile ObjectName myFourthName;
+ private volatile int methodCalls;
+ @Resource
+ private volatile SendNotification send1;
+ @Resource(type = SendNotification.class)
+ private volatile Object send2;
+
+ @Resource
+ void setMyName(ObjectName name) {
+ myThirdName = name;
+ methodCalls++;
+ }
+
+ @Resource(type=ObjectName.class)
+ private void setMyNameAgain(ObjectName name) {
+ myFourthName = name;
+ methodCalls++;
+ }
+
+ void check() {
+ assert objectName.equals(myName) : myName;
+ for (ObjectName name : new ObjectName[] {
+ (ObjectName)myOtherName, myThirdName, myFourthName
+ }) {
+ assert myName == name : name;
+ }
+ assert methodCalls == 2 : methodCalls;
+ assert send1 != null && send2 == send1;
+ }
+ }
+
+ private static void testManyResources() throws Exception {
+ ManyResources mr = new ManyResources();
+ testMBean(mr);
+ mr.check();
+ }
+
+ // Test that method override doesn't lead to multiple calls of the same method
+
+ private static class ManyResourcesSub extends ManyResources {
+ private boolean called;
+
+ @Override
+ @Resource
+ void setMyName(ObjectName name) {
+ super.setMyName(name);
+ called = true;
+ }
+
+ void check2() {
+ assert called;
+ }
+ }
+
+ private static void testOverride() throws Exception {
+ ManyResourcesSub mrs = new ManyResourcesSub();
+ testMBean(mrs);
+ mrs.check();
+ mrs.check2();
+ }
+
+ // Test that @Resource is illegal on static fields
+
+ @MBean
+ public static class StaticResource {
+ @Resource
+ private static ObjectName name;
+ }
+
+ @ExpectException(NotCompliantMBeanException.class)
+ private static void testStaticResource() throws Exception {
+ testMBean(new StaticResource());
+ }
+
+ // Test that @Resource is illegal on static methods
+
+ @MBean
+ public static class StaticResourceMethod {
+ @Resource
+ private static void setObjectName(ObjectName name) {}
+ }
+
+ @ExpectException(NotCompliantMBeanException.class)
+ private static void testStaticResourceMethod() throws Exception {
+ testMBean(new StaticResourceMethod());
+ }
+
+ // Test that @Resource is illegal on methods that don't return void
+
+ @MBean
+ public static class NonVoidMethod {
+ @Resource
+ private String setObjectName(ObjectName name) {
+ return "oops";
+ }
+ }
+
+ @ExpectException(NotCompliantMBeanException.class)
+ private static void testNonVoidMethod() throws Exception {
+ testMBean(new NonVoidMethod());
+ }
+
+ // Test that @Resource is illegal on methods with no arguments
+
+ @MBean
+ public static class NoArgMethod {
+ @Resource(type=ObjectName.class)
+ private void setObjectName() {}
+ }
+
+ @ExpectException(NotCompliantMBeanException.class)
+ private static void testNoArgMethod() throws Exception {
+ testMBean(new NoArgMethod());
+ }
+
+ // Test that @Resource is illegal on methods with more than one argument
+
+ @MBean
+ public static class MultiArgMethod {
+ @Resource
+ private void setObjectName(ObjectName name, String what) {}
+ }
+
+ @ExpectException(NotCompliantMBeanException.class)
+ private static void testMultiArgMethod() throws Exception {
+ testMBean(new MultiArgMethod());
+ }
+
+ private static class CountListener implements NotificationListener {
+ volatile int count;
+ public void handleNotification(Notification notification, Object handback) {
+ count++;
+ }
+ }
+
+ private static void testMBean(Object mbean) throws Exception {
+ mbs.registerMBean(mbean, objectName);
+
+ final ObjectName name = (ObjectName) mbs.getAttribute(objectName, "MyName");
+ assert objectName.equals(name) : name;
+
+ if (mbean instanceof Send || mbean instanceof NotificationEmitter) {
+ assert mbs.isInstanceOf(name, NotificationEmitter.class.getName());
+ CountListener countL = new CountListener();
+ mbs.addNotificationListener(name, countL, null, null);
+ NotificationListener checkSource = new NotificationListener() {
+ public void handleNotification(Notification n, Object h) {
+ assert n.getSource().equals(name) : n.getSource();
+ }
+ };
+ mbs.addNotificationListener(name, checkSource, null, null);
+ mbs.invoke(objectName, "send", null, null);
+ assert countL.count == 1;
+ mbs.removeNotificationListener(name, checkSource);
+ mbs.removeNotificationListener(name, countL, null, null);
+ }
+
+ mbs.invoke(objectName, "unregisterSelf", null, null);
+ assert !mbs.isRegistered(objectName);
+ }
+}
diff --git a/test/javax/management/Introspector/annot/Name.java b/test/javax/management/Introspector/annot/Name.java
new file mode 100644
index 000000000..790e64155
--- /dev/null
+++ b/test/javax/management/Introspector/annot/Name.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2007 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.
+ *
+ * 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 annot;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Name {
+ String value();
+}
diff --git a/test/javax/management/mxbean/ComparatorExceptionTest.java b/test/javax/management/mxbean/ComparatorExceptionTest.java
new file mode 100644
index 000000000..cd88a161b
--- /dev/null
+++ b/test/javax/management/mxbean/ComparatorExceptionTest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2007 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 6601652
+ * @summary Test exception when SortedMap or SortedSet has non-null Comparator
+ * @author Eamonn McManus
+ */
+
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
+
+public class ComparatorExceptionTest {
+ public static interface TestMXBean {
+ public SortedSet<String> getSortedSet();
+ public SortedMap<String, String> getSortedMap();
+ }
+
+ public static class TestImpl implements TestMXBean {
+ public SortedSet<String> getSortedSet() {
+ return new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
+ }
+
+ public SortedMap<String, String> getSortedMap() {
+ return new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
+ }
+ }
+
+ private static String failure;
+
+ private static void fail(String why) {
+ failure = "FAILED: " + why;
+ System.out.println(failure);
+ }
+
+ public static void main(String[] args) throws Exception {
+ MBeanServer mbs = MBeanServerFactory.newMBeanServer();
+ ObjectName name = new ObjectName("a:b=c");
+ mbs.registerMBean(new TestImpl(), name);
+
+ for (String attr : new String[] {"SortedSet", "SortedMap"}) {
+ try {
+ Object value = mbs.getAttribute(name, attr);
+ fail("get " + attr + " did not throw exception");
+ } catch (Exception e) {
+ Throwable t = e;
+ while (!(t instanceof IllegalArgumentException)) {
+ if (t == null)
+ break;
+ t = t.getCause();
+ }
+ if (t != null)
+ System.out.println("Correct exception for " + attr);
+ else {
+ fail("get " + attr + " got wrong exception");
+ e.printStackTrace(System.out);
+ }
+ }
+ }
+
+ if (failure != null)
+ throw new Exception(failure);
+ }
+}
diff --git a/test/javax/management/mxbean/CustomTypeTest.java b/test/javax/management/mxbean/CustomTypeTest.java
new file mode 100644
index 000000000..ccf192ab5
--- /dev/null
+++ b/test/javax/management/mxbean/CustomTypeTest.java
@@ -0,0 +1,590 @@
+/*
+ * Copyright 2007-2008 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.
+ *
+ * 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.
+ */
+
+/* @test %M% %I%
+ * @bug 6562936
+ * @run compile customtypes/package-info.java
+ * @run main CustomTypeTest
+ */
+
+import java.io.InvalidObjectException;
+import java.lang.management.ManagementFactory;
+import java.lang.reflect.Array;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import javax.management.JMX;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.StandardMBean;
+import javax.management.Descriptor;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.NotCompliantMBeanException;
+import javax.management.openmbean.ArrayType;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.MXBeanMapping;
+import javax.management.openmbean.MXBeanMappingClass;
+import javax.management.openmbean.MXBeanMappingFactory;
+import javax.management.openmbean.MXBeanMappingFactoryClass;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularData;
+
+import static javax.management.JMX.MBeanOptions;
+
+import customtypes.*;
+
+public class CustomTypeTest {
+ @MXBeanMappingClass(LinkedListMapping.class)
+ public static class LinkedList {
+ private final String name;
+ private final LinkedList next;
+
+ public LinkedList(String name, LinkedList next) {
+ this.name = name;
+ this.next = next;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public LinkedList getNext() {
+ return next;
+ }
+
+ public String toString() {
+ if (next == null)
+ return "(" + name + ")";
+ else
+ return "(" + name + " " + next + ")";
+ }
+
+ public boolean equals(Object x) {
+ if (!(x instanceof LinkedList))
+ return false;
+ LinkedList other = (LinkedList) x;
+ return (this.name.equals(other.name) &&
+ (this.next == null ? other.next == null :
+ this.next.equals(other.next)));
+ }
+ }
+
+ public static class LinkedListMapping extends MXBeanMapping {
+ public LinkedListMapping(Type type) throws OpenDataException {
+ super(LinkedList.class, ArrayType.getArrayType(SimpleType.STRING));
+ if (type != LinkedList.class) {
+ throw new OpenDataException("Mapping only valid for " +
+ LinkedList.class);
+ }
+ }
+
+ public Object fromOpenValue(Object openValue) throws InvalidObjectException {
+ String[] array = (String[]) openValue;
+ LinkedList list = null;
+ for (int i = array.length - 1; i >= 0; i--)
+ list = new LinkedList(array[i], list);
+ return list;
+ }
+
+ public Object toOpenValue(Object javaValue) throws OpenDataException {
+ ArrayList<String> array = new ArrayList<String>();
+ for (LinkedList list = (LinkedList) javaValue; list != null;
+ list = list.getNext())
+ array.add(list.getName());
+ return array.toArray(new String[0]);
+ }
+ }
+
+ public static interface LinkedListMXBean {
+ public LinkedList getLinkedList();
+ }
+
+ public static class LinkedListImpl implements LinkedListMXBean {
+ public LinkedList getLinkedList() {
+ return new LinkedList("car", new LinkedList("cdr", null));
+ }
+ }
+
+ public static class ObjectMXBeanMapping extends MXBeanMapping {
+ private static final CompositeType wildcardType;
+
+ static {
+ try {
+ wildcardType =
+ new CompositeType(Object.class.getName(),
+ "Wildcard type for Object",
+ new String[0], // itemNames
+ new String[0], // itemDescriptions
+ new OpenType<?>[0]); // itemTypes
+ } catch (OpenDataException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public ObjectMXBeanMapping() {
+ super(Object.class, wildcardType);
+ }
+
+ public Object fromOpenValue(Object openValue) throws InvalidObjectException {
+ if (!(openValue instanceof CompositeData)) {
+ throw new InvalidObjectException("Not a CompositeData: " +
+ openValue.getClass());
+ }
+ CompositeData cd = (CompositeData) openValue;
+ if (!cd.containsKey("value")) {
+ throw new InvalidObjectException("CompositeData does not " +
+ "contain a \"value\" item: " + cd);
+ }
+ Object x = cd.get("value");
+ if (!(x instanceof CompositeData || x instanceof TabularData ||
+ x instanceof Object[]))
+ return x;
+
+ String typeName = (String) cd.get("type");
+ if (typeName == null) {
+ throw new InvalidObjectException("CompositeData does not " +
+ "contain a \"type\" item: " + cd);
+ }
+ Class<?> c;
+ try {
+ c = Class.forName(typeName);
+ } catch (ClassNotFoundException e) {
+ InvalidObjectException ioe =
+ new InvalidObjectException("Could not find type");
+ ioe.initCause(e);
+ throw ioe;
+ }
+ MXBeanMapping mapping;
+ try {
+ mapping = objectMappingFactory.mappingForType(c, objectMappingFactory);
+ } catch (OpenDataException e) {
+ InvalidObjectException ioe =
+ new InvalidObjectException("Could not map object's " +
+ "type " + c.getName());
+ ioe.initCause(e);
+ throw ioe;
+ }
+ return mapping.fromOpenValue(x);
+ }
+
+ public Object toOpenValue(Object javaValue) throws OpenDataException {
+ OpenType<?> openType;
+ Object openValue;
+ String typeName;
+ if (javaValue == null) {
+ openType = SimpleType.VOID;
+ openValue = null;
+ typeName = null;
+ } else {
+ Class<?> c = javaValue.getClass();
+ if (c.equals(Object.class))
+ throw new OpenDataException("Cannot map Object to an open value");
+ MXBeanMapping mapping =
+ objectMappingFactory.mappingForType(c, objectMappingFactory);
+ openType = mapping.getOpenType();
+ openValue = mapping.toOpenValue(javaValue);
+ typeName = c.getName();
+ }
+ CompositeType ct = new CompositeType(
+ (javaValue == null) ? "null" : openType.getClassName(),
+ "Open Mapping for Object",
+ new String[] {"type", "value"},
+ new String[] {"type", "value"},
+ new OpenType<?>[] {SimpleType.STRING, openType});
+ return new CompositeDataSupport(
+ ct,
+ new String[] {"type", "value"},
+ new Object[] {typeName, openValue});
+ }
+ }
+
+ public static class ObjectMappingFactory extends MXBeanMappingFactory {
+ private static MXBeanMapping objectMapping =
+ new ObjectMXBeanMapping();
+
+ @Override
+ public MXBeanMapping mappingForType(Type t, MXBeanMappingFactory f)
+ throws OpenDataException {
+ if (t.equals(Object.class))
+ return objectMapping;
+ else
+ return MXBeanMappingFactory.DEFAULT.mappingForType(t, f);
+ }
+ }
+
+ private static MXBeanMappingFactory objectMappingFactory =
+ new ObjectMappingFactory();
+
+ public static interface ObjectMXBean {
+ public Object getObject();
+ public Object[] getObjects();
+ public List<Object> getObjectList();
+ public Object[][] getMoreObjects();
+ }
+
+ public static class ObjectImpl implements ObjectMXBean {
+ public Object getObject() {
+ return 123;
+ }
+
+ private static Object[] objects = {
+ "foo", 3, 3.14f, 3.14, 3L, new Date(), ObjectName.WILDCARD,
+ new byte[3], new char[3], new int[3][3],
+ new LinkedListImpl().getLinkedList(),
+ };
+
+ public Object[] getObjects() {
+ return objects;
+ }
+
+ public List<Object> getObjectList() {
+ return Arrays.asList(getObjects());
+ }
+
+ public Object[][] getMoreObjects() {
+ return new Object[][] {{getObjects()}};
+ }
+ }
+
+ @MXBeanMappingFactoryClass(ObjectMappingFactory.class)
+ public static interface AnnotatedObjectMXBean extends ObjectMXBean {}
+
+ public static class AnnotatedObjectImpl extends ObjectImpl
+ implements AnnotatedObjectMXBean {}
+
+ public static class BrokenMappingFactory extends MXBeanMappingFactory {
+ public MXBeanMapping mappingForType(Type t, MXBeanMappingFactory f)
+ throws OpenDataException {
+ throw new OpenDataException(t.toString());
+ }
+ }
+
+ public static class ReallyBrokenMappingFactory extends BrokenMappingFactory {
+ public ReallyBrokenMappingFactory() {
+ throw new RuntimeException("Oops");
+ }
+ }
+
+ @MXBeanMappingFactoryClass(BrokenMappingFactory.class)
+ public static interface BrokenMXBean {
+ public int getX();
+ }
+
+ public static class BrokenImpl implements BrokenMXBean {
+ public int getX() {return 0;}
+ }
+
+ @MXBeanMappingFactoryClass(ReallyBrokenMappingFactory.class)
+ public static interface ReallyBrokenMXBean {
+ public int getX();
+ }
+
+ public static class ReallyBrokenImpl implements ReallyBrokenMXBean {
+ public int getX() {return 0;}
+ }
+
+ public static class BrokenMapping extends MXBeanMapping {
+ public BrokenMapping(Type t) {
+ super(t, SimpleType.STRING);
+ throw new RuntimeException("Oops");
+ }
+
+ public Object fromOpenValue(Object openValue) throws InvalidObjectException {
+ throw new AssertionError();
+ }
+
+ public Object toOpenValue(Object javaValue) throws OpenDataException {
+ throw new AssertionError();
+ }
+ }
+
+ @MXBeanMappingClass(BrokenMapping.class)
+ public static class BrokenType {}
+
+ public static interface BrokenTypeMXBean {
+ BrokenType getBroken();
+ }
+
+ public static class BrokenTypeImpl implements BrokenTypeMXBean {
+ public BrokenType getBroken() {
+ throw new AssertionError();
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+
+ System.out.println("Test @MXBeanMappingClass");
+ ObjectName linkedName = new ObjectName("d:type=LinkedList");
+ LinkedListMXBean linkedListMXBean = new LinkedListImpl();
+ LinkedList list1 = linkedListMXBean.getLinkedList();
+ mbs.registerMBean(linkedListMXBean, linkedName);
+ LinkedListMXBean linkedProxy =
+ JMX.newMXBeanProxy(mbs, linkedName, LinkedListMXBean.class);
+ MBeanServerInvocationHandler mbsih = (MBeanServerInvocationHandler)
+ Proxy.getInvocationHandler(linkedProxy);
+ if (!mbsih.isMXBean())
+ fail("not MXBean proxy");
+ LinkedList list2 = linkedProxy.getLinkedList();
+ if (list1 == list2)
+ fail("lists identical!");
+ // They should have gone through the mapping and back,
+ // and the mapping doesn't do anything that would allow it
+ // to restore the identical object.
+ if (!list1.equals(list2))
+ fail("lists different: " + list1 + " vs " + list2);
+ System.out.println("...success");
+
+ System.out.println("Test StandardMBean with MXBeanMappingFactory");
+ ObjectMXBean wildcardMBean = new ObjectImpl();
+ MBeanOptions options = new MBeanOptions();
+ options.setMXBeanMappingFactory(objectMappingFactory);
+ if (!options.isMXBean())
+ fail("Setting MXBeanMappingFactory should imply MXBean");
+ StandardMBean wildcardStandardMBean =
+ new StandardMBean(wildcardMBean, ObjectMXBean.class, options);
+ testWildcardMBean(mbs, wildcardMBean, wildcardStandardMBean,
+ options, ObjectMXBean.class);
+
+ System.out.println("Test @MXBeanMappingFactoryClass on interface");
+ ObjectMXBean annotatedWildcardMBean = new AnnotatedObjectImpl();
+ testWildcardMBean(mbs, annotatedWildcardMBean, annotatedWildcardMBean,
+ null, AnnotatedObjectMXBean.class);
+
+ System.out.println("Test @MXBeanMappingFactoryClass on package");
+ CustomMXBean custom = zeroProxy(CustomMXBean.class);
+ ObjectName customName = new ObjectName("d:type=Custom");
+ mbs.registerMBean(custom, customName);
+ Object x = mbs.getAttribute(customName, "X");
+ if (!(x instanceof String))
+ fail("Should be String: " + x + " (a " + x.getClass().getName() + ")");
+ CustomMXBean customProxy =
+ JMX.newMXBeanProxy(mbs, customName, CustomMXBean.class);
+ x = customProxy.getX();
+ if (!(x instanceof Integer) || (Integer) x != 0)
+ fail("Wrong return from proxy: " + x + " (a " + x.getClass().getName() + ")");
+
+ System.out.println("Test MXBeanMappingFactory exception");
+ try {
+ mbs.registerMBean(new BrokenImpl(), new ObjectName("d:type=Broken"));
+ fail("Register did not throw exception");
+ } catch (NotCompliantMBeanException e) {
+ System.out.println("...OK: threw: " + e);
+ }
+
+ System.out.println("Test MXBeanMappingFactory constructor exception");
+ try {
+ mbs.registerMBean(new ReallyBrokenImpl(), new ObjectName("d:type=Broken"));
+ fail("Register did not throw exception");
+ } catch (IllegalArgumentException e) {
+ System.out.println("...OK: threw: " + e);
+ }
+
+ System.out.println("Test MXBeanMappingFactory exception with StandardMBean");
+ MXBeanMappingFactory brokenF = new BrokenMappingFactory();
+ MBeanOptions brokenO = new MBeanOptions();
+ brokenO.setMXBeanMappingFactory(brokenF);
+ try {
+ new StandardMBean(wildcardMBean, ObjectMXBean.class, brokenO);
+ fail("StandardMBean with broken factory did not throw exception");
+ } catch (IllegalArgumentException e) {
+ if (!(e.getCause() instanceof NotCompliantMBeanException)) {
+ fail("StandardMBean with broken factory threw wrong exception: "
+ + e.getCause());
+ }
+ }
+
+ System.out.println("Test MXBeanMappingClass exception");
+ try {
+ mbs.registerMBean(new BrokenTypeImpl(), new ObjectName("d:type=Broken"));
+ fail("Broken MXBeanMappingClass did not throw exception");
+ } catch (NotCompliantMBeanException e) {
+ System.out.println("...OK: threw: " + e);
+ }
+
+ if (failure == null)
+ System.out.println("TEST PASSED");
+ else
+ throw new Exception("TEST FAILED: " + failure);
+ }
+
+ private static void testWildcardMBean(MBeanServer mbs, ObjectMXBean impl,
+ Object mbean,
+ MBeanOptions proxyOptions,
+ Class<? extends ObjectMXBean> intf)
+ throws Exception {
+ ObjectName wildcardName = new ObjectName("d:type=Object");
+ mbs.registerMBean(mbean, wildcardName);
+ try {
+ testWildcardMBean2(mbs, impl, wildcardName, proxyOptions, intf);
+ } finally {
+ mbs.unregisterMBean(wildcardName);
+ }
+ }
+
+ private static void testWildcardMBean2(MBeanServer mbs, ObjectMXBean impl,
+ ObjectName wildcardName,
+ MBeanOptions proxyOptions,
+ Class<? extends ObjectMXBean> intf)
+ throws Exception {
+ if (proxyOptions == null) {
+ proxyOptions = new MBeanOptions();
+ MXBeanMappingFactory f = MXBeanMappingFactory.forInterface(intf);
+ proxyOptions.setMXBeanMappingFactory(f);
+ }
+ Descriptor d = mbs.getMBeanInfo(wildcardName).getDescriptor();
+ String factoryName = (String)
+ d.getFieldValue(JMX.MXBEAN_MAPPING_FACTORY_CLASS_FIELD);
+ if (!ObjectMappingFactory.class.getName().equals(factoryName)) {
+ fail("Descriptor has wrong MXBeanMappingFactory: " + factoryName +
+ " should be " + ObjectMappingFactory.class.getName());
+ }
+ ObjectMXBean wildcardProxy =
+ JMX.newMBeanProxy(mbs, wildcardName, intf, proxyOptions);
+ MBeanServerInvocationHandler mbsih = (MBeanServerInvocationHandler)
+ Proxy.getInvocationHandler(wildcardProxy);
+ MBeanOptions opts = mbsih.getMBeanOptions();
+ if (!opts.equals(proxyOptions)) {
+ fail("Proxy options differ from request: " + opts + " vs " +
+ proxyOptions);
+ }
+ Method[] wildcardMethods = ObjectMXBean.class.getMethods();
+ for (Method m : wildcardMethods) {
+ System.out.println("..." + m.getName());
+ Object orig = m.invoke(impl);
+ Object copy = m.invoke(wildcardProxy);
+ if (!deepEquals(orig, copy)) {
+ fail("objects differ: " + deepToString(orig) + " vs " +
+ deepToString(copy));
+ }
+ }
+ }
+
+ private static <T> T zeroProxy(Class<T> intf) {
+ return intf.cast(Proxy.newProxyInstance(intf.getClassLoader(),
+ new Class<?>[] {intf},
+ new ZeroInvocationHandler()));
+ }
+
+ private static class ZeroInvocationHandler implements InvocationHandler {
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable {
+ return 0;
+ }
+ }
+
+ private static boolean deepEquals(Object x, Object y) {
+ if (x == y)
+ return true;
+ if (x == null || y == null)
+ return false;
+
+ if (x instanceof Collection<?>) {
+ if (!(y instanceof Collection<?>))
+ return false;
+ Collection<?> xcoll = (Collection<?>) x;
+ Collection<?> ycoll = (Collection<?>) y;
+ if (xcoll.size() != ycoll.size())
+ return false;
+ Iterator<?> xit = xcoll.iterator();
+ Iterator<?> yit = ycoll.iterator();
+ while (xit.hasNext()) {
+ if (!deepEquals(xit.next(), yit.next()))
+ return false;
+ }
+ return true;
+ }
+
+ Class<?> xclass = x.getClass();
+ Class<?> yclass = y.getClass();
+ if (xclass.isArray()) {
+ if (!yclass.isArray())
+ return false;
+ if (!xclass.getComponentType().equals(yclass.getComponentType()))
+ return false;
+ int len = Array.getLength(x);
+ if (Array.getLength(y) != len)
+ return false;
+ for (int i = 0; i < len; i++) {
+ if (!deepEquals(Array.get(x, i), Array.get(y, i)))
+ return false;
+ }
+ return true;
+ }
+
+// return x.equals(y);
+ if (x.equals(y))
+ return true;
+ System.out.println("Not equal: <" + x + "> and <" + y + ">");
+ return false;
+ }
+
+ private static String deepToString(Object x) {
+ if (x == null)
+ return "null";
+
+ if (x instanceof Collection<?>) {
+ Collection<?> xcoll = (Collection<?>) x;
+ StringBuilder sb = new StringBuilder("[");
+ for (Object e : xcoll) {
+ if (sb.length() > 1)
+ sb.append(", ");
+ sb.append(deepToString(e));
+ }
+ sb.append("]");
+ return sb.toString();
+ }
+
+ if (x instanceof Object[]) {
+ Object[] xarr = (Object[]) x;
+ return deepToString(Arrays.asList(xarr));
+ }
+
+ if (x.getClass().isArray()) { // primitive array
+ String s = Arrays.deepToString(new Object[] {x});
+ return s.substring(1, s.length() - 1);
+ }
+
+ return x.toString();
+ }
+
+ private static void fail(String msg) {
+ System.out.println("TEST FAILED: " + msg);
+ if (msg.length() > 100)
+ msg = msg.substring(0, 100) + "...";
+ failure = msg;
+ }
+
+ private static String failure;
+}
diff --git a/test/javax/management/mxbean/JMXServiceURLTest.java b/test/javax/management/mxbean/JMXServiceURLTest.java
index dc796037c..12646cf7c 100644
--- a/test/javax/management/mxbean/JMXServiceURLTest.java
+++ b/test/javax/management/mxbean/JMXServiceURLTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/javax/management/mxbean/MXBeanTest.java b/test/javax/management/mxbean/MXBeanTest.java
index 9abcf57e4..9415b39fa 100644
--- a/test/javax/management/mxbean/MXBeanTest.java
+++ b/test/javax/management/mxbean/MXBeanTest.java
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 6175517 6278707 6318827 6305746 6392303
+ * @bug 6175517 6278707 6318827 6305746 6392303 6600709
* @summary General MXBean test.
* @author Eamonn McManus
* @run clean MXBeanTest MerlinMXBean TigerMXBean
@@ -40,7 +40,8 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
-import javax.management.Attribute;
+import java.util.Map;
+import java.util.SortedMap;
import javax.management.JMX;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanInfo;
@@ -55,10 +56,6 @@ import javax.management.StandardMBean;
import javax.management.openmbean.ArrayType;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.CompositeDataInvocationHandler;
-import javax.management.openmbean.OpenMBeanAttributeInfo;
-import javax.management.openmbean.OpenMBeanInfo;
-import javax.management.openmbean.OpenMBeanOperationInfo;
-import javax.management.openmbean.OpenMBeanParameterInfo;
import javax.management.openmbean.OpenType;
import javax.management.openmbean.SimpleType;
import javax.management.openmbean.TabularData;
@@ -81,10 +78,8 @@ public class MXBeanTest {
if (failures == 0)
System.out.println("Test passed");
- else {
- System.out.println("TEST FAILURES: " + failures);
- System.exit(1);
- }
+ else
+ throw new Exception("TEST FAILURES: " + failures);
}
private static int failures = 0;
@@ -561,6 +556,11 @@ public class MXBeanTest {
return false;
return deepEqual(o1, o2, namedMXBeans);
}
+ if (o1 instanceof Map) {
+ if (!(o2 instanceof Map))
+ return false;
+ return equalMap((Map) o1, (Map) o2, namedMXBeans);
+ }
if (o1 instanceof CompositeData && o2 instanceof CompositeData) {
return compositeDataEqual((CompositeData) o1, (CompositeData) o2,
namedMXBeans);
@@ -600,6 +600,21 @@ public class MXBeanTest {
return true;
}
+ private static boolean equalMap(Map<?,?> m1, Map<?,?> m2,
+ NamedMXBeans namedMXBeans) {
+ if (m1.size() != m2.size())
+ return false;
+ if ((m1 instanceof SortedMap) != (m2 instanceof SortedMap))
+ return false;
+ for (Object k1 : m1.keySet()) {
+ if (!m2.containsKey(k1))
+ return false;
+ if (!equal(m1.get(k1), m2.get(k1), namedMXBeans))
+ return false;
+ }
+ return true;
+ }
+
// This is needed to work around a bug (5095277)
// in CompositeDataSupport.equals
private static boolean compositeDataEqual(CompositeData cd1,
@@ -655,7 +670,7 @@ public class MXBeanTest {
/* I wanted to call this method toString(Object), but oddly enough
this meant that I couldn't call it from the inner class
MXBeanImplInvocationHandler, because the inherited Object.toString()
- prevented that. Surprising behaviour. */
+ prevented that. */
static String string(Object o) {
if (o == null)
return "null";
diff --git a/test/javax/management/mxbean/SameObjectTwoNamesTest.java b/test/javax/management/mxbean/SameObjectTwoNamesTest.java
new file mode 100644
index 000000000..53cc9bb3b
--- /dev/null
+++ b/test/javax/management/mxbean/SameObjectTwoNamesTest.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2007 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test SameObjectTwoNamesTest.java
+ * @bug 6283873
+ * @summary Check that registering the same MXBean under two different
+ * names produces an exception
+ * @author Alexander Shusherov
+ * @author Eamonn McManus
+ * @run main SameObjectTwoNamesTest
+ * @run main/othervm -Djmx.mxbean.multiname=true SameObjectTwoNamesTest
+ */
+
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
+
+public class SameObjectTwoNamesTest {
+
+ public static void main(String[] args) throws Exception {
+ boolean expectException =
+ (System.getProperty("jmx.mxbean.multiname") == null);
+ try {
+ ObjectName objectName1 = new ObjectName("test:index=1");
+ ObjectName objectName2 = new ObjectName("test:index=2");
+ MBeanServer mbs = MBeanServerFactory.createMBeanServer();
+ MXBC_SimpleClass01 mxBeanObject = new MXBC_SimpleClass01();
+
+ mbs.registerMBean(mxBeanObject, objectName1);
+
+ mbs.registerMBean(mxBeanObject, objectName2);
+
+ if (expectException) {
+ throw new Exception("TEST FAILED: " +
+ "InstanceAlreadyExistsException was not thrown");
+ } else
+ System.out.println("Correctly got no exception with compat property");
+ } catch (InstanceAlreadyExistsException e) {
+ if (expectException) {
+ System.out.println("Got expected InstanceAlreadyExistsException:");
+ e.printStackTrace(System.out);
+ } else {
+ throw new Exception(
+ "TEST FAILED: Got exception even though compat property set", e);
+ }
+ }
+ System.out.println("TEST PASSED");
+ }
+
+ public interface MXBC_Simple01MXBean {}
+
+ public static class MXBC_SimpleClass01 implements MXBC_Simple01MXBean {}
+
+}
diff --git a/test/javax/management/mxbean/customtypes/CustomLongMXBean.java b/test/javax/management/mxbean/customtypes/CustomLongMXBean.java
new file mode 100644
index 000000000..5c1e4aef6
--- /dev/null
+++ b/test/javax/management/mxbean/customtypes/CustomLongMXBean.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2007-2008 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.
+ *
+ * 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.
+ */
+
+// CustomLongMXBean.java - see CustomTypeTest
+
+package customtypes;
+
+import javax.management.openmbean.MXBeanMappingFactoryClass;
+
+@MXBeanMappingFactoryClass(IntegerIsLongFactory.class)
+public interface CustomLongMXBean extends CustomMXBean {}
diff --git a/test/javax/management/mxbean/customtypes/CustomMXBean.java b/test/javax/management/mxbean/customtypes/CustomMXBean.java
new file mode 100644
index 000000000..0664827ca
--- /dev/null
+++ b/test/javax/management/mxbean/customtypes/CustomMXBean.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2007-2008 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.
+ *
+ * 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.
+ */
+
+// CustomMXBean.java - see CustomTypeTest
+
+package customtypes;
+
+public interface CustomMXBean {
+ public Integer getX();
+}
diff --git a/test/javax/management/mxbean/customtypes/IntegerIsLongFactory.java b/test/javax/management/mxbean/customtypes/IntegerIsLongFactory.java
new file mode 100644
index 000000000..e05d0d7b6
--- /dev/null
+++ b/test/javax/management/mxbean/customtypes/IntegerIsLongFactory.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2007-2008 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.
+ *
+ * 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.
+ */
+
+// IntegerIsLongFactory.java - see CustomTypeTest
+
+package customtypes;
+
+import java.io.InvalidObjectException;
+import java.lang.reflect.Type;
+import javax.management.openmbean.MXBeanMapping;
+import javax.management.openmbean.MXBeanMappingFactory;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.SimpleType;
+
+public class IntegerIsLongFactory implements MXBeanMappingFactory {
+ public MXBeanMapping forType(Type t, MXBeanMappingFactory f)
+ throws OpenDataException {
+ if (t == Integer.class)
+ return IntegerIsLongMapping;
+ else
+ return MXBeanMappingFactory.DEFAULT.forType(t, f);
+ }
+
+ private static final MXBeanMapping IntegerIsLongMapping =
+ new IntegerIsLongMapping();
+
+ private static class IntegerIsLongMapping extends MXBeanMapping {
+ IntegerIsLongMapping() {
+ super(Integer.class, SimpleType.STRING);
+ }
+
+ public Object fromOpenValue(Object openValue)
+ throws InvalidObjectException {
+ try {
+ return (Long) openValue;
+ } catch (Exception e) {
+ InvalidObjectException ioe = new InvalidObjectException("oops");
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public Object toOpenValue(Object javaValue) throws OpenDataException {
+ try {
+ Integer i = (Integer) javaValue;
+ return new Long((int) i);
+ } catch (Exception e) {
+ OpenDataException ode = new OpenDataException("oops");
+ ode.initCause(e);
+ throw ode;
+ }
+ }
+ }
+}
diff --git a/test/javax/management/mxbean/customtypes/IntegerIsStringFactory.java b/test/javax/management/mxbean/customtypes/IntegerIsStringFactory.java
new file mode 100644
index 000000000..c044bd3af
--- /dev/null
+++ b/test/javax/management/mxbean/customtypes/IntegerIsStringFactory.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2007-2008 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.
+ *
+ * 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.
+ */
+
+// IntegerIsStringFactory.java - see CustomTypeTest
+
+package customtypes;
+
+import java.io.InvalidObjectException;
+import java.lang.reflect.Type;
+import javax.management.openmbean.MXBeanMapping;
+import javax.management.openmbean.MXBeanMappingFactory;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.SimpleType;
+
+public class IntegerIsStringFactory extends MXBeanMappingFactory {
+ @Override
+ public MXBeanMapping mappingForType(Type t, MXBeanMappingFactory f)
+ throws OpenDataException {
+ if (t == Integer.class)
+ return integerIsStringMapping;
+ else
+ return MXBeanMappingFactory.DEFAULT.mappingForType(t, f);
+ }
+
+ private static final MXBeanMapping integerIsStringMapping =
+ new IntegerIsStringMapping();
+
+ private static class IntegerIsStringMapping extends MXBeanMapping {
+ IntegerIsStringMapping() {
+ super(Integer.class, SimpleType.STRING);
+ }
+
+ public Object fromOpenValue(Object openValue)
+ throws InvalidObjectException {
+ try {
+ String s = (String) openValue;
+ return Integer.parseInt(s);
+ } catch (Exception e) {
+ InvalidObjectException ioe = new InvalidObjectException("oops");
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public Object toOpenValue(Object javaValue) throws OpenDataException {
+ try {
+ Integer i = (Integer) javaValue;
+ return i.toString();
+ } catch (Exception e) {
+ OpenDataException ode = new OpenDataException("oops");
+ ode.initCause(e);
+ throw ode;
+ }
+ }
+ }
+}
diff --git a/test/javax/management/mxbean/customtypes/package-info.java b/test/javax/management/mxbean/customtypes/package-info.java
new file mode 100644
index 000000000..c9e213dcb
--- /dev/null
+++ b/test/javax/management/mxbean/customtypes/package-info.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2007-2008 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.
+ *
+ * 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-info.java - test package annotations for custom types
+
+@javax.management.openmbean.MXBeanMappingFactoryClass(IntegerIsStringFactory.class)
+package customtypes;
diff --git a/test/javax/management/query/QueryExpStringTest.java b/test/javax/management/query/QueryExpStringTest.java
index be6a515b8..98d4ba9f6 100644
--- a/test/javax/management/query/QueryExpStringTest.java
+++ b/test/javax/management/query/QueryExpStringTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
@@ -121,14 +121,14 @@ public class QueryExpStringTest {
eq, "(12345678) = (2.5)",
between, "(12345678) between (2.5) and (2.5)",
match, "attr like 'simpleString'",
- initial, "attr like 'simpleString%'",
- initialStar, "attr like '\\*%'",
- initialPercent, "attr like '\\%%'",
- any, "attr like '%simpleString%'",
- anyStar, "attr like '%\\*%'",
- anyPercent, "attr like '%\\%%'",
- ffinal, "attr like '%simpleString'",
- finalMagic, "attr like '%\\?\\*\\[\\\\'",
+ initial, "attr like 'simpleString*'",
+ initialStar, "attr like '\\**'",
+ initialPercent, "attr like '%*'",
+ any, "attr like '*simpleString*'",
+ anyStar, "attr like '*\\**'",
+ anyPercent, "attr like '*%*'",
+ ffinal, "attr like '*simpleString'",
+ finalMagic, "attr like '*\\?\\*\\[\\\\'",
in, "12345678 in (12345678, 2.5)",
and, "((12345678) > (2.5)) and ((12345678) < (2.5))",
or, "((12345678) > (2.5)) or ((12345678) < (2.5))",
@@ -207,7 +207,6 @@ public class QueryExpStringTest {
exp + " like " + pat);
}
StringValueExp spat = (StringValueExp) pat;
- spat = Query.value(translateMatch(spat.getValue()));
return Query.match((AttributeValueExp) exp, spat);
}
@@ -226,28 +225,6 @@ public class QueryExpStringTest {
throw new Exception("Expected in or like after expression");
}
- private static String translateMatch(String s) {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < s.length(); i++) { // logic not correct for wide chars
- char c = s.charAt(i);
- switch (c) {
- case '\\':
- sb.append(c).append(s.charAt(++i)); break;
- case '%':
- sb.append('*'); break;
- case '_':
- sb.append('?'); break;
- case '*':
- sb.append("\\*"); break;
- case '?':
- sb.append("\\?"); break;
- default:
- sb.append(c); break;
- }
- }
- return sb.toString();
- }
-
private static QueryExp parseQueryAfterParen(String[] ss)
throws Exception {
/* This is very ugly. We might have "(q1) and (q2)" here, or
diff --git a/test/javax/management/query/QueryNotifFilterTest.java b/test/javax/management/query/QueryNotifFilterTest.java
index b22bf1baa..2f3dcaa31 100644
--- a/test/javax/management/query/QueryNotifFilterTest.java
+++ b/test/javax/management/query/QueryNotifFilterTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/javax/management/query/QueryParseTest.java b/test/javax/management/query/QueryParseTest.java
index a6004b5c1..62b64bf71 100644
--- a/test/javax/management/query/QueryParseTest.java
+++ b/test/javax/management/query/QueryParseTest.java
@@ -347,30 +347,30 @@ public class QueryParseTest {
// LIKE
- "A like 'b%m'",
+ "A like 'b*m'",
expectTrue("blim"), expectTrue("bm"),
expectFalse(""), expectFalse("blimmo"), expectFalse("mmm"),
- "A not like 'b%m'",
+ "A not like 'b*m'",
expectFalse("blim"), expectFalse("bm"),
expectTrue(""), expectTrue("blimmo"), expectTrue("mmm"),
- "A like 'b_m'",
+ "A like 'b?m'",
expectTrue("bim"), expectFalse("blim"),
- "A like '%can''t%'",
+ "A like '*can''t*'",
expectTrue("can't"),
expectTrue("I'm sorry Dave, I'm afraid I can't do that"),
expectFalse("cant"), expectFalse("can''t"),
- "A like '\\%%\\%'",
- expectTrue("%blim%"), expectTrue("%%"),
- expectFalse("blim"), expectFalse("%asdf"), expectFalse("asdf%"),
+ "A like '\\**\\*'",
+ expectTrue("*blim*"), expectTrue("**"),
+ expectFalse("blim"), expectFalse("*asdf"), expectFalse("asdf*"),
- "A LIKE '*%?_'",
- expectTrue("*blim?!"), expectTrue("*?_"),
- expectFalse("blim"), expectFalse("blim?"),
- expectFalse("?*"), expectFalse("??"), expectFalse(""), expectFalse("?"),
+ "A LIKE '%*_?'",
+ expectTrue("%blim_?"), expectTrue("%_?"), expectTrue("%blim_!"),
+ expectFalse("blim"), expectFalse("blim_"),
+ expectFalse("_%"), expectFalse("??"), expectFalse(""), expectFalse("?"),
Query.toString(
Query.initialSubString(Query.attr("A"), Query.value("*?%_"))),
@@ -483,7 +483,7 @@ public class QueryParseTest {
// note the little {} at the end which means this is a subclass
// and therefore QualifiedAttributeValue should return false.
- MBeanServerDelegate.class.getName() + "#SpecificationName LIKE '%'",
+ MBeanServerDelegate.class.getName() + "#SpecificationName LIKE '*'",
new Wrapped(new MBeanServerDelegate(), true),
new Tester(new String[] {"SpecificationName"}, new Object[] {"JMX"}, false),
@@ -497,7 +497,7 @@ public class QueryParseTest {
"A.class.name = 'java.lang.String'",
expectTrue("blim"), expectFalse(95), expectFalse((Object) null),
- "A.canonicalName like 'JMImpl%:%'",
+ "A.canonicalName like 'JMImpl*:*'",
expectTrue(MBeanServerDelegate.DELEGATE_NAME),
expectFalse(ObjectName.WILDCARD),
@@ -544,12 +544,15 @@ public class QueryParseTest {
"a in b, c", "a in 23", "a in (2, 3", "a in (2, 3x)",
"a like \"foo\"", "a like b", "a like 23",
"like \"foo\"", "like b", "like 23", "like 'a:b'",
- "5 like 'a'", "'a' like '%'",
+ "5 like 'a'", "'a' like '*'",
"a not= b", "a not = b", "a not b", "a not b c",
"a = +b", "a = +'b'", "a = +true", "a = -b", "a = -'b'",
"a#5 = b", "a#'b' = c",
"a instanceof b", "a instanceof 17", "a instanceof",
- "a like 'oops\\'", "a like '[oops'",
+ // "a like 'oops\\'", "a like '[oops'",
+ // We don't check the above because Query.match doesn't. If LIKE
+ // rejected bad patterns then there would be some QueryExp values
+ // that could not be converted to a string and back.
// Check that -Long.MIN_VALUE is an illegal constant. This is one more
// than Long.MAX_VALUE and, like the Java language, we only allow it
diff --git a/test/javax/management/relation/RelationNotificationSeqNoTest.java b/test/javax/management/relation/RelationNotificationSeqNoTest.java
index 936601b8c..eaefc9318 100644
--- a/test/javax/management/relation/RelationNotificationSeqNoTest.java
+++ b/test/javax/management/relation/RelationNotificationSeqNoTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-2008 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
diff --git a/test/javax/swing/JFileChooser/4252173/bug4252173.java b/test/javax/swing/JFileChooser/4252173/bug4252173.java
index ba9db8204..afb29bf78 100644
--- a/test/javax/swing/JFileChooser/4252173/bug4252173.java
+++ b/test/javax/swing/JFileChooser/4252173/bug4252173.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/javax/swing/JPopupMenu/6694823/bug6694823.java b/test/javax/swing/JPopupMenu/6694823/bug6694823.java
new file mode 100644
index 000000000..2388137a3
--- /dev/null
+++ b/test/javax/swing/JPopupMenu/6694823/bug6694823.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 6694823
+ * @summary Checks that popup menu cannot be partially hidden
+ * by the task bar in applets.
+ * @author Mikhail Lapshin
+ * @run main bug6694823
+ */
+
+import javax.swing.*;
+import java.awt.*;
+import sun.awt.SunToolkit;
+
+public class bug6694823 {
+ private static JFrame frame;
+ private static JPopupMenu popup;
+ private static SunToolkit toolkit;
+ private static Insets screenInsets;
+
+ public static void main(String[] args) throws Exception {
+ toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ createGui();
+ }
+ });
+
+ // Get screen insets
+ screenInsets = toolkit.getScreenInsets(frame.getGraphicsConfiguration());
+ if (screenInsets.bottom == 0) {
+ // This test is only for configurations with taskbar on the bottom
+ return;
+ }
+
+ // Show popup as if from a standalone application
+ // The popup should be able to overlap the task bar
+ showPopup(false);
+
+ // Emulate applet security restrictions
+ toolkit.realSync();
+ System.setSecurityManager(new SecurityManager());
+
+ // Show popup as if from an applet
+ // The popup shouldn't overlap the task bar. It should be shifted up.
+ showPopup(true);
+
+ toolkit.realSync();
+ System.out.println("Test passed!");
+ frame.dispose();
+ }
+
+ private static void createGui() {
+ frame = new JFrame();
+ frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+ frame.setUndecorated(true);
+
+ popup = new JPopupMenu("Menu");
+ for (int i = 0; i < 7; i++) {
+ popup.add(new JMenuItem("MenuItem"));
+ }
+ JPanel panel = new JPanel();
+ panel.setComponentPopupMenu(popup);
+ frame.add(panel);
+
+ frame.setSize(200, 200);
+ }
+
+ private static void showPopup(final boolean shouldBeShifted) {
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ // Place frame just above the task bar
+ Dimension screenSize = toolkit.getScreenSize();
+ frame.setLocation(screenSize.width / 2,
+ screenSize.height - frame.getHeight() - screenInsets.bottom);
+ frame.setVisible(true);
+
+ // Place popup over the task bar
+ Point frameLoc = frame.getLocationOnScreen();
+ int x = 0;
+ int y = frame.getHeight()
+ - popup.getPreferredSize().height + screenInsets.bottom;
+ popup.show(frame, x, y);
+
+ if (shouldBeShifted) {
+ if (popup.getLocationOnScreen()
+ .equals(new Point(frameLoc.x, frameLoc.y + y))) {
+ throw new RuntimeException("Popup is not shifted");
+ }
+ } else {
+ if (!popup.getLocationOnScreen()
+ .equals(new Point(frameLoc.x, frameLoc.y + y))) {
+ throw new RuntimeException("Popup is unexpectedly shifted");
+ }
+ }
+ popup.setVisible(false);
+ }
+ });
+ }
+}
diff --git a/test/javax/swing/JSlider/4987336/box.gif b/test/javax/swing/JSlider/4987336/box.gif
new file mode 100644
index 000000000..69d8cdf9d
--- /dev/null
+++ b/test/javax/swing/JSlider/4987336/box.gif
Binary files differ
diff --git a/test/javax/swing/JSlider/4987336/bug4987336.html b/test/javax/swing/JSlider/4987336/bug4987336.html
new file mode 100644
index 000000000..b5c9a191f
--- /dev/null
+++ b/test/javax/swing/JSlider/4987336/bug4987336.html
@@ -0,0 +1,9 @@
+<html>
+<body>
+<applet code="bug4987336.class" width=600 height=400></applet>
+There are four Sliders. Each of them has a label with animated gif (a cup of coffee)
+and a label with static image.
+
+Check that for every LAF animation works for all Sliders.
+</body>
+</html>
diff --git a/test/javax/swing/JSlider/4987336/bug4987336.java b/test/javax/swing/JSlider/4987336/bug4987336.java
new file mode 100644
index 000000000..fdceec3b0
--- /dev/null
+++ b/test/javax/swing/JSlider/4987336/bug4987336.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2007-2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4987336
+ @summary JSlider doesn't show label's animated icon.
+ @author Pavel Porvatov
+ @run applet/manual=done bug4987336.html
+*/
+
+import javax.swing.*;
+import javax.swing.border.TitledBorder;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Hashtable;
+
+public class bug4987336 extends JApplet {
+ private static final String IMAGE_RES = "box.gif";
+
+ private static final String ANIM_IMAGE_RES = "cupanim.gif";
+
+ public void init() {
+ JPanel pnLafs = new JPanel();
+ pnLafs.setLayout(new BoxLayout(pnLafs, BoxLayout.Y_AXIS));
+
+ ButtonGroup group = new ButtonGroup();
+
+ pnLafs.setBorder(new TitledBorder("Available Lafs"));
+
+ for (UIManager.LookAndFeelInfo lafInfo : UIManager.getInstalledLookAndFeels()) {
+ LafRadioButton comp = new LafRadioButton(lafInfo);
+
+ pnLafs.add(comp);
+ group.add(comp);
+ }
+
+ JPanel pnContent = new JPanel();
+
+ pnContent.setLayout(new BoxLayout(pnContent, BoxLayout.Y_AXIS));
+
+ pnContent.add(pnLafs);
+ pnContent.add(createSlider(true, IMAGE_RES, IMAGE_RES, ANIM_IMAGE_RES, ANIM_IMAGE_RES));
+ pnContent.add(createSlider(false, IMAGE_RES, IMAGE_RES, ANIM_IMAGE_RES, ANIM_IMAGE_RES));
+ pnContent.add(createSlider(true, ANIM_IMAGE_RES, null, IMAGE_RES, IMAGE_RES));
+ pnContent.add(createSlider(false, ANIM_IMAGE_RES, null, IMAGE_RES, IMAGE_RES));
+
+ getContentPane().add(new JScrollPane(pnContent));
+ }
+
+ private static JSlider createSlider(boolean enabled,
+ String firstEnabledImage, String firstDisabledImage,
+ String secondEnabledImage, String secondDisabledImage) {
+ Hashtable<Integer, JComponent> dictionary = new Hashtable<Integer, JComponent>();
+
+ dictionary.put(0, createLabel(firstEnabledImage, firstDisabledImage));
+ dictionary.put(1, createLabel(secondEnabledImage, secondDisabledImage));
+
+ JSlider result = new JSlider(0, 1);
+
+ result.setLabelTable(dictionary);
+ result.setPaintLabels(true);
+ result.setEnabled(enabled);
+
+ return result;
+ }
+
+ private static JLabel createLabel(String enabledImage, String disabledImage) {
+ ImageIcon enabledIcon = enabledImage == null ? null :
+ new ImageIcon(bug4987336.class.getResource(enabledImage));
+
+ ImageIcon disabledIcon = disabledImage == null ? null :
+ new ImageIcon(bug4987336.class.getResource(disabledImage));
+
+ JLabel result = new JLabel(enabledImage == null && disabledImage == null ? "No image" : "Image",
+ enabledIcon, SwingConstants.LEFT);
+
+ result.setDisabledIcon(disabledIcon);
+
+ return result;
+ }
+
+ private class LafRadioButton extends JRadioButton {
+ public LafRadioButton(final UIManager.LookAndFeelInfo lafInfo) {
+ super(lafInfo.getName(), lafInfo.getName().equals(UIManager.getLookAndFeel().getName()));
+
+ addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ try {
+ UIManager.setLookAndFeel(lafInfo.getClassName());
+
+ SwingUtilities.updateComponentTreeUI(bug4987336.this);
+ } catch (Exception ex) {
+ // Ignore such errors
+ System.out.println("Cannot set LAF " + lafInfo.getName());
+ }
+ }
+ });
+ }
+ }
+}
diff --git a/test/javax/swing/JSlider/4987336/cupanim.gif b/test/javax/swing/JSlider/4987336/cupanim.gif
new file mode 100644
index 000000000..934d093c5
--- /dev/null
+++ b/test/javax/swing/JSlider/4987336/cupanim.gif
Binary files differ
diff --git a/test/sun/java2d/cmm/ProfileOp/ReadProfileTest.java b/test/sun/java2d/cmm/ProfileOp/ReadProfileTest.java
index 1a4570f9c..ea284e721 100644
--- a/test/sun/java2d/cmm/ProfileOp/ReadProfileTest.java
+++ b/test/sun/java2d/cmm/ProfileOp/ReadProfileTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/sun/management/HotspotClassLoadingMBean/GetClassInitializationTime.java b/test/sun/management/HotspotClassLoadingMBean/GetClassInitializationTime.java
index b269ea9dd..29eea7db8 100644
--- a/test/sun/management/HotspotClassLoadingMBean/GetClassInitializationTime.java
+++ b/test/sun/management/HotspotClassLoadingMBean/GetClassInitializationTime.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/sun/management/HotspotClassLoadingMBean/GetClassLoadingTime.java b/test/sun/management/HotspotClassLoadingMBean/GetClassLoadingTime.java
index 7942a10ee..3f7880c7d 100644
--- a/test/sun/management/HotspotClassLoadingMBean/GetClassLoadingTime.java
+++ b/test/sun/management/HotspotClassLoadingMBean/GetClassLoadingTime.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/sun/management/HotspotClassLoadingMBean/GetInitializedClassCount.java b/test/sun/management/HotspotClassLoadingMBean/GetInitializedClassCount.java
index b2750a1f7..0b0117cda 100644
--- a/test/sun/management/HotspotClassLoadingMBean/GetInitializedClassCount.java
+++ b/test/sun/management/HotspotClassLoadingMBean/GetInitializedClassCount.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/sun/management/HotspotClassLoadingMBean/GetLoadedClassSize.java b/test/sun/management/HotspotClassLoadingMBean/GetLoadedClassSize.java
index 5b44aca22..a42363cdb 100644
--- a/test/sun/management/HotspotClassLoadingMBean/GetLoadedClassSize.java
+++ b/test/sun/management/HotspotClassLoadingMBean/GetLoadedClassSize.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/sun/management/HotspotClassLoadingMBean/GetMethodDataSize.java b/test/sun/management/HotspotClassLoadingMBean/GetMethodDataSize.java
index cc83022dd..91ce63f96 100644
--- a/test/sun/management/HotspotClassLoadingMBean/GetMethodDataSize.java
+++ b/test/sun/management/HotspotClassLoadingMBean/GetMethodDataSize.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/sun/management/HotspotClassLoadingMBean/GetUnloadedClassSize.java b/test/sun/management/HotspotClassLoadingMBean/GetUnloadedClassSize.java
index a12920ee5..bcae221fe 100644
--- a/test/sun/management/HotspotClassLoadingMBean/GetUnloadedClassSize.java
+++ b/test/sun/management/HotspotClassLoadingMBean/GetUnloadedClassSize.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/sun/management/HotspotRuntimeMBean/GetSafepointCount.java b/test/sun/management/HotspotRuntimeMBean/GetSafepointCount.java
index ca7d2084c..de1a92356 100644
--- a/test/sun/management/HotspotRuntimeMBean/GetSafepointCount.java
+++ b/test/sun/management/HotspotRuntimeMBean/GetSafepointCount.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java b/test/sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java
index b853a3ec9..3b4f057ba 100644
--- a/test/sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java
+++ b/test/sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/sun/management/HotspotRuntimeMBean/GetTotalSafepointTime.java b/test/sun/management/HotspotRuntimeMBean/GetTotalSafepointTime.java
index 7b70546f6..67fe9a4a1 100644
--- a/test/sun/management/HotspotRuntimeMBean/GetTotalSafepointTime.java
+++ b/test/sun/management/HotspotRuntimeMBean/GetTotalSafepointTime.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/sun/management/HotspotThreadMBean/GetInternalThreads.java b/test/sun/management/HotspotThreadMBean/GetInternalThreads.java
index 91e0792dc..3df9acd48 100644
--- a/test/sun/management/HotspotThreadMBean/GetInternalThreads.java
+++ b/test/sun/management/HotspotThreadMBean/GetInternalThreads.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 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
diff --git a/test/sun/net/www/http/ChunkedOutputStream/Test.java b/test/sun/net/www/http/ChunkedOutputStream/Test.java
index 3866761ad..37ae9b690 100644
--- a/test/sun/net/www/http/ChunkedOutputStream/Test.java
+++ b/test/sun/net/www/http/ChunkedOutputStream/Test.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2004-2008 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
diff --git a/test/sun/nio/cs/BufferUnderflowEUCTWTest.java b/test/sun/nio/cs/BufferUnderflowEUCTWTest.java
new file mode 100644
index 000000000..c7b54a184
--- /dev/null
+++ b/test/sun/nio/cs/BufferUnderflowEUCTWTest.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4834154
+ @summary Decode a file using EUC-TW, test for decode errors
+ */
+
+/*
+ * Tests for decode errors in NIO EUC-TW decoder. 4734607 details
+ * decoding errors which occur when the input file > 8k in size
+ * and contains numerous US-ASCII range chars
+ */
+
+import java.io.*;
+
+public class BufferUnderflowEUCTWTest {
+ private static int BUFFERSIZE = 8194;
+
+ public static void main (String[] args) throws Exception {
+ int i = 0;
+ byte[] b = new byte[BUFFERSIZE];
+
+ for (; i < BUFFERSIZE - 4; i++) // pad with zeroes
+ b[i] = 0;
+
+ // Overspill a valid EUC-TW 4 byte sequence between 2
+ // successive input buffers.
+ b[i++] = (byte)0x8E;
+ b[i++] = (byte)0xA2;
+ b[i++] = (byte)0xA1;
+ b[i++] = (byte)0xA6;
+
+ ByteArrayInputStream r = new ByteArrayInputStream(b);
+
+ try {
+ InputStreamReader isr=new InputStreamReader(r, "EUC-TW");
+ char[] cc = new char[BUFFERSIZE];
+ int cx = isr.read(cc);
+ } catch (ArrayIndexOutOfBoundsException e) {
+ throw new Exception("Array Index error: bug 4834154");
+ }
+ }
+}
diff --git a/test/sun/nio/cs/CheckCaseInsensitiveEncAliases.java b/test/sun/nio/cs/CheckCaseInsensitiveEncAliases.java
new file mode 100644
index 000000000..3a96a76b0
--- /dev/null
+++ b/test/sun/nio/cs/CheckCaseInsensitiveEncAliases.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ * @bug 4216191 4721369 4807283
+ @summary Test to validate case insensitivity of encoding alias names
+ */
+
+// Fixed since 1.4.0 by virtue of NIO charset lookup mechanism
+// which is by design case insensitive
+
+import java.lang.*;
+import java.io.*;
+
+public class CheckCaseInsensitiveEncAliases
+{
+ public static void main(String args[]) throws Exception
+ {
+ // Try various encoding names in mixed cases
+ // Tests subset of encoding names provided within bugID 4216191
+
+ // Various forms of US-ASCII
+ tryToEncode( "ANSI_X3.4-1968" );
+ tryToEncode( "iso-ir-6" );
+ tryToEncode( "ANSI_X3.4-1986" );
+ tryToEncode( "ISO_646.irv:1991" );
+ tryToEncode( "ASCII" );
+ tryToEncode( "ascii" );
+ tryToEncode( "Ascii" );
+ tryToEncode( "Ascii7" );
+ tryToEncode( "ascii7" );
+ tryToEncode( "ISO646-US" );
+ tryToEncode( "US-ASCII" );
+ tryToEncode( "us-ascii" );
+ tryToEncode( "US-Ascii" );
+ tryToEncode( "us" );
+ tryToEncode( "IBM367" );
+ tryToEncode( "cp367" );
+ tryToEncode( "csASCII" );
+
+ // Variants on Unicode
+ tryToEncode( "Unicode" );
+ tryToEncode( "UNICODE" );
+ tryToEncode( "unicode" );
+
+ // Variants on Big5
+ tryToEncode( "Big5" );
+ tryToEncode( "big5" );
+ tryToEncode( "bIg5" );
+ tryToEncode( "biG5" );
+ tryToEncode( "bIG5" );
+
+ // Variants of Cp1252
+ tryToEncode( "Cp1252" );
+ tryToEncode( "cp1252" );
+ tryToEncode( "CP1252" );
+
+ // Variants of PCK
+ tryToEncode( "pck" );
+ tryToEncode( "Pck" );
+
+ }
+
+
+ public static final String ENCODE_STRING = "Encode me";
+
+ public static void tryToEncode( String encoding) throws Exception
+ {
+ try
+ {
+ byte[] bytes = ENCODE_STRING.getBytes( encoding );
+ System.out.println( "Encoding \"" + encoding + "\" recognized" );
+ }
+ catch( UnsupportedEncodingException e )
+ {
+ throw new Exception("Encoding \"" + encoding + "\" NOT recognized");
+ }
+ }
+}
diff --git a/test/sun/nio/cs/CheckHistoricalNames.java b/test/sun/nio/cs/CheckHistoricalNames.java
new file mode 100644
index 000000000..0e233b603
--- /dev/null
+++ b/test/sun/nio/cs/CheckHistoricalNames.java
@@ -0,0 +1,313 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4513767 4961027
+ @summary Checks canonical names match between old and (NIO) core charsets
+ */
+import java.io.InputStreamReader;
+import java.io.IOException;
+
+public class CheckHistoricalNames {
+ static int failed = 0;
+ public static void main (String[] args) throws Exception {
+ checkHistoricalName("ASCII");
+ checkHistoricalName("Cp1252");
+ checkHistoricalName("ISO8859_1");
+ checkHistoricalName("UnicodeBigUnmarked");
+ checkHistoricalName("UnicodeLittle");
+ checkHistoricalName("UnicodeLittleUnmarked");
+ checkHistoricalName("UTF8");
+ checkHistoricalName("UTF-16");
+
+ checkMappedName("UnicodeBig", "UTF-16");
+ checkMappedName("US-ASCII", "ASCII");
+ checkMappedName("ISO-8859-1", "ISO8859_1");
+ checkMappedName("UTF-8", "UTF8");
+ checkMappedName("UTF-16BE", "UnicodeBigUnmarked");
+ checkMappedName("UTF-16LE", "UnicodeLittleUnmarked");
+
+ checkHistoricalName("ISO8859_2");
+ checkHistoricalName("ISO8859_4");
+ checkHistoricalName("ISO8859_5");
+ checkHistoricalName("ISO8859_7");
+ checkHistoricalName("ISO8859_9");
+ checkHistoricalName("ISO8859_13");
+ checkHistoricalName("KOI8_R");
+ checkHistoricalName("Cp1250");
+ checkHistoricalName("Cp1251");
+ checkHistoricalName("Cp1253");
+ checkHistoricalName("Cp1254");
+ checkHistoricalName("Cp1257");
+
+ checkMappedName("ISO-8859-2", "ISO8859_2");
+ checkMappedName("ISO-8859-4", "ISO8859_4");
+ checkMappedName("ISO-8859-5", "ISO8859_5");
+ checkMappedName("ISO-8859-7", "ISO8859_7");
+ checkMappedName("ISO-8859-9", "ISO8859_9");
+ checkMappedName("ISO-8859-13", "ISO8859_13");
+ checkMappedName("KOI8-R", "KOI8_R");
+ checkMappedName("windows-1250", "Cp1250");
+ checkMappedName("windows-1251","Cp1251");
+ checkMappedName("windows-1253", "Cp1253");
+ checkMappedName("windows-1254", "Cp1254");
+ checkMappedName("windows-1257", "Cp1257");
+
+ checkHistoricalName("EUC_CN");
+ checkHistoricalName("EUC_JP");
+ checkHistoricalName("EUC_JP_LINUX");
+ checkHistoricalName("EUC_KR");
+ checkHistoricalName("EUC_TW");
+ checkHistoricalName("ISO2022CN");
+ checkHistoricalName("ISO2022JP");
+ checkHistoricalName("ISO2022KR");
+ checkHistoricalName("ISO8859_3");
+ checkHistoricalName("ISO8859_6");
+ checkHistoricalName("ISO8859_8");
+ checkHistoricalName("Cp1255");
+ checkHistoricalName("Cp1256");
+ checkHistoricalName("Cp1258");
+ checkHistoricalName("MS936");
+ checkHistoricalName("MS949");
+ checkHistoricalName("MS950");
+ checkHistoricalName("TIS620");
+
+ checkMappedName("EUC-CN", "EUC_CN");
+ checkMappedName("EUC-JP", "EUC_JP");
+ checkMappedName("EUC-JP-LINUX", "EUC_JP_LINUX");
+ checkMappedName("EUC-TW", "EUC_TW");
+ checkMappedName("EUC-KR", "EUC_KR");
+ checkMappedName("ISO-2022-CN", "ISO2022CN");
+ checkMappedName("ISO-2022-JP", "ISO2022JP");
+ checkMappedName("ISO-2022-KR", "ISO2022KR");
+ checkMappedName("ISO-8859-3", "ISO8859_3");
+ checkMappedName("ISO-8859-6", "ISO8859_6");
+ checkMappedName("ISO-8859-8", "ISO8859_8");
+ checkMappedName("windows-1255", "Cp1255");
+ checkMappedName("windows-1256", "Cp1256");
+ checkMappedName("windows-1258", "Cp1258");
+ checkMappedName("windows-936", "GBK");
+ checkMappedName("windows-949", "MS949");
+ checkMappedName("windows-950", "MS950");
+ checkMappedName("x-MS950-HKSCS", "MS950_HKSCS");
+ checkMappedName("x-PCK", "PCK");
+ checkMappedName("Shift_JIS", "SJIS");
+ checkMappedName("x-JISAutoDetect", "JISAutoDetect");
+ checkMappedName("TIS-620", "TIS620");
+ checkMappedName("x-Big5-Solaris", "Big5_Solaris");
+
+ checkHistoricalName("Cp037");
+ checkHistoricalName("Cp1006");
+ checkHistoricalName("Cp1025");
+ checkHistoricalName("Cp1026");
+ checkHistoricalName("Cp1046");
+ checkHistoricalName("Cp1047");
+ checkHistoricalName("Cp1097");
+ checkHistoricalName("Cp1098");
+ checkHistoricalName("Cp1112");
+ checkHistoricalName("Cp1122");
+ checkHistoricalName("Cp1123");
+ checkHistoricalName("Cp1124");
+ checkHistoricalName("Cp1140");
+ checkHistoricalName("Cp1141");
+ checkHistoricalName("Cp1142");
+ checkHistoricalName("Cp1143");
+ checkHistoricalName("Cp1144");
+ checkHistoricalName("Cp1145");
+ checkHistoricalName("Cp1146");
+ checkHistoricalName("Cp1147");
+ checkHistoricalName("Cp1148");
+ checkHistoricalName("Cp1149");
+ checkHistoricalName("Cp1381");
+ checkHistoricalName("Cp1383");
+ checkHistoricalName("Cp273");
+ checkHistoricalName("Cp277");
+ checkHistoricalName("Cp278");
+ checkHistoricalName("Cp280");
+ checkHistoricalName("Cp284");
+ checkHistoricalName("Cp285");
+ checkHistoricalName("Cp297");
+ checkHistoricalName("Cp33722");
+ checkHistoricalName("Cp420");
+ checkHistoricalName("Cp424");
+ checkHistoricalName("Cp437");
+ checkHistoricalName("Cp500");
+ checkHistoricalName("Cp737");
+ checkHistoricalName("Cp775");
+ checkHistoricalName("Cp838");
+ checkHistoricalName("Cp850");
+ checkHistoricalName("Cp852");
+ checkHistoricalName("Cp855");
+ checkHistoricalName("Cp856");
+ checkHistoricalName("Cp857");
+ checkHistoricalName("Cp858");
+ checkHistoricalName("Cp860");
+ checkHistoricalName("Cp861");
+ checkHistoricalName("Cp862");
+ checkHistoricalName("Cp863");
+ checkHistoricalName("Cp864");
+ checkHistoricalName("Cp865");
+ checkHistoricalName("Cp866");
+ checkHistoricalName("Cp868");
+ checkHistoricalName("Cp869");
+ checkHistoricalName("Cp870");
+ checkHistoricalName("Cp871");
+ checkHistoricalName("Cp874");
+ checkHistoricalName("Cp875");
+ checkHistoricalName("Cp918");
+ checkHistoricalName("Cp921");
+ checkHistoricalName("Cp922");
+ checkHistoricalName("Cp933");
+ checkHistoricalName("Cp939");
+ checkHistoricalName("Cp949");
+ checkHistoricalName("Cp964");
+ checkHistoricalName("Cp970");
+
+ checkMappedName("IBM037", "Cp037");
+ checkMappedName("IBM1006", "Cp1006");
+ checkMappedName("IBM1025", "Cp1025");
+ checkMappedName("IBM1026", "Cp1026");
+ checkMappedName("x-IBM1046", "Cp1046");
+ checkMappedName("IBM1047", "Cp1047");
+ checkMappedName("IBM1097", "Cp1097");
+ checkMappedName("IBM1098", "Cp1098");
+ checkMappedName("IBM1112", "Cp1112");
+ checkMappedName("IBM1122", "Cp1122");
+ checkMappedName("IBM1123", "Cp1123");
+ checkMappedName("IBM1124", "Cp1124");
+ checkMappedName("IBM01140", "Cp1140");
+ checkMappedName("IBM01141", "Cp1141");
+ checkMappedName("IBM01142", "Cp1142");
+ checkMappedName("IBM01143", "Cp1143");
+ checkMappedName("IBM01144", "Cp1144");
+ checkMappedName("IBM01145", "Cp1145");
+ checkMappedName("IBM01146", "Cp1146");
+ checkMappedName("IBM01147", "Cp1147");
+ checkMappedName("IBM01148", "Cp1148");
+ checkMappedName("IBM01149", "Cp1149");
+ checkMappedName("IBM1381", "Cp1381");
+ checkMappedName("IBM1383", "Cp1383");
+ checkMappedName("IBM273", "Cp273");
+ checkMappedName("IBM277", "Cp277");
+ checkMappedName("IBM278", "Cp278");
+ checkMappedName("IBM280", "Cp280");
+ checkMappedName("IBM284", "Cp284");
+ checkMappedName("IBM285", "Cp285");
+ checkMappedName("IBM297", "Cp297");
+ checkMappedName("IBM33722", "Cp33722");
+ checkMappedName("IBM420", "Cp420");
+ checkMappedName("IBM424", "Cp424");
+ checkMappedName("IBM437", "Cp437");
+ checkMappedName("IBM500", "Cp500");
+ checkMappedName("IBM737", "Cp737");
+ checkMappedName("IBM775", "Cp775");
+ checkMappedName("IBM838", "Cp838");
+ checkMappedName("IBM850", "Cp850");
+ checkMappedName("IBM852", "Cp852");
+ checkMappedName("IBM855", "Cp855");
+ checkMappedName("IBM856", "Cp856");
+ checkMappedName("IBM857", "Cp857");
+ checkMappedName("IBM00858", "Cp858");
+ checkMappedName("IBM860", "Cp860");
+ checkMappedName("IBM861", "Cp861");
+ checkMappedName("IBM862", "Cp862");
+ checkMappedName("IBM863", "Cp863");
+ checkMappedName("IBM864", "Cp864");
+ checkMappedName("IBM865", "Cp865");
+ checkMappedName("IBM866", "Cp866");
+ checkMappedName("IBM868", "Cp868");
+ checkMappedName("IBM869", "Cp869");
+ checkMappedName("IBM870", "Cp870");
+ checkMappedName("IBM871", "Cp871");
+ checkMappedName("IBM874", "Cp874");
+ checkMappedName("IBM875", "Cp875");
+ checkMappedName("IBM918", "Cp918");
+ checkMappedName("IBM921", "Cp921");
+ checkMappedName("IBM922", "Cp922");
+ checkMappedName("x-IBM930", "Cp930");
+ checkMappedName("IBM933", "Cp933");
+ checkMappedName("x-IBM935", "Cp935");
+ checkMappedName("x-IBM937", "Cp937");
+ checkMappedName("IBM939", "Cp939");
+ checkMappedName("x-IBM942", "Cp942");
+ checkMappedName("x-IBM942C", "Cp942C");
+ checkMappedName("x-IBM943", "Cp943");
+ checkMappedName("x-IBM943C", "Cp943C");
+ checkMappedName("x-IBM948", "Cp948");
+ checkMappedName("IBM949", "Cp949");
+ checkMappedName("x-IBM949C", "Cp949C");
+ checkMappedName("x-IBM950", "Cp950");
+ checkMappedName("IBM964", "Cp964");
+ checkMappedName("IBM970", "Cp970");
+
+ checkHistoricalName("MacArabic");
+ checkHistoricalName("MacCentralEurope");
+ checkHistoricalName("MacCroatian");
+ checkHistoricalName("MacCyrillic");
+ checkHistoricalName("MacDingbat");
+ checkHistoricalName("MacGreek");
+ checkHistoricalName("MacHebrew");
+ checkHistoricalName("MacIceland");
+ checkHistoricalName("MacRoman");
+ checkHistoricalName("MacRomania");
+ checkHistoricalName("MacSymbol");
+ checkHistoricalName("MacThai");
+ checkHistoricalName("MacTurkish");
+ checkHistoricalName("MacUkraine");
+
+ checkMappedName("x-MacArabic", "MacArabic");
+ checkMappedName("x-MacCentralEurope", "MacCentralEurope");
+ checkMappedName("x-MacCroatian", "MacCroatian");
+ checkMappedName("x-MacCyrillic", "MacCyrillic");
+ checkMappedName("x-MacDingbat", "MacDingbat");
+ checkMappedName("x-MacGreek", "MacGreek");
+ checkMappedName("x-MacHebrew", "MacHebrew");
+ checkMappedName("x-MacIceland", "MacIceland");
+ checkMappedName("x-MacRoman", "MacRoman");
+ checkMappedName("x-MacRomania", "MacRomania");
+ checkMappedName("x-MacSymbol", "MacSymbol");
+ checkMappedName("x-MacThai", "MacThai");
+ checkMappedName("x-MacTurkish", "MacTurkish");
+ checkMappedName("x-MacUkraine", "MacUkraine");
+
+ if (failed != 0)
+ throw new Exception("Test Failed: " + failed);
+ else
+ System.out.println("Test Passed!");
+ }
+
+ private static void checkHistoricalName(String name) throws Exception {
+ checkMappedName(name, name);
+ }
+
+ private static void checkMappedName(String alias, String canonical)
+ throws Exception {
+ InputStreamReader reader = new InputStreamReader(System.in, alias);
+ if (!reader.getEncoding().equals(canonical)) {
+ System.out.println("Failed canonical names : mismatch for " + alias
+ + " - expected " + canonical
+ + ", got " + reader.getEncoding());
+ failed++;
+ }
+ }
+}
diff --git a/test/sun/nio/cs/ConvertSingle.java b/test/sun/nio/cs/ConvertSingle.java
new file mode 100644
index 000000000..3222c18bc
--- /dev/null
+++ b/test/sun/nio/cs/ConvertSingle.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4094987
+ @summary Verify that malformed expression exceptions are thrown
+ but no internal errors in certain pathologial cases.
+
+ */
+
+
+import java.io.*;
+import java.nio.charset.*;
+
+public class ConvertSingle {
+
+ public static void main(String args[]) throws Exception {
+ // This conversion is pathologically bad - it is attempting to
+ // read unicode from an ascii encoded string.
+ // The orignal bug: A internal error in ISR results if the
+ // byte counter in ByteToCharUnicode
+ // is not advanced as the input is consumed.
+
+ try{
+ String s = "\n";
+ byte ss[] = null;
+ String sstring = "x";
+ ss = s.getBytes();
+ ByteArrayInputStream BAIS = new ByteArrayInputStream(ss);
+ InputStreamReader ISR = new InputStreamReader(BAIS, "Unicode");
+ BufferedReader BR = new BufferedReader(ISR);
+ sstring = BR.readLine();
+ BR.close();
+ System.out.println(sstring);
+ } catch (MalformedInputException e){
+ // Right error
+ return;
+ } catch (java.lang.InternalError e) {
+ throw new Exception("ByteToCharUnicode is failing incorrectly for "
+ + " single byte input");
+ }
+
+ }
+
+}
diff --git a/test/sun/nio/cs/Decode.java b/test/sun/nio/cs/Decode.java
new file mode 100644
index 000000000..d1ae78dd0
--- /dev/null
+++ b/test/sun/nio/cs/Decode.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/**/
+
+public class Decode {
+ private static boolean isAscii(char c) {
+ return c < '\u0080';
+ }
+
+ private static boolean isPrintable(char c) {
+ return ('\u0020' < c) && (c < '\u007f');
+ }
+
+ public static void main(String[] args) throws Throwable {
+ if (args.length < 2)
+ throw new Exception("Usage: java Decode CHARSET BYTE [BYTE ...]");
+ String cs = args[0];
+ byte[] bytes = new byte[args.length-1];
+ for (int i = 1; i < args.length; i++) {
+ String arg = args[i];
+ bytes[i-1] =
+ (arg.length() == 1 && isAscii(arg.charAt(0))) ?
+ (byte) arg.charAt(0) :
+ arg.equals("ESC") ? 0x1b :
+ arg.equals("SO") ? 0x0e :
+ arg.equals("SI") ? 0x0f :
+ arg.equals("SS2") ? (byte) 0x8e :
+ arg.equals("SS3") ? (byte) 0x8f :
+ arg.matches("0x.*") ? Integer.decode(arg).byteValue() :
+ Integer.decode("0x"+arg).byteValue();
+ }
+ String s = new String(bytes, cs);
+
+ for (int j = 0; j < s.length(); j++) {
+ if (j > 0)
+ System.out.print(' ');
+ char c = s.charAt(j);
+ if (isPrintable(c))
+ System.out.print(c);
+ else if (c == '\u001b') System.out.print("ESC");
+ else
+ System.out.printf("\\u%04x", (int) c);
+ }
+ System.out.print("\n");
+ }
+}
diff --git a/test/sun/nio/cs/DecoderOverflow.java b/test/sun/nio/cs/DecoderOverflow.java
new file mode 100644
index 000000000..9ce4d3e86
--- /dev/null
+++ b/test/sun/nio/cs/DecoderOverflow.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 5101128
+ @summary Check behavior of CharsetDecoder.decode when overflow occurs
+ @author Martin Buchholz
+ */
+
+import java.util.*;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class DecoderOverflow {
+ static int failures = 0;
+
+ public static void main(String[] args) throws Exception {
+ for (String csn : Charset.availableCharsets().keySet()) {
+ try {
+ test(csn);
+ } catch (Throwable t) {
+ System.out.println(csn);
+ t.printStackTrace();
+ failures++;
+ }
+ }
+ if (failures > 0)
+ throw new Exception(failures + " charsets failed");
+ }
+
+ static void test(String encoding) throws Exception {
+ String text = "Vote for Duke!";
+ Charset cs = Charset.forName(encoding);
+ if (! cs.canEncode() || ! cs.newEncoder().canEncode('.')) return;
+ ByteBuffer in = ByteBuffer.wrap(text.getBytes(encoding));
+ CharBuffer out = CharBuffer.allocate(text.length()/2);
+ CoderResult result = cs.newDecoder().decode(in, out, true);
+ if (out.hasRemaining() || ! result.isOverflow())
+ throw new Exception
+ ("out.hasRemaining()=" + out.hasRemaining() +
+ " result.isOverflow()=" + result.isOverflow() +
+ " in.capacity()=" + in.capacity() +
+ " encoding=" + encoding);
+ }
+}
diff --git a/test/sun/nio/cs/EUCJPUnderflowDecodeTest.java b/test/sun/nio/cs/EUCJPUnderflowDecodeTest.java
new file mode 100644
index 000000000..be35186e1
--- /dev/null
+++ b/test/sun/nio/cs/EUCJPUnderflowDecodeTest.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4867457
+ @summary Check for correct byte buffer underflow handling in EUC-JP
+ */
+
+import java.io.*;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class EUCJPUnderflowDecodeTest {
+ public static void main(String[] args) throws Exception{
+
+ ByteBuffer bb = ByteBuffer.allocateDirect(255);
+ CharBuffer cc = CharBuffer.allocate(255);
+
+
+ // Test both regular EUC-JP and Linux variant
+
+ String[] charsetNames = { "EUC_JP", "EUC-JP-LINUX" };
+
+ for (int i = 0 ; i < charsetNames.length; i++) {
+ Charset cs = Charset.forName(charsetNames[i]);
+ CharsetDecoder decoder = cs.newDecoder();
+ bb.clear();
+ cc.clear();
+
+ // Fakes a partial 3 byte EUC_JP (JIS-X-0212 range)
+ // encoded character/byte sequence
+ bb.put((byte)0x8f);
+ bb.put((byte)0xa2);
+ bb.flip();
+ // Now decode with endOfInput method param set to
+ // indicate to decoder that there is more encoded
+ // data to follow in a subsequent invocation
+
+ CoderResult result = decoder.decode(bb, cc, false);
+
+ // java.nio.charset.CharsetDecoder spec specifies
+ // that the coder ought to return CoderResult.UNDERFLOW
+ // when insufficient bytes have been supplied to complete
+ // the decoding operation
+
+ if (result != CoderResult.UNDERFLOW) {
+ throw new Exception("test failed - UNDERFLOW not returned");
+ }
+
+ // Repeat the test with the lead byte (minus its pursuing
+ // trail byte) for the EUC-JP 2 byte (JIS208) range
+ decoder.reset();
+ bb.clear();
+ cc.clear();
+ bb.put((byte)0xa1);
+ bb.flip();
+ result = decoder.decode(bb, cc, false);
+ if (result != CoderResult.UNDERFLOW) {
+ throw new Exception("test failed");
+ }
+
+ // finally ensure that a valid JIS208 range EUC-JP
+ // 2 byte value is correctly decoded when it is presented
+ // at the trailing bounds of a ByteBuffer in the case where
+ // charset decoder expects (endOfInput ==false) more
+ //input to follow
+
+ decoder.reset();
+ bb.clear();
+ cc.clear();
+ bb.put((byte)0xa1);
+ bb.put((byte)0xc0);
+ bb.flip();
+
+ result = decoder.decode(bb, cc, false);
+
+ cc.flip();
+
+ if (result != CoderResult.UNDERFLOW && cc.get() != '\uFF3c') {
+ throw new Exception("test failed to decode EUC-JP (0xA1C0)");
+ }
+ }
+ }
+}
diff --git a/test/sun/nio/cs/EucJpLinux0212.java b/test/sun/nio/cs/EucJpLinux0212.java
new file mode 100644
index 000000000..d28977106
--- /dev/null
+++ b/test/sun/nio/cs/EucJpLinux0212.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 6350021
+ * @summary Consistency checks when input buffer contains JISX0212 characters
+ * @author Martin Buchholz
+ */
+
+import java.io.*;
+import java.util.*;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class EucJpLinux0212 {
+ private static void equal(CharBuffer b1, CharBuffer b2) {
+ equal(b1.position(), b2.position());
+ equal(b1.limit(), b2.limit());
+ System.out.printf("positions=%d %d%n", b1.position(), b2.position());
+ System.out.printf("limits=%d %d%n", b1.limit(), b2.limit());
+ for (int i = b1.position(); i < b1.limit(); i++)
+ equal((int)b1.get(i), (int)b2.get(i));
+ }
+
+ private static void realMain(String[] args) throws Throwable {
+ List<ByteBuffer> bbs = Arrays.asList(
+ ByteBuffer.allocate(10),
+ ByteBuffer.allocateDirect(10));
+ List<CharBuffer> cbs = new ArrayList<CharBuffer>();
+
+ for (ByteBuffer bb : bbs) {
+ bb.put(new byte[]{ (byte)0x8f, 0x01, 0x02,
+ (byte)0xa1, (byte)0xc0,
+ 0x02, 0x03});
+ bb.flip();
+ CharsetDecoder decoder = Charset.forName("EUC_JP_LINUX").newDecoder();
+ decoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
+ CharBuffer cb = decoder.decode(bb);
+ cbs.add(cb);
+ }
+ equal(cbs.get(0), cbs.get(1));
+ }
+
+ //--------------------- Infrastructure ---------------------------
+ static volatile int passed = 0, failed = 0;
+ static void pass() {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 check(boolean cond) {if (cond) pass(); else fail();}
+ 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.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
+ if (failed > 0) throw new AssertionError("Some tests failed");}
+}
diff --git a/test/sun/nio/cs/EucJpLinuxDecoderRecoveryTest.java b/test/sun/nio/cs/EucJpLinuxDecoderRecoveryTest.java
new file mode 100644
index 000000000..4ca030af7
--- /dev/null
+++ b/test/sun/nio/cs/EucJpLinuxDecoderRecoveryTest.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 5016049
+ @summary ensure euc-jp-linux charset decoder recovery for unmappable input
+ */
+
+import java.io.*;
+
+public class EucJpLinuxDecoderRecoveryTest {
+ public static void main(String[] args) throws Exception {
+ byte[] encoded = {
+ // EUC_JP_LINUX mappable JIS X 0208 range
+ (byte)0xa6, (byte)0xc5,
+ // EUC_JP_LINUX Unmappable (JIS X 0212 range)
+ (byte)0x8f, (byte)0xa2, (byte)0xb7,
+ // EUC_JP_LINUX mappable JIS X 0208 range
+ (byte)0xa6, (byte)0xc7 };
+
+ char[] decodedChars = new char[3];
+ char[] expectedChars =
+ {
+ '\u03B5', // mapped
+ '\ufffd', // unmapped
+ '\u03B7' // mapped
+ };
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(encoded);
+ InputStreamReader isr = new InputStreamReader(bais, "EUC_JP_LINUX");
+ int n = 0; // number of chars decoded
+
+ try {
+ n = isr.read(decodedChars);
+ } catch (Exception ex) {
+ throw new Error("euc-jp-linux decoding broken");
+ }
+
+ // check number of decoded chars is what is expected
+ if (n != expectedChars.length)
+ throw new Error("Unexpected number of chars decoded");
+
+ // Compare actual decoded with expected
+
+ for (int i = 0; i < n; i++) {
+ if (expectedChars[i] != decodedChars[i])
+ throw new Error("euc-jp-linux decoding incorrect");
+ }
+ }
+}
diff --git a/test/sun/nio/cs/EuroConverter.java b/test/sun/nio/cs/EuroConverter.java
new file mode 100644
index 000000000..684652118
--- /dev/null
+++ b/test/sun/nio/cs/EuroConverter.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 4114080
+ * @summary Make sure the euro converters, which are derived from
+ * existing converters, only differ from their parents at the expected
+ * code point.
+ */
+
+import java.text.*;
+import java.util.*;
+import java.io.*;
+
+/* Author: Alan Liu
+ * 7/14/98
+ */
+public class EuroConverter {
+ public static void main(String args[]) throws Exception {
+ boolean pass = true;
+ char[] map = new char[256]; // map for the encoding
+ byte[] bytes = new byte[1]; // scratch
+ char[] chars = new char[1]; // scratch
+ for (int i=0; i<DATA.length; ) {
+ String euroEnc = DATA[i++];
+ String parentEnc = DATA[i++];
+ System.out.println("Checking encoder " + euroEnc + " against " + parentEnc);
+ String currentEnc = parentEnc;
+
+ try {
+ // Fill map with parent values
+ for (int j=-128; j<128; ++j) {
+ bytes[0] = (byte)j;
+ char parentValue = new String(bytes, parentEnc).charAt(0);
+ // NOTE: 0x25 doesn't round trip on the EBCDIC code pages,
+ // so we don't check that code point in the sanity check.
+ if (j != 0x0025) {
+ chars[0] = parentValue;
+ int parentRoundTrip = new String(chars).getBytes(parentEnc)[0];
+ // This is a sanity check -- we aren't really testing the parent
+ // encoder here.
+ if (parentRoundTrip != j) {
+ pass = false;
+ System.out.println("Error: Encoder " + parentEnc +
+ " fails round-trip: " + j +
+ " -> \\u" + Integer.toHexString(parentValue) +
+ " -> " + parentRoundTrip);
+ }
+ }
+ map[(j+0x100)&0xFF] = parentValue;
+ }
+
+ // Modify map with new expected values. Each pair has code point, parent value, euro value.
+ // Terminated by null.
+ while (DATA[i] != null) {
+ int codePoint = Integer.valueOf(DATA[i++], 16).intValue();
+ char expectedParentValue = DATA[i++].charAt(0);
+ char expectedEuroValue = DATA[i++].charAt(0);
+ // This is a sanity check -- we aren't really testing the parent
+ // encoder here.
+ if (map[codePoint] != expectedParentValue) {
+ pass = false;
+ System.out.println("Error: Encoder " + parentEnc +
+ " " + Integer.toHexString(codePoint) + " -> \\u" +
+ Integer.toHexString(map[codePoint]) + ", expected \\u" +
+ Integer.toHexString(expectedParentValue));
+ }
+ // Fill in new expected value
+ map[codePoint] = expectedEuroValue;
+ }
+ ++i; // Skip over null at end of set
+
+ // Now verify the euro encoder
+ currentEnc = euroEnc;
+ for (int j=-128; j<128; ++j) {
+ bytes[0] = (byte)j;
+ char euroValue = new String(bytes, euroEnc).charAt(0);
+ chars[0] = euroValue;
+ // NOTE: 0x15 doesn't round trip on the EBCDIC code pages,
+ // so we don't check that code point in the sanity check.
+ if (j != 0x0015) {
+ int euroRoundTrip = new String(chars).getBytes(euroEnc)[0];
+ if (euroRoundTrip != j) {
+ pass = false;
+ System.out.println("Error: Encoder " + euroEnc +
+ " fails round-trip at " + j);
+ }
+ }
+ // Compare against the map
+ if (euroValue != map[(j+0x100)&0xFF]) {
+ pass = false;
+ System.out.println("Error: Encoder " + euroEnc +
+ " " + Integer.toHexString((j+0x100)&0xFF) + " -> \\u" +
+ Integer.toHexString(euroValue) + ", expected \\u" +
+ Integer.toHexString(map[(j+0x100)&0xFF]));
+ }
+ }
+ } catch (UnsupportedEncodingException e) {
+ System.out.println("Unsupported encoding " + currentEnc);
+ pass = false;
+ while (i < DATA.length && DATA[i] != null) ++i;
+ ++i; // Skip over null
+ }
+ }
+ if (!pass) {
+ throw new RuntimeException("Bug 4114080 - Euro encoder test failed");
+ }
+ }
+ static String[] DATA = {
+ // New converter, parent converter, [ code point that changed, parent code point value,
+ // euro code point value ], null
+ // Any number of changed code points may be specified, including zero.
+ "ISO8859_15_FDIS", "ISO8859_1",
+ "A4", "\u00A4", "\u20AC",
+ "A6", "\u00A6", "\u0160",
+ "A8", "\u00A8", "\u0161",
+ "B4", "\u00B4", "\u017D",
+ "B8", "\u00B8", "\u017E",
+ "BC", "\u00BC", "\u0152",
+ "BD", "\u00BD", "\u0153",
+ "BE", "\u00BE", "\u0178",
+ null,
+ // 923 is IBM's name for ISO 8859-15; make sure they're identical
+ "Cp923", "ISO8859_15_FDIS", null,
+ "Cp858", "Cp850", "D5", "\u0131", "\u20AC", null,
+ "Cp1140", "Cp037", "9F", "\u00A4", "\u20AC", null,
+ "Cp1141", "Cp273", "9F", "\u00A4", "\u20AC", null,
+ "Cp1142", "Cp277", "5A", "\u00A4", "\u20AC", null,
+ "Cp1143", "Cp278", "5A", "\u00A4", "\u20AC", null,
+ "Cp1144", "Cp280", "9F", "\u00A4", "\u20AC", null,
+ "Cp1145", "Cp284", "9F", "\u00A4", "\u20AC", null,
+ "Cp1146", "Cp285", "9F", "\u00A4", "\u20AC", null,
+ "Cp1147", "Cp297", "9F", "\u00A4", "\u20AC", null,
+ "Cp1148", "Cp500", "9F", "\u00A4", "\u20AC", null,
+ "Cp1149", "Cp871", "9F", "\u00A4", "\u20AC", null,
+ };
+}
diff --git a/test/sun/nio/cs/FindASCIICodingBugs.java b/test/sun/nio/cs/FindASCIICodingBugs.java
new file mode 100644
index 000000000..bc6baaeb5
--- /dev/null
+++ b/test/sun/nio/cs/FindASCIICodingBugs.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ * @bug 6196991
+ * @summary Roundtrip Encoding/Decoding of just one ASCII char
+ * @author Martin Buchholz
+ */
+
+import java.util.*;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class FindASCIICodingBugs {
+ private static int failures = 0;
+
+ private static void check(boolean condition) {
+ if (! condition) {
+ new Error("test failed").printStackTrace();
+ failures++;
+ }
+ }
+
+ private static boolean equals(byte[] ba, ByteBuffer bb) {
+ if (ba.length != bb.limit())
+ return false;
+ for (int i = 0; i < ba.length; i++)
+ if (ba[i] != bb.get(i))
+ return false;
+ return true;
+ }
+
+ public static void main(String[] args) throws Exception {
+ for (Map.Entry<String,Charset> e
+ : Charset.availableCharsets().entrySet()) {
+ String csn = e.getKey();
+ Charset cs = e.getValue();
+
+ // Delete the following lines when these charsets are fixed!
+ if (csn.equals("x-JIS0208")) continue; // MalformedInput
+ if (csn.equals("JIS_X0212-1990")) continue; // MalformedInput
+
+ if (! cs.canEncode()) continue;
+
+ CharsetEncoder enc = cs.newEncoder();
+ CharsetDecoder dec = cs.newDecoder();
+
+ if (! enc.canEncode('A')) continue;
+
+ System.out.println(csn);
+
+ try {
+ byte[] bytes1 = "A".getBytes(csn);
+ ByteBuffer bb = enc.encode(CharBuffer.wrap(new char[]{'A'}));
+
+ check(equals(bytes1, bb));
+ check(new String(bytes1, csn).equals("A"));
+
+ CharBuffer cb = dec.decode(bb);
+ check(cb.toString().equals("A"));
+ } catch (Throwable t) {
+ t.printStackTrace();
+ failures++;
+ }
+ }
+
+ if (failures > 0)
+ throw new Exception(failures + "tests failed");
+ }
+}
diff --git a/test/sun/nio/cs/FindASCIIRangeCodingBugs.java b/test/sun/nio/cs/FindASCIIRangeCodingBugs.java
new file mode 100644
index 000000000..de466e8f8
--- /dev/null
+++ b/test/sun/nio/cs/FindASCIIRangeCodingBugs.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ * @bug 6378295
+ * @summary Roundtrip Encoding/Decoding of ASCII chars from 0x00-0x7f
+ */
+
+import java.util.*;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class FindASCIIRangeCodingBugs {
+ private static int failures = 0;
+ private static byte[] asciiBytes = new byte[0x80];
+ private static char[] asciiChars = new char[0x80];
+ private static String asciiString;
+
+ private static void check(String csn) throws Exception {
+ System.out.println(csn);
+ if (! Arrays.equals(asciiString.getBytes(csn), asciiBytes)) {
+ System.out.printf("%s -> bytes%n", csn);
+ failures++;
+ }
+ if (! new String(asciiBytes, csn).equals(asciiString)) {
+ System.out.printf("%s -> chars%n", csn);
+ failures++;
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ for (int i = 0; i < 0x80; i++) {
+ asciiBytes[i] = (byte) i;
+ asciiChars[i] = (char) i;
+ }
+ asciiString = new String(asciiChars);
+ Charset ascii = Charset.forName("ASCII");
+ for (Map.Entry<String,Charset> e
+ : Charset.availableCharsets().entrySet()) {
+ String csn = e.getKey();
+ Charset cs = e.getValue();
+ if (!cs.contains(ascii) ||
+ csn.matches(".*2022.*") || //iso2022 family
+ csn.matches("x-windows-5022[0|1]") || //windows 2022jp
+ csn.matches(".*UTF-[16|32].*")) //multi-bytes
+ continue;
+ if (! cs.canEncode()) continue;
+ try {
+ check(csn);
+ } catch (Throwable t) {
+ t.printStackTrace();
+ failures++;
+ }
+ }
+ if (failures > 0)
+ throw new Exception(failures + "tests failed");
+ }
+}
diff --git a/test/sun/nio/cs/FindCanEncodeBugs.java b/test/sun/nio/cs/FindCanEncodeBugs.java
new file mode 100644
index 000000000..164d531dc
--- /dev/null
+++ b/test/sun/nio/cs/FindCanEncodeBugs.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 5066863 5066867 5066874 5066879 5066884 5066887
+ @summary canEncode() false iff encode() throws CharacterCodingException
+ @run main/timeout=1200 FindCanEncodeBugs
+ @author Martin Buchholz
+ */
+
+import java.util.*;
+import java.nio.charset.*;
+import java.nio.*;
+
+public class FindCanEncodeBugs {
+ static boolean encodable1(CharsetEncoder enc, char c) {
+ enc.reset();
+ return enc.canEncode(c);
+ }
+
+ static boolean encodable2(CharsetEncoder enc, char c) {
+ enc.reset();
+ try { enc.encode(CharBuffer.wrap(new char[]{c})); return true; }
+ catch (CharacterCodingException e) { return false; }
+ }
+
+ public static void main(String[] args) throws Exception {
+ int failures = 0;
+
+ for (Map.Entry<String,Charset> e
+ : Charset.availableCharsets().entrySet()) {
+ String csn = e.getKey();
+ Charset cs = e.getValue();
+
+ if (! cs.canEncode() ||
+ csn.matches("x-COMPOUND_TEXT") ||
+ csn.matches("x-ISO-2022-CN-CNS") || // ISO2022_CN_CNS supports less
+ csn.matches("(x-)?IBM(970).*")) // Broken as of 2004-07
+ continue;
+
+ //System.out.println(csn);
+
+ CharsetEncoder enc = cs.newEncoder();
+
+ for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; i++) {
+ boolean encodable1 = encodable1(enc, (char)i);
+ boolean encodable2 = encodable2(enc, (char)i);
+ if (encodable1 != encodable2) {
+ int start = i;
+ int end = i;
+ for (int j = i;
+ j <= '\uffff' &&
+ encodable1(enc, (char)j) == encodable1 &&
+ encodable2(enc, (char)j) == encodable2;
+ j++)
+ end = j;
+ System.out.printf("charset=%-18s canEncode=%-5b ",
+ csn, encodable1);
+ if (start == end)
+ System.out.printf("\'\\u%04x\'%n", start);
+ else
+ System.out.printf("\'\\u%04x\' - \'\\u%04x\'%n",
+ start, end);
+ i = end;
+ failures++;
+ }
+ }
+ }
+
+ if (failures > 0)
+ throw new Exception(failures + " failures");
+ }
+}
diff --git a/test/sun/nio/cs/FindDecoderBugs.java b/test/sun/nio/cs/FindDecoderBugs.java
new file mode 100644
index 000000000..839908fc8
--- /dev/null
+++ b/test/sun/nio/cs/FindDecoderBugs.java
@@ -0,0 +1,442 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 6380723
+ * @summary Decode many byte sequences in many ways
+ * @run main/timeout=1800 FindDecoderBugs
+ * @author Martin Buchholz
+ */
+
+import java.util.*;
+import java.util.regex.*;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class FindDecoderBugs {
+
+ static boolean isBroken(String csn) {
+ if (csn.equals("x-COMPOUND_TEXT")) return true;
+ return false;
+ }
+
+ static <T extends Comparable<? super T>> List<T> sort(Collection<T> c) {
+ List<T> list = new ArrayList<T>(c);
+ Collections.sort(list);
+ return list;
+ }
+
+ static class TooManyFailures extends RuntimeException {
+ private static final long serialVersionUID = 0L;
+ }
+
+ static String string(byte[] a) {
+ final StringBuilder sb = new StringBuilder();
+ for (byte b : a) {
+ if (sb.length() != 0) sb.append(' ');
+ sb.append(String.format("%02x", b & 0xff));
+ }
+ return sb.toString();
+ }
+
+ static String string(char[] a) {
+ final StringBuilder sb = new StringBuilder();
+ for (char c : a) {
+ if (sb.length() != 0) sb.append(' ');
+ sb.append(String.format("\\u%04x", (int) c));
+ }
+ return sb.toString();
+ }
+
+ static class Reporter {
+ // Some machinery to make sure only a small number of errors
+ // that are "too similar" are reported.
+ static class Counts extends HashMap<String, Long> {
+ private static final long serialVersionUID = -1;
+ long inc(String signature) {
+ Long count = get(signature);
+ if (count == null) count = 0L;
+ put(signature, count+1);
+ return count+1;
+ }
+ }
+
+ final Counts failureCounts = new Counts();
+ final static long maxFailures = 2;
+
+ final static Pattern hideBytes = Pattern.compile("\"[0-9a-f ]+\"");
+ final static Pattern hideChars = Pattern.compile("\\\\u[0-9a-f]{4}");
+
+ boolean bug(String format, Object... args) {
+ String signature = String.format(format, args);
+ signature = hideBytes.matcher(signature).replaceAll("\"??\"");
+ signature = hideChars.matcher(signature).replaceAll("\\u????");
+ failed++;
+ if (failureCounts.inc(signature) <= maxFailures) {
+ System.out.printf(format, args);
+ System.out.println();
+ return true;
+ }
+ return false;
+ }
+
+ void summarize() {
+ for (String key : sort(failureCounts.keySet()))
+ System.out.printf("-----%n%s%nfailures=%d%n",
+ key, failureCounts.get(key));
+ }
+ }
+
+ static final Reporter reporter = new Reporter();
+
+ static class Result {
+ final int limit;
+ final int ipos;
+ final boolean direct;
+ final byte[] ia;
+ final char[] oa;
+ final CoderResult cr;
+
+ Result(ByteBuffer ib, CharBuffer ob, CoderResult cr) {
+ ipos = ib.position();
+ ia = toArray(ib);
+ oa = toArray(ob);
+ direct = ib.isDirect();
+ limit = ob.limit();
+ this.cr = cr;
+ }
+
+ static byte[] toArray(ByteBuffer b) {
+ int pos = b.position();
+ byte[] a = new byte[b.limit()];
+ b.position(0);
+ b.get(a);
+ b.position(pos);
+ return a;
+ }
+
+ static char[] toArray(CharBuffer b) {
+ char[] a = new char[b.position()];
+ b.position(0);
+ b.get(a);
+ return a;
+ }
+
+ static boolean eq(Result x, Result y) {
+ return x == y ||
+ (x != null && y != null &&
+ (Arrays.equals(x.oa, y.oa) &&
+ x.ipos == y.ipos &&
+ x.cr == y.cr));
+ }
+
+ public String toString() {
+ return String.format("\"%s\"[%d/%d] => %s \"%s\"[%d/%d]%s",
+ string(ia), ipos, ia.length,
+ cr, string(oa), oa.length, limit,
+ (direct ? " (direct)" : ""));
+ }
+ }
+
+ // legend: r=regular d=direct In=Input Ou=Output
+ static final int maxBufSize = 20;
+ static final ByteBuffer[] ribs = new ByteBuffer[maxBufSize];
+ static final ByteBuffer[] dibs = new ByteBuffer[maxBufSize];
+
+ static final CharBuffer[] robs = new CharBuffer[maxBufSize];
+ static final CharBuffer[] dobs = new CharBuffer[maxBufSize];
+ static {
+ for (int i = 0; i < maxBufSize; i++) {
+ ribs[i] = ByteBuffer.allocate(i);
+ dibs[i] = ByteBuffer.allocateDirect(i);
+ robs[i] = CharBuffer.allocate(i);
+ dobs[i] = ByteBuffer.allocateDirect(i*2).asCharBuffer();
+ }
+ }
+
+ static class CharsetTester {
+ private final Charset cs;
+ private static final long maxFailures = 5;
+ private long failures = 0;
+ // private static final long maxCharsetFailures = Long.MAX_VALUE;
+ private static final long maxCharsetFailures = 10000L;
+ private final long failed0 = failed;
+
+ CharsetTester(Charset cs) {
+ this.cs = cs;
+ }
+
+ static boolean bug(String format, Object... args) {
+ return reporter.bug(format, args);
+ }
+
+ Result recode(ByteBuffer ib, CharBuffer ob) {
+ try {
+ char canary = '\u4242';
+ ib.clear(); // Prepare to read
+ ob.clear(); // Prepare to write
+ for (int i = 0; i < ob.limit(); i++)
+ ob.put(i, canary);
+ CharsetDecoder coder = cs.newDecoder();
+ CoderResult cr = coder.decode(ib, ob, false);
+ equal(ib.limit(), ib.capacity());
+ equal(ob.limit(), ob.capacity());
+ Result r = new Result(ib, ob, cr);
+ if (cr.isError())
+ check(cr.length() > 0);
+ if (cr.isOverflow() && ob.remaining() > 10)
+ bug("OVERFLOW, but there's lots of room: %s %s",
+ cs, r);
+// if (cr.isOverflow() && ib.remaining() == 0)
+// bug("OVERFLOW, yet remaining() == 0: %s %s",
+// cs, r);
+ if (cr.isError() && ib.remaining() < cr.length())
+ bug("remaining() < CoderResult.length(): %s %s",
+ cs, r);
+// if (ib.position() == 0 && ob.position() > 0)
+// reporter. bug("output only if input consumed: %s %s",
+// cs, r);
+ // Should we warn if cr.isUnmappable() ??
+ CoderResult cr2 = coder.decode(ib, ob, false);
+ if (ib.position() != r.ipos ||
+ ob.position() != r.oa.length ||
+ cr != cr2)
+ bug("Coding operation not idempotent: %s%n %s%n %s",
+ cs, r, new Result(ib, ob, cr2));
+ if (ob.position() < ob.limit() &&
+ ob.get(ob.position()) != canary)
+ bug("Buffer overrun: %s %s %s",
+ cs, r, ob.get(ob.position()));
+ return r;
+ } catch (Throwable t) {
+ if (bug("Unexpected exception: %s %s %s",
+ cs, t.getClass().getSimpleName(),
+ new Result(ib, ob, null)))
+ t.printStackTrace();
+ return null;
+ }
+ }
+
+ Result recode2(byte[] ia, int n) {
+ int len = ia.length;
+ ByteBuffer rib = ByteBuffer.wrap(ia);
+ ByteBuffer dib = dibs[len];
+ dib.clear(); dib.put(ia); dib.clear();
+ CharBuffer rob = robs[n];
+ CharBuffer dob = dobs[n];
+ equal(rob.limit(), n);
+ equal(dob.limit(), n);
+ check(dib.isDirect());
+ check(dob.isDirect());
+ Result r1 = recode(rib, rob);
+ Result r2 = recode(dib, dob);
+ if (r1 != null && r2 != null && ! Result.eq(r1, r2))
+ bug("Results differ for direct buffers: %s%n %s%n %s",
+ cs, r1, r2);
+ return r1;
+ }
+
+ Result test(byte[] ia) {
+ if (failed - failed0 >= maxCharsetFailures)
+ throw new TooManyFailures();
+
+ Result roomy = recode2(ia, maxBufSize - 1);
+ if (roomy == null) return roomy;
+ int olen = roomy.oa.length;
+ if (olen > 0) {
+ if (roomy.ipos == roomy.ia.length) {
+ Result perfectFit = recode2(ia, olen);
+ if (! Result.eq(roomy, perfectFit))
+ bug("Results differ: %s%n %s%n %s",
+ cs, roomy, perfectFit);
+ }
+ for (int i = 0; i < olen; i++) {
+ Result claustrophobic = recode2(ia, i);
+ if (claustrophobic == null) return roomy;
+ if (roomy.cr.isUnderflow() &&
+ ! claustrophobic.cr.isOverflow())
+ bug("Expected OVERFLOW: %s%n %s%n %s",
+ cs, roomy, claustrophobic);
+ }
+ }
+ return roomy;
+ }
+
+ void testExhaustively(byte[] prefix, int n) {
+ int len = prefix.length;
+ byte[] ia = Arrays.copyOf(prefix, len + 1);
+ for (int i = 0; i < 0x100; i++) {
+ ia[len] = (byte) i;
+ if (n == 1)
+ test(ia);
+ else
+ testExhaustively(ia, n - 1);
+ }
+ }
+
+ void testRandomly(byte[] prefix, int n) {
+ int len = prefix.length;
+ byte[] ia = Arrays.copyOf(prefix, len + n);
+ for (int i = 0; i < 10000; i++) {
+ for (int j = 0; j < n; j++)
+ ia[len + j] = randomByte();
+ test(ia);
+ }
+ }
+
+ void testPrefix(byte[] prefix) {
+ if (prefix.length > 0)
+ System.out.printf("Testing prefix %s%n", string(prefix));
+
+ test(prefix);
+
+ testExhaustively(prefix, 1);
+ testExhaustively(prefix, 2);
+ // Can you spare a week of CPU time?
+ // testExhaustively(cs, tester, prefix, 3);
+
+ testRandomly(prefix, 3);
+ testRandomly(prefix, 4);
+ }
+ }
+
+ private final static Random rnd = new Random();
+ private static byte randomByte() {
+ return (byte) rnd.nextInt(0x100);
+ }
+ private static byte[] randomBytes(int len) {
+ byte[] a = new byte[len];
+ for (int i = 0; i < len; i++)
+ a[i] = randomByte();
+ return a;
+ }
+
+ private static final byte SS2 = (byte) 0x8e;
+ private static final byte SS3 = (byte) 0x8f;
+ private static final byte ESC = (byte) 0x1b;
+ private static final byte SO = (byte) 0x0e;
+ private static final byte SI = (byte) 0x0f;
+
+ private final static byte[][] stateChangers = {
+ {SS2}, {SS3}, {SO}, {SI}
+ };
+
+ private final static byte[][]escapeSequences = {
+ {ESC, '(', 'B'},
+ {ESC, '(', 'I'},
+ {ESC, '(', 'J'},
+ {ESC, '$', '@'},
+ {ESC, '$', 'A'},
+ {ESC, '$', ')', 'A'},
+ {ESC, '$', ')', 'C'},
+ {ESC, '$', ')', 'G'},
+ {ESC, '$', '*', 'H'},
+ {ESC, '$', '+', 'I'},
+ {ESC, '$', 'B'},
+ {ESC, 'N'},
+ {ESC, 'O'},
+ {ESC, '$', '(', 'D'},
+ };
+
+ private static boolean isStateChanger(Charset cs, byte[] ia) {
+ Result r = new CharsetTester(cs).recode2(ia, 9);
+ return r == null ? false :
+ (r.cr.isUnderflow() &&
+ r.ipos == ia.length &&
+ r.oa.length == 0);
+ }
+
+ private final static byte[][] incompletePrefixes = {
+ {ESC},
+ {ESC, '('},
+ {ESC, '$'},
+ {ESC, '$', '(',},
+ };
+
+ private static boolean isIncompletePrefix(Charset cs, byte[] ia) {
+ Result r = new CharsetTester(cs).recode2(ia, 9);
+ return r == null ? false :
+ (r.cr.isUnderflow() &&
+ r.ipos == 0 &&
+ r.oa.length == 0);
+ }
+
+ private static void testCharset(Charset cs) throws Throwable {
+ final String csn = cs.name();
+
+ if (isBroken(csn)) {
+ System.out.printf("Skipping possibly broken charset %s%n", csn);
+ return;
+ }
+ System.out.println(csn);
+ CharsetTester tester = new CharsetTester(cs);
+
+ tester.testPrefix(new byte[0]);
+
+ if (! csn.matches("(?:x-)?(?:UTF|JIS(?:_X)?0).*")) {
+ for (byte[] prefix : stateChangers)
+ if (isStateChanger(cs, prefix))
+ tester.testPrefix(prefix);
+
+ for (byte[] prefix : incompletePrefixes)
+ if (isIncompletePrefix(cs, prefix))
+ tester.testPrefix(prefix);
+
+ if (isIncompletePrefix(cs, new byte[] {ESC}))
+ for (byte[] prefix : escapeSequences)
+ if (isStateChanger(cs, prefix))
+ tester.testPrefix(prefix);
+ }
+ }
+
+ private static void realMain(String[] args) {
+ for (Charset cs : sort(Charset.availableCharsets().values())) {
+ try {
+ testCharset(cs);
+ } catch (TooManyFailures e) {
+ System.out.printf("Too many failures for %s%n", cs);
+ } catch (Throwable t) {
+ unexpected(t);
+ }
+ }
+ reporter.summarize();
+ }
+
+ //--------------------- Infrastructure ---------------------------
+ static volatile long passed = 0, failed = 0;
+ static void pass() {passed++;}
+ static void fail() {failed++; Thread.dumpStack();}
+ static void fail(String format, Object... args) {
+ System.out.println(String.format(format, args)); failed++;}
+ static void fail(String msg) {System.out.println(msg); fail();}
+ static void unexpected(Throwable t) {failed++; t.printStackTrace();}
+ static void check(boolean cond) {if (cond) pass(); else fail();}
+ 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.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
+ if (failed > 0) throw new AssertionError("Some tests failed");}
+}
diff --git a/test/sun/nio/cs/FindEncoderBugs.java b/test/sun/nio/cs/FindEncoderBugs.java
new file mode 100644
index 000000000..0f4c406d4
--- /dev/null
+++ b/test/sun/nio/cs/FindEncoderBugs.java
@@ -0,0 +1,529 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 6233345 6381699 6381702 6381705 6381706
+ * @summary Encode many char sequences in many ways
+ * @run main/timeout=1200 FindEncoderBugs
+ * @author Martin Buchholz
+ */
+
+import java.util.*;
+import java.util.regex.*;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class FindEncoderBugs {
+
+ static boolean isBroken(String csn) {
+ if (csn.equals("x-COMPOUND_TEXT")) return true;
+ if (csn.equals("x-IBM834")) return true; // stateful korean
+ if (csn.equals("x-IBM933")) return true; // stateful korean
+ if (csn.equals("x-IBM970")) return true; // stateful korean
+ if (csn.equals("x-IBM949")) return true; // stateful korean
+ if (csn.equals("x-IBM949C")) return true; // stateful korean
+ return false;
+ }
+
+ static <T extends Comparable<? super T>> List<T> sort(Collection<T> c) {
+ List<T> list = new ArrayList<T>(c);
+ Collections.sort(list);
+ return list;
+ }
+
+ static class TooManyFailures extends RuntimeException {
+ private static final long serialVersionUID = 0L;
+ }
+
+ static String string(byte[] a) {
+ final StringBuilder sb = new StringBuilder();
+ for (byte b : a) {
+ if (sb.length() != 0) sb.append(' ');
+ sb.append(String.format("%02x", b & 0xff));
+ }
+ return sb.toString();
+ }
+
+ static String string(char[] a) {
+ final StringBuilder sb = new StringBuilder();
+ for (char c : a) {
+ if (sb.length() != 0) sb.append(' ');
+ sb.append(String.format("\\u%04x", (int) c));
+ }
+ return sb.toString();
+ }
+
+ static class Reporter {
+ // Some machinery to make sure only a small number of errors
+ // that are "too similar" are reported.
+ static class Counts extends HashMap<String, Long> {
+ private static final long serialVersionUID = -1;
+ long inc(String signature) {
+ Long count = get(signature);
+ if (count == null) count = 0L;
+ put(signature, count+1);
+ return count+1;
+ }
+ }
+
+ final Counts failureCounts = new Counts();
+ final static long maxFailures = 2;
+
+ final static Pattern hideBytes = Pattern.compile("\"[0-9a-f ]+\"");
+ final static Pattern hideChars = Pattern.compile("\\\\u[0-9a-f]{4}");
+
+ boolean bug(String format, Object... args) {
+ String signature = String.format(format, args);
+ // signature = hideBytes.matcher(signature).replaceAll("\"??\"");
+ // signature = hideChars.matcher(signature).replaceAll("\\u????");
+ failed++;
+ if (failureCounts.inc(signature) <= maxFailures) {
+ System.out.printf(format, args);
+ System.out.println();
+ return true;
+ }
+ return false;
+ }
+
+ void summarize() {
+ for (String key : sort(failureCounts.keySet()))
+ System.out.printf("-----%n%s%nfailures=%d%n",
+ key, failureCounts.get(key));
+ }
+ }
+
+ static final Reporter reporter = new Reporter();
+
+ static class Result {
+ final int limit;
+ final int ipos;
+ final boolean direct;
+ final char[] ia;
+ final byte[] oa;
+ final CoderResult cr;
+
+ private static byte[] toByteArray(ByteBuffer bb) {
+ byte[] bytes = new byte[bb.position()];
+ for (int i = 0; i < bytes.length; i++)
+ bytes[i] = bb.get(i);
+ return bytes;
+ }
+
+ Result(CharBuffer ib, ByteBuffer ob, CoderResult cr) {
+ ipos = ib.position();
+ ia = toArray(ib);
+ oa = toArray(ob);
+ direct = ib.isDirect();
+ limit = ob.limit();
+ this.cr = cr;
+ }
+
+ static char[] toArray(CharBuffer b) {
+ int pos = b.position();
+ char[] a = new char[b.limit()];
+ b.position(0);
+ b.get(a);
+ b.position(pos);
+ return a;
+ }
+
+ static byte[] toArray(ByteBuffer b) {
+ byte[] a = new byte[b.position()];
+ b.position(0);
+ b.get(a);
+ return a;
+ }
+
+ static boolean eq(Result x, Result y) {
+ return x == y ||
+ (x != null && y != null &&
+ (Arrays.equals(x.oa, y.oa) &&
+ x.ipos == y.ipos &&
+ x.cr == y.cr));
+ }
+
+ public String toString() {
+ return String.format("\"%s\"[%d/%d] => %s \"%s\"[%d/%d]%s",
+ string(ia), ipos, ia.length,
+ cr, string(oa), oa.length, limit,
+ (direct ? " (direct)" : ""));
+ }
+ }
+
+ static class CharsetTester {
+ private final Charset cs;
+ private final boolean hasBom;
+ private static final int maxFailures = 5;
+ private int failures = 0;
+ // private static final long maxCharsetFailures = Long.MAX_VALUE;
+ private static final long maxCharsetFailures = 10000L;
+ private final long failed0 = failed;
+
+ // legend: r=regular d=direct In=Input Ou=Output
+ static final int maxBufSize = 20;
+ static final CharBuffer[] rInBuffers = new CharBuffer[maxBufSize];
+ static final CharBuffer[] dInBuffers = new CharBuffer[maxBufSize];
+
+ static final ByteBuffer[] rOuBuffers = new ByteBuffer[maxBufSize];
+ static final ByteBuffer[] dOuBuffers = new ByteBuffer[maxBufSize];
+ static {
+ for (int i = 0; i < maxBufSize; i++) {
+ rInBuffers[i] = CharBuffer.allocate(i);
+ dInBuffers[i] = ByteBuffer.allocateDirect(i*2).asCharBuffer();
+ rOuBuffers[i] = ByteBuffer.allocate(i);
+ dOuBuffers[i] = ByteBuffer.allocateDirect(i);
+ }
+ }
+
+ CharsetTester(Charset cs) {
+ this.cs = cs;
+ this.hasBom =
+ cs.name().matches(".*BOM.*") ||
+ cs.name().equals("UTF-16");
+ }
+
+ static boolean bug(String format, Object... args) {
+ return reporter.bug(format, args);
+ }
+
+ static boolean hasBom(byte[] a) {
+ switch (a.length) {
+ case 2: case 4:
+ int sum = 0;
+ for (byte x : a)
+ sum += x;
+ return sum == (byte) 0xfe + (byte) 0xff;
+ default: return false;
+ }
+ }
+
+ void testSurrogates() {
+ int failures = 0;
+ for (int i = 0; i < 10; i++) {
+ Result r = test(new char[] { randomHighSurrogate() });
+ if (r == null) break;
+ if (! (r.cr.isUnderflow() &&
+ r.ipos == 0))
+ bug("Lone high surrogate not UNDERFLOW: %s %s",
+ cs, r);
+ }
+ for (int i = 0; i < 10; i++) {
+ Result r = test(new char[] { randomLowSurrogate() });
+ if (r == null) break;
+ if (! (r.cr.isMalformed() && r.cr.length() == 1))
+ bug("Lone low surrogate not MALFORMED[1]: %s %s",
+ cs, r);
+ }
+ char[] chars = new char[2];
+ for (int i = 0; i < 10; i++) {
+ chars[0] = randomLowSurrogate(); // Always illegal
+ chars[1] = randomChar();
+ Result r = test(chars);
+ if (r == null) break;
+ if (! (r.cr.isMalformed() &&
+ r.cr.length() == 1 &&
+ (r.ipos == 0 || (hasBom && hasBom(r.oa))))) {
+ if (failures++ > 5) return;
+ bug("Unpaired low surrogate not MALFORMED[1]: %s %s",
+ cs, r);
+ }
+ }
+ for (int i = 0; i < 10; i++) {
+ chars[0] = randomHighSurrogate();
+ do {
+ chars[1] = randomChar();
+ } while (Character.isLowSurrogate(chars[1]));
+ Result r = test(chars);
+ if (r == null) break;
+ if (! (r.cr.isMalformed() &&
+ r.cr.length() == 1 &&
+ (r.ipos == 0 || (hasBom && hasBom(r.oa))))) {
+ if (failures++ > 5) return;
+ bug("Unpaired high surrogate not MALFORMED[1]: %s %s",
+ cs, r);
+ }
+ }
+ for (int i = 0; i < 1000; i++) {
+ chars[0] = randomHighSurrogate();
+ chars[1] = randomLowSurrogate();
+ Result r = test(chars);
+ if (r == null) break;
+ if (! ((r.cr.isUnmappable() &&
+ r.cr.length() == 2 &&
+ r.oa.length == 0)
+ ||
+ (r.cr.isUnderflow() &&
+ r.oa.length > 0 &&
+ r.ipos == 2))) {
+ if (failures++ > 5) return;
+ bug("Legal supplementary character bug: %s %s",
+ cs, r);
+ }
+ }
+ }
+
+// if (! (r.cr.isMalformed() &&
+// r.cr.length() == 1 &&
+// (rob.position() == 0 || hasBom(rob)))) {
+// if (failures++ > 5) return;
+// bug("Unpaired surrogate not malformed: %s %s",
+// cs, r);
+// }
+// }
+
+// dib.clear(); dib.put(chars); dib.flip();
+// rib.position(0);
+// rob.clear(); rob.limit(lim);
+// for (CharBuffer ib : new CharBuffer[] { rib, dib }) {
+// Result r = recode(ib, rob);
+// if (! (r.cr.isMalformed() &&
+// r.cr.length() == 1 &&
+// (rob.position() == 0 || hasBom(rob)))) {
+// if (failures++ > 5) return;
+// bug("Unpaired surrogate not malformed: %s %s",
+// cs, r);
+// }
+// }
+// //}
+// for (int i = 0; i < 10000; i++) {
+// chars[0] = randomHighSurrogate();
+// chars[1] = randomLowSurrogate();
+// dib.clear(); dib.put(chars); dib.flip();
+// rib.position(0);
+// rob.clear(); rob.limit(lim);
+// for (CharBuffer ib : new CharBuffer[] { rib, dib }) {
+// Result r = recode(ib, rob);
+// if (! ((r.cr.isUnmappable() &&
+// r.cr.length() == 2 &&
+// rob.position() == 0)
+// ||
+// (r.cr.isUnderflow() &&
+// rob.position() > 0 &&
+// ib.position() == 2))) {
+// if (failures++ > 5) return;
+// bug("Legal supplementary character bug: %s %s",
+// cs, r);
+// }
+// }
+// }
+// }
+// }
+
+ Result recode(CharBuffer ib, ByteBuffer ob) {
+ try {
+ byte canary = 22;
+ ib.clear(); // Prepare to read
+ ob.clear(); // Prepare to write
+ for (int i = 0; i < ob.limit(); i++)
+ ob.put(i, canary);
+ CharsetEncoder coder = cs.newEncoder();
+ CoderResult cr = coder.encode(ib, ob, false);
+ equal(ib.limit(), ib.capacity());
+ equal(ob.limit(), ob.capacity());
+ Result r = new Result(ib, ob, cr);
+ if (cr.isError())
+ check(cr.length() > 0);
+ if (cr.isOverflow() && ob.remaining() > 10)
+ bug("OVERFLOW, but there's lots of room: %s %s",
+ cs, r);
+// if (cr.isOverflow() && ib.remaining() == 0 && ! hasBom)
+// bug("OVERFLOW, yet remaining() == 0: %s %s",
+// cs, r);
+ if (cr.isError() && ib.remaining() < cr.length())
+ bug("remaining() < CoderResult.length(): %s %s",
+ cs, r);
+// if (ib.position() == 0
+// && ob.position() > 0
+// && ! hasBom(r.oa))
+// bug("output only if input consumed: %s %s",
+// cs, r);
+ CoderResult cr2 = coder.encode(ib, ob, false);
+ if (ib.position() != r.ipos ||
+ ob.position() != r.oa.length ||
+ cr != cr2)
+ bug("Coding operation not idempotent: %s%n %s%n %s",
+ cs, r, new Result(ib, ob, cr2));
+ if (ob.position() < ob.limit() &&
+ ob.get(ob.position()) != canary)
+ bug("Buffer overrun: %s %s %s",
+ cs, r, ob.get(ob.position()));
+ return r;
+ } catch (Throwable t) {
+ if (bug("Unexpected exception: %s %s %s",
+ cs, t.getClass().getSimpleName(),
+ new Result(ib, ob, null)))
+ t.printStackTrace();
+ return null;
+ }
+ }
+
+ Result recode2(char[] ia, int n) {
+ int len = ia.length;
+ CharBuffer rib = CharBuffer.wrap(ia);
+ CharBuffer dib = dInBuffers[len];
+ dib.clear(); dib.put(ia); dib.clear();
+ ByteBuffer rob = rOuBuffers[n];
+ ByteBuffer dob = dOuBuffers[n];
+ equal(rob.limit(), n);
+ equal(dob.limit(), n);
+ check(dib.isDirect());
+ check(dob.isDirect());
+ Result r1 = recode(rib, rob);
+ Result r2 = recode(dib, dob);
+ if (r1 != null && r2 != null && ! Result.eq(r1, r2))
+ bug("Results differ for direct buffers: %s%n %s%n %s",
+ cs, r1, r2);
+ return r1;
+ }
+
+ Result test(char[] ia) {
+ if (failed - failed0 >= maxCharsetFailures)
+ throw new TooManyFailures();
+
+ Result roomy = recode2(ia, maxBufSize - 1);
+ if (roomy == null) return roomy;
+ int olen = roomy.oa.length;
+ if (olen > 0) {
+ if (roomy.ipos == roomy.ia.length) {
+ Result perfectFit = recode2(ia, olen);
+ if (! Result.eq(roomy, perfectFit))
+ bug("Results differ: %s%n %s%n %s",
+ cs, roomy, perfectFit);
+ }
+ for (int i = 0; i < olen; i++) {
+ Result claustrophobic = recode2(ia, i);
+ if (claustrophobic == null) return roomy;
+ if (roomy.cr.isUnderflow() &&
+ ! claustrophobic.cr.isOverflow())
+ bug("Expected OVERFLOW: %s%n %s%n %s",
+ cs, roomy, claustrophobic);
+ }
+ }
+ return roomy;
+ }
+
+ void testExhaustively(char[] prefix, int n) {
+ int len = prefix.length;
+ char[] ia = Arrays.copyOf(prefix, len + 1);
+ for (int i = 0; i < 0x10000; i++) {
+ ia[len] = (char) i;
+ if (n == 1)
+ test(ia);
+ else
+ testExhaustively(ia, n - 1);
+ }
+ }
+
+ void testRandomly(char[] prefix, int n) {
+ int len = prefix.length;
+ char[] ia = Arrays.copyOf(prefix, len + n);
+ for (int i = 0; i < 10000; i++) {
+ for (int j = 0; j < n; j++)
+ ia[len + j] = randomChar();
+ test(ia);
+ }
+ }
+
+ void testPrefix(char[] prefix) {
+ if (prefix.length > 0)
+ System.out.printf("Testing prefix %s%n", string(prefix));
+
+ test(prefix);
+
+ testExhaustively(prefix, 1);
+ // Can you spare a year of CPU time?
+ //testExhaustively(prefix, 2);
+
+ testRandomly(prefix, 2);
+ testRandomly(prefix, 3);
+ }
+ }
+
+ private final static Random rnd = new Random();
+ private static char randomChar() {
+ return (char) rnd.nextInt(Character.MAX_VALUE);
+ }
+ private static char randomHighSurrogate() {
+ return (char) (Character.MIN_HIGH_SURROGATE + rnd.nextInt(1024));
+ }
+ private static char randomLowSurrogate() {
+ return (char) (Character.MIN_LOW_SURROGATE + rnd.nextInt(1024));
+ }
+
+ private static void testCharset(Charset cs) throws Throwable {
+ if (! cs.canEncode())
+ return;
+
+ final String csn = cs.name();
+
+ if (isBroken(csn)) {
+ System.out.printf("Skipping possibly broken charset %s%n", csn);
+ return;
+ }
+ System.out.println(csn);
+
+ CharsetTester tester = new CharsetTester(cs);
+
+ tester.testSurrogates();
+
+ tester.testPrefix(new char[] {});
+
+ if (csn.equals("x-ISCII91")) {
+ System.out.println("More ISCII testing...");
+ new CharsetTester(cs).testPrefix(new char[]{'\u094d'}); // Halant
+ new CharsetTester(cs).testPrefix(new char[]{'\u093c'}); // Nukta
+ }
+ }
+
+ private static void realMain(String[] args) {
+ for (Charset cs : sort(Charset.availableCharsets().values())) {
+ try {
+ testCharset(cs);
+ } catch (TooManyFailures e) {
+ System.out.printf("Too many failures for %s%n", cs);
+ } catch (Throwable t) {
+ unexpected(t);
+ }
+ }
+ reporter.summarize();
+ }
+
+ //--------------------- Infrastructure ---------------------------
+ static volatile long passed = 0, failed = 0;
+ static void pass() {passed++;}
+ static void fail() {failed++; Thread.dumpStack();}
+ static void fail(String format, Object... args) {
+ System.out.println(String.format(format, args)); failed++;}
+ static void fail(String msg) {System.out.println(msg); fail();}
+ static void unexpected(Throwable t) {failed++; t.printStackTrace();}
+ static void check(boolean cond) {if (cond) pass(); else fail();}
+ 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.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
+ if (failed > 0) throw new AssertionError("Some tests failed");}
+}
+
diff --git a/test/sun/nio/cs/FindOneCharEncoderBugs.java b/test/sun/nio/cs/FindOneCharEncoderBugs.java
new file mode 100644
index 000000000..ba902c56a
--- /dev/null
+++ b/test/sun/nio/cs/FindOneCharEncoderBugs.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 5058133 6233345 6381699 6381702 6381705 6381706
+ * @summary Check that all one-char sequences can be encoded by all charsets
+ * @run main/timeout=1200 FindOneCharEncoderBugs
+ * @author Martin Buchholz
+ */
+
+import java.util.*;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class FindOneCharEncoderBugs {
+ final static String[] brokenCharsets = {
+ // Delete the following lines when these charsets are fixed!
+ "x-IBM970",
+ "x-COMPOUND_TEXT", // Direct buffers not supported
+ };
+
+ private static boolean equals(byte[] ba, ByteBuffer bb) {
+ if (ba.length != bb.limit())
+ return false;
+ for (int i = 0; i < ba.length; i++)
+ if (ba[i] != bb.get(i))
+ return false;
+ return true;
+ }
+
+ private static String toString(byte[] bytes) {
+ final StringBuilder sb = new StringBuilder();
+ for (byte b : bytes) {
+ if (sb.length() != 0) sb.append(' ');
+ sb.append(String.format("%02x", (int)b));
+ }
+ return sb.toString();
+ }
+
+ private static String toString(ByteBuffer bb) {
+ final StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < bb.limit(); i++) {
+ if (sb.length() != 0) sb.append(' ');
+ sb.append(String.format("%02x", (int)bb.get(i)));
+ }
+ return sb.toString();
+ }
+
+ private static ByteBuffer convert(Charset cs, char c, CharBuffer cb) throws Throwable {
+ cb.clear(); cb.put(c); cb.flip();
+ return cs.newEncoder()
+ .onUnmappableCharacter(CodingErrorAction.REPLACE)
+ .onMalformedInput(CodingErrorAction.REPLACE)
+ .encode(cb);
+ }
+
+ /** Returns a direct CharBuffer with the same capacity as ordinary CharBuffer ocb */
+ private static CharBuffer directCharBuffer(CharBuffer ocb) {
+ final CharBuffer dcb =
+ ByteBuffer.allocateDirect(ocb.capacity() * Character.SIZE / Byte.SIZE)
+ .asCharBuffer();
+ check(! ocb.isDirect());
+ check( dcb.isDirect());
+ equal(ocb.capacity(), dcb.capacity());
+ return dcb;
+ }
+
+ private static void testChar(byte[] expected, CharBuffer cb, Charset cs, char c) {
+ try {
+ final ByteBuffer bb = convert(cs, c, cb);
+ if (! equals(expected, bb))
+ fail("bytes differ charset=%s direct=%s char=\\u%04x%n%s%n%s",
+ cs, cb.isDirect(), (int)c,
+ toString(expected), toString(bb));
+ } catch (Throwable t) {
+ System.out.printf("Unexpected exception charset=%s direct=%s char=\\u%04x%n",
+ cs, cb.isDirect(), (int)c);
+ unexpected(t);
+ failed++;
+ }
+ }
+
+ private static void testCharset(Charset cs) throws Throwable {
+ if (! cs.canEncode())
+ return;
+
+ final String csn = cs.name();
+
+ for (String n : brokenCharsets)
+ if (csn.equals(n)) {
+ System.out.printf("Skipping possibly broken charset %s%n", csn);
+ return;
+ }
+ System.out.println(csn);
+
+ final char[] theChar = new char[1];
+ final CharBuffer ocb = CharBuffer.allocate(1);
+ final CharBuffer dcb = directCharBuffer(ocb);
+ final int maxFailuresPerCharset = 5;
+ final int failed0 = failed;
+
+ for (char c = '\u0000';
+ (c+1 != 0x10000) && (failed - failed0 < maxFailuresPerCharset);
+ c++) {
+ theChar[0] = c;
+ byte[] bytes = new String(theChar).getBytes(csn);
+ if (bytes.length == 0)
+ fail("Empty output?! charset=%s char=\\u%04x", cs, (int)c);
+ testChar(bytes, ocb, cs, c);
+ testChar(bytes, dcb, cs, c);
+ }
+ }
+
+ private static void realMain(String[] args) {
+ for (Charset cs : Charset.availableCharsets().values()) {
+ try { testCharset(cs); }
+ catch (Throwable t) { unexpected(t); }
+ }
+ }
+
+ //--------------------- Infrastructure ---------------------------
+ static volatile int passed = 0, failed = 0;
+ static void pass() {passed++;}
+ static void fail() {failed++; Thread.dumpStack();}
+ static void fail(String format, Object... args) {
+ System.out.println(String.format(format, args)); failed++;}
+ static void fail(String msg) {System.out.println(msg); fail();}
+ static void unexpected(Throwable t) {failed++; t.printStackTrace();}
+ static void check(boolean cond) {if (cond) pass(); else fail();}
+ 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.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
+ if (failed > 0) throw new AssertionError("Some tests failed");}
+ private static abstract class Fun {abstract void f() throws Throwable;}
+ static void THROWS(Class<? extends Throwable> k, Fun... fs) {
+ for (Fun f : fs)
+ try { f.f(); fail("Expected " + k.getName() + " not thrown"); }
+ catch (Throwable t) {
+ if (k.isAssignableFrom(t.getClass())) pass();
+ else unexpected(t);}}
+ private static abstract class CheckedThread extends Thread {
+ abstract void realRun() throws Throwable;
+ public void run() {
+ try {realRun();} catch (Throwable t) {unexpected(t);}}}
+}
diff --git a/test/sun/nio/cs/HWKatakanaMS932EncodeTest.java b/test/sun/nio/cs/HWKatakanaMS932EncodeTest.java
new file mode 100644
index 000000000..629ef1efe
--- /dev/null
+++ b/test/sun/nio/cs/HWKatakanaMS932EncodeTest.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4715330
+ @summary Check MS932/windows-31j encoding (char->byte) for halfwidth katakana chars
+ */
+
+/*
+ * Tests encodeability of the Unicode defined Halfwidth Katakana
+ * characters using the MS932/windows-31j encoder
+ */
+
+public class HWKatakanaMS932EncodeTest {
+ public static void main(String[] args) throws Exception {
+
+ char[] testChars = new char[1];
+ byte[] testBytes = new byte[1];
+ int offset = 0;
+ String encoding = "windows-31j";
+
+ // Halfwidth Katakana chars run from U+FF61 --> U+FF9F
+ // and their native equivalents in Code page 932 run
+ // sequentially from 0xa1 --> 0xdf
+
+ for (int lsByte = 0x61 ; lsByte <= 0x9F; lsByte++, offset++) {
+ testChars[0] = (char) (lsByte | 0xFF00);
+ String s = new String(testChars);
+ testBytes = s.getBytes(encoding);
+ if ( testBytes[0] != (byte)(0xa1 + offset))
+ throw new Exception("failed Test");
+ }
+ }
+}
diff --git a/test/sun/nio/cs/ISCIITest.java b/test/sun/nio/cs/ISCIITest.java
new file mode 100644
index 000000000..48235cee3
--- /dev/null
+++ b/test/sun/nio/cs/ISCIITest.java
@@ -0,0 +1,350 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4328178
+ @summary Performs baseline and regression test on the ISCII91 charset
+ */
+
+import java.io.*;
+
+public class ISCIITest {
+
+ private static void failureReport() {
+ System.err.println ("Failed ISCII91 Regression Test");
+ }
+
+ private static void mapEquiv(int start,
+ int end,
+ String testName)
+ throws Exception
+ {
+ byte[] singleByte = new byte[1];
+ byte[] encoded = new byte[1];
+
+ for (int i = start; i <= end; i++ ) {
+ singleByte[0] = (byte) i;
+ try {
+ String unicodeStr =
+ new String (singleByte,"ISCII91");
+
+ if (i != (int)unicodeStr.charAt(0)) {
+ System.err.println ("FAILED ISCII91 Regression test"
+ + "input byte is " + i );
+ throw new Exception("");
+ }
+ encoded = unicodeStr.getBytes("ISCII91");
+
+ if (encoded[0] != singleByte[0]) {
+ System.err.println("Encoding error " + testName);
+ throw new Exception("Failed ISCII91 Regression test");
+ }
+
+ } catch (UnsupportedEncodingException e) {
+ failureReport();
+ }
+ }
+ return;
+ }
+
+ private static void checkUnmapped(int start,
+ int end,
+ String testName)
+ throws Exception {
+
+ byte[] singleByte = new byte[1];
+
+ for (int i = start; i <= end; i++ ) {
+ singleByte[0] = (byte) i;
+ try {
+ String unicodeStr = new String (singleByte, "ISCII91");
+
+ if (unicodeStr.charAt(0) != '\uFFFD') {
+ System.err.println("FAILED " + testName +
+ "input byte is " + i );
+ throw new Exception ("Failed ISCII91 regression test");
+ }
+ } catch (UnsupportedEncodingException e) {
+ System.err.println("Unsupported character encoding");
+ }
+ }
+ return;
+ }
+
+ /*
+ *
+ */
+ private static void checkRange(int start, int end,
+ char[] expectChars,
+ String testName)
+ throws Exception {
+ byte[] singleByte = new byte[1];
+ byte[] encoded = new byte[1];
+ int lookupOffset = 0;
+
+ for (int i=start; i <= end; i++ ) {
+ singleByte[0] = (byte) i;
+ String unicodeStr = new String (singleByte, "ISCII91");
+ if (unicodeStr.charAt(0) != expectChars[lookupOffset++]) {
+ throw new Exception ("Failed ISCII91 Regression Test");
+ }
+ encoded = unicodeStr.getBytes("ISCII");
+ }
+ return;
+ }
+
+ /*
+ * Tests the ISCII91 Indic character encoding
+ * as per IS 13194:1991 Bureau of Indian Standards.
+ */
+
+ private static void test () throws Exception {
+
+ try {
+
+
+ // ISCII91 is an 8-byte encoding which retains the ASCII
+ // mappings in the lower half.
+
+ mapEquiv(0, 0x7f, "7 bit ASCII range");
+
+ // Checks a range of characters which are unmappable according
+ // to the standards.
+
+ checkUnmapped(0x81, 0x9f, "UNMAPPED");
+
+ // Vowel Modifier chars can be used to modify the vowel
+ // sound of the preceding consonant, vowel or matra character.
+
+ byte[] testByte = new byte[1];
+ char[] vowelModChars = {
+ '\u0901', // Vowel modifier Chandrabindu
+ '\u0902', // Vowel modifier Anuswar
+ '\u0903' // Vowel modifier Visarg
+ };
+
+ checkRange(0xa1, 0xa3, vowelModChars, "INDIC VOWEL MODIFIER CHARS");
+
+ char[] expectChars = {
+ '\u0905', // a4 -- Vowel A
+ '\u0906', // a5 -- Vowel AA
+ '\u0907', // a6 -- Vowel I
+ '\u0908', // a7 -- Vowel II
+ '\u0909', // a8 -- Vowel U
+ '\u090a', // a9 -- Vowel UU
+ '\u090b', // aa -- Vowel RI
+ '\u090e', // ab -- Vowel E ( Southern Scripts )
+ '\u090f', // ac -- Vowel EY
+ '\u0910', // ad -- Vowel AI
+ '\u090d', // ae -- Vowel AYE ( Devanagari Script )
+ '\u0912', // af -- Vowel O ( Southern Scripts )
+ '\u0913', // b0 -- Vowel OW
+ '\u0914', // b1 -- Vowel AU
+ '\u0911', // b2 -- Vowel AWE ( Devanagari Script )
+ };
+
+ checkRange(0xa4, 0xb2, expectChars, "INDIC VOWELS");
+
+ char[] expectConsChars =
+ {
+ '\u0915', // b3 -- Consonant KA
+ '\u0916', // b4 -- Consonant KHA
+ '\u0917', // b5 -- Consonant GA
+ '\u0918', // b6 -- Consonant GHA
+ '\u0919', // b7 -- Consonant NGA
+ '\u091a', // b8 -- Consonant CHA
+ '\u091b', // b9 -- Consonant CHHA
+ '\u091c', // ba -- Consonant JA
+ '\u091d', // bb -- Consonant JHA
+ '\u091e', // bc -- Consonant JNA
+ '\u091f', // bd -- Consonant Hard TA
+ '\u0920', // be -- Consonant Hard THA
+ '\u0921', // bf -- Consonant Hard DA
+ '\u0922', // c0 -- Consonant Hard DHA
+ '\u0923', // c1 -- Consonant Hard NA
+ '\u0924', // c2 -- Consonant Soft TA
+ '\u0925', // c3 -- Consonant Soft THA
+ '\u0926', // c4 -- Consonant Soft DA
+ '\u0927', // c5 -- Consonant Soft DHA
+ '\u0928', // c6 -- Consonant Soft NA
+ '\u0929', // c7 -- Consonant NA ( Tamil )
+ '\u092a', // c8 -- Consonant PA
+ '\u092b', // c9 -- Consonant PHA
+ '\u092c', // ca -- Consonant BA
+ '\u092d', // cb -- Consonant BHA
+ '\u092e', // cc -- Consonant MA
+ '\u092f', // cd -- Consonant YA
+ '\u095f', // ce -- Consonant JYA ( Bengali, Assamese & Oriya )
+ '\u0930', // cf -- Consonant RA
+ '\u0931', // d0 -- Consonant Hard RA ( Southern Scripts )
+ '\u0932', // d1 -- Consonant LA
+ '\u0933', // d2 -- Consonant Hard LA
+ '\u0934', // d3 -- Consonant ZHA ( Tamil & Malayalam )
+ '\u0935', // d4 -- Consonant VA
+ '\u0936', // d5 -- Consonant SHA
+ '\u0937', // d6 -- Consonant Hard SHA
+ '\u0938', // d7 -- Consonant SA
+ '\u0939', // d8 -- Consonant HA
+ };
+
+ checkRange(0xb3, 0xd8, expectConsChars, "INDIC CONSONANTS");
+
+ char[] matraChars = {
+ '\u093e', // da -- Vowel Sign AA
+ '\u093f', // db -- Vowel Sign I
+ '\u0940', // dc -- Vowel Sign II
+ '\u0941', // dd -- Vowel Sign U
+ '\u0942', // de -- Vowel Sign UU
+ '\u0943', // df -- Vowel Sign RI
+ '\u0946', // e0 -- Vowel Sign E ( Southern Scripts )
+ '\u0947', // e1 -- Vowel Sign EY
+ '\u0948', // e2 -- Vowel Sign AI
+ '\u0945', // e3 -- Vowel Sign AYE ( Devanagari Script )
+ '\u094a', // e4 -- Vowel Sign O ( Southern Scripts )
+ '\u094b', // e5 -- Vowel Sign OW
+ '\u094c', // e6 -- Vowel Sign AU
+ '\u0949' // e7 -- Vowel Sign AWE ( Devanagari Script )
+ };
+
+ // Matras or Vowel signs alter the implicit
+ // vowel sound associated with an Indic consonant.
+
+ checkRange(0xda, 0xe7, matraChars, "INDIC MATRAS");
+
+ char[] loneContextModifierChars = {
+ '\u094d', // e8 -- Vowel Omission Sign ( Halant )
+ '\u093c', // e9 -- Diacritic Sign ( Nukta )
+ '\u0964' // ea -- Full Stop ( Viram, Northern Scripts )
+ };
+
+ checkRange(0xe8, 0xea,
+ loneContextModifierChars, "LONE INDIC CONTEXT CHARS");
+
+
+ // Test Indic script numeral chars
+ // (as opposed to international numerals)
+
+ char[] expectNumeralChars =
+ {
+ '\u0966', // f1 -- Digit 0
+ '\u0967', // f2 -- Digit 1
+ '\u0968', // f3 -- Digit 2
+ '\u0969', // f4 -- Digit 3
+ '\u096a', // f5 -- Digit 4
+ '\u096b', // f6 -- Digit 5
+ '\u096c', // f7 -- Digit 6
+ '\u096d', // f8 -- Digit 7
+ '\u096e', // f9 -- Digit 8
+ '\u096f' // fa -- Digit 9
+ };
+
+ checkRange(0xf1, 0xfa,
+ expectNumeralChars, "NUMERAL/DIGIT CHARACTERS");
+ int lookupOffset = 0;
+
+ char[] expectNuktaSub = {
+ '\u0950',
+ '\u090c',
+ '\u0961',
+ '\u0960',
+ '\u0962',
+ '\u0963',
+ '\u0944',
+ '\u093d'
+ };
+
+ /*
+ * ISCII uses a number of code extension techniques
+ * to access a number of lesser used characters.
+ * The Nukta character which ordinarily signifies
+ * a diacritic is used in combination with existing
+ * characters to escape them to a different character.
+ * value.
+ */
+
+ byte[] codeExtensionBytes = {
+ (byte)0xa1 , (byte)0xe9, // Chandrabindu + Nukta
+ // =>DEVANAGARI OM SIGN
+ (byte)0xa6 , (byte)0xe9, // Vowel I + Nukta
+ // => DEVANAGARI VOCALIC L
+ (byte)0xa7 , (byte)0xe9, // Vowel II + Nukta
+ // => DEVANAGARI VOCALIC LL
+ (byte)0xaa , (byte)0xe9, // Vowel RI + Nukta
+ // => DEVANAGARI VOCALIC RR
+ (byte)0xdb , (byte)0xe9, // Vowel sign I + Nukta
+ // => DEVANAGARI VOWEL SIGN VOCALIC L
+ (byte)0xdc , (byte)0xe9, // Vowel sign II + Nukta
+ // => DEVANAGARI VOWEL SIGN VOCALIC LL
+
+ (byte)0xdf , (byte)0xe9, // Vowel sign Vocalic R + Nukta
+ // => DEVANAGARI VOWEL SIGN VOCALIC RR
+ (byte)0xea , (byte)0xe9 // Full stop/Phrase separator + Nukta
+ // => DEVANAGARI SIGN AVAGRAHA
+ };
+
+ lookupOffset = 0;
+ byte[] bytePair = new byte[2];
+
+ for (int i=0; i < (codeExtensionBytes.length)/2; i++ ) {
+ bytePair[0] = (byte) codeExtensionBytes[lookupOffset++];
+ bytePair[1] = (byte) codeExtensionBytes[lookupOffset++];
+
+ String unicodeStr = new String (bytePair,"ISCII91");
+ if (unicodeStr.charAt(0) != expectNuktaSub[i]) {
+ throw new Exception("Failed Nukta Sub");
+ }
+ }
+
+ lookupOffset = 0;
+ byte[] comboBytes = {
+ (byte)0xe8 , (byte)0xe8, //HALANT + HALANT
+ (byte)0xe8 , (byte)0xe9 //HALANT + NUKTA aka. Soft Halant
+ };
+ char[] expectCombChars = {
+ '\u094d',
+ '\u200c',
+ '\u094d',
+ '\u200d'
+ };
+
+ for (int i=0; i < (comboBytes.length)/2; i++ ) {
+ bytePair[0] = (byte) comboBytes[lookupOffset++];
+ bytePair[1] = (byte) comboBytes[lookupOffset];
+ String unicodeStr = new String (bytePair, "ISCII91");
+ if (unicodeStr.charAt(0) != expectCombChars[lookupOffset-1]
+ && unicodeStr.charAt(1) != expectCombChars[lookupOffset]) {
+ throw new Exception("Failed ISCII91 Regression Test");
+ }
+ lookupOffset++;
+ }
+
+ } catch (UnsupportedEncodingException e) {
+ System.err.println ("ISCII91 encoding not supported");
+ throw new Exception ("Failed ISCII91 Regression Test");
+ }
+ }
+
+ public static void main (String[] args) throws Exception {
+ test();
+ }
+}
diff --git a/test/sun/nio/cs/ISO2022JP.trailEsc b/test/sun/nio/cs/ISO2022JP.trailEsc
new file mode 100644
index 000000000..0709a6919
--- /dev/null
+++ b/test/sun/nio/cs/ISO2022JP.trailEsc
@@ -0,0 +1,454 @@
+test0
+ $B!!(B $B!"(B $B!#(B $B!$(B $B!%(B $B!&(B $B!'(B $B!((B $B!)(B $B!*(B $B!+(B $B!,(B $B!-(B $B!.(B $B!/(B
+$B!0(B $B!1(B $B!2(B $B!3(B $B!4(B $B!5(B $B!6(B $B!7(B $B!8(B $B!9(B $B!:(B $B!;(B $B!<(B $B!=(B $B!>(B $B!?(B
+ $B!A(B $B!B(B $B!C(B $B!D(B $B!E(B $B!F(B $B!G(B $B!H(B $B!I(B $B!J(B $B!K(B $B!L(B $B!M(B $B!N(B $B!O(B
+$B!P(B $B!Q(B $B!R(B $B!S(B $B!T(B $B!U(B $B!V(B $B!W(B $B!X(B $B!Y(B $B!Z(B $B![(B $B!\(B $B!](B $B!^(B $B!_(B
+$B!`(B $B!a(B $B!b(B $B!c(B $B!d(B $B!e(B $B!f(B $B!g(B $B!h(B $B!i(B $B!j(B $B!k(B $B!l(B $B!m(B $B!n(B $B!o(B
+$B!p(B $B!q(B $B!r(B $B!s(B $B!t(B $B!u(B $B!v(B $B!w(B $B!x(B $B!y(B $B!z(B $B!{(B $B!|(B $B!}(B $B!~(B
+ $B"!(B $B""(B $B"#(B $B"$(B $B"%(B $B"&(B $B"'(B $B"((B $B")(B $B"*(B $B"+(B $B",(B $B"-(B $B".(B
+ $B":(B $B";(B $B"<(B $B"=(B $B">(B $B"?(B
+$B"@(B $B"A(B $B"J(B $B"K(B $B"L(B $B"M(B $B"N(B $B"O(B
+$B"P(B $B"\(B $B"](B $B"^(B $B"_(B
+$B"`(B $B"a(B $B"b(B $B"c(B $B"d(B $B"e(B $B"f(B $B"g(B $B"h(B $B"i(B $B"j(B
+ $B"r(B $B"s(B $B"t(B $B"u(B $B"v(B $B"w(B $B"x(B $B"y(B $B"~(B
+$B#0(B $B#1(B $B#2(B $B#3(B $B#4(B $B#5(B $B#6(B $B#7(B $B#8(B $B#9(B
+ $B#A(B $B#B(B $B#C(B $B#D(B $B#E(B $B#F(B $B#G(B $B#H(B $B#I(B $B#J(B $B#K(B $B#L(B $B#M(B $B#N(B $B#O(B
+$B#P(B $B#Q(B $B#R(B $B#S(B $B#T(B $B#U(B $B#V(B $B#W(B $B#X(B $B#Y(B $B#Z(B
+ $B#a(B $B#b(B $B#c(B $B#d(B $B#e(B $B#f(B $B#g(B $B#h(B $B#i(B $B#j(B $B#k(B $B#l(B $B#m(B $B#n(B $B#o(B
+$B#p(B $B#q(B $B#r(B $B#s(B $B#t(B $B#u(B $B#v(B $B#w(B $B#x(B $B#y(B $B#z(B
+ $B$!(B $B$"(B $B$#(B $B$$(B $B$%(B $B$&(B $B$'(B $B$((B $B$)(B $B$*(B $B$+(B $B$,(B $B$-(B $B$.(B $B$/(B
+$B$0(B $B$1(B $B$2(B $B$3(B $B$4(B $B$5(B $B$6(B $B$7(B $B$8(B $B$9(B $B$:(B $B$;(B $B$<(B $B$=(B $B$>(B $B$?(B
+$B$@(B $B$A(B $B$B(B $B$C(B $B$D(B $B$E(B $B$F(B $B$G(B $B$H(B $B$I(B $B$J(B $B$K(B $B$L(B $B$M(B $B$N(B $B$O(B
+$B$P(B $B$Q(B $B$R(B $B$S(B $B$T(B $B$U(B $B$V(B $B$W(B $B$X(B $B$Y(B $B$Z(B $B$[(B $B$\(B $B$](B $B$^(B $B$_(B
+$B$`(B $B$a(B $B$b(B $B$c(B $B$d(B $B$e(B $B$f(B $B$g(B $B$h(B $B$i(B $B$j(B $B$k(B $B$l(B $B$m(B $B$n(B $B$o(B
+$B$p(B $B$q(B $B$r(B $B$s(B
+ $B%!(B $B%"(B $B%#(B $B%$(B $B%%(B $B%&(B $B%'(B $B%((B $B%)(B $B%*(B $B%+(B $B%,(B $B%-(B $B%.(B $B%/(B
+$B%0(B $B%1(B $B%2(B $B%3(B $B%4(B $B%5(B $B%6(B $B%7(B $B%8(B $B%9(B $B%:(B $B%;(B $B%<(B $B%=(B $B%>(B $B%?(B
+$B%@(B $B%A(B $B%B(B $B%C(B $B%D(B $B%E(B $B%F(B $B%G(B $B%H(B $B%I(B $B%J(B $B%K(B $B%L(B $B%M(B $B%N(B $B%O(B
+$B%P(B $B%Q(B $B%R(B $B%S(B $B%T(B $B%U(B $B%V(B $B%W(B $B%X(B $B%Y(B $B%Z(B $B%[(B $B%\(B $B%](B $B%^(B $B%_(B
+$B%`(B $B%a(B $B%b(B $B%c(B $B%d(B $B%e(B $B%f(B $B%g(B $B%h(B $B%i(B $B%j(B $B%k(B $B%l(B $B%m(B $B%n(B $B%o(B
+$B%p(B $B%q(B $B%r(B $B%s(B $B%t(B $B%u(B $B%v(B
+ $B&!(B $B&"(B $B&#(B $B&$(B $B&%(B $B&&(B $B&'(B $B&((B $B&)(B $B&*(B $B&+(B $B&,(B $B&-(B $B&.(B $B&/(B
+$B&0(B $B&1(B $B&2(B $B&3(B $B&4(B $B&5(B $B&6(B $B&7(B $B&8(B
+ $B&A(B $B&B(B $B&C(B $B&D(B $B&E(B $B&F(B $B&G(B $B&H(B $B&I(B $B&J(B $B&K(B $B&L(B $B&M(B $B&N(B $B&O(B
+$B&P(B $B&Q(B $B&R(B $B&S(B $B&T(B $B&U(B $B&V(B $B&W(B $B&X(B
+ $B'!(B $B'"(B $B'#(B $B'$(B $B'%(B $B'&(B $B''(B $B'((B $B')(B $B'*(B $B'+(B $B',(B $B'-(B $B'.(B $B'/(B
+$B'0(B $B'1(B $B'2(B $B'3(B $B'4(B $B'5(B $B'6(B $B'7(B $B'8(B $B'9(B $B':(B $B';(B $B'<(B $B'=(B $B'>(B $B'?(B
+$B'@(B $B'A(B
+ $B'Q(B $B'R(B $B'S(B $B'T(B $B'U(B $B'V(B $B'W(B $B'X(B $B'Y(B $B'Z(B $B'[(B $B'\(B $B'](B $B'^(B $B'_(B
+$B'`(B $B'a(B $B'b(B $B'c(B $B'd(B $B'e(B $B'f(B $B'g(B $B'h(B $B'i(B $B'j(B $B'k(B $B'l(B $B'm(B $B'n(B $B'o(B
+$B'p(B $B'q(B
+ $B(!(B $B("(B $B(#(B $B($(B $B(%(B $B(&(B $B('(B $B(((B $B()(B $B(*(B $B(+(B $B(,(B $B(-(B $B(.(B $B(/(B
+$B(0(B $B(1(B $B(2(B $B(3(B $B(4(B $B(5(B $B(6(B $B(7(B $B(8(B $B(9(B $B(:(B $B(;(B $B(<(B $B(=(B $B(>(B $B(?(B
+$B(@(B
+ $B0!(B $B0"(B $B0#(B $B0$(B $B0%(B $B0&(B $B0'(B $B0((B $B0)(B $B0*(B $B0+(B $B0,(B $B0-(B $B0.(B $B0/(B
+$B00(B $B01(B $B02(B $B03(B $B04(B $B05(B $B06(B $B07(B $B08(B $B09(B $B0:(B $B0;(B $B0<(B $B0=(B $B0>(B $B0?(B
+$B0@(B $B0A(B $B0B(B $B0C(B $B0D(B $B0E(B $B0F(B $B0G(B $B0H(B $B0I(B $B0J(B $B0K(B $B0L(B $B0M(B $B0N(B $B0O(B
+$B0P(B $B0Q(B $B0R(B $B0S(B $B0T(B $B0U(B $B0V(B $B0W(B $B0X(B $B0Y(B $B0Z(B $B0[(B $B0\(B $B0](B $B0^(B $B0_(B
+$B0`(B $B0a(B $B0b(B $B0c(B $B0d(B $B0e(B $B0f(B $B0g(B $B0h(B $B0i(B $B0j(B $B0k(B $B0l(B $B0m(B $B0n(B $B0o(B
+$B0p(B $B0q(B $B0r(B $B0s(B $B0t(B $B0u(B $B0v(B $B0w(B $B0x(B $B0y(B $B0z(B $B0{(B $B0|(B $B0}(B $B0~(B
+ $B1!(B $B1"(B $B1#(B $B1$(B $B1%(B $B1&(B $B1'(B $B1((B $B1)(B $B1*(B $B1+(B $B1,(B $B1-(B $B1.(B $B1/(B
+$B10(B $B11(B $B12(B $B13(B $B14(B $B15(B $B16(B $B17(B $B18(B $B19(B $B1:(B $B1;(B $B1<(B $B1=(B $B1>(B $B1?(B
+$B1@(B $B1A(B $B1B(B $B1C(B $B1D(B $B1E(B $B1F(B $B1G(B $B1H(B $B1I(B $B1J(B $B1K(B $B1L(B $B1M(B $B1N(B $B1O(B
+$B1P(B $B1Q(B $B1R(B $B1S(B $B1T(B $B1U(B $B1V(B $B1W(B $B1X(B $B1Y(B $B1Z(B $B1[(B $B1\(B $B1](B $B1^(B $B1_(B
+$B1`(B $B1a(B $B1b(B $B1c(B $B1d(B $B1e(B $B1f(B $B1g(B $B1h(B $B1i(B $B1j(B $B1k(B $B1l(B $B1m(B $B1n(B $B1o(B
+$B1p(B $B1q(B $B1r(B $B1s(B $B1t(B $B1u(B $B1v(B $B1w(B $B1x(B $B1y(B $B1z(B $B1{(B $B1|(B $B1}(B $B1~(B
+ $B2!(B $B2"(B $B2#(B $B2$(B $B2%(B $B2&(B $B2'(B $B2((B $B2)(B $B2*(B $B2+(B $B2,(B $B2-(B $B2.(B $B2/(B
+$B20(B $B21(B $B22(B $B23(B $B24(B $B25(B $B26(B $B27(B $B28(B $B29(B $B2:(B $B2;(B $B2<(B $B2=(B $B2>(B $B2?(B
+$B2@(B $B2A(B $B2B(B $B2C(B $B2D(B $B2E(B $B2F(B $B2G(B $B2H(B $B2I(B $B2J(B $B2K(B $B2L(B $B2M(B $B2N(B $B2O(B
+$B2P(B $B2Q(B $B2R(B $B2S(B $B2T(B $B2U(B $B2V(B $B2W(B $B2X(B $B2Y(B $B2Z(B $B2[(B $B2\(B $B2](B $B2^(B $B2_(B
+$B2`(B $B2a(B $B2b(B $B2c(B $B2d(B $B2e(B $B2f(B $B2g(B $B2h(B $B2i(B $B2j(B $B2k(B $B2l(B $B2m(B $B2n(B $B2o(B
+$B2p(B $B2q(B $B2r(B $B2s(B $B2t(B $B2u(B $B2v(B $B2w(B $B2x(B $B2y(B $B2z(B $B2{(B $B2|(B $B2}(B $B2~(B
+ $B3!(B $B3"(B $B3#(B $B3$(B $B3%(B $B3&(B $B3'(B $B3((B $B3)(B $B3*(B $B3+(B $B3,(B $B3-(B $B3.(B $B3/(B
+$B30(B $B31(B $B32(B $B33(B $B34(B $B35(B $B36(B $B37(B $B38(B $B39(B $B3:(B $B3;(B $B3<(B $B3=(B $B3>(B $B3?(B
+$B3@(B $B3A(B $B3B(B $B3C(B $B3D(B $B3E(B $B3F(B $B3G(B $B3H(B $B3I(B $B3J(B $B3K(B $B3L(B $B3M(B $B3N(B $B3O(B
+$B3P(B $B3Q(B $B3R(B $B3S(B $B3T(B $B3U(B $B3V(B $B3W(B $B3X(B $B3Y(B $B3Z(B $B3[(B $B3\(B $B3](B $B3^(B $B3_(B
+$B3`(B $B3a(B $B3b(B $B3c(B $B3d(B $B3e(B $B3f(B $B3g(B $B3h(B $B3i(B $B3j(B $B3k(B $B3l(B $B3m(B $B3n(B $B3o(B
+$B3p(B $B3q(B $B3r(B $B3s(B $B3t(B $B3u(B $B3v(B $B3w(B $B3x(B $B3y(B $B3z(B $B3{(B $B3|(B $B3}(B $B3~(B
+ $B4!(B $B4"(B $B4#(B $B4$(B $B4%(B $B4&(B $B4'(B $B4((B $B4)(B $B4*(B $B4+(B $B4,(B $B4-(B $B4.(B $B4/(B
+$B40(B $B41(B $B42(B $B43(B $B44(B $B45(B $B46(B $B47(B $B48(B $B49(B $B4:(B $B4;(B $B4<(B $B4=(B $B4>(B $B4?(B
+$B4@(B $B4A(B $B4B(B $B4C(B $B4D(B $B4E(B $B4F(B $B4G(B $B4H(B $B4I(B $B4J(B $B4K(B $B4L(B $B4M(B $B4N(B $B4O(B
+$B4P(B $B4Q(B $B4R(B $B4S(B $B4T(B $B4U(B $B4V(B $B4W(B $B4X(B $B4Y(B $B4Z(B $B4[(B $B4\(B $B4](B $B4^(B $B4_(B
+$B4`(B $B4a(B $B4b(B $B4c(B $B4d(B $B4e(B $B4f(B $B4g(B $B4h(B $B4i(B $B4j(B $B4k(B $B4l(B $B4m(B $B4n(B $B4o(B
+$B4p(B $B4q(B $B4r(B $B4s(B $B4t(B $B4u(B $B4v(B $B4w(B $B4x(B $B4y(B $B4z(B $B4{(B $B4|(B $B4}(B $B4~(B
+ $B5!(B $B5"(B $B5#(B $B5$(B $B5%(B $B5&(B $B5'(B $B5((B $B5)(B $B5*(B $B5+(B $B5,(B $B5-(B $B5.(B $B5/(B
+$B50(B $B51(B $B52(B $B53(B $B54(B $B55(B $B56(B $B57(B $B58(B $B59(B $B5:(B $B5;(B $B5<(B $B5=(B $B5>(B $B5?(B
+$B5@(B $B5A(B $B5B(B $B5C(B $B5D(B $B5E(B $B5F(B $B5G(B $B5H(B $B5I(B $B5J(B $B5K(B $B5L(B $B5M(B $B5N(B $B5O(B
+$B5P(B $B5Q(B $B5R(B $B5S(B $B5T(B $B5U(B $B5V(B $B5W(B $B5X(B $B5Y(B $B5Z(B $B5[(B $B5\(B $B5](B $B5^(B $B5_(B
+$B5`(B $B5a(B $B5b(B $B5c(B $B5d(B $B5e(B $B5f(B $B5g(B $B5h(B $B5i(B $B5j(B $B5k(B $B5l(B $B5m(B $B5n(B $B5o(B
+$B5p(B $B5q(B $B5r(B $B5s(B $B5t(B $B5u(B $B5v(B $B5w(B $B5x(B $B5y(B $B5z(B $B5{(B $B5|(B $B5}(B $B5~(B
+ $B6!(B $B6"(B $B6#(B $B6$(B $B6%(B $B6&(B $B6'(B $B6((B $B6)(B $B6*(B $B6+(B $B6,(B $B6-(B $B6.(B $B6/(B
+$B60(B $B61(B $B62(B $B63(B $B64(B $B65(B $B66(B $B67(B $B68(B $B69(B $B6:(B $B6;(B $B6<(B $B6=(B $B6>(B $B6?(B
+$B6@(B $B6A(B $B6B(B $B6C(B $B6D(B $B6E(B $B6F(B $B6G(B $B6H(B $B6I(B $B6J(B $B6K(B $B6L(B $B6M(B $B6N(B $B6O(B
+$B6P(B $B6Q(B $B6R(B $B6S(B $B6T(B $B6U(B $B6V(B $B6W(B $B6X(B $B6Y(B $B6Z(B $B6[(B $B6\(B $B6](B $B6^(B $B6_(B
+$B6`(B $B6a(B $B6b(B $B6c(B $B6d(B $B6e(B $B6f(B $B6g(B $B6h(B $B6i(B $B6j(B $B6k(B $B6l(B $B6m(B $B6n(B $B6o(B
+$B6p(B $B6q(B $B6r(B $B6s(B $B6t(B $B6u(B $B6v(B $B6w(B $B6x(B $B6y(B $B6z(B $B6{(B $B6|(B $B6}(B $B6~(B
+ $B7!(B $B7"(B $B7#(B $B7$(B $B7%(B $B7&(B $B7'(B $B7((B $B7)(B $B7*(B $B7+(B $B7,(B $B7-(B $B7.(B $B7/(B
+$B70(B $B71(B $B72(B $B73(B $B74(B $B75(B $B76(B $B77(B $B78(B $B79(B $B7:(B $B7;(B $B7<(B $B7=(B $B7>(B $B7?(B
+$B7@(B $B7A(B $B7B(B $B7C(B $B7D(B $B7E(B $B7F(B $B7G(B $B7H(B $B7I(B $B7J(B $B7K(B $B7L(B $B7M(B $B7N(B $B7O(B
+$B7P(B $B7Q(B $B7R(B $B7S(B $B7T(B $B7U(B $B7V(B $B7W(B $B7X(B $B7Y(B $B7Z(B $B7[(B $B7\(B $B7](B $B7^(B $B7_(B
+$B7`(B $B7a(B $B7b(B $B7c(B $B7d(B $B7e(B $B7f(B $B7g(B $B7h(B $B7i(B $B7j(B $B7k(B $B7l(B $B7m(B $B7n(B $B7o(B
+$B7p(B $B7q(B $B7r(B $B7s(B $B7t(B $B7u(B $B7v(B $B7w(B $B7x(B $B7y(B $B7z(B $B7{(B $B7|(B $B7}(B $B7~(B
+ $B8!(B $B8"(B $B8#(B $B8$(B $B8%(B $B8&(B $B8'(B $B8((B $B8)(B $B8*(B $B8+(B $B8,(B $B8-(B $B8.(B $B8/(B
+$B80(B $B81(B $B82(B $B83(B $B84(B $B85(B $B86(B $B87(B $B88(B $B89(B $B8:(B $B8;(B $B8<(B $B8=(B $B8>(B $B8?(B
+$B8@(B $B8A(B $B8B(B $B8C(B $B8D(B $B8E(B $B8F(B $B8G(B $B8H(B $B8I(B $B8J(B $B8K(B $B8L(B $B8M(B $B8N(B $B8O(B
+$B8P(B $B8Q(B $B8R(B $B8S(B $B8T(B $B8U(B $B8V(B $B8W(B $B8X(B $B8Y(B $B8Z(B $B8[(B $B8\(B $B8](B $B8^(B $B8_(B
+$B8`(B $B8a(B $B8b(B $B8c(B $B8d(B $B8e(B $B8f(B $B8g(B $B8h(B $B8i(B $B8j(B $B8k(B $B8l(B $B8m(B $B8n(B $B8o(B
+$B8p(B $B8q(B $B8r(B $B8s(B $B8t(B $B8u(B $B8v(B $B8w(B $B8x(B $B8y(B $B8z(B $B8{(B $B8|(B $B8}(B $B8~(B
+ $B9!(B $B9"(B $B9#(B $B9$(B $B9%(B $B9&(B $B9'(B $B9((B $B9)(B $B9*(B $B9+(B $B9,(B $B9-(B $B9.(B $B9/(B
+$B90(B $B91(B $B92(B $B93(B $B94(B $B95(B $B96(B $B97(B $B98(B $B99(B $B9:(B $B9;(B $B9<(B $B9=(B $B9>(B $B9?(B
+$B9@(B $B9A(B $B9B(B $B9C(B $B9D(B $B9E(B $B9F(B $B9G(B $B9H(B $B9I(B $B9J(B $B9K(B $B9L(B $B9M(B $B9N(B $B9O(B
+$B9P(B $B9Q(B $B9R(B $B9S(B $B9T(B $B9U(B $B9V(B $B9W(B $B9X(B $B9Y(B $B9Z(B $B9[(B $B9\(B $B9](B $B9^(B $B9_(B
+$B9`(B $B9a(B $B9b(B $B9c(B $B9d(B $B9e(B $B9f(B $B9g(B $B9h(B $B9i(B $B9j(B $B9k(B $B9l(B $B9m(B $B9n(B $B9o(B
+$B9p(B $B9q(B $B9r(B $B9s(B $B9t(B $B9u(B $B9v(B $B9w(B $B9x(B $B9y(B $B9z(B $B9{(B $B9|(B $B9}(B $B9~(B
+ $B:!(B $B:"(B $B:#(B $B:$(B $B:%(B $B:&(B $B:'(B $B:((B $B:)(B $B:*(B $B:+(B $B:,(B $B:-(B $B:.(B $B:/(B
+$B:0(B $B:1(B $B:2(B $B:3(B $B:4(B $B:5(B $B:6(B $B:7(B $B:8(B $B:9(B $B::(B $B:;(B $B:<(B $B:=(B $B:>(B $B:?(B
+$B:@(B $B:A(B $B:B(B $B:C(B $B:D(B $B:E(B $B:F(B $B:G(B $B:H(B $B:I(B $B:J(B $B:K(B $B:L(B $B:M(B $B:N(B $B:O(B
+$B:P(B $B:Q(B $B:R(B $B:S(B $B:T(B $B:U(B $B:V(B $B:W(B $B:X(B $B:Y(B $B:Z(B $B:[(B $B:\(B $B:](B $B:^(B $B:_(B
+$B:`(B $B:a(B $B:b(B $B:c(B $B:d(B $B:e(B $B:f(B $B:g(B $B:h(B $B:i(B $B:j(B $B:k(B $B:l(B $B:m(B $B:n(B $B:o(B
+$B:p(B $B:q(B $B:r(B $B:s(B $B:t(B $B:u(B $B:v(B $B:w(B $B:x(B $B:y(B $B:z(B $B:{(B $B:|(B $B:}(B $B:~(B
+ $B;!(B $B;"(B $B;#(B $B;$(B $B;%(B $B;&(B $B;'(B $B;((B $B;)(B $B;*(B $B;+(B $B;,(B $B;-(B $B;.(B $B;/(B
+$B;0(B $B;1(B $B;2(B $B;3(B $B;4(B $B;5(B $B;6(B $B;7(B $B;8(B $B;9(B $B;:(B $B;;(B $B;<(B $B;=(B $B;>(B $B;?(B
+$B;@(B $B;A(B $B;B(B $B;C(B $B;D(B $B;E(B $B;F(B $B;G(B $B;H(B $B;I(B $B;J(B $B;K(B $B;L(B $B;M(B $B;N(B $B;O(B
+$B;P(B $B;Q(B $B;R(B $B;S(B $B;T(B $B;U(B $B;V(B $B;W(B $B;X(B $B;Y(B $B;Z(B $B;[(B $B;\(B $B;](B $B;^(B $B;_(B
+$B;`(B $B;a(B $B;b(B $B;c(B $B;d(B $B;e(B $B;f(B $B;g(B $B;h(B $B;i(B $B;j(B $B;k(B $B;l(B $B;m(B $B;n(B $B;o(B
+$B;p(B $B;q(B $B;r(B $B;s(B $B;t(B $B;u(B $B;v(B $B;w(B $B;x(B $B;y(B $B;z(B $B;{(B $B;|(B $B;}(B $B;~(B
+ $B<!(B $B<"(B $B<#(B $B<$(B $B<%(B $B<&(B $B<'(B $B<((B $B<)(B $B<*(B $B<+(B $B<,(B $B<-(B $B<.(B $B</(B
+$B<0(B $B<1(B $B<2(B $B<3(B $B<4(B $B<5(B $B<6(B $B<7(B $B<8(B $B<9(B $B<:(B $B<;(B $B<<(B $B<=(B $B<>(B $B<?(B
+$B<@(B $B<A(B $B<B(B $B<C(B $B<D(B $B<E(B $B<F(B $B<G(B $B<H(B $B<I(B $B<J(B $B<K(B $B<L(B $B<M(B $B<N(B $B<O(B
+$B<P(B $B<Q(B $B<R(B $B<S(B $B<T(B $B<U(B $B<V(B $B<W(B $B<X(B $B<Y(B $B<Z(B $B<[(B $B<\(B $B<](B $B<^(B $B<_(B
+$B<`(B $B<a(B $B<b(B $B<c(B $B<d(B $B<e(B $B<f(B $B<g(B $B<h(B $B<i(B $B<j(B $B<k(B $B<l(B $B<m(B $B<n(B $B<o(B
+$B<p(B $B<q(B $B<r(B $B<s(B $B<t(B $B<u(B $B<v(B $B<w(B $B<x(B $B<y(B $B<z(B $B<{(B $B<|(B $B<}(B $B<~(B
+ $B=!(B $B="(B $B=#(B $B=$(B $B=%(B $B=&(B $B='(B $B=((B $B=)(B $B=*(B $B=+(B $B=,(B $B=-(B $B=.(B $B=/(B
+$B=0(B $B=1(B $B=2(B $B=3(B $B=4(B $B=5(B $B=6(B $B=7(B $B=8(B $B=9(B $B=:(B $B=;(B $B=<(B $B==(B $B=>(B $B=?(B
+$B=@(B $B=A(B $B=B(B $B=C(B $B=D(B $B=E(B $B=F(B $B=G(B $B=H(B $B=I(B $B=J(B $B=K(B $B=L(B $B=M(B $B=N(B $B=O(B
+$B=P(B $B=Q(B $B=R(B $B=S(B $B=T(B $B=U(B $B=V(B $B=W(B $B=X(B $B=Y(B $B=Z(B $B=[(B $B=\(B $B=](B $B=^(B $B=_(B
+$B=`(B $B=a(B $B=b(B $B=c(B $B=d(B $B=e(B $B=f(B $B=g(B $B=h(B $B=i(B $B=j(B $B=k(B $B=l(B $B=m(B $B=n(B $B=o(B
+$B=p(B $B=q(B $B=r(B $B=s(B $B=t(B $B=u(B $B=v(B $B=w(B $B=x(B $B=y(B $B=z(B $B={(B $B=|(B $B=}(B $B=~(B
+ $B>!(B $B>"(B $B>#(B $B>$(B $B>%(B $B>&(B $B>'(B $B>((B $B>)(B $B>*(B $B>+(B $B>,(B $B>-(B $B>.(B $B>/(B
+$B>0(B $B>1(B $B>2(B $B>3(B $B>4(B $B>5(B $B>6(B $B>7(B $B>8(B $B>9(B $B>:(B $B>;(B $B><(B $B>=(B $B>>(B $B>?(B
+$B>@(B $B>A(B $B>B(B $B>C(B $B>D(B $B>E(B $B>F(B $B>G(B $B>H(B $B>I(B $B>J(B $B>K(B $B>L(B $B>M(B $B>N(B $B>O(B
+$B>P(B $B>Q(B $B>R(B $B>S(B $B>T(B $B>U(B $B>V(B $B>W(B $B>X(B $B>Y(B $B>Z(B $B>[(B $B>\(B $B>](B $B>^(B $B>_(B
+$B>`(B $B>a(B $B>b(B $B>c(B $B>d(B $B>e(B $B>f(B $B>g(B $B>h(B $B>i(B $B>j(B $B>k(B $B>l(B $B>m(B $B>n(B $B>o(B
+$B>p(B $B>q(B $B>r(B $B>s(B $B>t(B $B>u(B $B>v(B $B>w(B $B>x(B $B>y(B $B>z(B $B>{(B $B>|(B $B>}(B $B>~(B
+ $B?!(B $B?"(B $B?#(B $B?$(B $B?%(B $B?&(B $B?'(B $B?((B $B?)(B $B?*(B $B?+(B $B?,(B $B?-(B $B?.(B $B?/(B
+$B?0(B $B?1(B $B?2(B $B?3(B $B?4(B $B?5(B $B?6(B $B?7(B $B?8(B $B?9(B $B?:(B $B?;(B $B?<(B $B?=(B $B?>(B $B??(B
+$B?@(B $B?A(B $B?B(B $B?C(B $B?D(B $B?E(B $B?F(B $B?G(B $B?H(B $B?I(B $B?J(B $B?K(B $B?L(B $B?M(B $B?N(B $B?O(B
+$B?P(B $B?Q(B $B?R(B $B?S(B $B?T(B $B?U(B $B?V(B $B?W(B $B?X(B $B?Y(B $B?Z(B $B?[(B $B?\(B $B?](B $B?^(B $B?_(B
+$B?`(B $B?a(B $B?b(B $B?c(B $B?d(B $B?e(B $B?f(B $B?g(B $B?h(B $B?i(B $B?j(B $B?k(B $B?l(B $B?m(B $B?n(B $B?o(B
+$B?p(B $B?q(B $B?r(B $B?s(B $B?t(B $B?u(B $B?v(B $B?w(B $B?x(B $B?y(B $B?z(B $B?{(B $B?|(B $B?}(B $B?~(B
+ $B@!(B $B@"(B $B@#(B $B@$(B $B@%(B $B@&(B $B@'(B $B@((B $B@)(B $B@*(B $B@+(B $B@,(B $B@-(B $B@.(B $B@/(B
+$B@0(B $B@1(B $B@2(B $B@3(B $B@4(B $B@5(B $B@6(B $B@7(B $B@8(B $B@9(B $B@:(B $B@;(B $B@<(B $B@=(B $B@>(B $B@?(B
+$B@@(B $B@A(B $B@B(B $B@C(B $B@D(B $B@E(B $B@F(B $B@G(B $B@H(B $B@I(B $B@J(B $B@K(B $B@L(B $B@M(B $B@N(B $B@O(B
+$B@P(B $B@Q(B $B@R(B $B@S(B $B@T(B $B@U(B $B@V(B $B@W(B $B@X(B $B@Y(B $B@Z(B $B@[(B $B@\(B $B@](B $B@^(B $B@_(B
+$B@`(B $B@a(B $B@b(B $B@c(B $B@d(B $B@e(B $B@f(B $B@g(B $B@h(B $B@i(B $B@j(B $B@k(B $B@l(B $B@m(B $B@n(B $B@o(B
+$B@p(B $B@q(B $B@r(B $B@s(B $B@t(B $B@u(B $B@v(B $B@w(B $B@x(B $B@y(B $B@z(B $B@{(B $B@|(B $B@}(B $B@~(B
+ $BA!(B $BA"(B $BA#(B $BA$(B $BA%(B $BA&(B $BA'(B $BA((B $BA)(B $BA*(B $BA+(B $BA,(B $BA-(B $BA.(B $BA/(B
+$BA0(B $BA1(B $BA2(B $BA3(B $BA4(B $BA5(B $BA6(B $BA7(B $BA8(B $BA9(B $BA:(B $BA;(B $BA<(B $BA=(B $BA>(B $BA?(B
+$BA@(B $BAA(B $BAB(B $BAC(B $BAD(B $BAE(B $BAF(B $BAG(B $BAH(B $BAI(B $BAJ(B $BAK(B $BAL(B $BAM(B $BAN(B $BAO(B
+$BAP(B $BAQ(B $BAR(B $BAS(B $BAT(B $BAU(B $BAV(B $BAW(B $BAX(B $BAY(B $BAZ(B $BA[(B $BA\(B $BA](B $BA^(B $BA_(B
+$BA`(B $BAa(B $BAb(B $BAc(B $BAd(B $BAe(B $BAf(B $BAg(B $BAh(B $BAi(B $BAj(B $BAk(B $BAl(B $BAm(B $BAn(B $BAo(B
+$BAp(B $BAq(B $BAr(B $BAs(B $BAt(B $BAu(B $BAv(B $BAw(B $BAx(B $BAy(B $BAz(B $BA{(B $BA|(B $BA}(B $BA~(B
+ $BB!(B $BB"(B $BB#(B $BB$(B $BB%(B $BB&(B $BB'(B $BB((B $BB)(B $BB*(B $BB+(B $BB,(B $BB-(B $BB.(B $BB/(B
+$BB0(B $BB1(B $BB2(B $BB3(B $BB4(B $BB5(B $BB6(B $BB7(B $BB8(B $BB9(B $BB:(B $BB;(B $BB<(B $BB=(B $BB>(B $BB?(B
+$BB@(B $BBA(B $BBB(B $BBC(B $BBD(B $BBE(B $BBF(B $BBG(B $BBH(B $BBI(B $BBJ(B $BBK(B $BBL(B $BBM(B $BBN(B $BBO(B
+$BBP(B $BBQ(B $BBR(B $BBS(B $BBT(B $BBU(B $BBV(B $BBW(B $BBX(B $BBY(B $BBZ(B $BB[(B $BB\(B $BB](B $BB^(B $BB_(B
+$BB`(B $BBa(B $BBb(B $BBc(B $BBd(B $BBe(B $BBf(B $BBg(B $BBh(B $BBi(B $BBj(B $BBk(B $BBl(B $BBm(B $BBn(B $BBo(B
+$BBp(B $BBq(B $BBr(B $BBs(B $BBt(B $BBu(B $BBv(B $BBw(B $BBx(B $BBy(B $BBz(B $BB{(B $BB|(B $BB}(B $BB~(B
+ $BC!(B $BC"(B $BC#(B $BC$(B $BC%(B $BC&(B $BC'(B $BC((B $BC)(B $BC*(B $BC+(B $BC,(B $BC-(B $BC.(B $BC/(B
+$BC0(B $BC1(B $BC2(B $BC3(B $BC4(B $BC5(B $BC6(B $BC7(B $BC8(B $BC9(B $BC:(B $BC;(B $BC<(B $BC=(B $BC>(B $BC?(B
+$BC@(B $BCA(B $BCB(B $BCC(B $BCD(B $BCE(B $BCF(B $BCG(B $BCH(B $BCI(B $BCJ(B $BCK(B $BCL(B $BCM(B $BCN(B $BCO(B
+$BCP(B $BCQ(B $BCR(B $BCS(B $BCT(B $BCU(B $BCV(B $BCW(B $BCX(B $BCY(B $BCZ(B $BC[(B $BC\(B $BC](B $BC^(B $BC_(B
+$BC`(B $BCa(B $BCb(B $BCc(B $BCd(B $BCe(B $BCf(B $BCg(B $BCh(B $BCi(B $BCj(B $BCk(B $BCl(B $BCm(B $BCn(B $BCo(B
+$BCp(B $BCq(B $BCr(B $BCs(B $BCt(B $BCu(B $BCv(B $BCw(B $BCx(B $BCy(B $BCz(B $BC{(B $BC|(B $BC}(B $BC~(B
+ $BD!(B $BD"(B $BD#(B $BD$(B $BD%(B $BD&(B $BD'(B $BD((B $BD)(B $BD*(B $BD+(B $BD,(B $BD-(B $BD.(B $BD/(B
+$BD0(B $BD1(B $BD2(B $BD3(B $BD4(B $BD5(B $BD6(B $BD7(B $BD8(B $BD9(B $BD:(B $BD;(B $BD<(B $BD=(B $BD>(B $BD?(B
+$BD@(B $BDA(B $BDB(B $BDC(B $BDD(B $BDE(B $BDF(B $BDG(B $BDH(B $BDI(B $BDJ(B $BDK(B $BDL(B $BDM(B $BDN(B $BDO(B
+$BDP(B $BDQ(B $BDR(B $BDS(B $BDT(B $BDU(B $BDV(B $BDW(B $BDX(B $BDY(B $BDZ(B $BD[(B $BD\(B $BD](B $BD^(B $BD_(B
+$BD`(B $BDa(B $BDb(B $BDc(B $BDd(B $BDe(B $BDf(B $BDg(B $BDh(B $BDi(B $BDj(B $BDk(B $BDl(B $BDm(B $BDn(B $BDo(B
+$BDp(B $BDq(B $BDr(B $BDs(B $BDt(B $BDu(B $BDv(B $BDw(B $BDx(B $BDy(B $BDz(B $BD{(B $BD|(B $BD}(B $BD~(B
+ $BE!(B $BE"(B $BE#(B $BE$(B $BE%(B $BE&(B $BE'(B $BE((B $BE)(B $BE*(B $BE+(B $BE,(B $BE-(B $BE.(B $BE/(B
+$BE0(B $BE1(B $BE2(B $BE3(B $BE4(B $BE5(B $BE6(B $BE7(B $BE8(B $BE9(B $BE:(B $BE;(B $BE<(B $BE=(B $BE>(B $BE?(B
+$BE@(B $BEA(B $BEB(B $BEC(B $BED(B $BEE(B $BEF(B $BEG(B $BEH(B $BEI(B $BEJ(B $BEK(B $BEL(B $BEM(B $BEN(B $BEO(B
+$BEP(B $BEQ(B $BER(B $BES(B $BET(B $BEU(B $BEV(B $BEW(B $BEX(B $BEY(B $BEZ(B $BE[(B $BE\(B $BE](B $BE^(B $BE_(B
+$BE`(B $BEa(B $BEb(B $BEc(B $BEd(B $BEe(B $BEf(B $BEg(B $BEh(B $BEi(B $BEj(B $BEk(B $BEl(B $BEm(B $BEn(B $BEo(B
+$BEp(B $BEq(B $BEr(B $BEs(B $BEt(B $BEu(B $BEv(B $BEw(B $BEx(B $BEy(B $BEz(B $BE{(B $BE|(B $BE}(B $BE~(B
+ $BF!(B $BF"(B $BF#(B $BF$(B $BF%(B $BF&(B $BF'(B $BF((B $BF)(B $BF*(B $BF+(B $BF,(B $BF-(B $BF.(B $BF/(B
+$BF0(B $BF1(B $BF2(B $BF3(B $BF4(B $BF5(B $BF6(B $BF7(B $BF8(B $BF9(B $BF:(B $BF;(B $BF<(B $BF=(B $BF>(B $BF?(B
+$BF@(B $BFA(B $BFB(B $BFC(B $BFD(B $BFE(B $BFF(B $BFG(B $BFH(B $BFI(B $BFJ(B $BFK(B $BFL(B $BFM(B $BFN(B $BFO(B
+$BFP(B $BFQ(B $BFR(B $BFS(B $BFT(B $BFU(B $BFV(B $BFW(B $BFX(B $BFY(B $BFZ(B $BF[(B $BF\(B $BF](B $BF^(B $BF_(B
+$BF`(B $BFa(B $BFb(B $BFc(B $BFd(B $BFe(B $BFf(B $BFg(B $BFh(B $BFi(B $BFj(B $BFk(B $BFl(B $BFm(B $BFn(B $BFo(B
+$BFp(B $BFq(B $BFr(B $BFs(B $BFt(B $BFu(B $BFv(B $BFw(B $BFx(B $BFy(B $BFz(B $BF{(B $BF|(B $BF}(B $BF~(B
+ $BG!(B $BG"(B $BG#(B $BG$(B $BG%(B $BG&(B $BG'(B $BG((B $BG)(B $BG*(B $BG+(B $BG,(B $BG-(B $BG.(B $BG/(B
+$BG0(B $BG1(B $BG2(B $BG3(B $BG4(B $BG5(B $BG6(B $BG7(B $BG8(B $BG9(B $BG:(B $BG;(B $BG<(B $BG=(B $BG>(B $BG?(B
+$BG@(B $BGA(B $BGB(B $BGC(B $BGD(B $BGE(B $BGF(B $BGG(B $BGH(B $BGI(B $BGJ(B $BGK(B $BGL(B $BGM(B $BGN(B $BGO(B
+$BGP(B $BGQ(B $BGR(B $BGS(B $BGT(B $BGU(B $BGV(B $BGW(B $BGX(B $BGY(B $BGZ(B $BG[(B $BG\(B $BG](B $BG^(B $BG_(B
+$BG`(B $BGa(B $BGb(B $BGc(B $BGd(B $BGe(B $BGf(B $BGg(B $BGh(B $BGi(B $BGj(B $BGk(B $BGl(B $BGm(B $BGn(B $BGo(B
+$BGp(B $BGq(B $BGr(B $BGs(B $BGt(B $BGu(B $BGv(B $BGw(B $BGx(B $BGy(B $BGz(B $BG{(B $BG|(B $BG}(B $BG~(B
+ $BH!(B $BH"(B $BH#(B $BH$(B $BH%(B $BH&(B $BH'(B $BH((B $BH)(B $BH*(B $BH+(B $BH,(B $BH-(B $BH.(B $BH/(B
+$BH0(B $BH1(B $BH2(B $BH3(B $BH4(B $BH5(B $BH6(B $BH7(B $BH8(B $BH9(B $BH:(B $BH;(B $BH<(B $BH=(B $BH>(B $BH?(B
+$BH@(B $BHA(B $BHB(B $BHC(B $BHD(B $BHE(B $BHF(B $BHG(B $BHH(B $BHI(B $BHJ(B $BHK(B $BHL(B $BHM(B $BHN(B $BHO(B
+$BHP(B $BHQ(B $BHR(B $BHS(B $BHT(B $BHU(B $BHV(B $BHW(B $BHX(B $BHY(B $BHZ(B $BH[(B $BH\(B $BH](B $BH^(B $BH_(B
+$BH`(B $BHa(B $BHb(B $BHc(B $BHd(B $BHe(B $BHf(B $BHg(B $BHh(B $BHi(B $BHj(B $BHk(B $BHl(B $BHm(B $BHn(B $BHo(B
+$BHp(B $BHq(B $BHr(B $BHs(B $BHt(B $BHu(B $BHv(B $BHw(B $BHx(B $BHy(B $BHz(B $BH{(B $BH|(B $BH}(B $BH~(B
+ $BI!(B $BI"(B $BI#(B $BI$(B $BI%(B $BI&(B $BI'(B $BI((B $BI)(B $BI*(B $BI+(B $BI,(B $BI-(B $BI.(B $BI/(B
+$BI0(B $BI1(B $BI2(B $BI3(B $BI4(B $BI5(B $BI6(B $BI7(B $BI8(B $BI9(B $BI:(B $BI;(B $BI<(B $BI=(B $BI>(B $BI?(B
+$BI@(B $BIA(B $BIB(B $BIC(B $BID(B $BIE(B $BIF(B $BIG(B $BIH(B $BII(B $BIJ(B $BIK(B $BIL(B $BIM(B $BIN(B $BIO(B
+$BIP(B $BIQ(B $BIR(B $BIS(B $BIT(B $BIU(B $BIV(B $BIW(B $BIX(B $BIY(B $BIZ(B $BI[(B $BI\(B $BI](B $BI^(B $BI_(B
+$BI`(B $BIa(B $BIb(B $BIc(B $BId(B $BIe(B $BIf(B $BIg(B $BIh(B $BIi(B $BIj(B $BIk(B $BIl(B $BIm(B $BIn(B $BIo(B
+$BIp(B $BIq(B $BIr(B $BIs(B $BIt(B $BIu(B $BIv(B $BIw(B $BIx(B $BIy(B $BIz(B $BI{(B $BI|(B $BI}(B $BI~(B
+ $BJ!(B $BJ"(B $BJ#(B $BJ$(B $BJ%(B $BJ&(B $BJ'(B $BJ((B $BJ)(B $BJ*(B $BJ+(B $BJ,(B $BJ-(B $BJ.(B $BJ/(B
+$BJ0(B $BJ1(B $BJ2(B $BJ3(B $BJ4(B $BJ5(B $BJ6(B $BJ7(B $BJ8(B $BJ9(B $BJ:(B $BJ;(B $BJ<(B $BJ=(B $BJ>(B $BJ?(B
+$BJ@(B $BJA(B $BJB(B $BJC(B $BJD(B $BJE(B $BJF(B $BJG(B $BJH(B $BJI(B $BJJ(B $BJK(B $BJL(B $BJM(B $BJN(B $BJO(B
+$BJP(B $BJQ(B $BJR(B $BJS(B $BJT(B $BJU(B $BJV(B $BJW(B $BJX(B $BJY(B $BJZ(B $BJ[(B $BJ\(B $BJ](B $BJ^(B $BJ_(B
+$BJ`(B $BJa(B $BJb(B $BJc(B $BJd(B $BJe(B $BJf(B $BJg(B $BJh(B $BJi(B $BJj(B $BJk(B $BJl(B $BJm(B $BJn(B $BJo(B
+$BJp(B $BJq(B $BJr(B $BJs(B $BJt(B $BJu(B $BJv(B $BJw(B $BJx(B $BJy(B $BJz(B $BJ{(B $BJ|(B $BJ}(B $BJ~(B
+ $BK!(B $BK"(B $BK#(B $BK$(B $BK%(B $BK&(B $BK'(B $BK((B $BK)(B $BK*(B $BK+(B $BK,(B $BK-(B $BK.(B $BK/(B
+$BK0(B $BK1(B $BK2(B $BK3(B $BK4(B $BK5(B $BK6(B $BK7(B $BK8(B $BK9(B $BK:(B $BK;(B $BK<(B $BK=(B $BK>(B $BK?(B
+$BK@(B $BKA(B $BKB(B $BKC(B $BKD(B $BKE(B $BKF(B $BKG(B $BKH(B $BKI(B $BKJ(B $BKK(B $BKL(B $BKM(B $BKN(B $BKO(B
+$BKP(B $BKQ(B $BKR(B $BKS(B $BKT(B $BKU(B $BKV(B $BKW(B $BKX(B $BKY(B $BKZ(B $BK[(B $BK\(B $BK](B $BK^(B $BK_(B
+$BK`(B $BKa(B $BKb(B $BKc(B $BKd(B $BKe(B $BKf(B $BKg(B $BKh(B $BKi(B $BKj(B $BKk(B $BKl(B $BKm(B $BKn(B $BKo(B
+$BKp(B $BKq(B $BKr(B $BKs(B $BKt(B $BKu(B $BKv(B $BKw(B $BKx(B $BKy(B $BKz(B $BK{(B $BK|(B $BK}(B $BK~(B
+ $BL!(B $BL"(B $BL#(B $BL$(B $BL%(B $BL&(B $BL'(B $BL((B $BL)(B $BL*(B $BL+(B $BL,(B $BL-(B $BL.(B $BL/(B
+$BL0(B $BL1(B $BL2(B $BL3(B $BL4(B $BL5(B $BL6(B $BL7(B $BL8(B $BL9(B $BL:(B $BL;(B $BL<(B $BL=(B $BL>(B $BL?(B
+$BL@(B $BLA(B $BLB(B $BLC(B $BLD(B $BLE(B $BLF(B $BLG(B $BLH(B $BLI(B $BLJ(B $BLK(B $BLL(B $BLM(B $BLN(B $BLO(B
+$BLP(B $BLQ(B $BLR(B $BLS(B $BLT(B $BLU(B $BLV(B $BLW(B $BLX(B $BLY(B $BLZ(B $BL[(B $BL\(B $BL](B $BL^(B $BL_(B
+$BL`(B $BLa(B $BLb(B $BLc(B $BLd(B $BLe(B $BLf(B $BLg(B $BLh(B $BLi(B $BLj(B $BLk(B $BLl(B $BLm(B $BLn(B $BLo(B
+$BLp(B $BLq(B $BLr(B $BLs(B $BLt(B $BLu(B $BLv(B $BLw(B $BLx(B $BLy(B $BLz(B $BL{(B $BL|(B $BL}(B $BL~(B
+ $BM!(B $BM"(B $BM#(B $BM$(B $BM%(B $BM&(B $BM'(B $BM((B $BM)(B $BM*(B $BM+(B $BM,(B $BM-(B $BM.(B $BM/(B
+$BM0(B $BM1(B $BM2(B $BM3(B $BM4(B $BM5(B $BM6(B $BM7(B $BM8(B $BM9(B $BM:(B $BM;(B $BM<(B $BM=(B $BM>(B $BM?(B
+$BM@(B $BMA(B $BMB(B $BMC(B $BMD(B $BME(B $BMF(B $BMG(B $BMH(B $BMI(B $BMJ(B $BMK(B $BML(B $BMM(B $BMN(B $BMO(B
+$BMP(B $BMQ(B $BMR(B $BMS(B $BMT(B $BMU(B $BMV(B $BMW(B $BMX(B $BMY(B $BMZ(B $BM[(B $BM\(B $BM](B $BM^(B $BM_(B
+$BM`(B $BMa(B $BMb(B $BMc(B $BMd(B $BMe(B $BMf(B $BMg(B $BMh(B $BMi(B $BMj(B $BMk(B $BMl(B $BMm(B $BMn(B $BMo(B
+$BMp(B $BMq(B $BMr(B $BMs(B $BMt(B $BMu(B $BMv(B $BMw(B $BMx(B $BMy(B $BMz(B $BM{(B $BM|(B $BM}(B $BM~(B
+ $BN!(B $BN"(B $BN#(B $BN$(B $BN%(B $BN&(B $BN'(B $BN((B $BN)(B $BN*(B $BN+(B $BN,(B $BN-(B $BN.(B $BN/(B
+$BN0(B $BN1(B $BN2(B $BN3(B $BN4(B $BN5(B $BN6(B $BN7(B $BN8(B $BN9(B $BN:(B $BN;(B $BN<(B $BN=(B $BN>(B $BN?(B
+$BN@(B $BNA(B $BNB(B $BNC(B $BND(B $BNE(B $BNF(B $BNG(B $BNH(B $BNI(B $BNJ(B $BNK(B $BNL(B $BNM(B $BNN(B $BNO(B
+$BNP(B $BNQ(B $BNR(B $BNS(B $BNT(B $BNU(B $BNV(B $BNW(B $BNX(B $BNY(B $BNZ(B $BN[(B $BN\(B $BN](B $BN^(B $BN_(B
+$BN`(B $BNa(B $BNb(B $BNc(B $BNd(B $BNe(B $BNf(B $BNg(B $BNh(B $BNi(B $BNj(B $BNk(B $BNl(B $BNm(B $BNn(B $BNo(B
+$BNp(B $BNq(B $BNr(B $BNs(B $BNt(B $BNu(B $BNv(B $BNw(B $BNx(B $BNy(B $BNz(B $BN{(B $BN|(B $BN}(B $BN~(B
+ $BO!(B $BO"(B $BO#(B $BO$(B $BO%(B $BO&(B $BO'(B $BO((B $BO)(B $BO*(B $BO+(B $BO,(B $BO-(B $BO.(B $BO/(B
+$BO0(B $BO1(B $BO2(B $BO3(B $BO4(B $BO5(B $BO6(B $BO7(B $BO8(B $BO9(B $BO:(B $BO;(B $BO<(B $BO=(B $BO>(B $BO?(B
+$BO@(B $BOA(B $BOB(B $BOC(B $BOD(B $BOE(B $BOF(B $BOG(B $BOH(B $BOI(B $BOJ(B $BOK(B $BOL(B $BOM(B $BON(B $BOO(B
+$BOP(B $BOQ(B $BOR(B $BOS(B
+ $BP!(B $BP"(B $BP#(B $BP$(B $BP%(B $BP&(B $BP'(B $BP((B $BP)(B $BP*(B $BP+(B $BP,(B $BP-(B $BP.(B $BP/(B
+$BP0(B $BP1(B $BP2(B $BP3(B $BP4(B $BP5(B $BP6(B $BP7(B $BP8(B $BP9(B $BP:(B $BP;(B $BP<(B $BP=(B $BP>(B $BP?(B
+$BP@(B $BPA(B $BPB(B $BPC(B $BPD(B $BPE(B $BPF(B $BPG(B $BPH(B $BPI(B $BPJ(B $BPK(B $BPL(B $BPM(B $BPN(B $BPO(B
+$BPP(B $BPQ(B $BPR(B $BPS(B $BPT(B $BPU(B $BPV(B $BPW(B $BPX(B $BPY(B $BPZ(B $BP[(B $BP\(B $BP](B $BP^(B $BP_(B
+$BP`(B $BPa(B $BPb(B $BPc(B $BPd(B $BPe(B $BPf(B $BPg(B $BPh(B $BPi(B $BPj(B $BPk(B $BPl(B $BPm(B $BPn(B $BPo(B
+$BPp(B $BPq(B $BPr(B $BPs(B $BPt(B $BPu(B $BPv(B $BPw(B $BPx(B $BPy(B $BPz(B $BP{(B $BP|(B $BP}(B $BP~(B
+ $BQ!(B $BQ"(B $BQ#(B $BQ$(B $BQ%(B $BQ&(B $BQ'(B $BQ((B $BQ)(B $BQ*(B $BQ+(B $BQ,(B $BQ-(B $BQ.(B $BQ/(B
+$BQ0(B $BQ1(B $BQ2(B $BQ3(B $BQ4(B $BQ5(B $BQ6(B $BQ7(B $BQ8(B $BQ9(B $BQ:(B $BQ;(B $BQ<(B $BQ=(B $BQ>(B $BQ?(B
+$BQ@(B $BQA(B $BQB(B $BQC(B $BQD(B $BQE(B $BQF(B $BQG(B $BQH(B $BQI(B $BQJ(B $BQK(B $BQL(B $BQM(B $BQN(B $BQO(B
+$BQP(B $BQQ(B $BQR(B $BQS(B $BQT(B $BQU(B $BQV(B $BQW(B $BQX(B $BQY(B $BQZ(B $BQ[(B $BQ\(B $BQ](B $BQ^(B $BQ_(B
+$BQ`(B $BQa(B $BQb(B $BQc(B $BQd(B $BQe(B $BQf(B $BQg(B $BQh(B $BQi(B $BQj(B $BQk(B $BQl(B $BQm(B $BQn(B $BQo(B
+$BQp(B $BQq(B $BQr(B $BQs(B $BQt(B $BQu(B $BQv(B $BQw(B $BQx(B $BQy(B $BQz(B $BQ{(B $BQ|(B $BQ}(B $BQ~(B
+ $BR!(B $BR"(B $BR#(B $BR$(B $BR%(B $BR&(B $BR'(B $BR((B $BR)(B $BR*(B $BR+(B $BR,(B $BR-(B $BR.(B $BR/(B
+$BR0(B $BR1(B $BR2(B $BR3(B $BR4(B $BR5(B $BR6(B $BR7(B $BR8(B $BR9(B $BR:(B $BR;(B $BR<(B $BR=(B $BR>(B $BR?(B
+$BR@(B $BRA(B $BRB(B $BRC(B $BRD(B $BRE(B $BRF(B $BRG(B $BRH(B $BRI(B $BRJ(B $BRK(B $BRL(B $BRM(B $BRN(B $BRO(B
+$BRP(B $BRQ(B $BRR(B $BRS(B $BRT(B $BRU(B $BRV(B $BRW(B $BRX(B $BRY(B $BRZ(B $BR[(B $BR\(B $BR](B $BR^(B $BR_(B
+$BR`(B $BRa(B $BRb(B $BRc(B $BRd(B $BRe(B $BRf(B $BRg(B $BRh(B $BRi(B $BRj(B $BRk(B $BRl(B $BRm(B $BRn(B $BRo(B
+$BRp(B $BRq(B $BRr(B $BRs(B $BRt(B $BRu(B $BRv(B $BRw(B $BRx(B $BRy(B $BRz(B $BR{(B $BR|(B $BR}(B $BR~(B
+ $BS!(B $BS"(B $BS#(B $BS$(B $BS%(B $BS&(B $BS'(B $BS((B $BS)(B $BS*(B $BS+(B $BS,(B $BS-(B $BS.(B $BS/(B
+$BS0(B $BS1(B $BS2(B $BS3(B $BS4(B $BS5(B $BS6(B $BS7(B $BS8(B $BS9(B $BS:(B $BS;(B $BS<(B $BS=(B $BS>(B $BS?(B
+$BS@(B $BSA(B $BSB(B $BSC(B $BSD(B $BSE(B $BSF(B $BSG(B $BSH(B $BSI(B $BSJ(B $BSK(B $BSL(B $BSM(B $BSN(B $BSO(B
+$BSP(B $BSQ(B $BSR(B $BSS(B $BST(B $BSU(B $BSV(B $BSW(B $BSX(B $BSY(B $BSZ(B $BS[(B $BS\(B $BS](B $BS^(B $BS_(B
+$BS`(B $BSa(B $BSb(B $BSc(B $BSd(B $BSe(B $BSf(B $BSg(B $BSh(B $BSi(B $BSj(B $BSk(B $BSl(B $BSm(B $BSn(B $BSo(B
+$BSp(B $BSq(B $BSr(B $BSs(B $BSt(B $BSu(B $BSv(B $BSw(B $BSx(B $BSy(B $BSz(B $BS{(B $BS|(B $BS}(B $BS~(B
+ $BT!(B $BT"(B $BT#(B $BT$(B $BT%(B $BT&(B $BT'(B $BT((B $BT)(B $BT*(B $BT+(B $BT,(B $BT-(B $BT.(B $BT/(B
+$BT0(B $BT1(B $BT2(B $BT3(B $BT4(B $BT5(B $BT6(B $BT7(B $BT8(B $BT9(B $BT:(B $BT;(B $BT<(B $BT=(B $BT>(B $BT?(B
+$BT@(B $BTA(B $BTB(B $BTC(B $BTD(B $BTE(B $BTF(B $BTG(B $BTH(B $BTI(B $BTJ(B $BTK(B $BTL(B $BTM(B $BTN(B $BTO(B
+$BTP(B $BTQ(B $BTR(B $BTS(B $BTT(B $BTU(B $BTV(B $BTW(B $BTX(B $BTY(B $BTZ(B $BT[(B $BT\(B $BT](B $BT^(B $BT_(B
+$BT`(B $BTa(B $BTb(B $BTc(B $BTd(B $BTe(B $BTf(B $BTg(B $BTh(B $BTi(B $BTj(B $BTk(B $BTl(B $BTm(B $BTn(B $BTo(B
+$BTp(B $BTq(B $BTr(B $BTs(B $BTt(B $BTu(B $BTv(B $BTw(B $BTx(B $BTy(B $BTz(B $BT{(B $BT|(B $BT}(B $BT~(B
+ $BU!(B $BU"(B $BU#(B $BU$(B $BU%(B $BU&(B $BU'(B $BU((B $BU)(B $BU*(B $BU+(B $BU,(B $BU-(B $BU.(B $BU/(B
+$BU0(B $BU1(B $BU2(B $BU3(B $BU4(B $BU5(B $BU6(B $BU7(B $BU8(B $BU9(B $BU:(B $BU;(B $BU<(B $BU=(B $BU>(B $BU?(B
+$BU@(B $BUA(B $BUB(B $BUC(B $BUD(B $BUE(B $BUF(B $BUG(B $BUH(B $BUI(B $BUJ(B $BUK(B $BUL(B $BUM(B $BUN(B $BUO(B
+$BUP(B $BUQ(B $BUR(B $BUS(B $BUT(B $BUU(B $BUV(B $BUW(B $BUX(B $BUY(B $BUZ(B $BU[(B $BU\(B $BU](B $BU^(B $BU_(B
+$BU`(B $BUa(B $BUb(B $BUc(B $BUd(B $BUe(B $BUf(B $BUg(B $BUh(B $BUi(B $BUj(B $BUk(B $BUl(B $BUm(B $BUn(B $BUo(B
+$BUp(B $BUq(B $BUr(B $BUs(B $BUt(B $BUu(B $BUv(B $BUw(B $BUx(B $BUy(B $BUz(B $BU{(B $BU|(B $BU}(B $BU~(B
+ $BV!(B $BV"(B $BV#(B $BV$(B $BV%(B $BV&(B $BV'(B $BV((B $BV)(B $BV*(B $BV+(B $BV,(B $BV-(B $BV.(B $BV/(B
+$BV0(B $BV1(B $BV2(B $BV3(B $BV4(B $BV5(B $BV6(B $BV7(B $BV8(B $BV9(B $BV:(B $BV;(B $BV<(B $BV=(B $BV>(B $BV?(B
+$BV@(B $BVA(B $BVB(B $BVC(B $BVD(B $BVE(B $BVF(B $BVG(B $BVH(B $BVI(B $BVJ(B $BVK(B $BVL(B $BVM(B $BVN(B $BVO(B
+$BVP(B $BVQ(B $BVR(B $BVS(B $BVT(B $BVU(B $BVV(B $BVW(B $BVX(B $BVY(B $BVZ(B $BV[(B $BV\(B $BV](B $BV^(B $BV_(B
+$BV`(B $BVa(B $BVb(B $BVc(B $BVd(B $BVe(B $BVf(B $BVg(B $BVh(B $BVi(B $BVj(B $BVk(B $BVl(B $BVm(B $BVn(B $BVo(B
+$BVp(B $BVq(B $BVr(B $BVs(B $BVt(B $BVu(B $BVv(B $BVw(B $BVx(B $BVy(B $BVz(B $BV{(B $BV|(B $BV}(B $BV~(B
+ $BW!(B $BW"(B $BW#(B $BW$(B $BW%(B $BW&(B $BW'(B $BW((B $BW)(B $BW*(B $BW+(B $BW,(B $BW-(B $BW.(B $BW/(B
+$BW0(B $BW1(B $BW2(B $BW3(B $BW4(B $BW5(B $BW6(B $BW7(B $BW8(B $BW9(B $BW:(B $BW;(B $BW<(B $BW=(B $BW>(B $BW?(B
+$BW@(B $BWA(B $BWB(B $BWC(B $BWD(B $BWE(B $BWF(B $BWG(B $BWH(B $BWI(B $BWJ(B $BWK(B $BWL(B $BWM(B $BWN(B $BWO(B
+$BWP(B $BWQ(B $BWR(B $BWS(B $BWT(B $BWU(B $BWV(B $BWW(B $BWX(B $BWY(B $BWZ(B $BW[(B $BW\(B $BW](B $BW^(B $BW_(B
+$BW`(B $BWa(B $BWb(B $BWc(B $BWd(B $BWe(B $BWf(B $BWg(B $BWh(B $BWi(B $BWj(B $BWk(B $BWl(B $BWm(B $BWn(B $BWo(B
+$BWp(B $BWq(B $BWr(B $BWs(B $BWt(B $BWu(B $BWv(B $BWw(B $BWx(B $BWy(B $BWz(B $BW{(B $BW|(B $BW}(B $BW~(B
+ $BX!(B $BX"(B $BX#(B $BX$(B $BX%(B $BX&(B $BX'(B $BX((B $BX)(B $BX*(B $BX+(B $BX,(B $BX-(B $BX.(B $BX/(B
+$BX0(B $BX1(B $BX2(B $BX3(B $BX4(B $BX5(B $BX6(B $BX7(B $BX8(B $BX9(B $BX:(B $BX;(B $BX<(B $BX=(B $BX>(B $BX?(B
+$BX@(B $BXA(B $BXB(B $BXC(B $BXD(B $BXE(B $BXF(B $BXG(B $BXH(B $BXI(B $BXJ(B $BXK(B $BXL(B $BXM(B $BXN(B $BXO(B
+$BXP(B $BXQ(B $BXR(B $BXS(B $BXT(B $BXU(B $BXV(B $BXW(B $BXX(B $BXY(B $BXZ(B $BX[(B $BX\(B $BX](B $BX^(B $BX_(B
+$BX`(B $BXa(B $BXb(B $BXc(B $BXd(B $BXe(B $BXf(B $BXg(B $BXh(B $BXi(B $BXj(B $BXk(B $BXl(B $BXm(B $BXn(B $BXo(B
+$BXp(B $BXq(B $BXr(B $BXs(B $BXt(B $BXu(B $BXv(B $BXw(B $BXx(B $BXy(B $BXz(B $BX{(B $BX|(B $BX}(B $BX~(B
+ $BY!(B $BY"(B $BY#(B $BY$(B $BY%(B $BY&(B $BY'(B $BY((B $BY)(B $BY*(B $BY+(B $BY,(B $BY-(B $BY.(B $BY/(B
+$BY0(B $BY1(B $BY2(B $BY3(B $BY4(B $BY5(B $BY6(B $BY7(B $BY8(B $BY9(B $BY:(B $BY;(B $BY<(B $BY=(B $BY>(B $BY?(B
+$BY@(B $BYA(B $BYB(B $BYC(B $BYD(B $BYE(B $BYF(B $BYG(B $BYH(B $BYI(B $BYJ(B $BYK(B $BYL(B $BYM(B $BYN(B $BYO(B
+$BYP(B $BYQ(B $BYR(B $BYS(B $BYT(B $BYU(B $BYV(B $BYW(B $BYX(B $BYY(B $BYZ(B $BY[(B $BY\(B $BY](B $BY^(B $BY_(B
+$BY`(B $BYa(B $BYb(B $BYc(B $BYd(B $BYe(B $BYf(B $BYg(B $BYh(B $BYi(B $BYj(B $BYk(B $BYl(B $BYm(B $BYn(B $BYo(B
+$BYp(B $BYq(B $BYr(B $BYs(B $BYt(B $BYu(B $BYv(B $BYw(B $BYx(B $BYy(B $BYz(B $BY{(B $BY|(B $BY}(B $BY~(B
+ $BZ!(B $BZ"(B $BZ#(B $BZ$(B $BZ%(B $BZ&(B $BZ'(B $BZ((B $BZ)(B $BZ*(B $BZ+(B $BZ,(B $BZ-(B $BZ.(B $BZ/(B
+$BZ0(B $BZ1(B $BZ2(B $BZ3(B $BZ4(B $BZ5(B $BZ6(B $BZ7(B $BZ8(B $BZ9(B $BZ:(B $BZ;(B $BZ<(B $BZ=(B $BZ>(B $BZ?(B
+$BZ@(B $BZA(B $BZB(B $BZC(B $BZD(B $BZE(B $BZF(B $BZG(B $BZH(B $BZI(B $BZJ(B $BZK(B $BZL(B $BZM(B $BZN(B $BZO(B
+$BZP(B $BZQ(B $BZR(B $BZS(B $BZT(B $BZU(B $BZV(B $BZW(B $BZX(B $BZY(B $BZZ(B $BZ[(B $BZ\(B $BZ](B $BZ^(B $BZ_(B
+$BZ`(B $BZa(B $BZb(B $BZc(B $BZd(B $BZe(B $BZf(B $BZg(B $BZh(B $BZi(B $BZj(B $BZk(B $BZl(B $BZm(B $BZn(B $BZo(B
+$BZp(B $BZq(B $BZr(B $BZs(B $BZt(B $BZu(B $BZv(B $BZw(B $BZx(B $BZy(B $BZz(B $BZ{(B $BZ|(B $BZ}(B $BZ~(B
+ $B[!(B $B["(B $B[#(B $B[$(B $B[%(B $B[&(B $B['(B $B[((B $B[)(B $B[*(B $B[+(B $B[,(B $B[-(B $B[.(B $B[/(B
+$B[0(B $B[1(B $B[2(B $B[3(B $B[4(B $B[5(B $B[6(B $B[7(B $B[8(B $B[9(B $B[:(B $B[;(B $B[<(B $B[=(B $B[>(B $B[?(B
+$B[@(B $B[A(B $B[B(B $B[C(B $B[D(B $B[E(B $B[F(B $B[G(B $B[H(B $B[I(B $B[J(B $B[K(B $B[L(B $B[M(B $B[N(B $B[O(B
+$B[P(B $B[Q(B $B[R(B $B[S(B $B[T(B $B[U(B $B[V(B $B[W(B $B[X(B $B[Y(B $B[Z(B $B[[(B $B[\(B $B[](B $B[^(B $B[_(B
+$B[`(B $B[a(B $B[b(B $B[c(B $B[d(B $B[e(B $B[f(B $B[g(B $B[h(B $B[i(B $B[j(B $B[k(B $B[l(B $B[m(B $B[n(B $B[o(B
+$B[p(B $B[q(B $B[r(B $B[s(B $B[t(B $B[u(B $B[v(B $B[w(B $B[x(B $B[y(B $B[z(B $B[{(B $B[|(B $B[}(B $B[~(B
+ $B\!(B $B\"(B $B\#(B $B\$(B $B\%(B $B\&(B $B\'(B $B\((B $B\)(B $B\*(B $B\+(B $B\,(B $B\-(B $B\.(B $B\/(B
+$B\0(B $B\1(B $B\2(B $B\3(B $B\4(B $B\5(B $B\6(B $B\7(B $B\8(B $B\9(B $B\:(B $B\;(B $B\<(B $B\=(B $B\>(B $B\?(B
+$B\@(B $B\A(B $B\B(B $B\C(B $B\D(B $B\E(B $B\F(B $B\G(B $B\H(B $B\I(B $B\J(B $B\K(B $B\L(B $B\M(B $B\N(B $B\O(B
+$B\P(B $B\Q(B $B\R(B $B\S(B $B\T(B $B\U(B $B\V(B $B\W(B $B\X(B $B\Y(B $B\Z(B $B\[(B $B\\(B $B\](B $B\^(B $B\_(B
+$B\`(B $B\a(B $B\b(B $B\c(B $B\d(B $B\e(B $B\f(B $B\g(B $B\h(B $B\i(B $B\j(B $B\k(B $B\l(B $B\m(B $B\n(B $B\o(B
+$B\p(B $B\q(B $B\r(B $B\s(B $B\t(B $B\u(B $B\v(B $B\w(B $B\x(B $B\y(B $B\z(B $B\{(B $B\|(B $B\}(B $B\~(B
+ $B]!(B $B]"(B $B]#(B $B]$(B $B]%(B $B]&(B $B]'(B $B]((B $B])(B $B]*(B $B]+(B $B],(B $B]-(B $B].(B $B]/(B
+$B]0(B $B]1(B $B]2(B $B]3(B $B]4(B $B]5(B $B]6(B $B]7(B $B]8(B $B]9(B $B]:(B $B];(B $B]<(B $B]=(B $B]>(B $B]?(B
+$B]@(B $B]A(B $B]B(B $B]C(B $B]D(B $B]E(B $B]F(B $B]G(B $B]H(B $B]I(B $B]J(B $B]K(B $B]L(B $B]M(B $B]N(B $B]O(B
+$B]P(B $B]Q(B $B]R(B $B]S(B $B]T(B $B]U(B $B]V(B $B]W(B $B]X(B $B]Y(B $B]Z(B $B][(B $B]\(B $B]](B $B]^(B $B]_(B
+$B]`(B $B]a(B $B]b(B $B]c(B $B]d(B $B]e(B $B]f(B $B]g(B $B]h(B $B]i(B $B]j(B $B]k(B $B]l(B $B]m(B $B]n(B $B]o(B
+$B]p(B $B]q(B $B]r(B $B]s(B $B]t(B $B]u(B $B]v(B $B]w(B $B]x(B $B]y(B $B]z(B $B]{(B $B]|(B $B]}(B $B]~(B
+ $B^!(B $B^"(B $B^#(B $B^$(B $B^%(B $B^&(B $B^'(B $B^((B $B^)(B $B^*(B $B^+(B $B^,(B $B^-(B $B^.(B $B^/(B
+$B^0(B $B^1(B $B^2(B $B^3(B $B^4(B $B^5(B $B^6(B $B^7(B $B^8(B $B^9(B $B^:(B $B^;(B $B^<(B $B^=(B $B^>(B $B^?(B
+$B^@(B $B^A(B $B^B(B $B^C(B $B^D(B $B^E(B $B^F(B $B^G(B $B^H(B $B^I(B $B^J(B $B^K(B $B^L(B $B^M(B $B^N(B $B^O(B
+$B^P(B $B^Q(B $B^R(B $B^S(B $B^T(B $B^U(B $B^V(B $B^W(B $B^X(B $B^Y(B $B^Z(B $B^[(B $B^\(B $B^](B $B^^(B $B^_(B
+$B^`(B $B^a(B $B^b(B $B^c(B $B^d(B $B^e(B $B^f(B $B^g(B $B^h(B $B^i(B $B^j(B $B^k(B $B^l(B $B^m(B $B^n(B $B^o(B
+$B^p(B $B^q(B $B^r(B $B^s(B $B^t(B $B^u(B $B^v(B $B^w(B $B^x(B $B^y(B $B^z(B $B^{(B $B^|(B $B^}(B $B^~(B
+ $B_!(B $B_"(B $B_#(B $B_$(B $B_%(B $B_&(B $B_'(B $B_((B $B_)(B $B_*(B $B_+(B $B_,(B $B_-(B $B_.(B $B_/(B
+$B_0(B $B_1(B $B_2(B $B_3(B $B_4(B $B_5(B $B_6(B $B_7(B $B_8(B $B_9(B $B_:(B $B_;(B $B_<(B $B_=(B $B_>(B $B_?(B
+$B_@(B $B_A(B $B_B(B $B_C(B $B_D(B $B_E(B $B_F(B $B_G(B $B_H(B $B_I(B $B_J(B $B_K(B $B_L(B $B_M(B $B_N(B $B_O(B
+$B_P(B $B_Q(B $B_R(B $B_S(B $B_T(B $B_U(B $B_V(B $B_W(B $B_X(B $B_Y(B $B_Z(B $B_[(B $B_\(B $B_](B $B_^(B $B__(B
+$B_`(B $B_a(B $B_b(B $B_c(B $B_d(B $B_e(B $B_f(B $B_g(B $B_h(B $B_i(B $B_j(B $B_k(B $B_l(B $B_m(B $B_n(B $B_o(B
+$B_p(B $B_q(B $B_r(B $B_s(B $B_t(B $B_u(B $B_v(B $B_w(B $B_x(B $B_y(B $B_z(B $B_{(B $B_|(B $B_}(B $B_~(B
+ $B`!(B $B`"(B $B`#(B $B`$(B $B`%(B $B`&(B $B`'(B $B`((B $B`)(B $B`*(B $B`+(B $B`,(B $B`-(B $B`.(B $B`/(B
+$B`0(B $B`1(B $B`2(B $B`3(B $B`4(B $B`5(B $B`6(B $B`7(B $B`8(B $B`9(B $B`:(B $B`;(B $B`<(B $B`=(B $B`>(B $B`?(B
+$B`@(B $B`A(B $B`B(B $B`C(B $B`D(B $B`E(B $B`F(B $B`G(B $B`H(B $B`I(B $B`J(B $B`K(B $B`L(B $B`M(B $B`N(B $B`O(B
+$B`P(B $B`Q(B $B`R(B $B`S(B $B`T(B $B`U(B $B`V(B $B`W(B $B`X(B $B`Y(B $B`Z(B $B`[(B $B`\(B $B`](B $B`^(B $B`_(B
+$B``(B $B`a(B $B`b(B $B`c(B $B`d(B $B`e(B $B`f(B $B`g(B $B`h(B $B`i(B $B`j(B $B`k(B $B`l(B $B`m(B $B`n(B $B`o(B
+$B`p(B $B`q(B $B`r(B $B`s(B $B`t(B $B`u(B $B`v(B $B`w(B $B`x(B $B`y(B $B`z(B $B`{(B $B`|(B $B`}(B $B`~(B
+ $Ba!(B $Ba"(B $Ba#(B $Ba$(B $Ba%(B $Ba&(B $Ba'(B $Ba((B $Ba)(B $Ba*(B $Ba+(B $Ba,(B $Ba-(B $Ba.(B $Ba/(B
+$Ba0(B $Ba1(B $Ba2(B $Ba3(B $Ba4(B $Ba5(B $Ba6(B $Ba7(B $Ba8(B $Ba9(B $Ba:(B $Ba;(B $Ba<(B $Ba=(B $Ba>(B $Ba?(B
+$Ba@(B $BaA(B $BaB(B $BaC(B $BaD(B $BaE(B $BaF(B $BaG(B $BaH(B $BaI(B $BaJ(B $BaK(B $BaL(B $BaM(B $BaN(B $BaO(B
+$BaP(B $BaQ(B $BaR(B $BaS(B $BaT(B $BaU(B $BaV(B $BaW(B $BaX(B $BaY(B $BaZ(B $Ba[(B $Ba\(B $Ba](B $Ba^(B $Ba_(B
+$Ba`(B $Baa(B $Bab(B $Bac(B $Bad(B $Bae(B $Baf(B $Bag(B $Bah(B $Bai(B $Baj(B $Bak(B $Bal(B $Bam(B $Ban(B $Bao(B
+$Bap(B $Baq(B $Bar(B $Bas(B $Bat(B $Bau(B $Bav(B $Baw(B $Bax(B $Bay(B $Baz(B $Ba{(B $Ba|(B $Ba}(B $Ba~(B
+ $Bb!(B $Bb"(B $Bb#(B $Bb$(B $Bb%(B $Bb&(B $Bb'(B $Bb((B $Bb)(B $Bb*(B $Bb+(B $Bb,(B $Bb-(B $Bb.(B $Bb/(B
+$Bb0(B $Bb1(B $Bb2(B $Bb3(B $Bb4(B $Bb5(B $Bb6(B $Bb7(B $Bb8(B $Bb9(B $Bb:(B $Bb;(B $Bb<(B $Bb=(B $Bb>(B $Bb?(B
+$Bb@(B $BbA(B $BbB(B $BbC(B $BbD(B $BbE(B $BbF(B $BbG(B $BbH(B $BbI(B $BbJ(B $BbK(B $BbL(B $BbM(B $BbN(B $BbO(B
+$BbP(B $BbQ(B $BbR(B $BbS(B $BbT(B $BbU(B $BbV(B $BbW(B $BbX(B $BbY(B $BbZ(B $Bb[(B $Bb\(B $Bb](B $Bb^(B $Bb_(B
+$Bb`(B $Bba(B $Bbb(B $Bbc(B $Bbd(B $Bbe(B $Bbf(B $Bbg(B $Bbh(B $Bbi(B $Bbj(B $Bbk(B $Bbl(B $Bbm(B $Bbn(B $Bbo(B
+$Bbp(B $Bbq(B $Bbr(B $Bbs(B $Bbt(B $Bbu(B $Bbv(B $Bbw(B $Bbx(B $Bby(B $Bbz(B $Bb{(B $Bb|(B $Bb}(B $Bb~(B
+ $Bc!(B $Bc"(B $Bc#(B $Bc$(B $Bc%(B $Bc&(B $Bc'(B $Bc((B $Bc)(B $Bc*(B $Bc+(B $Bc,(B $Bc-(B $Bc.(B $Bc/(B
+$Bc0(B $Bc1(B $Bc2(B $Bc3(B $Bc4(B $Bc5(B $Bc6(B $Bc7(B $Bc8(B $Bc9(B $Bc:(B $Bc;(B $Bc<(B $Bc=(B $Bc>(B $Bc?(B
+$Bc@(B $BcA(B $BcB(B $BcC(B $BcD(B $BcE(B $BcF(B $BcG(B $BcH(B $BcI(B $BcJ(B $BcK(B $BcL(B $BcM(B $BcN(B $BcO(B
+$BcP(B $BcQ(B $BcR(B $BcS(B $BcT(B $BcU(B $BcV(B $BcW(B $BcX(B $BcY(B $BcZ(B $Bc[(B $Bc\(B $Bc](B $Bc^(B $Bc_(B
+$Bc`(B $Bca(B $Bcb(B $Bcc(B $Bcd(B $Bce(B $Bcf(B $Bcg(B $Bch(B $Bci(B $Bcj(B $Bck(B $Bcl(B $Bcm(B $Bcn(B $Bco(B
+$Bcp(B $Bcq(B $Bcr(B $Bcs(B $Bct(B $Bcu(B $Bcv(B $Bcw(B $Bcx(B $Bcy(B $Bcz(B $Bc{(B $Bc|(B $Bc}(B $Bc~(B
+ $Bd!(B $Bd"(B $Bd#(B $Bd$(B $Bd%(B $Bd&(B $Bd'(B $Bd((B $Bd)(B $Bd*(B $Bd+(B $Bd,(B $Bd-(B $Bd.(B $Bd/(B
+$Bd0(B $Bd1(B $Bd2(B $Bd3(B $Bd4(B $Bd5(B $Bd6(B $Bd7(B $Bd8(B $Bd9(B $Bd:(B $Bd;(B $Bd<(B $Bd=(B $Bd>(B $Bd?(B
+$Bd@(B $BdA(B $BdB(B $BdC(B $BdD(B $BdE(B $BdF(B $BdG(B $BdH(B $BdI(B $BdJ(B $BdK(B $BdL(B $BdM(B $BdN(B $BdO(B
+$BdP(B $BdQ(B $BdR(B $BdS(B $BdT(B $BdU(B $BdV(B $BdW(B $BdX(B $BdY(B $BdZ(B $Bd[(B $Bd\(B $Bd](B $Bd^(B $Bd_(B
+$Bd`(B $Bda(B $Bdb(B $Bdc(B $Bdd(B $Bde(B $Bdf(B $Bdg(B $Bdh(B $Bdi(B $Bdj(B $Bdk(B $Bdl(B $Bdm(B $Bdn(B $Bdo(B
+$Bdp(B $Bdq(B $Bdr(B $Bds(B $Bdt(B $Bdu(B $Bdv(B $Bdw(B $Bdx(B $Bdy(B $Bdz(B $Bd{(B $Bd|(B $Bd}(B $Bd~(B
+ $Be!(B $Be"(B $Be#(B $Be$(B $Be%(B $Be&(B $Be'(B $Be((B $Be)(B $Be*(B $Be+(B $Be,(B $Be-(B $Be.(B $Be/(B
+$Be0(B $Be1(B $Be2(B $Be3(B $Be4(B $Be5(B $Be6(B $Be7(B $Be8(B $Be9(B $Be:(B $Be;(B $Be<(B $Be=(B $Be>(B $Be?(B
+$Be@(B $BeA(B $BeB(B $BeC(B $BeD(B $BeE(B $BeF(B $BeG(B $BeH(B $BeI(B $BeJ(B $BeK(B $BeL(B $BeM(B $BeN(B $BeO(B
+$BeP(B $BeQ(B $BeR(B $BeS(B $BeT(B $BeU(B $BeV(B $BeW(B $BeX(B $BeY(B $BeZ(B $Be[(B $Be\(B $Be](B $Be^(B $Be_(B
+$Be`(B $Bea(B $Beb(B $Bec(B $Bed(B $Bee(B $Bef(B $Beg(B $Beh(B $Bei(B $Bej(B $Bek(B $Bel(B $Bem(B $Ben(B $Beo(B
+$Bep(B $Beq(B $Ber(B $Bes(B $Bet(B $Beu(B $Bev(B $Bew(B $Bex(B $Bey(B $Bez(B $Be{(B $Be|(B $Be}(B $Be~(B
+ $Bf!(B $Bf"(B $Bf#(B $Bf$(B $Bf%(B $Bf&(B $Bf'(B $Bf((B $Bf)(B $Bf*(B $Bf+(B $Bf,(B $Bf-(B $Bf.(B $Bf/(B
+$Bf0(B $Bf1(B $Bf2(B $Bf3(B $Bf4(B $Bf5(B $Bf6(B $Bf7(B $Bf8(B $Bf9(B $Bf:(B $Bf;(B $Bf<(B $Bf=(B $Bf>(B $Bf?(B
+$Bf@(B $BfA(B $BfB(B $BfC(B $BfD(B $BfE(B $BfF(B $BfG(B $BfH(B $BfI(B $BfJ(B $BfK(B $BfL(B $BfM(B $BfN(B $BfO(B
+$BfP(B $BfQ(B $BfR(B $BfS(B $BfT(B $BfU(B $BfV(B $BfW(B $BfX(B $BfY(B $BfZ(B $Bf[(B $Bf\(B $Bf](B $Bf^(B $Bf_(B
+$Bf`(B $Bfa(B $Bfb(B $Bfc(B $Bfd(B $Bfe(B $Bff(B $Bfg(B $Bfh(B $Bfi(B $Bfj(B $Bfk(B $Bfl(B $Bfm(B $Bfn(B $Bfo(B
+$Bfp(B $Bfq(B $Bfr(B $Bfs(B $Bft(B $Bfu(B $Bfv(B $Bfw(B $Bfx(B $Bfy(B $Bfz(B $Bf{(B $Bf|(B $Bf}(B $Bf~(B
+ $Bg!(B $Bg"(B $Bg#(B $Bg$(B $Bg%(B $Bg&(B $Bg'(B $Bg((B $Bg)(B $Bg*(B $Bg+(B $Bg,(B $Bg-(B $Bg.(B $Bg/(B
+$Bg0(B $Bg1(B $Bg2(B $Bg3(B $Bg4(B $Bg5(B $Bg6(B $Bg7(B $Bg8(B $Bg9(B $Bg:(B $Bg;(B $Bg<(B $Bg=(B $Bg>(B $Bg?(B
+$Bg@(B $BgA(B $BgB(B $BgC(B $BgD(B $BgE(B $BgF(B $BgG(B $BgH(B $BgI(B $BgJ(B $BgK(B $BgL(B $BgM(B $BgN(B $BgO(B
+$BgP(B $BgQ(B $BgR(B $BgS(B $BgT(B $BgU(B $BgV(B $BgW(B $BgX(B $BgY(B $BgZ(B $Bg[(B $Bg\(B $Bg](B $Bg^(B $Bg_(B
+$Bg`(B $Bga(B $Bgb(B $Bgc(B $Bgd(B $Bge(B $Bgf(B $Bgg(B $Bgh(B $Bgi(B $Bgj(B $Bgk(B $Bgl(B $Bgm(B $Bgn(B $Bgo(B
+$Bgp(B $Bgq(B $Bgr(B $Bgs(B $Bgt(B $Bgu(B $Bgv(B $Bgw(B $Bgx(B $Bgy(B $Bgz(B $Bg{(B $Bg|(B $Bg}(B $Bg~(B
+ $Bh!(B $Bh"(B $Bh#(B $Bh$(B $Bh%(B $Bh&(B $Bh'(B $Bh((B $Bh)(B $Bh*(B $Bh+(B $Bh,(B $Bh-(B $Bh.(B $Bh/(B
+$Bh0(B $Bh1(B $Bh2(B $Bh3(B $Bh4(B $Bh5(B $Bh6(B $Bh7(B $Bh8(B $Bh9(B $Bh:(B $Bh;(B $Bh<(B $Bh=(B $Bh>(B $Bh?(B
+$Bh@(B $BhA(B $BhB(B $BhC(B $BhD(B $BhE(B $BhF(B $BhG(B $BhH(B $BhI(B $BhJ(B $BhK(B $BhL(B $BhM(B $BhN(B $BhO(B
+$BhP(B $BhQ(B $BhR(B $BhS(B $BhT(B $BhU(B $BhV(B $BhW(B $BhX(B $BhY(B $BhZ(B $Bh[(B $Bh\(B $Bh](B $Bh^(B $Bh_(B
+$Bh`(B $Bha(B $Bhb(B $Bhc(B $Bhd(B $Bhe(B $Bhf(B $Bhg(B $Bhh(B $Bhi(B $Bhj(B $Bhk(B $Bhl(B $Bhm(B $Bhn(B $Bho(B
+$Bhp(B $Bhq(B $Bhr(B $Bhs(B $Bht(B $Bhu(B $Bhv(B $Bhw(B $Bhx(B $Bhy(B $Bhz(B $Bh{(B $Bh|(B $Bh}(B $Bh~(B
+ $Bi!(B $Bi"(B $Bi#(B $Bi$(B $Bi%(B $Bi&(B $Bi'(B $Bi((B $Bi)(B $Bi*(B $Bi+(B $Bi,(B $Bi-(B $Bi.(B $Bi/(B
+$Bi0(B $Bi1(B $Bi2(B $Bi3(B $Bi4(B $Bi5(B $Bi6(B $Bi7(B $Bi8(B $Bi9(B $Bi:(B $Bi;(B $Bi<(B $Bi=(B $Bi>(B $Bi?(B
+$Bi@(B $BiA(B $BiB(B $BiC(B $BiD(B $BiE(B $BiF(B $BiG(B $BiH(B $BiI(B $BiJ(B $BiK(B $BiL(B $BiM(B $BiN(B $BiO(B
+$BiP(B $BiQ(B $BiR(B $BiS(B $BiT(B $BiU(B $BiV(B $BiW(B $BiX(B $BiY(B $BiZ(B $Bi[(B $Bi\(B $Bi](B $Bi^(B $Bi_(B
+$Bi`(B $Bia(B $Bib(B $Bic(B $Bid(B $Bie(B $Bif(B $Big(B $Bih(B $Bii(B $Bij(B $Bik(B $Bil(B $Bim(B $Bin(B $Bio(B
+$Bip(B $Biq(B $Bir(B $Bis(B $Bit(B $Biu(B $Biv(B $Biw(B $Bix(B $Biy(B $Biz(B $Bi{(B $Bi|(B $Bi}(B $Bi~(B
+ $Bj!(B $Bj"(B $Bj#(B $Bj$(B $Bj%(B $Bj&(B $Bj'(B $Bj((B $Bj)(B $Bj*(B $Bj+(B $Bj,(B $Bj-(B $Bj.(B $Bj/(B
+$Bj0(B $Bj1(B $Bj2(B $Bj3(B $Bj4(B $Bj5(B $Bj6(B $Bj7(B $Bj8(B $Bj9(B $Bj:(B $Bj;(B $Bj<(B $Bj=(B $Bj>(B $Bj?(B
+$Bj@(B $BjA(B $BjB(B $BjC(B $BjD(B $BjE(B $BjF(B $BjG(B $BjH(B $BjI(B $BjJ(B $BjK(B $BjL(B $BjM(B $BjN(B $BjO(B
+$BjP(B $BjQ(B $BjR(B $BjS(B $BjT(B $BjU(B $BjV(B $BjW(B $BjX(B $BjY(B $BjZ(B $Bj[(B $Bj\(B $Bj](B $Bj^(B $Bj_(B
+$Bj`(B $Bja(B $Bjb(B $Bjc(B $Bjd(B $Bje(B $Bjf(B $Bjg(B $Bjh(B $Bji(B $Bjj(B $Bjk(B $Bjl(B $Bjm(B $Bjn(B $Bjo(B
+$Bjp(B $Bjq(B $Bjr(B $Bjs(B $Bjt(B $Bju(B $Bjv(B $Bjw(B $Bjx(B $Bjy(B $Bjz(B $Bj{(B $Bj|(B $Bj}(B $Bj~(B
+ $Bk!(B $Bk"(B $Bk#(B $Bk$(B $Bk%(B $Bk&(B $Bk'(B $Bk((B $Bk)(B $Bk*(B $Bk+(B $Bk,(B $Bk-(B $Bk.(B $Bk/(B
+$Bk0(B $Bk1(B $Bk2(B $Bk3(B $Bk4(B $Bk5(B $Bk6(B $Bk7(B $Bk8(B $Bk9(B $Bk:(B $Bk;(B $Bk<(B $Bk=(B $Bk>(B $Bk?(B
+$Bk@(B $BkA(B $BkB(B $BkC(B $BkD(B $BkE(B $BkF(B $BkG(B $BkH(B $BkI(B $BkJ(B $BkK(B $BkL(B $BkM(B $BkN(B $BkO(B
+$BkP(B $BkQ(B $BkR(B $BkS(B $BkT(B $BkU(B $BkV(B $BkW(B $BkX(B $BkY(B $BkZ(B $Bk[(B $Bk\(B $Bk](B $Bk^(B $Bk_(B
+$Bk`(B $Bka(B $Bkb(B $Bkc(B $Bkd(B $Bke(B $Bkf(B $Bkg(B $Bkh(B $Bki(B $Bkj(B $Bkk(B $Bkl(B $Bkm(B $Bkn(B $Bko(B
+$Bkp(B $Bkq(B $Bkr(B $Bks(B $Bkt(B $Bku(B $Bkv(B $Bkw(B $Bkx(B $Bky(B $Bkz(B $Bk{(B $Bk|(B $Bk}(B $Bk~(B
+ $Bl!(B $Bl"(B $Bl#(B $Bl$(B $Bl%(B $Bl&(B $Bl'(B $Bl((B $Bl)(B $Bl*(B $Bl+(B $Bl,(B $Bl-(B $Bl.(B $Bl/(B
+$Bl0(B $Bl1(B $Bl2(B $Bl3(B $Bl4(B $Bl5(B $Bl6(B $Bl7(B $Bl8(B $Bl9(B $Bl:(B $Bl;(B $Bl<(B $Bl=(B $Bl>(B $Bl?(B
+$Bl@(B $BlA(B $BlB(B $BlC(B $BlD(B $BlE(B $BlF(B $BlG(B $BlH(B $BlI(B $BlJ(B $BlK(B $BlL(B $BlM(B $BlN(B $BlO(B
+$BlP(B $BlQ(B $BlR(B $BlS(B $BlT(B $BlU(B $BlV(B $BlW(B $BlX(B $BlY(B $BlZ(B $Bl[(B $Bl\(B $Bl](B $Bl^(B $Bl_(B
+$Bl`(B $Bla(B $Blb(B $Blc(B $Bld(B $Ble(B $Blf(B $Blg(B $Blh(B $Bli(B $Blj(B $Blk(B $Bll(B $Blm(B $Bln(B $Blo(B
+$Blp(B $Blq(B $Blr(B $Bls(B $Blt(B $Blu(B $Blv(B $Blw(B $Blx(B $Bly(B $Blz(B $Bl{(B $Bl|(B $Bl}(B $Bl~(B
+ $Bm!(B $Bm"(B $Bm#(B $Bm$(B $Bm%(B $Bm&(B $Bm'(B $Bm((B $Bm)(B $Bm*(B $Bm+(B $Bm,(B $Bm-(B $Bm.(B $Bm/(B
+$Bm0(B $Bm1(B $Bm2(B $Bm3(B $Bm4(B $Bm5(B $Bm6(B $Bm7(B $Bm8(B $Bm9(B $Bm:(B $Bm;(B $Bm<(B $Bm=(B $Bm>(B $Bm?(B
+$Bm@(B $BmA(B $BmB(B $BmC(B $BmD(B $BmE(B $BmF(B $BmG(B $BmH(B $BmI(B $BmJ(B $BmK(B $BmL(B $BmM(B $BmN(B $BmO(B
+$BmP(B $BmQ(B $BmR(B $BmS(B $BmT(B $BmU(B $BmV(B $BmW(B $BmX(B $BmY(B $BmZ(B $Bm[(B $Bm\(B $Bm](B $Bm^(B $Bm_(B
+$Bm`(B $Bma(B $Bmb(B $Bmc(B $Bmd(B $Bme(B $Bmf(B $Bmg(B $Bmh(B $Bmi(B $Bmj(B $Bmk(B $Bml(B $Bmm(B $Bmn(B $Bmo(B
+$Bmp(B $Bmq(B $Bmr(B $Bms(B $Bmt(B $Bmu(B $Bmv(B $Bmw(B $Bmx(B $Bmy(B $Bmz(B $Bm{(B $Bm|(B $Bm}(B $Bm~(B
+ $Bn!(B $Bn"(B $Bn#(B $Bn$(B $Bn%(B $Bn&(B $Bn'(B $Bn((B $Bn)(B $Bn*(B $Bn+(B $Bn,(B $Bn-(B $Bn.(B $Bn/(B
+$Bn0(B $Bn1(B $Bn2(B $Bn3(B $Bn4(B $Bn5(B $Bn6(B $Bn7(B $Bn8(B $Bn9(B $Bn:(B $Bn;(B $Bn<(B $Bn=(B $Bn>(B $Bn?(B
+$Bn@(B $BnA(B $BnB(B $BnC(B $BnD(B $BnE(B $BnF(B $BnG(B $BnH(B $BnI(B $BnJ(B $BnK(B $BnL(B $BnM(B $BnN(B $BnO(B
+$BnP(B $BnQ(B $BnR(B $BnS(B $BnT(B $BnU(B $BnV(B $BnW(B $BnX(B $BnY(B $BnZ(B $Bn[(B $Bn\(B $Bn](B $Bn^(B $Bn_(B
+$Bn`(B $Bna(B $Bnb(B $Bnc(B $Bnd(B $Bne(B $Bnf(B $Bng(B $Bnh(B $Bni(B $Bnj(B $Bnk(B $Bnl(B $Bnm(B $Bnn(B $Bno(B
+$Bnp(B $Bnq(B $Bnr(B $Bns(B $Bnt(B $Bnu(B $Bnv(B $Bnw(B $Bnx(B $Bny(B $Bnz(B $Bn{(B $Bn|(B $Bn}(B $Bn~(B
+ $Bo!(B $Bo"(B $Bo#(B $Bo$(B $Bo%(B $Bo&(B $Bo'(B $Bo((B $Bo)(B $Bo*(B $Bo+(B $Bo,(B $Bo-(B $Bo.(B $Bo/(B
+$Bo0(B $Bo1(B $Bo2(B $Bo3(B $Bo4(B $Bo5(B $Bo6(B $Bo7(B $Bo8(B $Bo9(B $Bo:(B $Bo;(B $Bo<(B $Bo=(B $Bo>(B $Bo?(B
+$Bo@(B $BoA(B $BoB(B $BoC(B $BoD(B $BoE(B $BoF(B $BoG(B $BoH(B $BoI(B $BoJ(B $BoK(B $BoL(B $BoM(B $BoN(B $BoO(B
+$BoP(B $BoQ(B $BoR(B $BoS(B $BoT(B $BoU(B $BoV(B $BoW(B $BoX(B $BoY(B $BoZ(B $Bo[(B $Bo\(B $Bo](B $Bo^(B $Bo_(B
+$Bo`(B $Boa(B $Bob(B $Boc(B $Bod(B $Boe(B $Bof(B $Bog(B $Boh(B $Boi(B $Boj(B $Bok(B $Bol(B $Bom(B $Bon(B $Boo(B
+$Bop(B $Boq(B $Bor(B $Bos(B $Bot(B $Bou(B $Bov(B $Bow(B $Box(B $Boy(B $Boz(B $Bo{(B $Bo|(B $Bo}(B $Bo~(B
+ $Bp!(B $Bp"(B $Bp#(B $Bp$(B $Bp%(B $Bp&(B $Bp'(B $Bp((B $Bp)(B $Bp*(B $Bp+(B $Bp,(B $Bp-(B $Bp.(B $Bp/(B
+$Bp0(B $Bp1(B $Bp2(B $Bp3(B $Bp4(B $Bp5(B $Bp6(B $Bp7(B $Bp8(B $Bp9(B $Bp:(B $Bp;(B $Bp<(B $Bp=(B $Bp>(B $Bp?(B
+$Bp@(B $BpA(B $BpB(B $BpC(B $BpD(B $BpE(B $BpF(B $BpG(B $BpH(B $BpI(B $BpJ(B $BpK(B $BpL(B $BpM(B $BpN(B $BpO(B
+$BpP(B $BpQ(B $BpR(B $BpS(B $BpT(B $BpU(B $BpV(B $BpW(B $BpX(B $BpY(B $BpZ(B $Bp[(B $Bp\(B $Bp](B $Bp^(B $Bp_(B
+$Bp`(B $Bpa(B $Bpb(B $Bpc(B $Bpd(B $Bpe(B $Bpf(B $Bpg(B $Bph(B $Bpi(B $Bpj(B $Bpk(B $Bpl(B $Bpm(B $Bpn(B $Bpo(B
+$Bpp(B $Bpq(B $Bpr(B $Bps(B $Bpt(B $Bpu(B $Bpv(B $Bpw(B $Bpx(B $Bpy(B $Bpz(B $Bp{(B $Bp|(B $Bp}(B $Bp~(B
+ $Bq!(B $Bq"(B $Bq#(B $Bq$(B $Bq%(B $Bq&(B $Bq'(B $Bq((B $Bq)(B $Bq*(B $Bq+(B $Bq,(B $Bq-(B $Bq.(B $Bq/(B
+$Bq0(B $Bq1(B $Bq2(B $Bq3(B $Bq4(B $Bq5(B $Bq6(B $Bq7(B $Bq8(B $Bq9(B $Bq:(B $Bq;(B $Bq<(B $Bq=(B $Bq>(B $Bq?(B
+$Bq@(B $BqA(B $BqB(B $BqC(B $BqD(B $BqE(B $BqF(B $BqG(B $BqH(B $BqI(B $BqJ(B $BqK(B $BqL(B $BqM(B $BqN(B $BqO(B
+$BqP(B $BqQ(B $BqR(B $BqS(B $BqT(B $BqU(B $BqV(B $BqW(B $BqX(B $BqY(B $BqZ(B $Bq[(B $Bq\(B $Bq](B $Bq^(B $Bq_(B
+$Bq`(B $Bqa(B $Bqb(B $Bqc(B $Bqd(B $Bqe(B $Bqf(B $Bqg(B $Bqh(B $Bqi(B $Bqj(B $Bqk(B $Bql(B $Bqm(B $Bqn(B $Bqo(B
+$Bqp(B $Bqq(B $Bqr(B $Bqs(B $Bqt(B $Bqu(B $Bqv(B $Bqw(B $Bqx(B $Bqy(B $Bqz(B $Bq{(B $Bq|(B $Bq}(B $Bq~(B
+ $Br!(B $Br"(B $Br#(B $Br$(B $Br%(B $Br&(B $Br'(B $Br((B $Br)(B $Br*(B $Br+(B $Br,(B $Br-(B $Br.(B $Br/(B
+$Br0(B $Br1(B $Br2(B $Br3(B $Br4(B $Br5(B $Br6(B $Br7(B $Br8(B $Br9(B $Br:(B $Br;(B $Br<(B $Br=(B $Br>(B $Br?(B
+$Br@(B $BrA(B $BrB(B $BrC(B $BrD(B $BrE(B $BrF(B $BrG(B $BrH(B $BrI(B $BrJ(B $BrK(B $BrL(B $BrM(B $BrN(B $BrO(B
+$BrP(B $BrQ(B $BrR(B $BrS(B $BrT(B $BrU(B $BrV(B $BrW(B $BrX(B $BrY(B $BrZ(B $Br[(B $Br\(B $Br](B $Br^(B $Br_(B
+$Br`(B $Bra(B $Brb(B $Brc(B $Brd(B $Bre(B $Brf(B $Brg(B $Brh(B $Bri(B $Brj(B $Brk(B $Brl(B $Brm(B $Brn(B $Bro(B
+$Brp(B $Brq(B $Brr(B $Brs(B $Brt(B $Bru(B $Brv(B $Brw(B $Brx(B $Bry(B $Brz(B $Br{(B $Br|(B $Br}(B $Br~(B
+ $Bs!(B $Bs"(B $Bs#(B $Bs$(B $Bs%(B $Bs&(B $Bs'(B $Bs((B $Bs)(B $Bs*(B $Bs+(B $Bs,(B $Bs-(B $Bs.(B $Bs/(B
+$Bs0(B $Bs1(B $Bs2(B $Bs3(B $Bs4(B $Bs5(B $Bs6(B $Bs7(B $Bs8(B $Bs9(B $Bs:(B $Bs;(B $Bs<(B $Bs=(B $Bs>(B $Bs?(B
+$Bs@(B $BsA(B $BsB(B $BsC(B $BsD(B $BsE(B $BsF(B $BsG(B $BsH(B $BsI(B $BsJ(B $BsK(B $BsL(B $BsM(B $BsN(B $BsO(B
+$BsP(B $BsQ(B $BsR(B $BsS(B $BsT(B $BsU(B $BsV(B $BsW(B $BsX(B $BsY(B $BsZ(B $Bs[(B $Bs\(B $Bs](B $Bs^(B $Bs_(B
+$Bs`(B $Bsa(B $Bsb(B $Bsc(B $Bsd(B $Bse(B $Bsf(B $Bsg(B $Bsh(B $Bsi(B $Bsj(B $Bsk(B $Bsl(B $Bsm(B $Bsn(B $Bso(B
+$Bsp(B $Bsq(B $Bsr(B $Bss(B $Bst(B $Bsu(B $Bsv(B $Bsw(B $Bsx(B $Bsy(B $Bsz(B $Bs{(B $Bs|(B $Bs}(B $Bs~(B
+ $Bt!(B $Bt"(B $Bt#(B $Bt$(B $Bt%(B $Bt&(B
+
+JIS0123 ($BF|K\8l(B) $B$3$s$K$A$O(B
+ JIS -- $B855$(B $B3+H/(B
+ $B/export/Users/ianl/1.4.2/test/sun/nio/cs/SCCS/s.ISO2022JP.data0%G!<%?%Y!<%9$KAw$k$Y$-$G$J$$$3$H$KCmL\$7$F$/$@$5$$!#(B</p>
diff --git a/test/sun/nio/cs/ISO8859x.java b/test/sun/nio/cs/ISO8859x.java
new file mode 100644
index 000000000..7befa960e
--- /dev/null
+++ b/test/sun/nio/cs/ISO8859x.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 6419791
+ * @summary
+ * @author Martin Buchholz
+ */
+
+import java.io.*;
+import java.util.*;
+import java.nio.charset.*;
+import java.nio.*;
+
+public class ISO8859x {
+ final static byte[] lowBytes = new byte[0xa0];
+ final static char[] lowChars = new char[0xa0];
+ final static String lowString;
+ static {
+ for (int i = 0; i < 0xa0; i++) {
+ lowBytes[i] = (byte) i;
+ lowChars[i] = (char) i;
+ }
+ lowString = new String(lowChars);
+ }
+
+ private static void testCharset(Charset cs) throws Throwable {
+ String csn = cs.name();
+ System.out.println(csn);
+
+ check(cs.canEncode());
+ check(Arrays.equals(lowString.getBytes(csn), lowBytes));
+ check(new String(lowBytes, csn).equals(lowString));
+
+ CharsetEncoder encoder = cs.newEncoder();
+ CharsetDecoder decoder = cs.newDecoder();
+ decoder.onUnmappableCharacter(CodingErrorAction.REPORT)
+ .onMalformedInput(CodingErrorAction.REPORT);
+ encoder.onUnmappableCharacter(CodingErrorAction.REPORT)
+ .onMalformedInput(CodingErrorAction.REPORT);
+
+ byte[] bytes = new byte[1];
+ for (int c = 0xa0; c < 0x100; c++) {
+ try {
+ bytes[0] = (byte) c;
+ char[] chars;
+ try { chars = decoder.decode(ByteBuffer.wrap(bytes)).array(); }
+ catch (UnmappableCharacterException x) { continue; }
+ equal(chars.length, 1);
+ byte[] bytes2 = encoder.encode(CharBuffer.wrap(chars)).array();
+ check(Arrays.equals(bytes2, bytes));
+ } catch (Throwable t) {
+ System.out.printf("cs=%s c=%02x%n", cs, c);
+ unexpected(t);
+ }
+ }
+ }
+
+ private static void realMain(String[] args) throws Throwable {
+ for (Map.Entry<String,Charset> e
+ : Charset.availableCharsets().entrySet()) {
+ String csn = e.getKey();
+ Charset cs = e.getValue();
+ if (csn.matches(".*(8859).*"))
+ try { testCharset(cs); }
+ catch (Throwable t) { unexpected(t); }
+ }
+ }
+
+ //--------------------- Infrastructure ---------------------------
+ static volatile int passed = 0, failed = 0;
+ static void pass() {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 check(boolean cond) {if (cond) pass(); else fail();}
+ 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.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
+ if (failed > 0) throw new AssertionError("Some tests failed");}
+}
diff --git a/test/sun/nio/cs/JISAutoDetectTest.java b/test/sun/nio/cs/JISAutoDetectTest.java
new file mode 100644
index 000000000..eb3b75d05
--- /dev/null
+++ b/test/sun/nio/cs/JISAutoDetectTest.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 4087261 4184592
+ * @summary Make sure to determine Japanese text encoding as correctly
+ * as possible.
+ */
+
+import java.nio.charset.*;
+import java.nio.*;
+
+public class JISAutoDetectTest {
+
+ class TestData {
+ byte[] input;
+ byte[] input2; // for second call
+ String expectedCharset;
+ }
+ TestData[] data = new TestData[50];
+
+ public static void main(String[] argv) throws Exception {
+ JISAutoDetectTest test = new JISAutoDetectTest();
+ test.execute();
+ }
+
+ void execute() throws Exception {
+ CharBuffer output = CharBuffer.allocate(128);
+ CharBuffer expectedOutput = CharBuffer.allocate(128);
+
+ for (int i = 0; i < data.length; i++) {
+ if (data[i] == null)
+ break;
+
+ CharsetDecoder autoDetect = Charset.forName("JISAutoDetect").newDecoder();
+ CharsetDecoder dec = Charset.forName(data[i].expectedCharset).newDecoder();
+ CoderResult ncr, mcr;
+ output.clear();
+ expectedOutput.clear();
+ ncr = autoDetect.decode(ByteBuffer.wrap(data[i].input),
+ output,
+ true);
+ mcr = dec.decode(ByteBuffer.wrap(data[i].input),
+ expectedOutput,
+ true);
+
+ if (data[i].input2 != null) {
+ ncr = autoDetect.decode(ByteBuffer.wrap(data[i].input2),
+ output,
+ true);
+ mcr = dec.decode(ByteBuffer.wrap(data[i].input2),
+ expectedOutput,
+ true);
+ }
+ String testNumber = " (test#: " + i + ")";
+ if (ncr != mcr)
+ throw new Exception("JISAutoDetect returned a wrong result");
+ output.flip();
+ expectedOutput.flip();
+ if (output.limit() != expectedOutput.limit())
+ throw new Exception("JISAutoDetect returned a wrong length"+testNumber);
+
+ for (int x = 0; x < output.limit(); x++) {
+ if (expectedOutput.charAt(x) != output.charAt(x))
+ throw new Exception("JISAutoDetect returned a wrong string"+testNumber);
+ }
+ }
+ }
+
+ public JISAutoDetectTest() {
+ int i = 0;
+
+ // 0
+ data[i] = new TestData();
+ data[i].input = new byte[] { (byte)'C', (byte)'o', (byte)'p', (byte)'y',
+ (byte)'r', (byte)'i', (byte)'g', (byte)'h',
+ (byte)'t', (byte)' ', (byte)0xa9, (byte)' ',
+ (byte)'1', (byte)'9', (byte)'9', (byte)'8' };
+ data[i].expectedCharset = "SJIS";
+
+ // 1
+ i++;
+ data[i] = new TestData();
+ data[i].input = new byte[] { (byte)0xbb, (byte)0xdd, (byte)0xcf, (byte)0xb2,
+ (byte)0xb8, (byte)0xdb, (byte)0xbc, (byte)0xbd,
+ (byte)0xc3, (byte)0xd1, (byte)0xbd, (byte)0xde,
+ (byte)0x82, (byte)0xc5, (byte)0x82, (byte)0xb7 };
+ data[i].expectedCharset = "SJIS";
+
+ // 2
+ i++;
+ data[i] = new TestData();
+ data[i].input = new byte[] { (byte)0xbb, (byte)0xdd, (byte)0xcf, (byte)0xb2,
+ (byte)0xb8, (byte)0xdb, (byte)0xbc, (byte)0xbd,
+ (byte)0xc3, (byte)0xd1, (byte)0xbd, (byte)0xde};
+ data[i].expectedCharset = "SJIS";
+
+ // 3
+ i++;
+ data[i] = new TestData();
+ data[i].input = new byte[] { (byte)0xbb, (byte)0xdd, (byte)0xcf, (byte)0xb2,
+ (byte)0xb8, (byte)0xdb, (byte)0xbc, (byte)0xbd,
+ (byte)0xc3, (byte)0xd1, (byte)0xbd };
+ data[i].expectedCharset = "SJIS";
+
+ // 4
+ i++;
+ data[i] = new TestData();
+ data[i].input = new byte[] { (byte)0x8f, (byte)0xa1, (byte)0xaa };
+ data[i].expectedCharset = "SJIS";
+
+ // 5
+ i++;
+ data[i] = new TestData();
+ data[i].input = new byte[] { (byte)0xa4, (byte)0xd2, (byte)0xa4, (byte)0xe9,
+ (byte)0xa4, (byte)0xac, (byte)0xa4, (byte)0xca };
+ data[i].expectedCharset = "EUC_JP";
+
+ // 6
+ i++;
+ data[i] = new TestData();
+ data[i].input = new byte[] { (byte)0xbb, (byte)0xdd, (byte)0xcf, (byte)0xb2,
+ (byte)0xb8, (byte)0xdb, (byte)0xbc, (byte)0xbd,
+ (byte)0xc3, (byte)0xd1, (byte)0xbd, (byte)0xde,
+ (byte)0xa4, (byte)0xc7, (byte)0xa4, (byte)0xb9 };
+ data[i].expectedCharset = "EUC_JP";
+
+ // 7 (for 4184592)
+ i++;
+ data[i] = new TestData();
+ data[i].input = new byte[] { (byte)'a', (byte)'b', (byte)'c' };
+ data[i].input2 = new byte[] { (byte)0x1b, (byte)'$', (byte)'B',
+ (byte)'#', (byte)'4', (byte)'$', (byte)'5',
+ (byte)0x1b, (byte)'(', (byte)'B' };
+ data[i].expectedCharset = "ISO2022JP";
+ }
+}
diff --git a/test/sun/nio/cs/LatinCharReplacementTWTest.java b/test/sun/nio/cs/LatinCharReplacementTWTest.java
new file mode 100644
index 000000000..da2123d69
--- /dev/null
+++ b/test/sun/nio/cs/LatinCharReplacementTWTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4658679 4879644
+ @summary Checks replacement logic within EUC-TW decoder
+*/
+
+/*
+ * Tests goodness of fix for bugID 4658679: EUC-TW decoder should
+ * perform replacement when it encounters latin chars outside the
+ * normal US-ASCII range. For example: Isolated occurrences of
+ * French accented chars. See bugID: 4658679.
+ */
+import java.io.*;
+public class LatinCharReplacementTWTest {
+ public static void main(String[] args) throws Exception {
+ final String bugID = "4658679";
+ // Attempt to decode
+ byte[] input = { (byte)0xa1,
+ (byte)0xf0,
+ (byte)'r',
+ (byte)'e',
+ (byte)'s',
+ (byte)0xe9, // illegal within EUC-TW
+ (byte)'r',
+ (byte)'v',
+ (byte)0xe9, // illegal within EUC-TW
+ (byte)'s',
+ (byte)0xa2,
+ (byte)0xf8
+ };
+
+ char[] expected = { (char) 0xa7,
+ (char) 'r',
+ (char) 'e',
+ (char) 's',
+ (char) 0xFFFD, // replacement for accented lowercase e
+ (char) 'r',
+ (char) 'v',
+ (char) 0xFFFD, // replacement for accented lowercase e
+ (char) 's',
+ (char) 0xb0 };
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(input);
+ InputStreamReader isr = new InputStreamReader(bais, "x-EUC-TW");
+
+ char[] decoded = new char[128];
+ int numChars = isr.read(decoded);
+
+ if (numChars != expected.length) {
+ throw new Exception("failure of test for bug " + bugID);
+ }
+
+ for (int i = 0 ; i < numChars; i++) {
+ if (decoded[i] != expected[i])
+ throw new Exception("failure of test for bug " + bugID);
+ }
+ }
+}
diff --git a/test/sun/nio/cs/LeftOverSurrogate.java b/test/sun/nio/cs/LeftOverSurrogate.java
new file mode 100644
index 000000000..e23543845
--- /dev/null
+++ b/test/sun/nio/cs/LeftOverSurrogate.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4160949
+ @summary Verify that left over high surrogate does not
+ cause an UnknownCharacterException when substitutition mode is turned on.
+ */
+
+import java.nio.*;
+import java.nio.charset.*;
+
+public class LeftOverSurrogate {
+
+ public static void main(String args[]) throws Exception {
+ String s = "abc\uD800\uDC00qrst"; // Valid surrogate
+ char[] c = s.toCharArray();
+ CharsetEncoder enc = Charset.forName("ISO8859_1").newEncoder()
+ .onUnmappableCharacter(CodingErrorAction.REPLACE);
+ /* Process the first 4 characters, including the high surrogate
+ which should be stored */
+ ByteBuffer bb = ByteBuffer.allocate(10);
+ CharBuffer cb = CharBuffer.wrap(c);
+ cb.limit(4);
+ enc.encode(cb, bb, false);
+ cb.limit(7);
+ enc.encode(cb, bb, true);
+ byte[] first = bb.array();
+ for(int i = 0; i < 7; i++)
+ System.err.printf("[%d]=%d was %d\n",
+ i,
+ (int) first[i] &0xffff,
+ (int) c[i] & 0xffff);
+ }
+}
diff --git a/test/sun/nio/cs/MalformedSurrogates.java b/test/sun/nio/cs/MalformedSurrogates.java
new file mode 100644
index 000000000..c6d6713d7
--- /dev/null
+++ b/test/sun/nio/cs/MalformedSurrogates.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4153987
+ @summary Malformed surrogates should be handled by the converter in
+ substitution mode.
+ */
+
+import java.io.*;
+
+public class MalformedSurrogates {
+
+ public static void main(String[] args) throws Exception {
+
+ String fe = System.getProperty("file.encoding");
+ if ( fe.equalsIgnoreCase("UTF8")
+ || fe.equalsIgnoreCase("UTF-8")
+ || fe.equalsIgnoreCase("UTF_8"))
+ // This test is meaningless if the default charset
+ // does handle surrogates
+ return;
+
+ System.out.println("Testing string conversion...");
+ /* Example with malformed surrogate, and an offset */
+ String t = "abc\uD800\uDB00efgh";
+ String t2 = t.substring(2);
+ byte[] b = t2.getBytes();
+ System.err.println(b.length);
+ for (int i = 0; i < b.length; i++)
+ System.err.println("[" + i + "]" + "=" + (char) b[i]
+ + "=" + (int) b[i]);
+ if (b.length != 7) {
+ throw new Exception("Bad string conversion for bad surrogate");
+ }
+
+ /* Example with a proper surrogate, no offset. Always worked */
+ String t3 = "abc\uD800\uDC00efgh";
+ byte[] b2 = t3.getBytes();
+ System.out.println(b2.length);
+ for(int i = 0; i < b2.length; i++)
+ System.err.println("[" + i + "]" + "=" + (char) b2[i]);
+ if (b2.length != 8) {
+ throw new Exception("Bad string conversion for good surrogate");
+ }
+
+ OutputStream os = new ByteArrayOutputStream();
+ OutputStreamWriter osw = new OutputStreamWriter(os);
+ System.out.println("Testing flush....");
+ /* Check for the case where the converter has a left over
+ high surrogate when flush is called on the converter */
+ osw.flush();
+ String s = "abc\uD800"; // High surrogate
+ char[] c = s.toCharArray();
+ osw.write(s, 0, 4);
+ osw.flush();
+
+ System.out.println("Testing convert...");
+ /* Verify that all other characters go through */
+ for (int k = 1; k < 65535 ; k++) {
+ osw.write("Char[" + k + "]=\"" + ((char) k) + "\"");
+ }
+
+ }
+}
diff --git a/test/sun/nio/cs/NIOJISAutoDetectTest.java b/test/sun/nio/cs/NIOJISAutoDetectTest.java
new file mode 100644
index 000000000..3e19aa149
--- /dev/null
+++ b/test/sun/nio/cs/NIOJISAutoDetectTest.java
@@ -0,0 +1,282 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 4831163 5053096 5056440
+ * @summary NIO charset basic verification of JISAutodetect decoder
+ * @author Martin Buchholz
+ */
+
+import java.io.*;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CoderResult;
+import static java.lang.System.*;
+
+public class NIOJISAutoDetectTest {
+ private static int failures = 0;
+
+ private static void fail(String failureMsg) {
+ System.out.println(failureMsg);
+ failures++;
+ }
+
+ private static void check(boolean cond, String msg) {
+ if (!cond) {
+ fail("test failed: " + msg);
+ new Exception().printStackTrace();
+ }
+ }
+
+ private static String SJISName() throws Exception {
+ return detectingCharset(new byte[] {(byte)0xbb, (byte)0xdd,
+ (byte)0xcf, (byte)0xb2});
+ }
+
+ private static String EUCJName() throws Exception {
+ return detectingCharset(new byte[] {(byte)0xa4, (byte)0xd2,
+ (byte)0xa4, (byte)0xe9});
+ }
+
+ private static String detectingCharset(byte[] bytes) throws Exception {
+ //----------------------------------------------------------------
+ // Test special public methods of CharsetDecoder while we're here
+ //----------------------------------------------------------------
+ CharsetDecoder cd = Charset.forName("JISAutodetect").newDecoder();
+ check(cd.isAutoDetecting(), "isAutodecting()");
+ check(! cd.isCharsetDetected(), "isCharsetDetected");
+ cd.decode(ByteBuffer.wrap(new byte[] {(byte)'A'}));
+ check(! cd.isCharsetDetected(), "isCharsetDetected");
+ try {
+ cd.detectedCharset();
+ fail("no IllegalStateException");
+ } catch (IllegalStateException e) {}
+ cd.decode(ByteBuffer.wrap(bytes));
+ check(cd.isCharsetDetected(), "isCharsetDetected");
+ Charset cs = cd.detectedCharset();
+ check(cs != null, "cs != null");
+ check(! cs.newDecoder().isAutoDetecting(), "isAutodetecting()");
+ return cs.name();
+ }
+
+ public static void main(String[] argv) throws Exception {
+ //----------------------------------------------------------------
+ // Used to throw BufferOverflowException
+ //----------------------------------------------------------------
+ out.println(new String(new byte[] {0x61}, "JISAutoDetect"));
+
+ //----------------------------------------------------------------
+ // InputStreamReader(...JISAutoDetect) used to infloop
+ //----------------------------------------------------------------
+ {
+ byte[] bytes = "ABCD\n".getBytes();
+ ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+ InputStreamReader isr = new InputStreamReader(bais, "JISAutoDetect");
+ BufferedReader reader = new BufferedReader(isr);
+ check (reader.readLine().equals("ABCD"), "first read gets text");
+ // used to return "ABCD" on second and subsequent reads
+ check (reader.readLine() == null, "second read gets null");
+ }
+
+ //----------------------------------------------------------------
+ // Check all Japanese chars for sanity
+ //----------------------------------------------------------------
+ String SJIS = SJISName();
+ String EUCJ = EUCJName();
+ out.printf("SJIS charset is %s%n", SJIS);
+ out.printf("EUCJ charset is %s%n", EUCJ);
+
+ int cnt2022 = 0;
+ int cnteucj = 0;
+ int cntsjis = 0;
+ int cntBAD = 0;
+ for (char c = '\u0000'; c < '\uffff'; c++) {
+ if (c == '\u001b' || // ESC
+ c == '\u2014') // Em-Dash?
+ continue;
+ String s = new String (new char[] {c});
+
+ //----------------------------------------------------------------
+ // JISAutoDetect can handle all chars that EUC-JP can,
+ // unless there is an ambiguity with SJIS.
+ //----------------------------------------------------------------
+ byte[] beucj = s.getBytes(EUCJ);
+ String seucj = new String(beucj, EUCJ);
+ if (seucj.equals(s)) {
+ cnteucj++;
+ String sauto = new String(beucj, "JISAutoDetect");
+
+ if (! sauto.equals(seucj)) {
+ cntBAD++;
+ String ssjis = new String(beucj, SJIS);
+ if (! sauto.equals(ssjis)) {
+ fail("Autodetection agrees with neither EUC nor SJIS");
+ }
+ }
+ } else
+ continue; // Optimization
+
+ //----------------------------------------------------------------
+ // JISAutoDetect can handle all chars that ISO-2022-JP can.
+ //----------------------------------------------------------------
+ byte[] b2022 = s.getBytes("ISO-2022-JP");
+ if (new String(b2022, "ISO-2022-JP").equals(s)) {
+ cnt2022++;
+ check(new String(b2022,"JISAutoDetect").equals(s),
+ "ISO2022 autodetection");
+ }
+
+ //----------------------------------------------------------------
+ // JISAutoDetect can handle almost all chars that SJIS can.
+ //----------------------------------------------------------------
+ byte[] bsjis = s.getBytes(SJIS);
+ if (new String(bsjis, SJIS).equals(s)) {
+ cntsjis++;
+ check(new String(bsjis,"JISAutoDetect").equals(s),
+ "SJIS autodetection");
+ }
+ }
+ out.printf("There are %d ISO-2022-JP-encodable characters.%n", cnt2022);
+ out.printf("There are %d SJIS-encodable characters.%n", cntsjis);
+ out.printf("There are %d EUC-JP-encodable characters.%n", cnteucj);
+ out.printf("There are %d characters that are " +
+ "misdetected as SJIS after being EUC-encoded.%n", cntBAD);
+
+
+ //----------------------------------------------------------------
+ // tests for specific byte sequences
+ //----------------------------------------------------------------
+ test("ISO-2022-JP", new byte[] {'A', 'B', 'C'});
+ test("EUC-JP", new byte[] {'A', 'B', 'C'});
+ test("SJIS", new byte[] {'A', 'B', 'C'});
+
+ test("SJIS",
+ new byte[] { 'C', 'o', 'p', 'y', 'r', 'i', 'g', 'h', 't',
+ ' ', (byte)0xa9, ' ', '1', '9', '9', '8' });
+
+ test("SJIS",
+ new byte[] { (byte)0xbb, (byte)0xdd, (byte)0xcf, (byte)0xb2,
+ (byte)0xb8, (byte)0xdb, (byte)0xbc, (byte)0xbd,
+ (byte)0xc3, (byte)0xd1, (byte)0xbd, (byte)0xde,
+ (byte)0x82, (byte)0xc5, (byte)0x82, (byte)0xb7 });
+
+ test("EUC-JP",
+ new byte[] { (byte)0xa4, (byte)0xd2, (byte)0xa4, (byte)0xe9,
+ (byte)0xa4, (byte)0xac, (byte)0xa4, (byte)0xca });
+
+ test("SJIS",
+ new byte[] { (byte)0xbb, (byte)0xdd, (byte)0xcf, (byte)0xb2,
+ (byte)0xb8, (byte)0xdb, (byte)0xbc, (byte)0xbd,
+ (byte)0xc3, (byte)0xd1, (byte)0xbd, (byte)0xde});
+
+ test("SJIS",
+ new byte[] { (byte)0xbb, (byte)0xdd, (byte)0xcf, (byte)0xb2,
+ (byte)0xb8, (byte)0xdb, (byte)0xbc, (byte)0xbd,
+ (byte)0xc3, (byte)0xd1, (byte)0xbd });
+
+ test("SJIS",
+ new byte[] { (byte)0x8f, (byte)0xa1, (byte)0xaa });
+
+ test("EUC-JP",
+ new byte[] { (byte)0x8f, (byte)0xc5, (byte)0xe0, (byte)0x20});
+
+ test("EUC-JP",
+ new byte[] { (byte)0xbb, (byte)0xdd, (byte)0xcf, (byte)0xb2,
+ (byte)0xb8, (byte)0xdb, (byte)0xbc, (byte)0xbd,
+ (byte)0xc3, (byte)0xd1, (byte)0xbd, (byte)0xde,
+ (byte)0xa4, (byte)0xc7, (byte)0xa4, (byte)0xb9 });
+
+ test("ISO-2022-JP",
+ new byte[] { 0x1b, '$', 'B', '#', '4', '$', '5', 0x1b, '(', 'B' });
+
+
+ //----------------------------------------------------------------
+ // Check handling of ambiguous end-of-input in middle of first char
+ //----------------------------------------------------------------
+ {
+ CharsetDecoder dc = Charset.forName("x-JISAutoDetect").newDecoder();
+ ByteBuffer bb = ByteBuffer.allocate(128);
+ CharBuffer cb = CharBuffer.allocate(128);
+ bb.put((byte)'A').put((byte)0x8f);
+ bb.flip();
+ CoderResult res = dc.decode(bb,cb,false);
+ check(res.isUnderflow(), "isUnderflow");
+ check(bb.position() == 1, "bb.position()");
+ check(cb.position() == 1, "cb.position()");
+ res = dc.decode(bb,cb,false);
+ check(res.isUnderflow(), "isUnderflow");
+ check(bb.position() == 1, "bb.position()");
+ check(cb.position() == 1, "cb.position()");
+ bb.compact();
+ bb.put((byte)0xa1);
+ bb.flip();
+ res = dc.decode(bb,cb,true);
+ check(res.isUnderflow(), "isUnderflow");
+ check(bb.position() == 2, "bb.position()");
+ check(cb.position() == 2, "cb.position()");
+ }
+
+
+ if (failures > 0)
+ throw new RuntimeException(failures + " tests failed");
+ }
+
+ static void checkCoderResult(CoderResult result) {
+ check(result.isUnderflow(),
+ "Unexpected coder result: " + result);
+ }
+
+ static void test(String expectedCharset, byte[] input) throws Exception {
+ Charset cs = Charset.forName("x-JISAutoDetect");
+ CharsetDecoder autoDetect = cs.newDecoder();
+
+ Charset cs2 = Charset.forName(expectedCharset);
+ CharsetDecoder decoder = cs2.newDecoder();
+
+ ByteBuffer bb = ByteBuffer.allocate(128);
+ CharBuffer charOutput = CharBuffer.allocate(128);
+ CharBuffer charExpected = CharBuffer.allocate(128);
+
+ bb.put(input);
+ bb.flip();
+ bb.mark();
+
+ CoderResult result = autoDetect.decode(bb, charOutput, true);
+ checkCoderResult(result);
+ charOutput.flip();
+ String actual = charOutput.toString();
+
+ bb.reset();
+
+ result = decoder.decode(bb, charExpected, true);
+ checkCoderResult(result);
+ charExpected.flip();
+ String expected = charExpected.toString();
+
+ check(actual.equals(expected),
+ String.format("actual=%s expected=%s", actual, expected));
+ }
+}
diff --git a/test/sun/nio/cs/ReadZero.java b/test/sun/nio/cs/ReadZero.java
new file mode 100644
index 000000000..d676b9ec2
--- /dev/null
+++ b/test/sun/nio/cs/ReadZero.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ * @summary Verify that if InputStream.read returns 0 we throw an exception.
+ * @bug 4684515
+ */
+
+import java.io.*;
+
+public class ReadZero {
+
+ public static void main(String [] args) throws IOException {
+ ReadZero r = new ReadZero();
+ r.testInputStream();
+ }
+
+ private void testInputStream() throws IOException {
+ File f = new File(System.getProperty("test.src", "."), "ReadZero.java");
+ InputStream is = new FileInputStream(f) {
+ public int read(byte [] b, int off, int len) {
+ System.out.println("FileInputStream.read");
+ return 0;
+ }
+ };
+
+ is.read(new byte[1], 0, 1); // ok
+ InputStreamReader isr = new InputStreamReader(is);
+
+ try {
+ int res = isr.read(new char[1], 0, 1);
+ } catch (IOException x) {
+ System.out.println("IOException caught");
+ return;
+ }
+ throw new RuntimeException("IOException not thrown");
+ }
+}
diff --git a/test/sun/nio/cs/SJISCanEncode.java b/test/sun/nio/cs/SJISCanEncode.java
new file mode 100644
index 000000000..9e843bf9b
--- /dev/null
+++ b/test/sun/nio/cs/SJISCanEncode.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4913702
+ @summary validates canEncode(char c) method for sun.nio.cs.Shift_JIS
+ */
+
+
+import java.nio.*;
+import java.nio.charset.*;
+
+public class SJISCanEncode {
+ private Charset cs;
+ private CharsetEncoder encoder;
+
+ private void canEncodeTest(char inputChar,
+ boolean expectedResult)
+ throws Exception {
+ String msg = "err: Shift_JIS canEncode() return value ";
+
+ if (encoder.canEncode(inputChar) != expectedResult) {
+ throw new Exception(msg + !(expectedResult) +
+ ": " + Integer.toHexString((int)inputChar));
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ SJISCanEncode test = new SJISCanEncode();
+ test.cs = Charset.forName("SJIS");
+ test.encoder = test.cs.newEncoder();
+
+ // us-ascii (mappable by Shift_JIS)
+ test.canEncodeTest('\u0001', true);
+
+ // Halfwidth Katakana
+ test.canEncodeTest('\uFF01', true);
+
+ // CJK ideograph
+ test.canEncodeTest('\u4E9C', true);
+
+ //Hiragana
+ test.canEncodeTest('\u3041', true);
+ // fullwidth Katakana
+ test.canEncodeTest('\u30A1', true);
+
+ // U+0080 should be unmappable
+ // U+4000 is a BMP character not covered by Shift_JISe
+
+ test.canEncodeTest('\u0080', false);
+ test.canEncodeTest('\u4000', false);
+ }
+}
diff --git a/test/sun/nio/cs/StreamEncoderClose.java b/test/sun/nio/cs/StreamEncoderClose.java
new file mode 100644
index 000000000..9c7d6b5c4
--- /dev/null
+++ b/test/sun/nio/cs/StreamEncoderClose.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 5005426
+ @summary Check if StreamEncoder close() method works correctly from
+ error recovery after the underneath OutputStream failed to
+ close the first time.
+ */
+
+import java.io.*;
+public class StreamEncoderClose {
+ public static void main( String arg[] ) throws Exception {
+ byte[] expected = {(byte)0x1b,(byte)0x24,(byte)0x42,
+ (byte)0x30,(byte)0x6c,
+ (byte)0x1b,(byte)0x28,(byte)0x42};
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ MyBufferedOutputStream mbos = new MyBufferedOutputStream(baos);
+ PrintWriter pw = new PrintWriter(new OutputStreamWriter(mbos, "ISO-2022-JP"));
+ mbos.dontClose();
+ pw.write("\u4e00");
+ pw.close(); // 1st PrintWriter Close
+ mbos.canClose();
+ pw.close(); // 2nd PrintWriter Close
+
+ //double check, probably not necessary
+ byte[] out = baos.toByteArray();
+ if (out.length != expected.length) {
+ throw new IOException("Failed");
+ }
+ for (int i = 0; i < out.length; i++) {
+ //System.out.printf("(byte)0x%x,", out[i] & 0xff);
+ if (out[i] != expected[i])
+ throw new IOException("Failed");
+ }
+ }
+
+ static class MyBufferedOutputStream extends BufferedOutputStream {
+ MyBufferedOutputStream(OutputStream os) {
+ super(os);
+ }
+ private boolean status;
+ public void dontClose() {
+ status = false;
+ }
+ public void canClose() {
+ status = true;
+ }
+ public void close() throws IOException {
+ if ( status == false ) {
+ throw new IOException("Can't close ");
+ }
+ super.close();
+ }
+ }
+}
diff --git a/test/sun/nio/cs/SurrogateGB18030Test.java b/test/sun/nio/cs/SurrogateGB18030Test.java
new file mode 100644
index 000000000..f104463b6
--- /dev/null
+++ b/test/sun/nio/cs/SurrogateGB18030Test.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4896454
+ @summary Check GB18030 surrogate encoding/decoding handling
+ */
+
+import java.nio.*;
+import java.nio.charset.*;
+
+public class SurrogateGB18030Test {
+ public static void main(String[] args) throws Exception {
+ SurrogateGB18030Test test = new SurrogateGB18030Test();
+
+ test.roundtripTest();
+
+ /**
+ * Valid Surrogate pair and 4 byte GB18030 representation
+ */
+
+ String inputString = "\uD800\uDC00";
+
+ byte[] expectedBytes = { (byte)0x90,
+ (byte)0x30,
+ (byte)0x81,
+ (byte)0x30
+ };
+ test.encodeTest(inputString, expectedBytes);
+
+ /**
+ * Vice-versa : check that 4 byte GB18030 value encodes correctly
+ */
+
+ String expectedStr = "\uDBFF\uDFFF";
+
+ byte[] inputBytes = { (byte)0xe3,
+ (byte)0x32,
+ (byte)0x9a,
+ (byte)0x35
+ };
+
+
+ test.decodeTest(inputBytes, expectedStr);
+
+ }
+
+ private void roundtripTest() throws Exception
+ {
+ byte[] ba;
+ char[] pair = new char[2];
+ for (char high = '\ud800'; high <= '\udbff'; high++) {
+ for (char low = '\udc00'; low <= '\udfff'; low++) {
+ pair[0] = high;
+ pair[1] = low;
+ String s = new String(pair);
+ if (!s.equals(new String(s.getBytes("gb18030"), "gb18030")))
+ throw new Exception ("GB18030 roundtrip failure");
+ }
+ }
+
+ }
+
+ private void encodeTest(String inputString, byte[] expectedBytes)
+ throws Exception
+ {
+ byte[] encoded = inputString.getBytes("GB18030");
+
+ CharBuffer cb = CharBuffer.wrap(inputString.toCharArray());
+ ByteBuffer bb = ByteBuffer.allocate(4);
+
+ CharsetEncoder encoder = Charset.forName("GB18030").newEncoder();
+ encoder.encode(cb, bb, true);
+
+ bb.flip();
+ for (int i = 0 ; i < expectedBytes.length; i++) {
+ if (encoded[i] != expectedBytes[i]
+ || bb.get() != expectedBytes[i])
+ throw new Exception ("GB18030 encode failure");
+ }
+ }
+
+ private void decodeTest(byte[] inputBytes, String expectedStr)
+ throws Exception
+ {
+ String s2 = new String(inputBytes, "GB18030");
+
+ CharsetDecoder decoder = Charset.forName("GB18030").newDecoder();
+
+ ByteBuffer bb = ByteBuffer.wrap(inputBytes);
+ CharBuffer cb = CharBuffer.allocate(2);
+ decoder.decode(bb, cb, true);
+
+ cb.flip();
+ for (int i = 0 ; i < expectedStr.length(); i++) {
+ if (expectedStr.charAt(i) != cb.get()
+ || s2.charAt(i) != expectedStr.charAt(i))
+ throw new Exception ("GB18030 encode failure");
+ }
+ }
+}
diff --git a/test/sun/nio/cs/SurrogateTestEUCTW.java b/test/sun/nio/cs/SurrogateTestEUCTW.java
new file mode 100644
index 000000000..25aa0c0d4
--- /dev/null
+++ b/test/sun/nio/cs/SurrogateTestEUCTW.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4847097
+ @summary Check surrogate coverage of EUC_TW
+ */
+
+/*
+ * Tests the full surrogate mapping roundtrip fidelity of the
+ * EUC-TW charset coder updated to support the additional
+ * planes 4,5,6,7,15
+ *
+ * byte->char mappings are contained in external files
+ * using plane{x}.surrogate as the convention for the input filenames
+ *
+ */
+
+import java.io.*;
+public class SurrogateTestEUCTW {
+
+ private static final String testRootDir
+ = System.getProperty("test.src", ".");
+
+ public static void main(String[] args) throws Exception {
+ char[] surrogatePair = new char[2];
+ int[] expectBytes = new int[4];
+
+ // Iterate test over each supported CNS-11643 plane
+ // containing supplementary character mappings
+
+ String[] testPlane = { "3", "4", "5", "6" ,"7", "15" };
+
+ for (int i = 0 ; i < testPlane.length; i++) {
+ FileReader f = new FileReader(testRootDir +
+ System.getProperty("file.separator")
+ + "SurrogateTestEUCTW.plane"
+ + testPlane[i]
+ + ".surrogates");
+ BufferedReader r = new BufferedReader(f);
+ String line;
+
+ while ((line = r.readLine()) != null) {
+ int charValue = Integer.parseInt(line.substring(9,14), 16);
+ surrogatePair[0] = (char) ((charValue - 0x10000) / 0x400
+ + 0xd800);
+ surrogatePair[1] = (char) ((charValue - 0x10000) % 0x400
+ + 0xdc00);
+ // Synthesize 4 byte expected byte values from CNS input values
+ expectBytes[0] = 0x8E;
+ expectBytes[1] = 0xA0 + Integer.parseInt(testPlane[i]);
+ expectBytes[2] = 0x80 | Integer.parseInt(line.substring(2,4), 16);
+ expectBytes[3] = 0x80 | Integer.parseInt(line.substring(4,6), 16);
+
+ String testStr = new String(surrogatePair);
+ byte[] encodedBytes = testStr.getBytes("EUC-TW");
+
+ for (int x = 0 ; x < 4 ; x++) {
+ if (encodedBytes[x] != (byte)(expectBytes[x] & 0xff)) {
+ throw new Exception("EUC_TW Surrogate Encoder error");
+ }
+ }
+
+ // Next: test round-trip fidelity
+ String decoded = new String(encodedBytes, "EUC-TW");
+
+ if (!decoded.equals(testStr)) {
+ throw new Exception("EUCTW Decoder error");
+ }
+ }
+ r.close();
+ f.close();
+ }
+ }
+}
diff --git a/test/sun/nio/cs/SurrogateTestEUCTW.plane15.surrogates b/test/sun/nio/cs/SurrogateTestEUCTW.plane15.surrogates
new file mode 100644
index 000000000..24c1a0088
--- /dev/null
+++ b/test/sun/nio/cs/SurrogateTestEUCTW.plane15.surrogates
@@ -0,0 +1,6476 @@
+0x2121 0x20002
+0x2122 0x2008C
+0x2123 0x200D4
+0x2124 0x201A5
+0x2125 0x20092
+0x2126 0x20093
+0x2127 0x200D8
+0x2128 0x200D9
+0x2129 0x201A7
+0x212A 0x2062B
+0x212B 0x2062C
+0x212C 0x2062D
+0x212D 0x20630
+0x212E 0x2062E
+0x212F 0x206AB
+0x2131 0x2092D
+0x2132 0x2096D
+0x2133 0x2F834
+0x2134 0x20A0F
+0x2136 0x20B9D
+0x2137 0x211A2
+0x2138 0x215D4
+0x2139 0x21B56
+0x213A 0x21BC3
+0x213B 0x22014
+0x213D 0x2471A
+0x213E 0x2000F
+0x213F 0x20010
+0x2140 0x2009A
+0x2141 0x2009B
+0x2143 0x201AC
+0x2145 0x20097
+0x2146 0x20546
+0x2148 0x20576
+0x2149 0x20577
+0x214A 0x205AE
+0x214B 0x2063A
+0x214C 0x2067D
+0x214D 0x21BC5
+0x214E 0x20BA8
+0x2151 0x21241
+0x2152 0x21242
+0x2153 0x215D8
+0x2154 0x215D9
+0x2155 0x216AA
+0x2156 0x216AB
+0x2157 0x21942
+0x2158 0x21941
+0x215A 0x21BC6
+0x215C 0x21D35
+0x215D 0x21D36
+0x215E 0x21D37
+0x215F 0x2F883
+0x2160 0x2634D
+0x2162 0x221B5
+0x2163 0x22317
+0x2164 0x22482
+0x2165 0x233B6
+0x2167 0x23C72
+0x2168 0x2455C
+0x2169 0x245A8
+0x216B 0x215E3
+0x216E 0x200E6
+0x216F 0x20144
+0x2170 0x20145
+0x2173 0x201C4
+0x2174 0x201C5
+0x2175 0x201C6
+0x2176 0x201C7
+0x2177 0x201C8
+0x2178 0x201C9
+0x2179 0x201CA
+0x217A 0x201D4
+0x217B 0x2057D
+0x217C 0x26272
+0x217D 0x205B2
+0x217E 0x205B4
+0x2221 0x20682
+0x2222 0x206C7
+0x2223 0x206C8
+0x2225 0x2083C
+0x2226 0x2083D
+0x2227 0x2083E
+0x2228 0x2083F
+0x2229 0x2F824
+0x222A 0x208D3
+0x222B 0x20147
+0x222D 0x20A3D
+0x222E 0x20AE2
+0x222F 0x20BB8
+0x2230 0x20BB9
+0x2231 0x20BC2
+0x2232 0x20BBA
+0x2233 0x20BC6
+0x2234 0x20BBB
+0x2235 0x211AD
+0x2236 0x2124C
+0x2237 0x2124D
+0x2239 0x216B2
+0x223A 0x216B3
+0x223B 0x216B4
+0x223C 0x216B5
+0x223D 0x219C3
+0x223E 0x219C4
+0x223F 0x219C5
+0x2240 0x219C6
+0x2241 0x219C7
+0x2243 0x21BCE
+0x2244 0x21C30
+0x2245 0x21D47
+0x2246 0x21D48
+0x2248 0x2205C
+0x224A 0x2205F
+0x224B 0x22318
+0x224C 0x22319
+0x224D 0x2237E
+0x224F 0x225B0
+0x2250 0x22A75
+0x2252 0x22A76
+0x2253 0x23041
+0x2254 0x23142
+0x2256 0x233BD
+0x225A 0x23B1E
+0x225B 0x23B1F
+0x225C 0x23C87
+0x225E 0x23C78
+0x225F 0x24188
+0x2260 0x24189
+0x2261 0x2418A
+0x2262 0x24617
+0x2263 0x24615
+0x2267 0x250E5
+0x2268 0x25609
+0x2269 0x2573B
+0x226A 0x2574F
+0x226C 0x2662E
+0x226D 0x2662F
+0x226E 0x26AFF
+0x226F 0x26AFD
+0x2270 0x26AFE
+0x2274 0x20023
+0x2275 0x200EA
+0x2276 0x2012A
+0x2277 0x20149
+0x2278 0x2014A
+0x2279 0x2014B
+0x227A 0x201DF
+0x227B 0x201E0
+0x227C 0x201E1
+0x227D 0x201E2
+0x227E 0x205C1
+0x2321 0x201E3
+0x2322 0x201E4
+0x2323 0x201E5
+0x2324 0x205C0
+0x2325 0x201E6
+0x2326 0x201F7
+0x2328 0x201E7
+0x2329 0x201E8
+0x232A 0x201E9
+0x232B 0x201EA
+0x232C 0x201EB
+0x232D 0x2050E
+0x232E 0x20580
+0x232F 0x20581
+0x2330 0x205BA
+0x2331 0x205BB
+0x2332 0x205BC
+0x2333 0x205BD
+0x2334 0x2063F
+0x2335 0x20640
+0x2336 0x20688
+0x2337 0x2F81F
+0x2338 0x20846
+0x233A 0x20847
+0x233B 0x20848
+0x233C 0x20936
+0x233D 0x20972
+0x233E 0x20996
+0x233F 0x20A47
+0x2340 0x20AE7
+0x2341 0x20B34
+0x2342 0x20B35
+0x2343 0x20B36
+0x2344 0x20B37
+0x2345 0x20BE3
+0x2346 0x20BE4
+0x2347 0x20BE5
+0x2348 0x20BEB
+0x234A 0x20BE6
+0x234B 0x20BE7
+0x234C 0x20BE8
+0x234F 0x211B9
+0x2351 0x211BA
+0x2353 0x21263
+0x2354 0x21264
+0x2356 0x21265
+0x2358 0x21266
+0x2359 0x2127C
+0x235A 0x21267
+0x235B 0x2F85A
+0x235C 0x21559
+0x235D 0x215E9
+0x235E 0x215EA
+0x235F 0x215EB
+0x2360 0x215EC
+0x2361 0x215ED
+0x2362 0x215EE
+0x2363 0x215EF
+0x2364 0x216BF
+0x2365 0x216CB
+0x2366 0x216C3
+0x2367 0x216D5
+0x2368 0x216C4
+0x2369 0x216C5
+0x236A 0x216D3
+0x236B 0x216C6
+0x236C 0x216C7
+0x236D 0x216C8
+0x236E 0x216C9
+0x236F 0x216CA
+0x2370 0x2194A
+0x2372 0x219D1
+0x2373 0x21B61
+0x2374 0x21C37
+0x2376 0x21D64
+0x2377 0x21D66
+0x2379 0x21D67
+0x237A 0x21D68
+0x237B 0x21D69
+0x237D 0x21D73
+0x237E 0x21D6A
+0x2421 0x21D6B
+0x2424 0x22072
+0x2426 0x221B9
+0x2427 0x2231C
+0x2428 0x22336
+0x2429 0x223BC
+0x242A 0x223BE
+0x242B 0x223BF
+0x242C 0x223C0
+0x242D 0x22487
+0x242E 0x225DC
+0x242F 0x225DD
+0x2430 0x225F5
+0x2431 0x225DE
+0x2432 0x225DF
+0x2433 0x2F89E
+0x2434 0x225E0
+0x2435 0x225E1
+0x2436 0x225E2
+0x2437 0x22A2C
+0x2438 0x22A2D
+0x243A 0x22AA9
+0x243B 0x22A9C
+0x243C 0x22A9D
+0x243D 0x22A9E
+0x243E 0x22A9F
+0x243F 0x22AA0
+0x2440 0x22AA1
+0x2441 0x22AA2
+0x2443 0x22AA3
+0x2444 0x22AA4
+0x2445 0x22AA7
+0x2446 0x23042
+0x2447 0x23093
+0x2448 0x23151
+0x244A 0x23152
+0x244B 0x23144
+0x244C 0x23153
+0x244D 0x23322
+0x244E 0x233C6
+0x244F 0x233C7
+0x2450 0x233C9
+0x2451 0x2F8DD
+0x2452 0x233CA
+0x2454 0x233C8
+0x2455 0x23B24
+0x2456 0x23B25
+0x2457 0x23B26
+0x2459 0x23B27
+0x245A 0x23B28
+0x245C 0x23C58
+0x245D 0x2F8FB
+0x245E 0x23CA7
+0x245F 0x23C88
+0x2460 0x23C89
+0x2461 0x23CA5
+0x2462 0x23CA8
+0x2463 0x23CA9
+0x2464 0x23CAA
+0x2465 0x23CAB
+0x2466 0x23CAC
+0x2467 0x23CAD
+0x2469 0x23C79
+0x246B 0x24194
+0x246C 0x24195
+0x246D 0x24196
+0x2470 0x24197
+0x2472 0x24198
+0x2473 0x2454E
+0x2474 0x2454F
+0x2475 0x24619
+0x2477 0x24741
+0x2478 0x2F92A
+0x2479 0x248F7
+0x247A 0x24C04
+0x247B 0x24C19
+0x247C 0x24C17
+0x247D 0x25040
+0x247E 0x250EC
+0x2521 0x2541B
+0x2522 0x2541C
+0x2524 0x2560E
+0x2525 0x25752
+0x2526 0x25AD8
+0x2527 0x25E26
+0x2528 0x26274
+0x252A 0x26275
+0x252B 0x269C6
+0x252C 0x26B0B
+0x252D 0x26B0C
+0x252E 0x26B0D
+0x252F 0x26B0E
+0x2530 0x26B0F
+0x2531 0x26B10
+0x2533 0x28459
+0x2534 0x2845A
+0x2535 0x28683
+0x2536 0x28684
+0x2537 0x28685
+0x253A 0x28E20
+0x253B 0x28E21
+0x253C 0x28E22
+0x253D 0x28E23
+0x253E 0x28E24
+0x253F 0x28E29
+0x2540 0x200F4
+0x2542 0x2158F
+0x2543 0x20151
+0x2545 0x20217
+0x2546 0x20218
+0x2547 0x2025B
+0x2548 0x20219
+0x2549 0x2021A
+0x254B 0x2021B
+0x254C 0x2021C
+0x254D 0x2021D
+0x254E 0x2021E
+0x254F 0x2021F
+0x2550 0x20220
+0x2551 0x20221
+0x2552 0x2048B
+0x2553 0x20488
+0x2555 0x20585
+0x2556 0x26287
+0x2557 0x205C7
+0x2558 0x2064C
+0x2559 0x2064D
+0x255A 0x206FC
+0x255B 0x206FD
+0x255C 0x206FE
+0x255D 0x206FF
+0x2560 0x20856
+0x2561 0x20857
+0x2562 0x20858
+0x2563 0x20859
+0x2564 0x208DC
+0x2565 0x208DD
+0x2566 0x20973
+0x2567 0x2099D
+0x2568 0x209A1
+0x2569 0x2099E
+0x256A 0x2099F
+0x256B 0x209A0
+0x256C 0x209E6
+0x256D 0x20A51
+0x256E 0x20A52
+0x256F 0x20B3D
+0x2570 0x20C22
+0x2572 0x20C23
+0x2573 0x20C24
+0x2574 0x20C25
+0x2575 0x20C26
+0x2576 0x20C27
+0x2577 0x20C28
+0x2578 0x20C29
+0x2579 0x20C2A
+0x257A 0x20C2B
+0x257C 0x20C40
+0x257D 0x20C2C
+0x257E 0x20C2D
+0x2621 0x20C2E
+0x2622 0x20C2F
+0x2623 0x20C30
+0x2624 0x211D0
+0x2625 0x212A8
+0x2626 0x21294
+0x2627 0x21295
+0x2628 0x21296
+0x2629 0x21297
+0x262A 0x21298
+0x262B 0x2129C
+0x262C 0x2129B
+0x262E 0x212A1
+0x262F 0x212A0
+0x2630 0x21299
+0x2631 0x2129A
+0x2632 0x212A7
+0x2634 0x21564
+0x2636 0x21600
+0x2637 0x21601
+0x263A 0x216E5
+0x263B 0x216E9
+0x263C 0x216FB
+0x263D 0x216FC
+0x263E 0x216EA
+0x263F 0x216EB
+0x2640 0x216EC
+0x2641 0x216ED
+0x2642 0x216EE
+0x2643 0x216EF
+0x2644 0x216FA
+0x2645 0x216F0
+0x2646 0x216F1
+0x2647 0x216F2
+0x2648 0x216F3
+0x2649 0x216F4
+0x264A 0x21952
+0x264B 0x21953
+0x264C 0x21954
+0x264D 0x21955
+0x264E 0x21958
+0x264F 0x21956
+0x2651 0x219DD
+0x2652 0x219DE
+0x2653 0x219E3
+0x2654 0x219DF
+0x2655 0x219E0
+0x2656 0x21B22
+0x2657 0x21B23
+0x2658 0x21B68
+0x2659 0x21BDF
+0x265B 0x21C44
+0x265C 0x21D94
+0x265D 0x21D95
+0x265E 0x21D96
+0x265F 0x21D97
+0x2660 0x21D98
+0x2661 0x21D99
+0x2662 0x2F879
+0x2663 0x21D9A
+0x2664 0x21D9B
+0x2665 0x21D9D
+0x2666 0x21D9E
+0x2667 0x21D9F
+0x2668 0x21DA0
+0x2669 0x21FF3
+0x266A 0x21FF2
+0x266B 0x2201F
+0x266C 0x22088
+0x266D 0x2218F
+0x266E 0x22190
+0x2670 0x221FD
+0x2671 0x221FE
+0x2672 0x221FF
+0x2673 0x22200
+0x2674 0x22201
+0x2675 0x2261A
+0x2677 0x225E3
+0x2678 0x225E4
+0x2679 0x225E5
+0x267A 0x225E6
+0x267B 0x225E7
+0x267C 0x225EB
+0x267D 0x225E8
+0x267E 0x225E9
+0x2721 0x225EA
+0x2722 0x2261D
+0x2723 0x229A4
+0x2724 0x229A3
+0x2725 0x22AD4
+0x2726 0x22AC6
+0x2727 0x22AC7
+0x2728 0x22AC8
+0x2729 0x22AC9
+0x272A 0x22ACA
+0x272B 0x22ACB
+0x272C 0x22ACC
+0x272D 0x22ACD
+0x272F 0x22ACE
+0x2731 0x22EB8
+0x2732 0x22EB9
+0x2733 0x22EBA
+0x2734 0x2306E
+0x2735 0x230DB
+0x2736 0x230DC
+0x2737 0x23168
+0x2738 0x23169
+0x2739 0x2316A
+0x273A 0x2316B
+0x273B 0x2316C
+0x273C 0x2316D
+0x273D 0x2316E
+0x273F 0x23324
+0x2740 0x23325
+0x2742 0x23400
+0x2743 0x233E5
+0x2744 0x233F9
+0x2745 0x233E7
+0x2746 0x233E8
+0x2747 0x233E9
+0x2748 0x233FE
+0x2749 0x233EA
+0x274A 0x233EB
+0x274B 0x233EC
+0x274D 0x233ED
+0x274F 0x233EE
+0x2751 0x233EF
+0x2753 0x23417
+0x2754 0x233F0
+0x2755 0x233F1
+0x2756 0x23894
+0x2757 0x2395B
+0x2758 0x2395C
+0x2759 0x2395D
+0x275A 0x23B2F
+0x275C 0x23B30
+0x275D 0x23B31
+0x275E 0x23B32
+0x275F 0x23B33
+0x2760 0x23CCC
+0x2761 0x23CCD
+0x2762 0x23CCE
+0x2763 0x23CAE
+0x2764 0x23CAF
+0x2765 0x23CB0
+0x2767 0x23CCF
+0x2768 0x23CD0
+0x2769 0x23CD1
+0x276A 0x23CD2
+0x276B 0x23CD3
+0x276D 0x23CD4
+0x276F 0x241A6
+0x2770 0x241A7
+0x2771 0x241A8
+0x2772 0x241B0
+0x2773 0x241A9
+0x2774 0x241AA
+0x2775 0x241AB
+0x2776 0x241AC
+0x2777 0x241AD
+0x2778 0x244FB
+0x2779 0x244FC
+0x277B 0x2462D
+0x277C 0x2462E
+0x277D 0x24650
+0x277E 0x2462F
+0x2821 0x24630
+0x2822 0x24765
+0x2823 0x248E6
+0x2824 0x2490C
+0x2825 0x24902
+0x2826 0x24903
+0x2827 0x24904
+0x2828 0x24905
+0x2829 0x24906
+0x282B 0x24BC0
+0x282C 0x24C24
+0x282D 0x24C25
+0x282E 0x24D16
+0x282F 0x24D32
+0x2830 0x25420
+0x2831 0x25421
+0x2832 0x25422
+0x2833 0x25423
+0x2835 0x25425
+0x2836 0x25619
+0x2837 0x25624
+0x2838 0x2561A
+0x2839 0x2561B
+0x283A 0x2561C
+0x283B 0x2561D
+0x283C 0x2F952
+0x283D 0x2561E
+0x283E 0x2575A
+0x283F 0x2575B
+0x2840 0x2575C
+0x2841 0x2575D
+0x2842 0x2575E
+0x2843 0x25931
+0x2845 0x25E29
+0x2847 0x25F88
+0x2848 0x25F89
+0x2849 0x26289
+0x284B 0x26356
+0x284C 0x264D1
+0x284D 0x264E6
+0x284E 0x26532
+0x284F 0x26533
+0x2850 0x26652
+0x2851 0x26653
+0x2853 0x26654
+0x2854 0x26655
+0x2857 0x26B29
+0x2858 0x26B2A
+0x2859 0x26B2B
+0x285A 0x26B2C
+0x285B 0x26B2D
+0x285C 0x2F992
+0x285D 0x26B2E
+0x285E 0x26B2F
+0x285F 0x26B30
+0x2860 0x26B31
+0x2861 0x26B32
+0x2862 0x26B33
+0x2864 0x26B34
+0x2865 0x2719B
+0x2866 0x27223
+0x2867 0x27224
+0x2869 0x27225
+0x286A 0x27227
+0x286B 0x27616
+0x286C 0x27CA0
+0x286D 0x2846F
+0x286F 0x28470
+0x2870 0x28471
+0x2873 0x28472
+0x2874 0x28473
+0x2875 0x28474
+0x2876 0x2869C
+0x2877 0x286AA
+0x2878 0x2869D
+0x2879 0x2869E
+0x287B 0x286AB
+0x287C 0x2869F
+0x287D 0x28E35
+0x287E 0x28E38
+0x2921 0x2A38D
+0x2922 0x20035
+0x2923 0x20036
+0x2924 0x25AEE
+0x2925 0x200B4
+0x2926 0x2A6C9
+0x2927 0x20132
+0x2928 0x20155
+0x2929 0x20244
+0x292A 0x20245
+0x292B 0x20246
+0x292C 0x20247
+0x292E 0x20248
+0x292F 0x20249
+0x2931 0x2024A
+0x2932 0x2024B
+0x2933 0x2024C
+0x2934 0x2024D
+0x2935 0x2024E
+0x2936 0x2024F
+0x2937 0x20250
+0x2938 0x20251
+0x2939 0x26299
+0x293A 0x205D1
+0x293C 0x205D2
+0x293D 0x205D3
+0x293E 0x205D4
+0x293F 0x205D5
+0x2940 0x20721
+0x2941 0x20722
+0x2942 0x20723
+0x2943 0x20868
+0x2944 0x20869
+0x2945 0x2086A
+0x2946 0x208E2
+0x2947 0x20945
+0x2948 0x209EC
+0x2949 0x209ED
+0x294A 0x209EE
+0x294B 0x209EF
+0x294D 0x20A62
+0x294E 0x20A63
+0x294F 0x20AF4
+0x2950 0x2006F
+0x2951 0x20B44
+0x2952 0x20B45
+0x2953 0x20C79
+0x2955 0x20C7A
+0x2956 0x20C7B
+0x2957 0x20C7C
+0x2958 0x20C7D
+0x2959 0x20C7E
+0x295A 0x20C7F
+0x295B 0x20C80
+0x295E 0x20C81
+0x295F 0x20C82
+0x2960 0x20C83
+0x2961 0x20C84
+0x2962 0x20C85
+0x2963 0x20C86
+0x2964 0x20C87
+0x2965 0x20C8F
+0x2966 0x20C88
+0x2967 0x20C89
+0x2968 0x212C5
+0x2969 0x212C6
+0x296B 0x212C7
+0x296C 0x212C8
+0x296D 0x212C9
+0x296E 0x212CA
+0x296F 0x212CB
+0x2970 0x212CC
+0x2972 0x212CD
+0x2973 0x212CE
+0x2974 0x212E3
+0x2975 0x212CF
+0x2976 0x212D0
+0x2977 0x212D1
+0x2978 0x212D2
+0x2979 0x212D3
+0x297A 0x212C4
+0x297B 0x212D4
+0x297C 0x212D5
+0x297D 0x212D6
+0x297E 0x21520
+0x2A21 0x21521
+0x2A22 0x2161A
+0x2A23 0x21612
+0x2A24 0x21614
+0x2A25 0x21615
+0x2A26 0x21616
+0x2A27 0x21619
+0x2A28 0x21617
+0x2A29 0x21618
+0x2A2B 0x2F861
+0x2A2D 0x21712
+0x2A2E 0x21713
+0x2A2F 0x21714
+0x2A30 0x21715
+0x2A31 0x21716
+0x2A32 0x21717
+0x2A33 0x21718
+0x2A34 0x21719
+0x2A35 0x21961
+0x2A36 0x21962
+0x2A37 0x21963
+0x2A38 0x219F5
+0x2A3A 0x219F6
+0x2A3B 0x219F7
+0x2A3C 0x219F8
+0x2A3D 0x21B29
+0x2A3F 0x21C5D
+0x2A40 0x21C57
+0x2A41 0x21C58
+0x2A42 0x21C59
+0x2A43 0x21C5A
+0x2A44 0x21C5B
+0x2A45 0x21DBB
+0x2A46 0x21DD1
+0x2A47 0x21DBC
+0x2A48 0x21DBD
+0x2A49 0x268DF
+0x2A4A 0x21DD0
+0x2A4B 0x21DBE
+0x2A4C 0x21DBF
+0x2A4D 0x21DC0
+0x2A4E 0x21DC1
+0x2A4F 0x21DC2
+0x2A50 0x21DC3
+0x2A51 0x21DC4
+0x2A52 0x26B6C
+0x2A53 0x220A1
+0x2A54 0x220A2
+0x2A55 0x220A3
+0x2A56 0x22193
+0x2A57 0x2220D
+0x2A58 0x2220F
+0x2A59 0x2220E
+0x2A5A 0x22210
+0x2A5B 0x22211
+0x2A5C 0x22212
+0x2A5D 0x2F895
+0x2A5E 0x224E5
+0x2A5F 0x2262F
+0x2A61 0x22657
+0x2A62 0x22630
+0x2A63 0x22668
+0x2A64 0x2262B
+0x2A65 0x22631
+0x2A66 0x22658
+0x2A67 0x2F8A2
+0x2A68 0x22632
+0x2A69 0x22659
+0x2A6B 0x2265A
+0x2A6C 0x22633
+0x2A6D 0x2265B
+0x2A6E 0x2265C
+0x2A6F 0x2265D
+0x2A70 0x2261E
+0x2A71 0x229AE
+0x2A72 0x229AF
+0x2A73 0x22A3B
+0x2A74 0x22A3C
+0x2A75 0x22A3D
+0x2A76 0x22B07
+0x2A77 0x22B08
+0x2A78 0x22B09
+0x2A79 0x22B0A
+0x2A7A 0x22B0B
+0x2A7B 0x22B0C
+0x2A7C 0x22B0D
+0x2A7D 0x22B0E
+0x2A7E 0x22B0F
+0x2B21 0x22B10
+0x2B22 0x22B22
+0x2B23 0x22B11
+0x2B24 0x22B12
+0x2B25 0x22B13
+0x2B26 0x22B14
+0x2B27 0x22B15
+0x2B28 0x22B16
+0x2B29 0x22B17
+0x2B2A 0x22B18
+0x2B2B 0x2F8B8
+0x2B2D 0x23046
+0x2B2E 0x23047
+0x2B2F 0x23048
+0x2B30 0x230E1
+0x2B31 0x23181
+0x2B32 0x23183
+0x2B33 0x20C75
+0x2B35 0x23185
+0x2B36 0x23186
+0x2B37 0x2332A
+0x2B38 0x2F8D1
+0x2B39 0x2332B
+0x2B3A 0x2336B
+0x2B3B 0x23418
+0x2B3C 0x23419
+0x2B3D 0x2341A
+0x2B3F 0x2341B
+0x2B40 0x2341C
+0x2B41 0x2341D
+0x2B42 0x2341E
+0x2B43 0x2341F
+0x2B44 0x23420
+0x2B45 0x23421
+0x2B46 0x23422
+0x2B47 0x23423
+0x2B49 0x23424
+0x2B4A 0x23425
+0x2B4B 0x23426
+0x2B4C 0x23427
+0x2B4D 0x23428
+0x2B4E 0x23429
+0x2B4F 0x2342A
+0x2B50 0x239EF
+0x2B51 0x23B49
+0x2B52 0x23B4A
+0x2B53 0x23B4B
+0x2B54 0x23B4C
+0x2B55 0x23B4D
+0x2B56 0x23B4E
+0x2B57 0x23B4F
+0x2B58 0x23B50
+0x2B59 0x23B51
+0x2B5A 0x23B52
+0x2B5B 0x23B53
+0x2B5C 0x23B54
+0x2B5D 0x23B5A
+0x2B5E 0x23B55
+0x2B5F 0x23C5F
+0x2B60 0x23D02
+0x2B61 0x23D03
+0x2B62 0x23D04
+0x2B63 0x23D05
+0x2B64 0x23CD5
+0x2B65 0x23D06
+0x2B66 0x23D07
+0x2B67 0x23CD6
+0x2B68 0x23D08
+0x2B69 0x23D09
+0x2B6A 0x23D0A
+0x2B6B 0x23D0B
+0x2B6C 0x23CD7
+0x2B6D 0x23D0C
+0x2B6E 0x23D0D
+0x2B6F 0x241C8
+0x2B70 0x241C9
+0x2B71 0x241CA
+0x2B72 0x241CB
+0x2B73 0x241CC
+0x2B74 0x241CD
+0x2B75 0x241CE
+0x2B76 0x241CF
+0x2B77 0x241D0
+0x2B78 0x241D1
+0x2B79 0x241D2
+0x2B7B 0x241D3
+0x2B7C 0x241D4
+0x2B7D 0x241D5
+0x2B7E 0x241D6
+0x2C21 0x241D7
+0x2C22 0x241E2
+0x2C23 0x241D8
+0x2C24 0x24504
+0x2C25 0x24505
+0x2C26 0x24506
+0x2C28 0x24643
+0x2C29 0x24644
+0x2C2A 0x24784
+0x2C2B 0x2478F
+0x2C2C 0x24785
+0x2C2D 0x24786
+0x2C2E 0x2492F
+0x2C2F 0x2491A
+0x2C30 0x2491B
+0x2C31 0x2491C
+0x2C33 0x2491D
+0x2C34 0x2491E
+0x2C35 0x2491F
+0x2C36 0x24920
+0x2C37 0x24921
+0x2C38 0x24922
+0x2C39 0x2F92C
+0x2C3A 0x24923
+0x2C3B 0x24924
+0x2C3C 0x2490E
+0x2C3D 0x24925
+0x2C3E 0x2492B
+0x2C3F 0x2492C
+0x2C40 0x2490B
+0x2C41 0x24AEE
+0x2C43 0x24BC3
+0x2C44 0x24BD8
+0x2C45 0x24BD9
+0x2C46 0x24C38
+0x2C47 0x24C39
+0x2C48 0x24C3A
+0x2C49 0x24C3B
+0x2C4B 0x24C3C
+0x2C4C 0x24C3D
+0x2C4D 0x24C3E
+0x2C4E 0x24C3F
+0x2C4F 0x24C40
+0x2C50 0x24D48
+0x2C51 0x24D4C
+0x2C52 0x24F28
+0x2C53 0x24F51
+0x2C54 0x24F52
+0x2C55 0x2504C
+0x2C56 0x25123
+0x2C57 0x2F945
+0x2C58 0x25124
+0x2C59 0x25431
+0x2C5A 0x25432
+0x2C5B 0x25433
+0x2C5D 0x25434
+0x2C5E 0x25435
+0x2C5F 0x25436
+0x2C60 0x25440
+0x2C61 0x25437
+0x2C63 0x25438
+0x2C64 0x2543D
+0x2C65 0x25638
+0x2C66 0x25639
+0x2C67 0x2563A
+0x2C68 0x2563B
+0x2C69 0x2563C
+0x2C6A 0x2564C
+0x2C6B 0x25773
+0x2C6C 0x25774
+0x2C6E 0x25775
+0x2C6F 0x25776
+0x2C70 0x25779
+0x2C71 0x25941
+0x2C72 0x25942
+0x2C73 0x25943
+0x2C74 0x25A5B
+0x2C77 0x238A6
+0x2C78 0x25A5C
+0x2C79 0x25AE5
+0x2C7A 0x25AE6
+0x2C7B 0x25AE7
+0x2C7C 0x25AE8
+0x2C7D 0x25AED
+0x2C7E 0x25E30
+0x2D22 0x25E31
+0x2D23 0x25F94
+0x2D24 0x26351
+0x2D25 0x263FD
+0x2D26 0x263FE
+0x2D27 0x264E9
+0x2D29 0x266B3
+0x2D2A 0x26684
+0x2D2B 0x26694
+0x2D2D 0x2669C
+0x2D2F 0x26685
+0x2D30 0x26900
+0x2D31 0x26937
+0x2D32 0x26957
+0x2D33 0x26B54
+0x2D34 0x26B68
+0x2D35 0x26B55
+0x2D36 0x26B5C
+0x2D37 0x26B56
+0x2D38 0x26B57
+0x2D39 0x26B58
+0x2D3A 0x26B59
+0x2D3B 0x26B5A
+0x2D3C 0x26B5B
+0x2D3D 0x27234
+0x2D3F 0x27235
+0x2D41 0x27239
+0x2D42 0x27236
+0x2D43 0x27237
+0x2D44 0x27238
+0x2D45 0x275E5
+0x2D46 0x27659
+0x2D48 0x2763A
+0x2D49 0x2763B
+0x2D4A 0x27D28
+0x2D4B 0x27E89
+0x2D4D 0x27E8A
+0x2D4E 0x27E8B
+0x2D4F 0x27E8C
+0x2D50 0x27E8D
+0x2D51 0x27FBC
+0x2D52 0x282A3
+0x2D54 0x282A4
+0x2D55 0x28493
+0x2D56 0x28494
+0x2D57 0x28495
+0x2D58 0x28496
+0x2D59 0x28497
+0x2D5A 0x286B9
+0x2D5B 0x28E4F
+0x2D5C 0x28E50
+0x2D5D 0x28E51
+0x2D5E 0x29076
+0x2D60 0x200FB
+0x2D61 0x20083
+0x2D62 0x20138
+0x2D63 0x2015D
+0x2D64 0x20271
+0x2D66 0x20277
+0x2D67 0x20278
+0x2D68 0x2F807
+0x2D69 0x202C3
+0x2D6A 0x20279
+0x2D6B 0x2027A
+0x2D6C 0x2027B
+0x2D6D 0x2027C
+0x2D6E 0x20272
+0x2D6F 0x2027D
+0x2D70 0x202A0
+0x2D71 0x2027E
+0x2D72 0x2027F
+0x2D73 0x20280
+0x2D74 0x20281
+0x2D75 0x20282
+0x2D76 0x20283
+0x2D77 0x2029E
+0x2D78 0x20284
+0x2D79 0x20285
+0x2D7A 0x20286
+0x2D7B 0x20287
+0x2D7C 0x20288
+0x2D7D 0x20493
+0x2D7E 0x20494
+0x2E21 0x20495
+0x2E22 0x204EF
+0x2E23 0x204F0
+0x2E25 0x2058D
+0x2E26 0x2058F
+0x2E27 0x20590
+0x2E28 0x20591
+0x2E29 0x20592
+0x2E2A 0x205DE
+0x2E2B 0x205E1
+0x2E2C 0x20653
+0x2E2E 0x2074A
+0x2E2F 0x2074B
+0x2E30 0x2074C
+0x2E31 0x20751
+0x2E32 0x2074D
+0x2E33 0x20748
+0x2E34 0x20874
+0x2E35 0x20875
+0x2E36 0x20920
+0x2E37 0x20921
+0x2E38 0x209A5
+0x2E39 0x209A6
+0x2E3A 0x20A73
+0x2E3B 0x20A74
+0x2E3C 0x20B50
+0x2E3D 0x20B51
+0x2E3E 0x20B52
+0x2E3F 0x20B53
+0x2E40 0x20CDB
+0x2E41 0x20CDC
+0x2E43 0x20CDD
+0x2E44 0x20CDE
+0x2E45 0x20CFF
+0x2E48 0x20CDF
+0x2E49 0x20CE0
+0x2E4B 0x20CE1
+0x2E4C 0x20CE2
+0x2E4D 0x20CE3
+0x2E4E 0x20CE4
+0x2E4F 0x20CE5
+0x2E50 0x20CE6
+0x2E51 0x20CE7
+0x2E52 0x20CE8
+0x2E53 0x20CE9
+0x2E54 0x20CEA
+0x2E55 0x21307
+0x2E56 0x21308
+0x2E57 0x21309
+0x2E58 0x2130A
+0x2E59 0x2130B
+0x2E5A 0x2130C
+0x2E5B 0x2130D
+0x2E5D 0x2131A
+0x2E5E 0x2130E
+0x2E5F 0x2130F
+0x2E60 0x21310
+0x2E61 0x2131C
+0x2E62 0x21527
+0x2E63 0x21566
+0x2E64 0x21598
+0x2E65 0x21599
+0x2E66 0x21633
+0x2E67 0x21624
+0x2E68 0x21625
+0x2E69 0x21626
+0x2E6C 0x2173E
+0x2E6D 0x2F864
+0x2E6E 0x2173F
+0x2E6F 0x21757
+0x2E70 0x21740
+0x2E71 0x21741
+0x2E72 0x21758
+0x2E73 0x21742
+0x2E74 0x21743
+0x2E75 0x21744
+0x2E76 0x21745
+0x2E77 0x21746
+0x2E79 0x21747
+0x2E7A 0x2196B
+0x2E7B 0x2196C
+0x2E7C 0x21A10
+0x2E7D 0x21A11
+0x2F21 0x21B75
+0x2F22 0x21BEF
+0x2F23 0x21C6A
+0x2F24 0x21C6B
+0x2F26 0x21C6C
+0x2F27 0x21C6D
+0x2F28 0x21C6E
+0x2F29 0x21DEF
+0x2F2A 0x21DF0
+0x2F2B 0x21DF1
+0x2F2C 0x21DF2
+0x2F2D 0x21DF3
+0x2F2E 0x21DF4
+0x2F2F 0x21DF5
+0x2F30 0x21DFF
+0x2F31 0x21DF6
+0x2F32 0x21E02
+0x2F33 0x21DF7
+0x2F34 0x22022
+0x2F35 0x220C4
+0x2F36 0x220C3
+0x2F37 0x22228
+0x2F39 0x22320
+0x2F3A 0x22325
+0x2F3B 0x22322
+0x2F3C 0x22323
+0x2F3D 0x223EB
+0x2F3F 0x224F9
+0x2F40 0x224FA
+0x2F41 0x22699
+0x2F42 0x2269A
+0x2F43 0x2269B
+0x2F44 0x22663
+0x2F46 0x2265E
+0x2F47 0x2265F
+0x2F48 0x22660
+0x2F49 0x2269C
+0x2F4A 0x22661
+0x2F4B 0x2269D
+0x2F4C 0x22B54
+0x2F4D 0x22B55
+0x2F4E 0x22B56
+0x2F4F 0x22B57
+0x2F50 0x22B58
+0x2F51 0x22B59
+0x2F52 0x22B5A
+0x2F53 0x22B19
+0x2F54 0x22B6A
+0x2F55 0x22B5B
+0x2F56 0x22B5C
+0x2F57 0x22B5D
+0x2F58 0x22B66
+0x2F5A 0x22B5E
+0x2F5B 0x22B5F
+0x2F5C 0x22B1A
+0x2F5D 0x22B60
+0x2F5E 0x22B61
+0x2F60 0x22B62
+0x2F61 0x22B1B
+0x2F62 0x22B63
+0x2F63 0x26410
+0x2F64 0x26411
+0x2F65 0x2304C
+0x2F66 0x2309B
+0x2F67 0x230EB
+0x2F68 0x230EC
+0x2F69 0x230ED
+0x2F6A 0x230EE
+0x2F6B 0x231A3
+0x2F6C 0x231A8
+0x2F6D 0x231A6
+0x2F6F 0x2332F
+0x2F70 0x23330
+0x2F71 0x23331
+0x2F72 0x23332
+0x2F73 0x23333
+0x2F74 0x2344F
+0x2F75 0x23451
+0x2F76 0x23452
+0x2F77 0x2347D
+0x2F78 0x23453
+0x2F79 0x23454
+0x2F7A 0x23455
+0x2F7B 0x23456
+0x2F7C 0x23457
+0x2F7D 0x23458
+0x2F7E 0x23459
+0x3021 0x2345A
+0x3022 0x2345B
+0x3023 0x2345C
+0x3025 0x2345D
+0x3026 0x2345E
+0x3027 0x2345F
+0x3028 0x2346F
+0x3029 0x23460
+0x302A 0x23461
+0x302B 0x23462
+0x302C 0x23463
+0x302D 0x23472
+0x302E 0x23464
+0x3030 0x2346E
+0x3031 0x238B5
+0x3032 0x23B65
+0x3033 0x23B66
+0x3034 0x23B67
+0x3035 0x23B68
+0x3036 0x23B69
+0x3037 0x23B6A
+0x3038 0x23B6B
+0x3039 0x23B6C
+0x303A 0x23D0E
+0x303B 0x23D43
+0x303D 0x23D0F
+0x303E 0x23D44
+0x303F 0x23D45
+0x3040 0x23D46
+0x3041 0x23D47
+0x3042 0x23D48
+0x3043 0x23D49
+0x3044 0x23D10
+0x3045 0x23D4A
+0x3046 0x23D4B
+0x3047 0x23D4C
+0x3048 0x23D4D
+0x304A 0x23D4E
+0x304B 0x23D4F
+0x304C 0x23D50
+0x304D 0x23D51
+0x304E 0x23D52
+0x304F 0x23D53
+0x3050 0x23D54
+0x3051 0x23D55
+0x3052 0x23D56
+0x3053 0x23D57
+0x3054 0x23D58
+0x3055 0x23D59
+0x3056 0x23D5A
+0x3057 0x23D1D
+0x3058 0x23D5B
+0x3059 0x23D5C
+0x305A 0x23D5D
+0x305B 0x2F906
+0x305D 0x241FE
+0x305E 0x241FF
+0x305F 0x24200
+0x3060 0x24201
+0x3061 0x24202
+0x3062 0x24203
+0x3063 0x24204
+0x3064 0x24205
+0x3065 0x24206
+0x3066 0x24207
+0x3067 0x24218
+0x3068 0x24208
+0x3069 0x24209
+0x306A 0x241F3
+0x306B 0x2420A
+0x306C 0x2420B
+0x306D 0x2421B
+0x306E 0x2420C
+0x306F 0x2420D
+0x3070 0x2420E
+0x3071 0x2420F
+0x3072 0x24210
+0x3073 0x2450F
+0x3074 0x24561
+0x3075 0x24579
+0x3076 0x247C1
+0x3077 0x247AC
+0x3078 0x247AD
+0x3079 0x24943
+0x307A 0x24944
+0x307B 0x24945
+0x307C 0x24946
+0x307D 0x24947
+0x307E 0x24948
+0x3121 0x24949
+0x3122 0x24964
+0x3123 0x2494A
+0x3124 0x2494B
+0x3125 0x2494C
+0x3126 0x2494D
+0x3128 0x2F92D
+0x3129 0x24B39
+0x312A 0x24C57
+0x312B 0x24C58
+0x312C 0x24C59
+0x312D 0x24C5F
+0x312E 0x24C5A
+0x312F 0x24D6A
+0x3130 0x24F2B
+0x3131 0x24F5D
+0x3132 0x24F5E
+0x3133 0x24F5F
+0x3135 0x24F60
+0x3136 0x24F61
+0x3137 0x25058
+0x3138 0x25059
+0x3139 0x2514A
+0x313A 0x2514B
+0x313B 0x2514C
+0x313C 0x2514D
+0x313D 0x2514E
+0x313E 0x25457
+0x313F 0x253B3
+0x3140 0x253B4
+0x3141 0x2546E
+0x3142 0x2545B
+0x3143 0x2545C
+0x3145 0x2545D
+0x3146 0x2545E
+0x3148 0x2546C
+0x3149 0x2563D
+0x314A 0x25654
+0x314B 0x2563E
+0x314C 0x25655
+0x314D 0x25656
+0x314E 0x2563F
+0x314F 0x25657
+0x3150 0x25658
+0x3151 0x25659
+0x3152 0x2565A
+0x3153 0x2565B
+0x3154 0x2565C
+0x3155 0x25788
+0x3156 0x25789
+0x3158 0x25958
+0x3159 0x25959
+0x315A 0x2595A
+0x315C 0x25A67
+0x315D 0x25A68
+0x315E 0x25A69
+0x315F 0x25A6A
+0x3161 0x25A6B
+0x3162 0x25A6C
+0x3163 0x25AFE
+0x3164 0x25AFF
+0x3165 0x25B00
+0x3166 0x25B01
+0x3167 0x25B02
+0x3168 0x25B03
+0x3169 0x25B04
+0x316A 0x25B05
+0x316B 0x25E39
+0x316C 0x25E3A
+0x316D 0x25E3B
+0x316E 0x25E3C
+0x3171 0x25FB2
+0x3172 0x25FB3
+0x3173 0x25FB4
+0x3174 0x25FB5
+0x3175 0x25FB6
+0x3176 0x25FB7
+0x3177 0x25FB8
+0x3179 0x262A2
+0x317A 0x26361
+0x317B 0x26362
+0x317C 0x26414
+0x317E 0x264EB
+0x3221 0x26542
+0x3222 0x26548
+0x3224 0x26543
+0x3225 0x2654E
+0x3226 0x26544
+0x3227 0x26545
+0x3228 0x266B4
+0x3229 0x266B5
+0x322D 0x266B6
+0x322F 0x268E1
+0x3230 0x26905
+0x3233 0x26B9A
+0x3235 0x26B9B
+0x3236 0x26B9C
+0x3237 0x26B9D
+0x3238 0x26B9E
+0x3239 0x26B9F
+0x323A 0x2F99A
+0x323B 0x26BA0
+0x323C 0x26BA1
+0x323D 0x26BA2
+0x323E 0x26BB5
+0x323F 0x26BA3
+0x3240 0x26BA4
+0x3242 0x26BA5
+0x3243 0x26BA6
+0x3244 0x26BA7
+0x3245 0x26BA8
+0x3246 0x26BAF
+0x3247 0x26BA9
+0x3248 0x26BAA
+0x3249 0x26BAB
+0x324A 0x26BAC
+0x324B 0x26BAD
+0x324C 0x26BB3
+0x324E 0x271A0
+0x324F 0x27256
+0x3250 0x27634
+0x3252 0x2763C
+0x3253 0x2780C
+0x3255 0x27C3E
+0x3256 0x27CA3
+0x3257 0x27D30
+0x3258 0x27D31
+0x3259 0x27E97
+0x325A 0x27E98
+0x325B 0x27E99
+0x325C 0x27E9A
+0x325D 0x27E9B
+0x325E 0x282B2
+0x325F 0x282AB
+0x3260 0x282AC
+0x3261 0x286FC
+0x3262 0x286E8
+0x3263 0x286E9
+0x3264 0x286EA
+0x3265 0x287F1
+0x3266 0x2893F
+0x3267 0x28CCE
+0x3268 0x28E6D
+0x3269 0x28E6E
+0x326A 0x28E6F
+0x326B 0x28E70
+0x326C 0x28E71
+0x326D 0x28E72
+0x326E 0x28E73
+0x3270 0x29078
+0x3271 0x2983A
+0x3272 0x20167
+0x3274 0x20164
+0x3275 0x20165
+0x3276 0x20307
+0x3277 0x202C4
+0x3278 0x202C5
+0x3279 0x202C6
+0x327A 0x202C7
+0x327B 0x202C8
+0x327C 0x202C9
+0x327D 0x202E5
+0x327E 0x202CA
+0x3321 0x202CB
+0x3323 0x202CC
+0x3324 0x202CD
+0x3325 0x202CE
+0x3326 0x202CF
+0x3327 0x202D0
+0x3328 0x20497
+0x3329 0x2049A
+0x332A 0x2049B
+0x332B 0x205EA
+0x332C 0x205EC
+0x332D 0x205ED
+0x332E 0x205F7
+0x332F 0x205EE
+0x3330 0x205EF
+0x3331 0x2065B
+0x3332 0x2065C
+0x3333 0x2065D
+0x3334 0x2076D
+0x3335 0x2076E
+0x3337 0x2076F
+0x3338 0x20881
+0x3339 0x20882
+0x333A 0x2094F
+0x333B 0x209AD
+0x333C 0x2870A
+0x333D 0x20A7E
+0x333E 0x20B69
+0x333F 0x20D54
+0x3340 0x20D55
+0x3341 0x20D56
+0x3342 0x20D57
+0x3344 0x20D58
+0x3345 0x20D59
+0x3346 0x20D5A
+0x3347 0x20D5B
+0x3348 0x20D5C
+0x3349 0x20D5D
+0x334C 0x20D5E
+0x334D 0x20D5F
+0x334E 0x2133B
+0x334F 0x21336
+0x3350 0x2133C
+0x3351 0x2133D
+0x3352 0x2133E
+0x3353 0x2133F
+0x3354 0x21340
+0x3355 0x21341
+0x3356 0x21342
+0x3358 0x21343
+0x3359 0x21344
+0x335A 0x21345
+0x335B 0x21337
+0x335E 0x21346
+0x335F 0x21347
+0x3360 0x21348
+0x3361 0x21349
+0x3362 0x2152D
+0x3363 0x215A5
+0x3364 0x2163D
+0x3365 0x2163F
+0x3366 0x2196E
+0x3367 0x217E7
+0x3368 0x21775
+0x3369 0x21776
+0x336A 0x21777
+0x336B 0x21778
+0x336C 0x21779
+0x336D 0x2177A
+0x336E 0x2177B
+0x336F 0x2177C
+0x3370 0x2178E
+0x3371 0x2177D
+0x3372 0x2177E
+0x3374 0x2177F
+0x3375 0x21780
+0x3376 0x21781
+0x3377 0x21782
+0x3378 0x21783
+0x3379 0x21784
+0x337A 0x21785
+0x337B 0x21786
+0x337C 0x21787
+0x337D 0x21788
+0x337E 0x21789
+0x3421 0x2178A
+0x3422 0x2178B
+0x3423 0x2178C
+0x3424 0x2196F
+0x3425 0x21970
+0x3426 0x21971
+0x3427 0x21972
+0x3428 0x21A2A
+0x3429 0x21A2B
+0x342A 0x21A2C
+0x342B 0x21A2D
+0x342C 0x21A2E
+0x342D 0x21A2F
+0x342E 0x21A30
+0x342F 0x21A31
+0x3430 0x21B83
+0x3431 0x21C84
+0x3432 0x21C85
+0x3433 0x21C93
+0x3435 0x21C86
+0x3436 0x21C87
+0x3437 0x21C88
+0x3438 0x21C89
+0x3439 0x21C8A
+0x343A 0x21C8B
+0x343B 0x21E36
+0x343C 0x21E38
+0x343D 0x21E39
+0x343E 0x21E3A
+0x3440 0x21E3B
+0x3441 0x21E3C
+0x3442 0x21E3D
+0x3443 0x21E3E
+0x3444 0x21E3F
+0x3446 0x21E40
+0x3447 0x21E41
+0x3448 0x21E42
+0x3449 0x220DE
+0x344A 0x220DF
+0x344B 0x220E0
+0x344C 0x220E1
+0x344D 0x2224A
+0x344E 0x2224B
+0x344F 0x2224C
+0x3450 0x2224D
+0x3451 0x2224E
+0x3452 0x2224F
+0x3453 0x22250
+0x3454 0x22327
+0x3455 0x223F9
+0x3456 0x223FA
+0x3457 0x223FB
+0x3458 0x22498
+0x3459 0x22499
+0x345A 0x2249A
+0x345C 0x2251E
+0x345D 0x2269E
+0x345E 0x226F7
+0x345F 0x2269F
+0x3460 0x226A0
+0x3461 0x226F0
+0x3462 0x226F8
+0x3463 0x226F9
+0x3464 0x226A1
+0x3465 0x226A2
+0x3466 0x226A3
+0x3467 0x226A4
+0x3468 0x226A5
+0x3469 0x226FA
+0x346A 0x226FB
+0x346B 0x226FC
+0x346C 0x226FD
+0x346D 0x226FE
+0x346E 0x2271F
+0x346F 0x226FF
+0x3470 0x22700
+0x3471 0x2278C
+0x3472 0x22701
+0x3473 0x229C2
+0x3474 0x229C3
+0x3476 0x229D3
+0x3477 0x22A4E
+0x3478 0x22BAF
+0x3479 0x22BB0
+0x347A 0x22BB1
+0x347B 0x22BB2
+0x347C 0x22BB3
+0x347D 0x22BC6
+0x347E 0x22BB4
+0x3522 0x22BB5
+0x3523 0x22BB6
+0x3524 0x22BB7
+0x3525 0x22BB8
+0x3526 0x22BB9
+0x3527 0x22BBA
+0x3528 0x22BBB
+0x3529 0x22BBC
+0x352A 0x22BBD
+0x352B 0x22BBE
+0x352C 0x22BBF
+0x352D 0x22BC1
+0x352E 0x22BC0
+0x352F 0x22BC2
+0x3530 0x22BC3
+0x3531 0x22F51
+0x3532 0x22F52
+0x3533 0x22F53
+0x3534 0x22F54
+0x3535 0x22F55
+0x3536 0x2305A
+0x3537 0x23050
+0x3538 0x23051
+0x3539 0x23078
+0x353A 0x230F8
+0x353B 0x230F9
+0x353C 0x231C6
+0x353D 0x231CB
+0x353E 0x231CC
+0x353F 0x231CD
+0x3540 0x231CE
+0x3541 0x231CF
+0x3542 0x231D0
+0x3543 0x231D1
+0x3544 0x231D2
+0x3545 0x231D3
+0x3546 0x231D4
+0x3547 0x231D5
+0x3549 0x23337
+0x354A 0x23338
+0x354B 0x23373
+0x354C 0x23490
+0x354D 0x23491
+0x354E 0x234BF
+0x354F 0x23492
+0x3550 0x23493
+0x3551 0x23494
+0x3552 0x23495
+0x3553 0x23496
+0x3554 0x23497
+0x3555 0x23498
+0x3556 0x23499
+0x3558 0x2349A
+0x3559 0x2349B
+0x355A 0x2349C
+0x355B 0x2349D
+0x355C 0x2349E
+0x355D 0x2349F
+0x355E 0x234A0
+0x355F 0x234A1
+0x3560 0x234A2
+0x3561 0x234A3
+0x3562 0x234A4
+0x3563 0x234A5
+0x3565 0x234A6
+0x3566 0x234A7
+0x3567 0x238BF
+0x3568 0x238C0
+0x3569 0x238C1
+0x356A 0x238C2
+0x356B 0x238C3
+0x356C 0x238C4
+0x356D 0x238C5
+0x356E 0x238C6
+0x356F 0x23975
+0x3570 0x23A43
+0x3571 0x23A12
+0x3572 0x23A9F
+0x3573 0x23A91
+0x3574 0x2F8F6
+0x3575 0x23A92
+0x3576 0x23A93
+0x3577 0x23A94
+0x3578 0x23B7E
+0x3579 0x23B7F
+0x357A 0x23B80
+0x357B 0x23B81
+0x357C 0x23B82
+0x357D 0x23C4C
+0x357E 0x23C63
+0x3621 0x23DC0
+0x3622 0x23DC1
+0x3623 0x23DC2
+0x3624 0x2423A
+0x3625 0x23DC3
+0x3626 0x23DC4
+0x3627 0x23DC5
+0x3628 0x23DC6
+0x362A 0x23DC7
+0x362C 0x23DC8
+0x362D 0x23D73
+0x362E 0x23DC9
+0x362F 0x23DCA
+0x3630 0x23DCB
+0x3631 0x23DCC
+0x3632 0x23DCD
+0x3636 0x23DCE
+0x3637 0x23DCF
+0x3638 0x23DD0
+0x3639 0x23DD1
+0x363A 0x23DD2
+0x363B 0x23DD3
+0x363C 0x23DD4
+0x363D 0x23DD5
+0x363E 0x2423B
+0x363F 0x2423C
+0x3640 0x2423D
+0x3641 0x2423E
+0x3643 0x2423F
+0x3644 0x24240
+0x3645 0x24241
+0x3646 0x24242
+0x3647 0x24243
+0x3649 0x24244
+0x364A 0x24245
+0x364B 0x24259
+0x364C 0x24246
+0x364D 0x24247
+0x364E 0x24248
+0x3650 0x24249
+0x3651 0x24513
+0x3652 0x24582
+0x3653 0x24583
+0x3654 0x24666
+0x3655 0x24667
+0x3656 0x24965
+0x3658 0x24966
+0x365A 0x24975
+0x365B 0x24974
+0x365C 0x24967
+0x365D 0x2496D
+0x365E 0x24976
+0x365F 0x24968
+0x3660 0x24969
+0x3661 0x2496A
+0x3662 0x2496B
+0x3663 0x2494F
+0x3664 0x2496C
+0x3665 0x24AF8
+0x3666 0x24B45
+0x3668 0x24B46
+0x3669 0x24BE4
+0x366A 0x24C85
+0x366B 0x24C6F
+0x366C 0x24C70
+0x366D 0x24D82
+0x366E 0x24D83
+0x366F 0x24D84
+0x3670 0x24D8B
+0x3671 0x24F2D
+0x3672 0x24F68
+0x3673 0x24F69
+0x3674 0x24F77
+0x3675 0x24F64
+0x3676 0x24F6A
+0x3678 0x24FF2
+0x3679 0x24FE2
+0x367A 0x25063
+0x367B 0x25064
+0x367C 0x25065
+0x367D 0x25066
+0x3721 0x25067
+0x3722 0x25068
+0x3725 0x25172
+0x3726 0x2517D
+0x3727 0x25369
+0x3728 0x25484
+0x3729 0x25486
+0x372A 0x25487
+0x372B 0x25488
+0x372C 0x2549E
+0x372E 0x25489
+0x372F 0x2548A
+0x3730 0x25496
+0x3731 0x2548B
+0x3732 0x2548C
+0x3733 0x2548D
+0x3734 0x25679
+0x3735 0x25683
+0x3736 0x2567A
+0x3737 0x2565D
+0x3738 0x2567B
+0x373A 0x2579F
+0x373C 0x257A0
+0x373D 0x257A1
+0x373E 0x257A2
+0x3740 0x2596A
+0x3741 0x2596B
+0x3742 0x2596C
+0x3743 0x2596D
+0x3744 0x2596E
+0x3745 0x25A78
+0x3747 0x25A79
+0x3748 0x25A7C
+0x3749 0x25B21
+0x374A 0x25B22
+0x374B 0x25B23
+0x374C 0x25B24
+0x374E 0x25B25
+0x374F 0x25B26
+0x3750 0x25E51
+0x3751 0x25E52
+0x3752 0x25E56
+0x3755 0x25FE1
+0x3758 0x25FD6
+0x3759 0x25FD7
+0x375A 0x25FD8
+0x375B 0x25FD9
+0x375C 0x262B5
+0x375D 0x2636C
+0x375E 0x2636F
+0x375F 0x26370
+0x3760 0x264BC
+0x3761 0x264BD
+0x3762 0x264ED
+0x3763 0x2655B
+0x3764 0x2655C
+0x3765 0x2655D
+0x3766 0x2655E
+0x3767 0x26686
+0x3768 0x26687
+0x3769 0x266ED
+0x376B 0x266EE
+0x376D 0x2690E
+0x376E 0x2690F
+0x3770 0x26A2D
+0x3771 0x26A2A
+0x3772 0x26A2E
+0x3773 0x26ACC
+0x3774 0x26BF9
+0x3775 0x26BFA
+0x3776 0x26BFB
+0x3777 0x26BFC
+0x3779 0x26BFD
+0x377A 0x26C1B
+0x377B 0x26BFE
+0x377C 0x26BFF
+0x377D 0x26C00
+0x377E 0x26C01
+0x3821 0x26C02
+0x3822 0x26C03
+0x3823 0x26C21
+0x3824 0x26C04
+0x3825 0x26C05
+0x3826 0x26C06
+0x3827 0x26C07
+0x3828 0x26C08
+0x3829 0x26C09
+0x382A 0x26C0A
+0x382B 0x26C0B
+0x382C 0x26C0C
+0x382D 0x26C0D
+0x382E 0x26C0E
+0x382F 0x26C0F
+0x3830 0x26C10
+0x3831 0x26C11
+0x3832 0x26C12
+0x3833 0x26C13
+0x3834 0x26C14
+0x3835 0x26C15
+0x3836 0x2727B
+0x3837 0x2727C
+0x3838 0x2727D
+0x3839 0x2727E
+0x383B 0x2727F
+0x383C 0x27280
+0x383D 0x27266
+0x383E 0x27281
+0x383F 0x27282
+0x3840 0x27283
+0x3841 0x275B2
+0x3843 0x2767F
+0x3844 0x27672
+0x3845 0x2765A
+0x3846 0x277EB
+0x3847 0x27815
+0x3849 0x27816
+0x384A 0x2F9CA
+0x384B 0x27817
+0x384D 0x278C5
+0x384E 0x278C6
+0x384F 0x278C7
+0x3850 0x27988
+0x3851 0x27989
+0x3853 0x2798A
+0x3854 0x2798B
+0x3855 0x2798C
+0x3856 0x2798D
+0x3857 0x27BDF
+0x3859 0x27D3B
+0x385A 0x27D3C
+0x385B 0x27D3D
+0x385C 0x27D3E
+0x385D 0x27D3F
+0x385E 0x27D40
+0x385F 0x27D41
+0x3860 0x27D42
+0x3861 0x27E5C
+0x3862 0x27EAF
+0x3863 0x27EA9
+0x3864 0x27EAA
+0x3865 0x27EAB
+0x3866 0x27EAC
+0x3867 0x27EB5
+0x3868 0x27EAD
+0x3869 0x27EAE
+0x386A 0x27FE2
+0x386B 0x28224
+0x386D 0x282C4
+0x386F 0x284EA
+0x3870 0x284D3
+0x3871 0x284D4
+0x3872 0x284D5
+0x3873 0x28686
+0x3875 0x28687
+0x3876 0x286FD
+0x3877 0x28805
+0x3878 0x28949
+0x3879 0x28C5F
+0x387A 0x28CD3
+0x387B 0x28CD5
+0x387C 0x28E8A
+0x387D 0x28E8B
+0x387E 0x28E8C
+0x3921 0x28E8D
+0x3922 0x28E8E
+0x3923 0x28E8F
+0x3924 0x28E90
+0x3925 0x28E91
+0x3926 0x28E92
+0x3927 0x28E93
+0x3928 0x2907D
+0x3929 0x2907E
+0x392D 0x291EC
+0x392E 0x2925B
+0x392F 0x29C87
+0x3930 0x29C86
+0x3932 0x20046
+0x3933 0x20047
+0x3934 0x20102
+0x3935 0x2016D
+0x3936 0x2016E
+0x3937 0x2016F
+0x3938 0x2030D
+0x3939 0x2030E
+0x393A 0x2030F
+0x393B 0x20310
+0x393C 0x20311
+0x393D 0x20312
+0x393E 0x20313
+0x393F 0x20314
+0x3940 0x2049F
+0x3941 0x204A0
+0x3942 0x204A1
+0x3943 0x204A3
+0x3944 0x20521
+0x3945 0x20522
+0x3946 0x2337C
+0x3947 0x20595
+0x3948 0x20596
+0x3949 0x20661
+0x394A 0x20667
+0x394B 0x20791
+0x394C 0x20792
+0x394D 0x20793
+0x394E 0x20794
+0x394F 0x2088A
+0x3950 0x2088B
+0x3951 0x208F7
+0x3952 0x20924
+0x3953 0x209B0
+0x3954 0x209B1
+0x3955 0x20A8E
+0x3956 0x20B04
+0x3957 0x20B6A
+0x3958 0x20B6B
+0x3959 0x20B6C
+0x395A 0x20B6D
+0x395B 0x20DE8
+0x395C 0x20E0C
+0x395D 0x20DE9
+0x395E 0x20DEA
+0x395F 0x20E0D
+0x3961 0x20DEB
+0x3962 0x20DEC
+0x3963 0x20DED
+0x3964 0x20DEE
+0x3965 0x20DEF
+0x3966 0x20DF0
+0x3967 0x20DF1
+0x3968 0x20DF2
+0x3969 0x20E16
+0x396A 0x20DF3
+0x396B 0x20E04
+0x396C 0x20E1D
+0x396D 0x20DF4
+0x396E 0x20DF5
+0x396F 0x20DF6
+0x3970 0x20DF7
+0x3972 0x21202
+0x3973 0x21203
+0x3974 0x21204
+0x3975 0x2139A
+0x3976 0x2137C
+0x3977 0x213C5
+0x3978 0x2137D
+0x3979 0x2137E
+0x397A 0x2137F
+0x397B 0x21380
+0x397C 0x21381
+0x3A21 0x21382
+0x3A22 0x21383
+0x3A23 0x21384
+0x3A24 0x21385
+0x3A25 0x21386
+0x3A26 0x21387
+0x3A27 0x215AE
+0x3A28 0x2164D
+0x3A29 0x217B0
+0x3A2A 0x217DC
+0x3A2B 0x217B6
+0x3A2C 0x217B7
+0x3A2D 0x217B8
+0x3A2E 0x217B9
+0x3A2F 0x217BA
+0x3A30 0x217BB
+0x3A31 0x217DB
+0x3A32 0x217BC
+0x3A33 0x217BD
+0x3A34 0x217BE
+0x3A36 0x217BF
+0x3A37 0x217C0
+0x3A38 0x217C1
+0x3A39 0x217C2
+0x3A3A 0x217C3
+0x3A3B 0x217CE
+0x3A3D 0x217D9
+0x3A3E 0x217C4
+0x3A3F 0x217C5
+0x3A40 0x217DA
+0x3A41 0x217C6
+0x3A42 0x217C7
+0x3A43 0x217C8
+0x3A44 0x217C9
+0x3A45 0x217CA
+0x3A46 0x2197E
+0x3A47 0x2197B
+0x3A48 0x21A4E
+0x3A49 0x21A4F
+0x3A4A 0x21A50
+0x3A4B 0x21A51
+0x3A4C 0x21A52
+0x3A4D 0x21A53
+0x3A4E 0x21A54
+0x3A4F 0x21A55
+0x3A50 0x21B8F
+0x3A51 0x21BFC
+0x3A52 0x21CA6
+0x3A53 0x21CA7
+0x3A54 0x21CA8
+0x3A55 0x21D23
+0x3A56 0x21E8B
+0x3A58 0x21E8C
+0x3A59 0x21E8D
+0x3A5A 0x21E8E
+0x3A5B 0x21E8F
+0x3A5C 0x21EA4
+0x3A5D 0x20599
+0x3A5E 0x22024
+0x3A5F 0x22046
+0x3A60 0x22047
+0x3A61 0x22048
+0x3A62 0x220FD
+0x3A63 0x220FE
+0x3A65 0x2226E
+0x3A66 0x2227C
+0x3A67 0x2226F
+0x3A68 0x22270
+0x3A69 0x22271
+0x3A6A 0x22272
+0x3A6B 0x22329
+0x3A6C 0x2232A
+0x3A6D 0x2235F
+0x3A6E 0x224A2
+0x3A6F 0x22530
+0x3A70 0x2252B
+0x3A71 0x22761
+0x3A72 0x22702
+0x3A73 0x22703
+0x3A74 0x22704
+0x3A75 0x22705
+0x3A76 0x22706
+0x3A77 0x22707
+0x3A79 0x22708
+0x3A7A 0x22709
+0x3A7B 0x22762
+0x3A7C 0x2270A
+0x3A7D 0x2270B
+0x3A7E 0x2270C
+0x3B21 0x2270D
+0x3B22 0x2270E
+0x3B23 0x22763
+0x3B24 0x22727
+0x3B25 0x2270F
+0x3B27 0x2271B
+0x3B28 0x22764
+0x3B29 0x22710
+0x3B2A 0x22711
+0x3B2B 0x22781
+0x3B2C 0x22712
+0x3B2D 0x22765
+0x3B2E 0x22713
+0x3B2F 0x229CE
+0x3B30 0x22C29
+0x3B31 0x22BC4
+0x3B32 0x22C2A
+0x3B34 0x22C2B
+0x3B35 0x22C2C
+0x3B36 0x22C2D
+0x3B37 0x22C2E
+0x3B38 0x22C2F
+0x3B39 0x22C30
+0x3B3A 0x22C31
+0x3B3B 0x22C32
+0x3B3C 0x22C33
+0x3B3D 0x22C34
+0x3B3F 0x22C35
+0x3B40 0x22C36
+0x3B41 0x22BE3
+0x3B42 0x22C37
+0x3B43 0x22C38
+0x3B44 0x22C39
+0x3B45 0x22C3A
+0x3B46 0x22C3B
+0x3B47 0x22C4D
+0x3B48 0x22C3C
+0x3B49 0x22C3D
+0x3B4A 0x22C3E
+0x3B4C 0x22ED0
+0x3B4D 0x22ED1
+0x3B4E 0x23055
+0x3B4F 0x23102
+0x3B50 0x23104
+0x3B51 0x231FC
+0x3B52 0x23207
+0x3B53 0x231FD
+0x3B54 0x231FE
+0x3B56 0x231FF
+0x3B57 0x23200
+0x3B58 0x23208
+0x3B59 0x23201
+0x3B5A 0x23202
+0x3B5B 0x23235
+0x3B5C 0x23203
+0x3B5D 0x23204
+0x3B5F 0x2333B
+0x3B60 0x23389
+0x3B61 0x23381
+0x3B62 0x23382
+0x3B63 0x26733
+0x3B64 0x234EB
+0x3B65 0x234EC
+0x3B67 0x234ED
+0x3B68 0x234EE
+0x3B69 0x234EF
+0x3B6B 0x234F0
+0x3B6C 0x234F1
+0x3B6D 0x234F2
+0x3B6F 0x234F3
+0x3B71 0x234F4
+0x3B72 0x234F5
+0x3B73 0x2004B
+0x3B74 0x234F6
+0x3B75 0x234F7
+0x3B76 0x234F8
+0x3B77 0x234F9
+0x3B78 0x234FA
+0x3B79 0x234FB
+0x3B7A 0x234FC
+0x3B7B 0x234FD
+0x3B7C 0x234FE
+0x3B7D 0x234FF
+0x3B7E 0x23500
+0x3C22 0x23501
+0x3C23 0x23502
+0x3C24 0x23503
+0x3C25 0x23504
+0x3C26 0x23505
+0x3C27 0x23506
+0x3C28 0x23507
+0x3C2A 0x23508
+0x3C2B 0x23509
+0x3C2C 0x2350A
+0x3C2D 0x2350B
+0x3C2E 0x2350C
+0x3C2F 0x2350D
+0x3C30 0x238D7
+0x3C31 0x238D8
+0x3C32 0x23A29
+0x3C33 0x23A9C
+0x3C34 0x23AF8
+0x3C35 0x23B98
+0x3C36 0x23BA4
+0x3C37 0x23B99
+0x3C38 0x23B9A
+0x3C39 0x23B9B
+0x3C3A 0x23B97
+0x3C3B 0x23B9C
+0x3C3D 0x23B9D
+0x3C3F 0x23B9E
+0x3C40 0x23B9F
+0x3C41 0x23C65
+0x3C42 0x23DD6
+0x3C44 0x23E32
+0x3C45 0x23E33
+0x3C46 0x23E34
+0x3C48 0x23E35
+0x3C49 0x23E36
+0x3C4A 0x23E37
+0x3C4B 0x23DD7
+0x3C4D 0x23DD8
+0x3C4E 0x23E38
+0x3C4F 0x23E39
+0x3C50 0x23E3A
+0x3C51 0x23E3B
+0x3C52 0x23E3C
+0x3C53 0x23E3D
+0x3C54 0x23E3E
+0x3C55 0x23E3F
+0x3C56 0x23E40
+0x3C57 0x23DD9
+0x3C58 0x23E41
+0x3C59 0x23E42
+0x3C5B 0x23E43
+0x3C5C 0x23E44
+0x3C5E 0x2427C
+0x3C5F 0x2427D
+0x3C60 0x2427E
+0x3C61 0x2427F
+0x3C62 0x24280
+0x3C63 0x24281
+0x3C64 0x24282
+0x3C66 0x24283
+0x3C67 0x24284
+0x3C68 0x24285
+0x3C69 0x24286
+0x3C6A 0x242A5
+0x3C6B 0x24287
+0x3C6C 0x24288
+0x3C6D 0x24289
+0x3C6E 0x2428A
+0x3C6F 0x2428B
+0x3C70 0x2428C
+0x3C71 0x2428D
+0x3C72 0x2428E
+0x3C75 0x2428F
+0x3C77 0x24290
+0x3C78 0x24291
+0x3C79 0x24292
+0x3C7A 0x24293
+0x3C7B 0x24294
+0x3C7C 0x24295
+0x3D21 0x24296
+0x3D22 0x24556
+0x3D23 0x24557
+0x3D24 0x245E1
+0x3D25 0x2460E
+0x3D26 0x2460F
+0x3D27 0x2467A
+0x3D28 0x2467B
+0x3D29 0x2468B
+0x3D2A 0x247F2
+0x3D2B 0x247F3
+0x3D2C 0x24993
+0x3D2D 0x24994
+0x3D2E 0x24995
+0x3D2F 0x24996
+0x3D30 0x24997
+0x3D31 0x249AD
+0x3D32 0x24998
+0x3D33 0x249AB
+0x3D34 0x2497B
+0x3D35 0x24999
+0x3D36 0x2499A
+0x3D37 0x2499B
+0x3D38 0x24985
+0x3D39 0x2499C
+0x3D3A 0x2499D
+0x3D3D 0x249AC
+0x3D3E 0x24979
+0x3D3F 0x2499E
+0x3D40 0x249A4
+0x3D41 0x24AFD
+0x3D42 0x24BEB
+0x3D43 0x24BEA
+0x3D44 0x24C8F
+0x3D45 0x24C90
+0x3D46 0x24C86
+0x3D47 0x24C87
+0x3D48 0x24C88
+0x3D49 0x24DAC
+0x3D4A 0x24DAD
+0x3D4B 0x24FEC
+0x3D4C 0x25073
+0x3D4D 0x25074
+0x3D4F 0x251AA
+0x3D50 0x251AB
+0x3D51 0x251AC
+0x3D52 0x253D1
+0x3D53 0x253D7
+0x3D54 0x254B9
+0x3D55 0x254BA
+0x3D56 0x254BB
+0x3D57 0x254BC
+0x3D58 0x2568E
+0x3D59 0x2568F
+0x3D5A 0x25690
+0x3D5B 0x2567C
+0x3D5C 0x25691
+0x3D5D 0x25692
+0x3D5E 0x25693
+0x3D5F 0x25694
+0x3D60 0x2F954
+0x3D61 0x2569A
+0x3D62 0x25695
+0x3D63 0x25696
+0x3D64 0x25697
+0x3D65 0x257BD
+0x3D66 0x257C7
+0x3D67 0x257BE
+0x3D69 0x257BF
+0x3D6B 0x25993
+0x3D6C 0x21A5E
+0x3D6D 0x25A86
+0x3D6E 0x25A87
+0x3D6F 0x25A88
+0x3D70 0x25A89
+0x3D71 0x25B41
+0x3D72 0x25B42
+0x3D73 0x25B43
+0x3D74 0x25B44
+0x3D75 0x25B45
+0x3D76 0x25B46
+0x3D77 0x25B4A
+0x3D78 0x25B47
+0x3D79 0x25B48
+0x3D7A 0x25B49
+0x3D7B 0x25E6B
+0x3D7C 0x25E66
+0x3D7E 0x25E67
+0x3E22 0x25E68
+0x3E25 0x25FFD
+0x3E26 0x25FFE
+0x3E27 0x25FFF
+0x3E28 0x26000
+0x3E29 0x26001
+0x3E2A 0x26002
+0x3E2B 0x26003
+0x3E2C 0x26004
+0x3E2D 0x26005
+0x3E2E 0x26006
+0x3E2F 0x26233
+0x3E30 0x262C2
+0x3E31 0x262D0
+0x3E32 0x2F974
+0x3E33 0x26395
+0x3E34 0x26396
+0x3E35 0x26435
+0x3E36 0x26436
+0x3E37 0x26567
+0x3E38 0x26568
+0x3E39 0x26569
+0x3E3A 0x2656A
+0x3E3B 0x26572
+0x3E3C 0x2656B
+0x3E3D 0x2656C
+0x3E3E 0x2656D
+0x3E3F 0x2656E
+0x3E40 0x2656F
+0x3E41 0x26722
+0x3E44 0x26723
+0x3E45 0x26741
+0x3E46 0x26724
+0x3E47 0x26725
+0x3E48 0x26726
+0x3E49 0x26727
+0x3E4A 0x26728
+0x3E4B 0x26729
+0x3E4C 0x266B7
+0x3E50 0x269DA
+0x3E51 0x26ACF
+0x3E52 0x26ADA
+0x3E53 0x26C89
+0x3E54 0x26CB7
+0x3E55 0x26C8A
+0x3E56 0x26C8B
+0x3E57 0x26D5E
+0x3E58 0x26C8C
+0x3E5A 0x26C8D
+0x3E5B 0x26C8E
+0x3E5C 0x26C8F
+0x3E5D 0x26C90
+0x3E5E 0x26C91
+0x3E5F 0x26C92
+0x3E60 0x26C93
+0x3E61 0x26C94
+0x3E62 0x26CB6
+0x3E63 0x26C95
+0x3E64 0x26C96
+0x3E65 0x26C97
+0x3E68 0x26C98
+0x3E69 0x26C99
+0x3E6A 0x26C9A
+0x3E6D 0x26C9B
+0x3E6E 0x26CBD
+0x3E6F 0x26C9C
+0x3E70 0x26C9D
+0x3E71 0x26C9E
+0x3E72 0x26C9F
+0x3E73 0x26CC0
+0x3E74 0x26CA0
+0x3E75 0x26CA1
+0x3E76 0x26CA2
+0x3E77 0x26CA3
+0x3E78 0x26CA4
+0x3E79 0x26CA5
+0x3E7A 0x26CA6
+0x3E7B 0x26CA7
+0x3E7C 0x26CA8
+0x3E7D 0x26CA9
+0x3E7E 0x26CAA
+0x3F22 0x271B4
+0x3F23 0x271B5
+0x3F24 0x271B6
+0x3F25 0x272B9
+0x3F26 0x272BA
+0x3F27 0x272BB
+0x3F28 0x27291
+0x3F29 0x272BC
+0x3F2A 0x275EE
+0x3F2B 0x275EF
+0x3F2C 0x27696
+0x3F2D 0x27697
+0x3F2E 0x27673
+0x3F2F 0x27698
+0x3F30 0x27699
+0x3F31 0x277ED
+0x3F32 0x277EE
+0x3F33 0x278DE
+0x3F34 0x279B0
+0x3F35 0x279B1
+0x3F36 0x279B2
+0x3F37 0x279B3
+0x3F38 0x279B4
+0x3F39 0x279B5
+0x3F3A 0x279B6
+0x3F3B 0x2F9CE
+0x3F3C 0x279B7
+0x3F3D 0x27BE3
+0x3F3E 0x27CB9
+0x3F3F 0x27D55
+0x3F40 0x27D7E
+0x3F41 0x27D56
+0x3F42 0x27D57
+0x3F43 0x27D58
+0x3F44 0x27D59
+0x3F45 0x27D5A
+0x3F47 0x27EC4
+0x3F48 0x27EC5
+0x3F49 0x27EC6
+0x3F4A 0x27EC7
+0x3F4B 0x27EC8
+0x3F4C 0x27EC9
+0x3F4D 0x27EEE
+0x3F4E 0x27ECF
+0x3F4F 0x27ECA
+0x3F50 0x27ECB
+0x3F51 0x27ECC
+0x3F52 0x28009
+0x3F53 0x2F9DA
+0x3F54 0x28003
+0x3F55 0x2822F
+0x3F56 0x28230
+0x3F57 0x28231
+0x3F58 0x28232
+0x3F59 0x2850E
+0x3F5A 0x2850F
+0x3F5B 0x28510
+0x3F5C 0x28511
+0x3F5D 0x28512
+0x3F5F 0x28513
+0x3F60 0x28514
+0x3F61 0x28515
+0x3F62 0x284FF
+0x3F63 0x2871F
+0x3F64 0x28720
+0x3F65 0x28721
+0x3F66 0x2872D
+0x3F68 0x2881B
+0x3F69 0x2881C
+0x3F6A 0x2881D
+0x3F6B 0x2881E
+0x3F6C 0x28953
+0x3F6D 0x28954
+0x3F6E 0x28955
+0x3F6F 0x28956
+0x3F70 0x28964
+0x3F71 0x28959
+0x3F72 0x28957
+0x3F74 0x28958
+0x3F75 0x28C6B
+0x3F78 0x28CE7
+0x3F79 0x28CE8
+0x3F7A 0x28CE9
+0x3F7B 0x28CEA
+0x3F7C 0x28CEB
+0x3F7D 0x28CEC
+0x4021 0x28CED
+0x4022 0x28EB1
+0x4023 0x28EB4
+0x4025 0x2908A
+0x4026 0x2908D
+0x4027 0x2908C
+0x4028 0x291F2
+0x4029 0x291F3
+0x402B 0x22108
+0x402C 0x29417
+0x402E 0x2959F
+0x402F 0x296A0
+0x4031 0x2986D
+0x4032 0x2307D
+0x4033 0x29F90
+0x4034 0x2A5C4
+0x4035 0x2004C
+0x4036 0x20174
+0x4037 0x20175
+0x4038 0x20176
+0x4039 0x20349
+0x403A 0x2034A
+0x403B 0x2034B
+0x403C 0x2034C
+0x403D 0x2034D
+0x403E 0x2034E
+0x403F 0x2034F
+0x4040 0x20350
+0x4041 0x20351
+0x4042 0x20352
+0x4043 0x20353
+0x4044 0x20354
+0x4045 0x20355
+0x4046 0x20356
+0x4047 0x204A4
+0x4048 0x204A9
+0x4049 0x2052A
+0x404A 0x2052B
+0x404B 0x207B3
+0x404C 0x207C1
+0x404D 0x20898
+0x404E 0x208FB
+0x404F 0x208FC
+0x4050 0x209BC
+0x4051 0x20A96
+0x4052 0x20B0A
+0x4054 0x20EA2
+0x4056 0x20E81
+0x4057 0x20E82
+0x4058 0x20E83
+0x4059 0x20E84
+0x405A 0x20E85
+0x405B 0x20E86
+0x405C 0x20E87
+0x405D 0x20E88
+0x405E 0x20E89
+0x405F 0x20E8A
+0x4060 0x20E8B
+0x4061 0x20E8C
+0x4063 0x20E8D
+0x4064 0x20ED1
+0x4065 0x21214
+0x4066 0x213C9
+0x4067 0x213CA
+0x4068 0x213CB
+0x4069 0x29AFD
+0x406A 0x213CC
+0x406B 0x213CD
+0x406C 0x213CE
+0x406D 0x213CF
+0x406E 0x213D0
+0x406F 0x213D1
+0x4070 0x213D2
+0x4071 0x213D3
+0x4072 0x213D4
+0x4073 0x213D5
+0x4074 0x21571
+0x4075 0x2004D
+0x4076 0x21662
+0x4077 0x2180E
+0x4078 0x217FE
+0x4079 0x217FF
+0x407A 0x21800
+0x407C 0x21801
+0x407D 0x21802
+0x407E 0x21803
+0x4121 0x21815
+0x4122 0x21804
+0x4123 0x21805
+0x4125 0x21987
+0x4126 0x21989
+0x4127 0x21A6E
+0x4128 0x21A6F
+0x4129 0x21A70
+0x412A 0x21A71
+0x412B 0x2F86E
+0x412C 0x21A72
+0x412D 0x21A73
+0x412E 0x21A74
+0x412F 0x21B9D
+0x4130 0x21CB8
+0x4131 0x21CB9
+0x4132 0x21CBA
+0x4133 0x21EC2
+0x4134 0x21EC3
+0x4135 0x21ED5
+0x4136 0x21EC4
+0x4137 0x21EC0
+0x4138 0x21EC5
+0x4139 0x21EC6
+0x413A 0x2228A
+0x413B 0x2228B
+0x413C 0x2228C
+0x413D 0x22364
+0x413E 0x25B8C
+0x4140 0x2240D
+0x4141 0x224A8
+0x4142 0x2253B
+0x4143 0x2253C
+0x4144 0x2253D
+0x4145 0x2253E
+0x4146 0x2253F
+0x4147 0x22540
+0x4148 0x22766
+0x4149 0x227CB
+0x414A 0x227B7
+0x414B 0x227B8
+0x414C 0x227B9
+0x414D 0x227BA
+0x414E 0x22767
+0x414F 0x227BB
+0x4150 0x22768
+0x4151 0x22769
+0x4152 0x2276A
+0x4153 0x227BC
+0x4155 0x229DB
+0x4156 0x22C81
+0x4157 0x22C82
+0x4158 0x22C83
+0x4159 0x22C84
+0x415A 0x22C85
+0x415B 0x22C86
+0x415C 0x22C87
+0x415D 0x22C88
+0x415E 0x22C89
+0x415F 0x2F8BF
+0x4160 0x22C8A
+0x4161 0x22C8B
+0x4163 0x22C8C
+0x4164 0x22C8D
+0x4165 0x22C8E
+0x4166 0x22C8F
+0x4167 0x22C90
+0x4168 0x22CA1
+0x4169 0x22C91
+0x416A 0x22ED6
+0x416B 0x22F9F
+0x416C 0x23058
+0x416D 0x23085
+0x416E 0x2310B
+0x416F 0x2310C
+0x4170 0x23237
+0x4171 0x23238
+0x4172 0x2F8CE
+0x4173 0x23239
+0x4174 0x2323A
+0x4175 0x2323B
+0x4176 0x2323C
+0x4177 0x2323D
+0x4178 0x2323E
+0x4179 0x23240
+0x417A 0x23241
+0x417B 0x23242
+0x417D 0x23243
+0x417E 0x2338A
+0x4221 0x2338B
+0x4222 0x23590
+0x4223 0x23559
+0x4224 0x2355B
+0x4225 0x2355C
+0x4226 0x2355D
+0x4227 0x2355E
+0x4229 0x2355F
+0x422A 0x23560
+0x422B 0x23561
+0x422C 0x23562
+0x422D 0x23563
+0x422E 0x23564
+0x422F 0x23593
+0x4230 0x23565
+0x4231 0x23566
+0x4232 0x23567
+0x4233 0x23568
+0x4234 0x23569
+0x4235 0x2356A
+0x4236 0x2356B
+0x4237 0x23595
+0x4238 0x2356C
+0x4239 0x2356D
+0x423A 0x2356E
+0x423B 0x2356F
+0x423D 0x23570
+0x423E 0x23571
+0x423F 0x23572
+0x4240 0x23573
+0x4241 0x23574
+0x4242 0x23575
+0x4243 0x23576
+0x4244 0x23577
+0x4245 0x23578
+0x4246 0x23579
+0x4248 0x2357A
+0x424A 0x2357B
+0x424B 0x235A9
+0x424C 0x2357C
+0x424D 0x238F1
+0x424E 0x238EB
+0x424F 0x2398A
+0x4250 0x23A3D
+0x4251 0x23AA6
+0x4252 0x23AA7
+0x4253 0x23BBA
+0x4255 0x23BBB
+0x4256 0x23BBC
+0x4257 0x23BBD
+0x4258 0x23E91
+0x4259 0x23E92
+0x425A 0x23E93
+0x425B 0x23E94
+0x425C 0x23E95
+0x425D 0x23E96
+0x425E 0x23E97
+0x425F 0x23DDA
+0x4260 0x23E98
+0x4261 0x23E99
+0x4262 0x23E9A
+0x4265 0x23E9B
+0x4266 0x23E9C
+0x4267 0x23E9D
+0x4268 0x23E9E
+0x4269 0x23E9F
+0x426A 0x23EA0
+0x426B 0x23EBF
+0x426C 0x23EA1
+0x426D 0x23EA2
+0x426E 0x23EA3
+0x426F 0x23EA4
+0x4270 0x23EA5
+0x4271 0x23EA6
+0x4272 0x23EA7
+0x4273 0x23E5B
+0x4274 0x2F90D
+0x4275 0x23EA8
+0x4276 0x242CB
+0x4279 0x242CC
+0x427A 0x2434F
+0x427B 0x242CD
+0x427C 0x242CE
+0x427D 0x242CF
+0x427E 0x2434E
+0x4321 0x242D0
+0x4322 0x242D1
+0x4323 0x242D2
+0x4325 0x242D3
+0x4326 0x242D4
+0x4327 0x242D5
+0x4328 0x242D6
+0x4329 0x242D7
+0x432A 0x242D8
+0x432B 0x242D9
+0x432C 0x242FA
+0x432D 0x242DA
+0x432E 0x242DB
+0x432F 0x2F91C
+0x4330 0x242DC
+0x4333 0x242DD
+0x4334 0x242DE
+0x4335 0x242DF
+0x4336 0x242E0
+0x4337 0x242E1
+0x4338 0x242E2
+0x4339 0x242E3
+0x433A 0x242E4
+0x433B 0x242E5
+0x433D 0x242E6
+0x433E 0x242E7
+0x433F 0x2458E
+0x4340 0x24698
+0x4341 0x24699
+0x4343 0x2480A
+0x4345 0x24826
+0x4346 0x24827
+0x4347 0x249BD
+0x4348 0x249DF
+0x434A 0x249BE
+0x434B 0x249DE
+0x434C 0x249BF
+0x434D 0x249C0
+0x434E 0x249C1
+0x434F 0x249C2
+0x4350 0x2499F
+0x4351 0x249C3
+0x4352 0x249C4
+0x4353 0x249C5
+0x4354 0x249C6
+0x4355 0x249C7
+0x4357 0x249C8
+0x4358 0x249C9
+0x4359 0x249E3
+0x435A 0x249CA
+0x435B 0x249CB
+0x435C 0x249CC
+0x435D 0x249CD
+0x435E 0x249CE
+0x435F 0x249CF
+0x4360 0x249D0
+0x4361 0x249D1
+0x4362 0x249D2
+0x4363 0x249D3
+0x4364 0x2F92F
+0x4365 0x249D4
+0x4366 0x24B04
+0x4367 0x24B65
+0x4368 0x24BEE
+0x4369 0x24CA0
+0x436A 0x24CA1
+0x436B 0x24DDD
+0x436C 0x24DDE
+0x436D 0x24F83
+0x436E 0x24FFA
+0x436F 0x2507F
+0x4370 0x25080
+0x4371 0x251E8
+0x4372 0x251E9
+0x4373 0x251EA
+0x4374 0x235A6
+0x4375 0x253E1
+0x4377 0x254DB
+0x4378 0x254DC
+0x4379 0x254DD
+0x437A 0x254DE
+0x437B 0x254DF
+0x437C 0x254E0
+0x437D 0x254E1
+0x437E 0x254E2
+0x4421 0x254E3
+0x4422 0x254E4
+0x4423 0x254E5
+0x4424 0x254E6
+0x4426 0x254E7
+0x4427 0x256B0
+0x4428 0x25698
+0x4429 0x256B1
+0x442A 0x25699
+0x442B 0x256B2
+0x442C 0x256B3
+0x442D 0x256B4
+0x442E 0x256B5
+0x442F 0x256B6
+0x4430 0x256B7
+0x4431 0x256B8
+0x4432 0x256B9
+0x4433 0x257E2
+0x4434 0x257E3
+0x4435 0x257E4
+0x4436 0x257E5
+0x4437 0x257E6
+0x4438 0x257E7
+0x4439 0x257E8
+0x443A 0x257E9
+0x443B 0x259AD
+0x443C 0x259CF
+0x443D 0x259AE
+0x443E 0x259AF
+0x443F 0x259B0
+0x4440 0x259B1
+0x4441 0x25A92
+0x4442 0x25A93
+0x4443 0x25A94
+0x4444 0x25B79
+0x4446 0x25B7A
+0x4447 0x25B7B
+0x4448 0x25B7C
+0x4449 0x25B7D
+0x444A 0x25B7E
+0x444B 0x25B7F
+0x444C 0x25B80
+0x444D 0x25B81
+0x444E 0x25B82
+0x444F 0x25B83
+0x4450 0x25B84
+0x4451 0x25E97
+0x4452 0x25E84
+0x4453 0x25E85
+0x4454 0x25E89
+0x4455 0x25E86
+0x4456 0x25E87
+0x4457 0x2602C
+0x4458 0x2602D
+0x4459 0x2602E
+0x445A 0x2602F
+0x445B 0x26030
+0x445C 0x26031
+0x445D 0x26032
+0x445E 0x26033
+0x445F 0x26034
+0x4460 0x26035
+0x4461 0x26036
+0x4462 0x26037
+0x4463 0x262D2
+0x4464 0x26444
+0x4465 0x26500
+0x4466 0x26583
+0x4467 0x26584
+0x4468 0x2F986
+0x4469 0x2677A
+0x446A 0x2677B
+0x446B 0x2677C
+0x446C 0x2677D
+0x446D 0x2677E
+0x446F 0x2677F
+0x4470 0x26787
+0x4471 0x26780
+0x4472 0x26A43
+0x4473 0x26D34
+0x4475 0x26D35
+0x4476 0x26D36
+0x4477 0x26D37
+0x4478 0x26D38
+0x4479 0x26D39
+0x447A 0x26D3A
+0x447B 0x26D3B
+0x447C 0x26D3C
+0x447D 0x26D3D
+0x447E 0x26D3E
+0x4521 0x26D3F
+0x4522 0x26D40
+0x4523 0x26D41
+0x4524 0x26D42
+0x4525 0x26D43
+0x4526 0x26D44
+0x4527 0x26D45
+0x4528 0x26D46
+0x4529 0x26D47
+0x452A 0x26D48
+0x452B 0x26D49
+0x452C 0x26D4A
+0x452E 0x26D4B
+0x452F 0x26D4C
+0x4530 0x26D4D
+0x4531 0x26D4E
+0x4532 0x272E7
+0x4533 0x272E8
+0x4534 0x272E9
+0x4535 0x272EA
+0x4536 0x272EB
+0x4537 0x272EC
+0x4538 0x272ED
+0x4539 0x272EE
+0x453A 0x275F7
+0x453B 0x2769A
+0x453C 0x276CD
+0x453D 0x2F9C8
+0x453E 0x276A3
+0x453F 0x276CE
+0x4540 0x27831
+0x4541 0x27832
+0x4542 0x27833
+0x4543 0x279E4
+0x4545 0x279E5
+0x4546 0x279E6
+0x4547 0x27CC8
+0x4548 0x27D74
+0x4549 0x27D75
+0x454A 0x27D76
+0x454B 0x27D77
+0x454C 0x27D78
+0x454D 0x27D79
+0x454E 0x27D7A
+0x454F 0x27E61
+0x4550 0x27EDF
+0x4551 0x27EE0
+0x4552 0x27EE1
+0x4553 0x27EE2
+0x4554 0x27EE3
+0x4555 0x27EE4
+0x4556 0x27EE5
+0x4557 0x27EE6
+0x4559 0x28031
+0x455A 0x2823D
+0x455B 0x2823E
+0x455C 0x2823F
+0x455D 0x282F4
+0x455E 0x282F5
+0x455F 0x282F6
+0x4561 0x28417
+0x4562 0x28541
+0x4563 0x28542
+0x4564 0x28543
+0x4565 0x28544
+0x4566 0x28545
+0x4567 0x28546
+0x4568 0x28547
+0x4569 0x28548
+0x456A 0x28549
+0x456B 0x2854A
+0x456C 0x2854B
+0x456E 0x286BA
+0x456F 0x28744
+0x4570 0x2892A
+0x4571 0x2896D
+0x4573 0x2F9E7
+0x4574 0x2897E
+0x4575 0x2896E
+0x4576 0x2896F
+0x4577 0x28970
+0x4578 0x28971
+0x4579 0x28976
+0x457A 0x28C79
+0x457D 0x28D04
+0x457E 0x28CF8
+0x4621 0x28D05
+0x4622 0x28EDA
+0x4623 0x28EDB
+0x4624 0x28EDC
+0x4625 0x28EDD
+0x4626 0x28EDE
+0x4627 0x28EDF
+0x4628 0x28EE0
+0x4629 0x28EE1
+0x462A 0x290C5
+0x462B 0x2909A
+0x462C 0x2909B
+0x462D 0x2909C
+0x462E 0x291D8
+0x462F 0x291D9
+0x4630 0x291DA
+0x4631 0x2926E
+0x4633 0x2946B
+0x4634 0x27D83
+0x4636 0x296D6
+0x4637 0x296BD
+0x4639 0x2322E
+0x463A 0x29AFC
+0x463B 0x29D53
+0x463C 0x29DB7
+0x463D 0x2A28C
+0x463E 0x2A38E
+0x463F 0x2A2FF
+0x4640 0x20076
+0x4641 0x20106
+0x4642 0x2017E
+0x4643 0x20384
+0x4644 0x20385
+0x4645 0x20386
+0x4646 0x20387
+0x4647 0x20388
+0x4648 0x203A7
+0x4649 0x20389
+0x464A 0x2038A
+0x464B 0x2038B
+0x464C 0x2038C
+0x464D 0x2038D
+0x464E 0x2038E
+0x464F 0x2038F
+0x4650 0x203A3
+0x4651 0x20390
+0x4652 0x20391
+0x4653 0x20392
+0x4654 0x20393
+0x4655 0x203AC
+0x4656 0x20394
+0x4657 0x20395
+0x4658 0x20396
+0x4659 0x204AA
+0x465A 0x204AB
+0x465B 0x2059E
+0x465D 0x20608
+0x465E 0x20609
+0x465F 0x20668
+0x4660 0x20669
+0x4661 0x2066A
+0x4662 0x2069A
+0x4663 0x207D9
+0x4664 0x207DA
+0x4665 0x207DB
+0x4666 0x208A8
+0x4667 0x20901
+0x4668 0x20928
+0x4669 0x20977
+0x466A 0x209BD
+0x466B 0x209BE
+0x466C 0x20F60
+0x466D 0x20AA0
+0x466E 0x20AA2
+0x466F 0x20B0F
+0x4670 0x20B85
+0x4671 0x20EFE
+0x4672 0x20EFF
+0x4673 0x20F00
+0x4674 0x20F01
+0x4675 0x20F16
+0x4676 0x20F02
+0x4677 0x20F03
+0x4678 0x20F04
+0x4679 0x20F05
+0x467A 0x20F06
+0x467B 0x20F07
+0x467C 0x20F08
+0x467D 0x20F22
+0x467E 0x20F09
+0x4721 0x20F0A
+0x4722 0x20F0B
+0x4723 0x20F0C
+0x4724 0x20F14
+0x4725 0x20F29
+0x4726 0x20E6E
+0x4727 0x20F0D
+0x4728 0x20F0E
+0x4729 0x20F0F
+0x472A 0x20F10
+0x472B 0x20F11
+0x472C 0x20F12
+0x472D 0x20F13
+0x472E 0x2121B
+0x472F 0x2121C
+0x4730 0x2121D
+0x4731 0x21413
+0x4732 0x213FF
+0x4733 0x21400
+0x4734 0x21401
+0x4735 0x21402
+0x4736 0x21403
+0x4737 0x21404
+0x4738 0x2140A
+0x4739 0x21405
+0x473A 0x21406
+0x473B 0x21407
+0x473C 0x21408
+0x473D 0x2153A
+0x473E 0x21573
+0x473F 0x2166F
+0x4740 0x21670
+0x4741 0x21671
+0x4742 0x20052
+0x4744 0x21A9A
+0x4745 0x21860
+0x4746 0x2F869
+0x4747 0x2182B
+0x4748 0x21824
+0x4749 0x2182C
+0x474A 0x2182D
+0x474B 0x2182E
+0x474C 0x2182F
+0x474D 0x21830
+0x474E 0x21831
+0x474F 0x21832
+0x4750 0x21833
+0x4751 0x21834
+0x4752 0x21835
+0x4753 0x21845
+0x4754 0x21836
+0x4755 0x21992
+0x4756 0x21993
+0x4757 0x21A88
+0x4758 0x21A89
+0x4759 0x21A8A
+0x475A 0x21A8B
+0x475B 0x21B3F
+0x475D 0x21CCA
+0x475E 0x21EF6
+0x475F 0x21EF7
+0x4760 0x21EF8
+0x4761 0x21EF9
+0x4762 0x2212B
+0x4764 0x221A4
+0x4765 0x221CE
+0x4767 0x2229E
+0x4768 0x2229F
+0x4769 0x222A0
+0x476A 0x222A1
+0x476B 0x222A2
+0x476C 0x222A3
+0x476D 0x222A4
+0x476E 0x222A5
+0x476F 0x222A6
+0x4770 0x22418
+0x4771 0x22560
+0x4772 0x22561
+0x4773 0x22562
+0x4774 0x22563
+0x4775 0x22564
+0x4776 0x227BD
+0x4777 0x227BE
+0x4778 0x2280B
+0x4779 0x227BF
+0x477A 0x227C0
+0x477C 0x2280C
+0x477D 0x2278D
+0x477E 0x2280D
+0x4821 0x2280E
+0x4822 0x2285E
+0x4823 0x2280F
+0x4824 0x22810
+0x4825 0x227C1
+0x4826 0x22811
+0x4828 0x227C2
+0x4829 0x229EA
+0x482A 0x229EB
+0x482B 0x22CE3
+0x482C 0x22CE4
+0x482D 0x22CE5
+0x482E 0x22CE6
+0x482F 0x22CE7
+0x4830 0x22C92
+0x4831 0x22D4A
+0x4833 0x22CE8
+0x4834 0x22CE9
+0x4835 0x22CEA
+0x4836 0x22D01
+0x4837 0x22CEB
+0x4838 0x22CEC
+0x4839 0x22CEF
+0x483A 0x22CED
+0x483B 0x22CEE
+0x483C 0x22CF0
+0x483D 0x22CF1
+0x483E 0x22CF2
+0x483F 0x22CF3
+0x4840 0x22CF4
+0x4841 0x22CF5
+0x4842 0x22CF6
+0x4843 0x22CF7
+0x4844 0x22CF8
+0x4845 0x22CF9
+0x4846 0x22CFE
+0x4847 0x22CFA
+0x4848 0x22CFB
+0x4849 0x22CFC
+0x484A 0x23263
+0x484B 0x23264
+0x484C 0x23265
+0x484D 0x23266
+0x484E 0x23267
+0x484F 0x23268
+0x4850 0x2360B
+0x4851 0x2360D
+0x4853 0x2360E
+0x4854 0x2360F
+0x4856 0x23614
+0x4857 0x235D4
+0x4858 0x235D5
+0x4859 0x235D6
+0x485A 0x235D7
+0x485B 0x235D8
+0x485C 0x235D9
+0x485D 0x235DA
+0x485E 0x235DB
+0x485F 0x235DC
+0x4860 0x235DD
+0x4861 0x235DE
+0x4862 0x235DF
+0x4863 0x235E0
+0x4864 0x235E1
+0x4865 0x235E2
+0x4866 0x235E3
+0x4867 0x235E4
+0x4868 0x235E5
+0x4869 0x235E6
+0x486A 0x235E7
+0x486B 0x235E8
+0x486C 0x235E9
+0x486D 0x235EA
+0x486E 0x235EB
+0x486F 0x235EC
+0x4870 0x236EC
+0x4871 0x235ED
+0x4872 0x235EE
+0x4873 0x235EF
+0x4874 0x23600
+0x4875 0x235F0
+0x4876 0x23904
+0x4878 0x23905
+0x4879 0x2F8F3
+0x487A 0x23AB5
+0x487B 0x2F8F9
+0x487C 0x23BD6
+0x487D 0x23BD7
+0x487E 0x23BD8
+0x4921 0x23BD9
+0x4922 0x23EA9
+0x4923 0x23F00
+0x4924 0x23F01
+0x4925 0x23F02
+0x4926 0x23F03
+0x4927 0x23F04
+0x4928 0x23F05
+0x4929 0x23F06
+0x492A 0x23F3F
+0x492B 0x23F07
+0x492C 0x23F08
+0x492D 0x23F09
+0x492E 0x23F0A
+0x492F 0x23EB6
+0x4930 0x23F0B
+0x4931 0x23F0C
+0x4934 0x23F0D
+0x4936 0x23F0E
+0x4937 0x23F0F
+0x4938 0x23F10
+0x4939 0x23F11
+0x493A 0x23F12
+0x493B 0x23F35
+0x493C 0x23F13
+0x493D 0x23F14
+0x493E 0x23EAA
+0x4940 0x23FC1
+0x4941 0x23F15
+0x4942 0x23F16
+0x4943 0x23F17
+0x4944 0x2431E
+0x4945 0x2431F
+0x4946 0x24320
+0x4947 0x24321
+0x4949 0x24322
+0x494A 0x24323
+0x494C 0x24324
+0x494D 0x24325
+0x494E 0x24326
+0x494F 0x24327
+0x4950 0x24328
+0x4951 0x24329
+0x4952 0x2432A
+0x4953 0x2432B
+0x4954 0x24307
+0x4955 0x2432C
+0x4956 0x2432D
+0x4957 0x2432E
+0x495A 0x2432F
+0x495B 0x24330
+0x495C 0x24348
+0x495D 0x24331
+0x495E 0x24332
+0x4960 0x24333
+0x4962 0x24334
+0x4963 0x24335
+0x4964 0x24336
+0x4965 0x24559
+0x4966 0x24591
+0x4967 0x245E7
+0x4968 0x246B8
+0x4969 0x246B9
+0x496A 0x246BA
+0x496B 0x246BB
+0x496C 0x246C8
+0x496D 0x2484D
+0x496E 0x24889
+0x496F 0x24850
+0x4970 0x24828
+0x4971 0x249FB
+0x4972 0x249FC
+0x4973 0x249FD
+0x4974 0x249FE
+0x4975 0x249FF
+0x4977 0x24A00
+0x4978 0x24A01
+0x4979 0x24A02
+0x497A 0x249E4
+0x497B 0x249E5
+0x497C 0x24A03
+0x497D 0x24A04
+0x497E 0x24A05
+0x4A21 0x24A06
+0x4A22 0x24A07
+0x4A23 0x24A13
+0x4A24 0x24A08
+0x4A25 0x24A09
+0x4A26 0x249E6
+0x4A27 0x24A0A
+0x4A28 0x24A0B
+0x4A29 0x24A0C
+0x4A2A 0x24B0B
+0x4A2B 0x24BF4
+0x4A2C 0x24C0A
+0x4A2D 0x24CB1
+0x4A2E 0x24E1D
+0x4A2F 0x2F93B
+0x4A30 0x24F8B
+0x4A31 0x24F8C
+0x4A32 0x24F8F
+0x4A33 0x24F8D
+0x4A34 0x24F8E
+0x4A35 0x25006
+0x4A36 0x25086
+0x4A37 0x25222
+0x4A38 0x25223
+0x4A39 0x25224
+0x4A3A 0x25225
+0x4A3B 0x25226
+0x4A3C 0x25227
+0x4A3D 0x25228
+0x4A3E 0x253F1
+0x4A40 0x25523
+0x4A41 0x25512
+0x4A43 0x25513
+0x4A44 0x25514
+0x4A45 0x25515
+0x4A46 0x25516
+0x4A47 0x25517
+0x4A48 0x25518
+0x4A49 0x25519
+0x4A4A 0x2554B
+0x4A4B 0x2551A
+0x4A4C 0x2551B
+0x4A4D 0x2551C
+0x4A4F 0x2551D
+0x4A50 0x2551E
+0x4A51 0x2551F
+0x4A52 0x25520
+0x4A53 0x256CA
+0x4A54 0x222AC
+0x4A55 0x256CB
+0x4A56 0x256CC
+0x4A57 0x256CD
+0x4A58 0x256CE
+0x4A5A 0x256CF
+0x4A5B 0x25810
+0x4A5C 0x25811
+0x4A5D 0x25812
+0x4A5E 0x25813
+0x4A5F 0x25814
+0x4A60 0x2580F
+0x4A61 0x25815
+0x4A62 0x25816
+0x4A63 0x25817
+0x4A65 0x25818
+0x4A66 0x259C6
+0x4A67 0x25A9F
+0x4A68 0x25AA0
+0x4A69 0x25AA4
+0x4A6A 0x25AA1
+0x4A6B 0x25BB5
+0x4A6C 0x25BB6
+0x4A6D 0x25BB7
+0x4A6E 0x25BB8
+0x4A6F 0x25BB9
+0x4A70 0x25BBA
+0x4A71 0x25BD0
+0x4A72 0x25BC6
+0x4A73 0x25BBB
+0x4A74 0x25BBC
+0x4A75 0x25BBD
+0x4A76 0x25BBE
+0x4A77 0x25BBF
+0x4A78 0x25BC0
+0x4A79 0x25BC1
+0x4A7A 0x25BC2
+0x4A7B 0x2F960
+0x4A7C 0x25EA7
+0x4A7D 0x25EA8
+0x4A7E 0x25EA9
+0x4B21 0x25EAA
+0x4B22 0x25EAB
+0x4B23 0x25EAC
+0x4B24 0x25EBC
+0x4B25 0x25EAD
+0x4B26 0x25EAE
+0x4B28 0x25EAF
+0x4B29 0x25EB0
+0x4B2A 0x25EB1
+0x4B2C 0x25EB4
+0x4B2D 0x25EB2
+0x4B2E 0x26066
+0x4B2F 0x26067
+0x4B30 0x26068
+0x4B31 0x26069
+0x4B32 0x2606A
+0x4B33 0x2606B
+0x4B34 0x2606C
+0x4B35 0x2606D
+0x4B36 0x2606E
+0x4B37 0x2606F
+0x4B39 0x2623E
+0x4B3A 0x2623F
+0x4B3B 0x26240
+0x4B3C 0x262E8
+0x4B3D 0x26452
+0x4B3E 0x26453
+0x4B3F 0x26454
+0x4B40 0x26455
+0x4B41 0x26591
+0x4B42 0x26592
+0x4B43 0x26593
+0x4B44 0x26594
+0x4B45 0x26595
+0x4B46 0x26596
+0x4B47 0x26597
+0x4B48 0x26598
+0x4B4A 0x26599
+0x4B4B 0x2659A
+0x4B4C 0x2659B
+0x4B4D 0x267B7
+0x4B4E 0x267B8
+0x4B4F 0x267B9
+0x4B51 0x267BA
+0x4B52 0x267BB
+0x4B53 0x267BD
+0x4B55 0x267BC
+0x4B56 0x2F988
+0x4B57 0x2F987
+0x4B58 0x268EB
+0x4B59 0x268EC
+0x4B5A 0x26916
+0x4B5B 0x26944
+0x4B5C 0x269E3
+0x4B5D 0x26A58
+0x4B5E 0x26A53
+0x4B5F 0x26A54
+0x4B60 0x26AE0
+0x4B61 0x26DB1
+0x4B62 0x26DB2
+0x4B63 0x26DB3
+0x4B64 0x26DEA
+0x4B66 0x26DB4
+0x4B67 0x26DF0
+0x4B68 0x26DB5
+0x4B69 0x26DB6
+0x4B6A 0x26DB7
+0x4B6B 0x26DB8
+0x4B6C 0x26DB9
+0x4B6D 0x26DBA
+0x4B6E 0x26DBB
+0x4B6F 0x26DBC
+0x4B70 0x26DBD
+0x4B71 0x26DBE
+0x4B72 0x26DBF
+0x4B73 0x26DC0
+0x4B74 0x26DC1
+0x4B75 0x26DC2
+0x4B76 0x26DC3
+0x4B78 0x26DC4
+0x4B79 0x26DC5
+0x4B7A 0x26DC6
+0x4B7B 0x26DFC
+0x4B7C 0x26DC7
+0x4B7D 0x26DC8
+0x4B7E 0x26DC9
+0x4C21 0x26DCA
+0x4C22 0x26DCB
+0x4C23 0x26DCC
+0x4C24 0x26E84
+0x4C25 0x26DCD
+0x4C26 0x26DCE
+0x4C27 0x26DCF
+0x4C28 0x26DD0
+0x4C29 0x26DD1
+0x4C2A 0x26DD2
+0x4C2B 0x271CA
+0x4C2C 0x271CB
+0x4C2D 0x27336
+0x4C2E 0x27337
+0x4C2F 0x2739F
+0x4C30 0x27338
+0x4C31 0x27339
+0x4C32 0x2733A
+0x4C34 0x276BE
+0x4C35 0x276F0
+0x4C36 0x276BF
+0x4C37 0x276C0
+0x4C38 0x277F7
+0x4C39 0x277F8
+0x4C3A 0x277FA
+0x4C3B 0x27843
+0x4C3C 0x27844
+0x4C3D 0x27A0F
+0x4C3E 0x27A10
+0x4C3F 0x27A11
+0x4C40 0x27A12
+0x4C42 0x27A13
+0x4C43 0x27A14
+0x4C44 0x27A15
+0x4C45 0x27A16
+0x4C48 0x27CD3
+0x4C49 0x27CD7
+0x4C4B 0x27DB0
+0x4C4C 0x27D98
+0x4C4D 0x27D90
+0x4C4E 0x27D91
+0x4C4F 0x27D92
+0x4C50 0x27D97
+0x4C51 0x27D93
+0x4C52 0x27E64
+0x4C53 0x27F01
+0x4C54 0x27F02
+0x4C55 0x27F03
+0x4C56 0x27F04
+0x4C57 0x27F05
+0x4C58 0x27F06
+0x4C59 0x27F07
+0x4C5A 0x2805A
+0x4C5B 0x2805B
+0x4C5C 0x2824E
+0x4C5D 0x2824F
+0x4C5E 0x28250
+0x4C5F 0x28319
+0x4C60 0x2831A
+0x4C61 0x2831B
+0x4C63 0x2831C
+0x4C65 0x28419
+0x4C66 0x2841A
+0x4C68 0x2898A
+0x4C69 0x2856E
+0x4C6A 0x2856F
+0x4C6C 0x28570
+0x4C6D 0x28571
+0x4C6E 0x28572
+0x4C6F 0x28573
+0x4C70 0x28574
+0x4C71 0x28575
+0x4C72 0x28576
+0x4C73 0x2883A
+0x4C74 0x2883B
+0x4C75 0x2883C
+0x4C76 0x2885A
+0x4C77 0x2883D
+0x4C78 0x28842
+0x4C79 0x2898B
+0x4C7A 0x289A0
+0x4C7B 0x2898C
+0x4C7C 0x2898D
+0x4C7D 0x2898E
+0x4C7E 0x289AB
+0x4D21 0x2898F
+0x4D23 0x28990
+0x4D24 0x28991
+0x4D25 0x28992
+0x4D26 0x289AA
+0x4D28 0x28993
+0x4D29 0x28994
+0x4D2A 0x2899E
+0x4D2B 0x289A8
+0x4D2E 0x28F00
+0x4D2F 0x28F01
+0x4D30 0x28F02
+0x4D31 0x28F03
+0x4D32 0x28F04
+0x4D33 0x28F05
+0x4D34 0x28FC4
+0x4D35 0x28FC5
+0x4D37 0x290AE
+0x4D38 0x290B2
+0x4D3B 0x291F7
+0x4D3C 0x29213
+0x4D3D 0x2939E
+0x4D3E 0x29485
+0x4D3F 0x25380
+0x4D40 0x294C8
+0x4D41 0x29841
+0x4D42 0x29881
+0x4D43 0x29882
+0x4D44 0x29883
+0x4D45 0x29884
+0x4D46 0x29AC4
+0x4D47 0x29AC5
+0x4D48 0x29AC6
+0x4D49 0x29C95
+0x4D4A 0x29C96
+0x4D4B 0x29C97
+0x4D4C 0x29D58
+0x4D4D 0x29D59
+0x4D4F 0x29FA9
+0x4D50 0x29FAA
+0x4D51 0x29FAB
+0x4D52 0x2A28E
+0x4D53 0x2A303
+0x4D54 0x2A3B3
+0x4D55 0x20B82
+0x4D56 0x20053
+0x4D57 0x20183
+0x4D58 0x20184
+0x4D59 0x20185
+0x4D5A 0x203CC
+0x4D5B 0x203CD
+0x4D5C 0x203CE
+0x4D5D 0x203CF
+0x4D5E 0x203D0
+0x4D60 0x203D1
+0x4D61 0x203D2
+0x4D62 0x203DA
+0x4D63 0x204B3
+0x4D64 0x204B4
+0x4D66 0x20613
+0x4D67 0x2060E
+0x4D68 0x2066B
+0x4D69 0x20903
+0x4D6A 0x20961
+0x4D6B 0x209C1
+0x4D6C 0x209C2
+0x4D6D 0x20AB5
+0x4D6E 0x20140
+0x4D6F 0x20F98
+0x4D70 0x20F99
+0x4D71 0x20F9A
+0x4D72 0x20F9B
+0x4D73 0x20F9C
+0x4D74 0x20F9D
+0x4D75 0x20F9E
+0x4D76 0x20F9F
+0x4D77 0x20FEE
+0x4D78 0x20FA0
+0x4D79 0x20FA1
+0x4D7A 0x20F86
+0x4D7B 0x21225
+0x4D7C 0x21434
+0x4D7D 0x21435
+0x4D7E 0x21451
+0x4E21 0x2142D
+0x4E22 0x24362
+0x4E23 0x21454
+0x4E24 0x21452
+0x4E26 0x21436
+0x4E27 0x21437
+0x4E28 0x21438
+0x4E29 0x21439
+0x4E2A 0x2143A
+0x4E2B 0x2143B
+0x4E2C 0x21468
+0x4E2D 0x2143C
+0x4E2F 0x21577
+0x4E30 0x23296
+0x4E31 0x2167E
+0x4E32 0x2167F
+0x4E33 0x21869
+0x4E34 0x2186A
+0x4E35 0x2186B
+0x4E36 0x2186C
+0x4E37 0x2186D
+0x4E38 0x2186E
+0x4E39 0x2186F
+0x4E3A 0x2185D
+0x4E3B 0x21870
+0x4E3C 0x21885
+0x4E3D 0x21871
+0x4E3E 0x21872
+0x4E3F 0x21873
+0x4E40 0x21874
+0x4E41 0x21875
+0x4E42 0x21876
+0x4E43 0x21884
+0x4E44 0x21877
+0x4E45 0x21883
+0x4E46 0x2199A
+0x4E47 0x21AA7
+0x4E48 0x21AA8
+0x4E49 0x21AA9
+0x4E4A 0x21AAA
+0x4E4B 0x21AAB
+0x4E4C 0x21AAC
+0x4E4D 0x21AB7
+0x4E4E 0x21AAD
+0x4E4F 0x21AAE
+0x4E51 0x21B45
+0x4E52 0x21CD3
+0x4E53 0x21CD4
+0x4E54 0x21CD5
+0x4E55 0x21CD6
+0x4E56 0x21CD7
+0x4E57 0x21F26
+0x4E58 0x21F27
+0x4E59 0x21F28
+0x4E5B 0x21F29
+0x4E5C 0x21F2A
+0x4E5D 0x22005
+0x4E5F 0x221D0
+0x4E60 0x222B7
+0x4E62 0x222B8
+0x4E63 0x222B9
+0x4E64 0x22422
+0x4E65 0x22423
+0x4E66 0x22573
+0x4E67 0x22574
+0x4E68 0x2288F
+0x4E69 0x22812
+0x4E6A 0x22813
+0x4E6B 0x22814
+0x4E6C 0x22815
+0x4E6D 0x22816
+0x4E6E 0x22817
+0x4E6F 0x22818
+0x4E70 0x22861
+0x4E71 0x22866
+0x4E72 0x22867
+0x4E73 0x22819
+0x4E74 0x22868
+0x4E75 0x2281A
+0x4E76 0x22869
+0x4E77 0x22A04
+0x4E78 0x22A05
+0x4E7A 0x22A06
+0x4E7B 0x229FD
+0x4E7C 0x22D50
+0x4E7D 0x22D51
+0x4E7E 0x22D52
+0x4F21 0x22D53
+0x4F22 0x22D54
+0x4F23 0x22D55
+0x4F24 0x22D63
+0x4F25 0x2F8C4
+0x4F26 0x22D56
+0x4F27 0x22D57
+0x4F28 0x22D58
+0x4F29 0x22D59
+0x4F2A 0x22D5A
+0x4F2B 0x22D5B
+0x4F2D 0x22D5C
+0x4F2E 0x22D5D
+0x4F2F 0x22D5E
+0x4F30 0x22D5F
+0x4F31 0x22FD7
+0x4F33 0x23060
+0x4F34 0x23061
+0x4F35 0x23117
+0x4F36 0x23139
+0x4F37 0x2328F
+0x4F38 0x232C8
+0x4F39 0x23290
+0x4F3A 0x23291
+0x4F3B 0x23398
+0x4F3C 0x23399
+0x4F3D 0x23644
+0x4F3E 0x23645
+0x4F3F 0x23646
+0x4F40 0x23659
+0x4F41 0x236EE
+0x4F43 0x23647
+0x4F44 0x23648
+0x4F46 0x23649
+0x4F47 0x2364A
+0x4F48 0x2364B
+0x4F49 0x2364C
+0x4F4A 0x2364D
+0x4F4B 0x2364E
+0x4F4C 0x2364F
+0x4F4D 0x23650
+0x4F4E 0x23651
+0x4F4F 0x23652
+0x4F50 0x23653
+0x4F51 0x23654
+0x4F52 0x23655
+0x4F53 0x23656
+0x4F54 0x23915
+0x4F55 0x2399A
+0x4F56 0x23A58
+0x4F57 0x23AFC
+0x4F58 0x23AFD
+0x4F59 0x23F86
+0x4F5A 0x23F87
+0x4F5B 0x23F88
+0x4F5C 0x23F89
+0x4F5D 0x23F8A
+0x4F5E 0x23F8B
+0x4F5F 0x23F8C
+0x4F61 0x2401F
+0x4F62 0x23F8D
+0x4F63 0x23F8E
+0x4F64 0x23F8F
+0x4F65 0x23F90
+0x4F66 0x23F91
+0x4F67 0x23F92
+0x4F68 0x23F93
+0x4F69 0x2F911
+0x4F6A 0x23F94
+0x4F6B 0x23F95
+0x4F6C 0x23ECA
+0x4F6D 0x23F18
+0x4F6F 0x23F96
+0x4F70 0x23F97
+0x4F71 0x23F98
+0x4F72 0x23F99
+0x4F73 0x23F9A
+0x4F74 0x23F9B
+0x4F75 0x23F9C
+0x4F76 0x23F9D
+0x4F77 0x23F9E
+0x4F78 0x23F9F
+0x4F7B 0x23FA0
+0x4F7C 0x23FA1
+0x4F7E 0x23FB7
+0x5022 0x24396
+0x5023 0x24368
+0x5024 0x24369
+0x5025 0x2438C
+0x5026 0x2436A
+0x5027 0x2436B
+0x5028 0x2436C
+0x5029 0x2436D
+0x502A 0x2436E
+0x502B 0x2436F
+0x502C 0x2437F
+0x502D 0x24384
+0x502E 0x24370
+0x502F 0x24371
+0x5030 0x24385
+0x5031 0x24372
+0x5032 0x24373
+0x5033 0x24374
+0x5034 0x24375
+0x5035 0x24376
+0x5037 0x24377
+0x5038 0x24378
+0x5039 0x24379
+0x503A 0x2437A
+0x503B 0x2437B
+0x503C 0x2437C
+0x503D 0x2F91E
+0x503E 0x24594
+0x503F 0x246D5
+0x5040 0x24829
+0x5041 0x24A2B
+0x5042 0x24A2C
+0x5043 0x24A2D
+0x5044 0x24A2E
+0x5045 0x24A2F
+0x5046 0x24A30
+0x5047 0x24A3E
+0x5048 0x24A31
+0x5049 0x24A32
+0x504A 0x24A33
+0x504B 0x24A34
+0x504C 0x24A35
+0x504D 0x24B11
+0x504F 0x24CC0
+0x5050 0x24E42
+0x5051 0x24E43
+0x5052 0x24E44
+0x5053 0x24E45
+0x5054 0x24E46
+0x5055 0x2508C
+0x5056 0x2508D
+0x5057 0x2508E
+0x5058 0x2508F
+0x5059 0x25090
+0x505A 0x25091
+0x505B 0x25263
+0x505C 0x25264
+0x505D 0x25265
+0x505F 0x2F94A
+0x5061 0x253F6
+0x5062 0x25536
+0x5063 0x25537
+0x5064 0x2552C
+0x5065 0x25538
+0x5066 0x25539
+0x5068 0x2553A
+0x5069 0x256E3
+0x506A 0x256E2
+0x506B 0x256F5
+0x506C 0x25847
+0x506E 0x25848
+0x506F 0x25849
+0x5070 0x2584A
+0x5071 0x2584B
+0x5072 0x2584C
+0x5073 0x25AA8
+0x5074 0x25AA9
+0x5075 0x25AAA
+0x5077 0x25C0B
+0x5078 0x25C06
+0x5079 0x25C73
+0x507A 0x25C0C
+0x507B 0x25C0D
+0x507C 0x25C0E
+0x507D 0x25C0F
+0x507E 0x25C10
+0x5122 0x25C11
+0x5123 0x2F962
+0x5124 0x25C12
+0x5125 0x25C14
+0x5126 0x25C15
+0x5127 0x25C16
+0x5129 0x25C13
+0x512A 0x25C17
+0x512B 0x25ED9
+0x512C 0x25EDA
+0x512D 0x25EDB
+0x512F 0x25EDC
+0x5130 0x260A6
+0x5131 0x260A7
+0x5132 0x260A8
+0x5133 0x260A9
+0x5134 0x260AA
+0x5135 0x260AB
+0x5137 0x2F96D
+0x5138 0x260AC
+0x5139 0x260AD
+0x513A 0x260AE
+0x513D 0x260AF
+0x513E 0x260B0
+0x513F 0x260B1
+0x5140 0x26244
+0x5141 0x26245
+0x5142 0x262F7
+0x5143 0x262F8
+0x5144 0x2646B
+0x5145 0x2646C
+0x5146 0x26461
+0x5147 0x26512
+0x5148 0x265AF
+0x5149 0x265B0
+0x514A 0x265B1
+0x514B 0x265B2
+0x514C 0x265B3
+0x514D 0x265B4
+0x514E 0x265B5
+0x514F 0x265B6
+0x5150 0x26622
+0x5151 0x267EA
+0x5152 0x267EB
+0x5153 0x267EC
+0x5154 0x267ED
+0x5156 0x268ED
+0x5157 0x2691B
+0x5158 0x26947
+0x5159 0x269E8
+0x515A 0x26AD0
+0x515B 0x26AE7
+0x515C 0x26AE8
+0x515D 0x26AE9
+0x515E 0x26E4E
+0x515F 0x26E4F
+0x5160 0x26E50
+0x5161 0x26E72
+0x5162 0x26E51
+0x5163 0x26E52
+0x5164 0x2F9A7
+0x5166 0x26E53
+0x5167 0x26E54
+0x5168 0x26E55
+0x5169 0x26E56
+0x516A 0x26E57
+0x516B 0x26E77
+0x516C 0x26E58
+0x516D 0x26E59
+0x516E 0x26E5A
+0x516F 0x26E5B
+0x5170 0x26E5C
+0x5171 0x26E6E
+0x5172 0x26E5D
+0x5175 0x26E5E
+0x5177 0x26E5F
+0x5179 0x271D7
+0x517A 0x27389
+0x517B 0x2738A
+0x517D 0x2F9BE
+0x517E 0x2738B
+0x5221 0x2738C
+0x5222 0x2738D
+0x5223 0x2738E
+0x5224 0x2F9BC
+0x5225 0x2738F
+0x5227 0x2739A
+0x5228 0x27390
+0x5229 0x27391
+0x522A 0x27392
+0x522B 0x27393
+0x522C 0x27712
+0x522D 0x276F1
+0x522F 0x277FE
+0x5230 0x277FB
+0x5231 0x27857
+0x5232 0x27A49
+0x5233 0x27A4A
+0x5234 0x27A4B
+0x5235 0x27A4C
+0x5237 0x27A4D
+0x5238 0x27A59
+0x5239 0x27A4E
+0x523A 0x27A4F
+0x523B 0x27BF4
+0x523C 0x27C65
+0x523D 0x27DA6
+0x523E 0x27DA7
+0x523F 0x27DA8
+0x5240 0x27F22
+0x5241 0x27F23
+0x5242 0x2808B
+0x5243 0x2808C
+0x5244 0x2808D
+0x5245 0x2808E
+0x5246 0x28258
+0x5248 0x28259
+0x5249 0x2833B
+0x524A 0x2833C
+0x524B 0x2833D
+0x524C 0x2833E
+0x524D 0x28448
+0x524E 0x28594
+0x524F 0x28595
+0x5250 0x28596
+0x5251 0x28597
+0x5252 0x28598
+0x5253 0x2877D
+0x5254 0x286FE
+0x5255 0x2877E
+0x5256 0x2877F
+0x5258 0x2885B
+0x5259 0x2885C
+0x525A 0x289E4
+0x525B 0x289C1
+0x525C 0x289FD
+0x525D 0x289C2
+0x525E 0x289D6
+0x525F 0x289C3
+0x5260 0x289C4
+0x5262 0x289DC
+0x5263 0x289C5
+0x5264 0x289C6
+0x5265 0x289C7
+0x5266 0x289E1
+0x5267 0x289C8
+0x5268 0x289C9
+0x5269 0x289CA
+0x526A 0x289CB
+0x526C 0x289CC
+0x526D 0x289CD
+0x526E 0x28D35
+0x526F 0x28D36
+0x5270 0x28D47
+0x5271 0x28D37
+0x5272 0x28F1B
+0x5273 0x28F1C
+0x5274 0x28F1D
+0x5275 0x28F1E
+0x5276 0x28F1F
+0x5277 0x28F20
+0x5278 0x28F7B
+0x5279 0x28F7A
+0x527A 0x28FFE
+0x527B 0x290C6
+0x527C 0x290C7
+0x527D 0x290C8
+0x527E 0x290C9
+0x5321 0x290CA
+0x5323 0x294A0
+0x5324 0x294A1
+0x5325 0x295CC
+0x5326 0x295CD
+0x5327 0x296F1
+0x5328 0x296D7
+0x5329 0x29842
+0x532A 0x29846
+0x532B 0x298A3
+0x532C 0x298A5
+0x532D 0x298A6
+0x532E 0x29ACB
+0x532F 0x29ACC
+0x5330 0x29B26
+0x5331 0x29B27
+0x5332 0x29B28
+0x5333 0x29B29
+0x5334 0x29CAE
+0x5335 0x29CAF
+0x5336 0x29CB0
+0x5337 0x29D73
+0x5339 0x29D7C
+0x533A 0x29D74
+0x533C 0x29F80
+0x533D 0x29D75
+0x5340 0x29FCF
+0x5342 0x2A38F
+0x5343 0x20670
+0x5344 0x20085
+0x5345 0x20397
+0x5346 0x203F6
+0x5347 0x203F7
+0x5348 0x203F8
+0x5349 0x203FA
+0x534A 0x203FB
+0x534B 0x204BA
+0x534C 0x204BB
+0x534D 0x204BC
+0x534E 0x204BD
+0x534F 0x20534
+0x5350 0x20535
+0x5351 0x205A2
+0x5352 0x20614
+0x5353 0x20611
+0x5354 0x2066E
+0x5355 0x2066F
+0x5356 0x20808
+0x5357 0x208B8
+0x5358 0x20A09
+0x5359 0x20ABD
+0x535A 0x20ABE
+0x535B 0x20B88
+0x535C 0x20FFE
+0x535E 0x20FFF
+0x535F 0x21000
+0x5360 0x21001
+0x5361 0x21002
+0x5362 0x21003
+0x5363 0x21004
+0x5364 0x21005
+0x5365 0x21006
+0x5367 0x21007
+0x5368 0x21008
+0x5369 0x21009
+0x536A 0x2100A
+0x536B 0x2100B
+0x536C 0x2100C
+0x536D 0x2100D
+0x536E 0x2100E
+0x536F 0x2100F
+0x5373 0x2122C
+0x5374 0x2146B
+0x5376 0x2146C
+0x5377 0x21487
+0x5378 0x2146D
+0x5379 0x21578
+0x537A 0x2168B
+0x537B 0x218A4
+0x537C 0x218A5
+0x537D 0x218A6
+0x537E 0x218A7
+0x5421 0x218BE
+0x5422 0x218A8
+0x5423 0x218A9
+0x5424 0x218AA
+0x5425 0x2188D
+0x5426 0x218AB
+0x5427 0x218AC
+0x5428 0x218BF
+0x542B 0x218AD
+0x542C 0x218AE
+0x542D 0x219A4
+0x542E 0x219A5
+0x542F 0x21AC7
+0x5430 0x21AC8
+0x5431 0x21AC9
+0x5432 0x27DBC
+0x5433 0x21ACA
+0x5434 0x21ACB
+0x5435 0x21ACC
+0x5436 0x21ACD
+0x5437 0x21ACE
+0x5438 0x21C19
+0x5439 0x21CE6
+0x543A 0x21F4C
+0x543B 0x21F4D
+0x543C 0x21F4E
+0x543D 0x22006
+0x543F 0x222CD
+0x5440 0x222CE
+0x5441 0x222CF
+0x5442 0x222D0
+0x5444 0x22581
+0x5445 0x22582
+0x5446 0x20533
+0x5447 0x2286A
+0x5448 0x2286B
+0x5449 0x228B2
+0x544A 0x2286C
+0x544B 0x2286D
+0x544C 0x228CC
+0x544D 0x228AE
+0x544E 0x228B3
+0x544F 0x22891
+0x5451 0x2286E
+0x5452 0x228B4
+0x5453 0x2286F
+0x5454 0x22DC9
+0x5455 0x22DA7
+0x5456 0x22DA8
+0x5457 0x22DA9
+0x5458 0x22DAA
+0x5459 0x22DAB
+0x545A 0x22DAC
+0x545B 0x22DAD
+0x545C 0x22DAE
+0x545D 0x22DAF
+0x545E 0x22DB0
+0x545F 0x22D60
+0x5460 0x22DB1
+0x5461 0x22EE1
+0x5462 0x22FE3
+0x5463 0x22FF6
+0x5465 0x232AF
+0x5466 0x232B0
+0x5467 0x232B1
+0x5468 0x232BA
+0x5469 0x232B2
+0x546A 0x232B3
+0x546B 0x2334C
+0x546D 0x233A0
+0x546E 0x233A1
+0x546F 0x236B0
+0x5470 0x236B1
+0x5471 0x236B2
+0x5472 0x236B3
+0x5473 0x236B4
+0x5474 0x2F8EB
+0x5475 0x236B5
+0x5476 0x236B6
+0x5477 0x236B7
+0x5478 0x236B8
+0x5479 0x236B9
+0x547A 0x236BA
+0x547C 0x236BB
+0x547D 0x236BC
+0x547E 0x236BD
+0x5521 0x236BE
+0x5522 0x236BF
+0x5523 0x236DF
+0x5524 0x236C0
+0x5525 0x236C1
+0x5526 0x236C2
+0x5527 0x236C3
+0x5528 0x236C4
+0x552B 0x236C5
+0x552C 0x236C6
+0x552D 0x236C7
+0x552E 0x236C8
+0x552F 0x236C9
+0x5530 0x236CA
+0x5531 0x2373C
+0x5532 0x236CB
+0x5533 0x236CC
+0x5534 0x236CD
+0x5535 0x236CE
+0x5536 0x236CF
+0x5537 0x236D0
+0x5538 0x236D1
+0x553A 0x2391D
+0x553B 0x2391E
+0x553C 0x23A64
+0x553D 0x23A65
+0x553E 0x23AC5
+0x553F 0x23AC6
+0x5540 0x23AC7
+0x5541 0x23AFF
+0x5542 0x23BFF
+0x5543 0x23C00
+0x5544 0x23C01
+0x5545 0x23C02
+0x5546 0x23FF5
+0x5547 0x2405C
+0x5548 0x23FF6
+0x5549 0x23FF7
+0x554A 0x23FB0
+0x554B 0x23FF8
+0x554C 0x23FF9
+0x554D 0x2405D
+0x554E 0x24050
+0x554F 0x23FFA
+0x5550 0x23FFB
+0x5551 0x23FA2
+0x5552 0x23FFC
+0x5553 0x23FFD
+0x5554 0x23FFE
+0x5555 0x23FFF
+0x5556 0x2F913
+0x5557 0x24000
+0x5558 0x2F91F
+0x5559 0x243C1
+0x555A 0x243C2
+0x555B 0x243C3
+0x555C 0x243C4
+0x555D 0x243C5
+0x555E 0x243C6
+0x555F 0x243C7
+0x5560 0x243C8
+0x5561 0x243C9
+0x5562 0x243CA
+0x5563 0x243CB
+0x5564 0x290EF
+0x5565 0x243D7
+0x5566 0x243CC
+0x5567 0x243CD
+0x5568 0x243CE
+0x5569 0x24422
+0x556A 0x243CF
+0x556B 0x243D0
+0x556D 0x243D1
+0x556E 0x243D2
+0x556F 0x243E9
+0x5570 0x243D3
+0x5571 0x243D4
+0x5572 0x243D5
+0x5573 0x24538
+0x5574 0x2103B
+0x5575 0x2487D
+0x5576 0x2056F
+0x5577 0x248A1
+0x5578 0x24A53
+0x5579 0x24A54
+0x557B 0x24A55
+0x557C 0x24A3C
+0x557D 0x24A56
+0x5621 0x24A66
+0x5623 0x24A57
+0x5624 0x24A58
+0x5625 0x24A59
+0x5626 0x24A5A
+0x5627 0x24A5B
+0x5628 0x24A67
+0x5629 0x24A5C
+0x562C 0x24A6A
+0x562D 0x24A5D
+0x562E 0x24A3D
+0x562F 0x24A5E
+0x5630 0x24A65
+0x5631 0x24CE1
+0x5632 0x24CCD
+0x5633 0x2A011
+0x5634 0x24E6F
+0x5635 0x24E70
+0x5636 0x2501A
+0x5637 0x2509A
+0x5638 0x2509B
+0x5639 0x2509C
+0x563A 0x2509E
+0x563B 0x2509F
+0x563C 0x2F93F
+0x563D 0x2528E
+0x563F 0x253FD
+0x5641 0x2555E
+0x5642 0x2555F
+0x5643 0x25560
+0x5644 0x25565
+0x5645 0x25567
+0x5646 0x25568
+0x5647 0x25569
+0x5649 0x2556A
+0x564A 0x2558F
+0x564B 0x2556B
+0x564C 0x2556C
+0x564D 0x2556D
+0x564E 0x256F7
+0x564F 0x256F8
+0x5650 0x256F9
+0x5651 0x256E4
+0x5652 0x256FA
+0x5653 0x258B1
+0x5654 0x25875
+0x5655 0x25876
+0x5656 0x259FF
+0x5657 0x25A00
+0x5658 0x25A01
+0x5659 0x25A02
+0x565A 0x25A03
+0x565B 0x25AAE
+0x565C 0x25AAD
+0x565D 0x25C51
+0x565E 0x25C52
+0x5660 0x25C53
+0x5661 0x25C54
+0x5662 0x25C55
+0x5663 0x25C56
+0x5664 0x25C57
+0x5665 0x25C58
+0x5666 0x25C59
+0x5667 0x25C5A
+0x5668 0x25C5B
+0x5669 0x25C5C
+0x566A 0x25C5D
+0x566B 0x25C5E
+0x566C 0x25C5F
+0x566D 0x25C60
+0x566E 0x25C61
+0x566F 0x25C62
+0x5670 0x25C63
+0x5671 0x25C64
+0x5672 0x25C4C
+0x5673 0x25C66
+0x5674 0x25EF1
+0x5675 0x25EF2
+0x5676 0x260F2
+0x5677 0x260F3
+0x5678 0x260F4
+0x5679 0x260F5
+0x567A 0x260F6
+0x567B 0x260F7
+0x567C 0x260F8
+0x567D 0x260F9
+0x567E 0x260FA
+0x5721 0x2624C
+0x5722 0x2624B
+0x5723 0x2631B
+0x5724 0x263CE
+0x5725 0x263B3
+0x5726 0x2647F
+0x5727 0x2F979
+0x5728 0x2F97C
+0x5729 0x2651A
+0x572A 0x265C4
+0x572B 0x265C5
+0x572C 0x265C6
+0x572D 0x265C7
+0x572E 0x265C8
+0x572F 0x265C9
+0x5731 0x26819
+0x5732 0x2681C
+0x5733 0x2681A
+0x5734 0x2694C
+0x5735 0x2698E
+0x5736 0x26A7E
+0x5737 0x26EEB
+0x5738 0x26EEC
+0x5739 0x26EED
+0x573A 0x26EEE
+0x573B 0x26EEF
+0x573C 0x26EF0
+0x573D 0x26EF1
+0x573E 0x26ED8
+0x573F 0x26ED9
+0x5740 0x26EDA
+0x5741 0x26EDB
+0x5742 0x26EF2
+0x5743 0x26EF3
+0x5744 0x26EF4
+0x5745 0x26F07
+0x5747 0x2F9AC
+0x5749 0x26EF5
+0x574A 0x26F15
+0x574C 0x26EF6
+0x574D 0x26EF7
+0x574E 0x26EF8
+0x574F 0x26EF9
+0x5750 0x26EFA
+0x5751 0x26EFB
+0x5752 0x26EFC
+0x5753 0x26EFD
+0x5754 0x26EFE
+0x5755 0x26FA7
+0x5756 0x26EFF
+0x5757 0x26F00
+0x5758 0x26F01
+0x5759 0x26F02
+0x575A 0x26F03
+0x575B 0x26F04
+0x575C 0x26F05
+0x575D 0x271E9
+0x575E 0x271EA
+0x575F 0x271EB
+0x5760 0x273DE
+0x5761 0x273DF
+0x5763 0x273E0
+0x5764 0x273E1
+0x5765 0x273E2
+0x5766 0x273E3
+0x5767 0x2773E
+0x5768 0x2773F
+0x5769 0x27740
+0x576A 0x27741
+0x576B 0x27871
+0x576C 0x27872
+0x576D 0x27873
+0x576E 0x27A88
+0x576F 0x27A89
+0x5770 0x27A8A
+0x5771 0x27A8B
+0x5772 0x27A8C
+0x5773 0x27A8D
+0x5774 0x27A8E
+0x5775 0x27A8F
+0x5776 0x27A90
+0x5777 0x27A91
+0x5778 0x27A92
+0x577A 0x27CF1
+0x577B 0x27DBE
+0x577C 0x27DBF
+0x577D 0x27DC0
+0x577E 0x27DC1
+0x5821 0x27DC2
+0x5822 0x27DC3
+0x5823 0x27E6E
+0x5824 0x27F37
+0x5825 0x27F57
+0x5826 0x27F38
+0x5827 0x27F39
+0x5828 0x27F3A
+0x5829 0x27F3B
+0x582A 0x27F3C
+0x582B 0x27F3D
+0x582C 0x27F3E
+0x582D 0x27F27
+0x582E 0x27F3F
+0x5831 0x280C0
+0x5832 0x280C1
+0x5834 0x28267
+0x5836 0x28268
+0x5837 0x28358
+0x5838 0x28365
+0x5839 0x28359
+0x583A 0x2835A
+0x583B 0x28424
+0x583C 0x285CD
+0x583D 0x285CE
+0x583E 0x285CF
+0x583F 0x285D2
+0x5840 0x2879F
+0x5841 0x28722
+0x5842 0x2887D
+0x5843 0x2887E
+0x5844 0x289FF
+0x5845 0x28A25
+0x5846 0x28A00
+0x5847 0x28A01
+0x5849 0x28A02
+0x584A 0x28A03
+0x584B 0x28A04
+0x584D 0x28A05
+0x584E 0x28A06
+0x584F 0x28A07
+0x5850 0x28A16
+0x5851 0x28A08
+0x5852 0x28A17
+0x5853 0x28A09
+0x5854 0x28A0A
+0x5856 0x28A0B
+0x5857 0x28A0C
+0x5858 0x28A29
+0x585A 0x28A0D
+0x585C 0x28A0E
+0x585D 0x28A10
+0x585E 0x28A11
+0x585F 0x28A1D
+0x5860 0x28A12
+0x5861 0x28A13
+0x5863 0x28A14
+0x5864 0x28A15
+0x5865 0x28C8D
+0x5866 0x28D54
+0x5867 0x28D55
+0x5868 0x28D56
+0x5869 0x28F33
+0x586A 0x28F34
+0x586B 0x28F35
+0x586C 0x28F36
+0x586D 0x28FFA
+0x586E 0x290E3
+0x586F 0x290E6
+0x5870 0x290ED
+0x5871 0x290E7
+0x5872 0x290E8
+0x5873 0x290E9
+0x5874 0x290EA
+0x5875 0x290EB
+0x5876 0x29227
+0x5877 0x29220
+0x5878 0x2F9F8
+0x5879 0x2942A
+0x587A 0x294C9
+0x587C 0x294CA
+0x587D 0x294CB
+0x587E 0x294D9
+0x5921 0x294CC
+0x5922 0x294CD
+0x5923 0x294CE
+0x5925 0x295E1
+0x5926 0x2971B
+0x5927 0x2971C
+0x5928 0x2971D
+0x5929 0x2971E
+0x592A 0x29847
+0x592B 0x298D1
+0x592C 0x298C9
+0x592D 0x29AD0
+0x592E 0x29AD1
+0x592F 0x29B3F
+0x5930 0x29B40
+0x5931 0x29B41
+0x5932 0x2FA09
+0x5933 0x29B42
+0x5934 0x29CC4
+0x5935 0x29D9B
+0x5936 0x29D92
+0x5937 0x29D93
+0x5939 0x29D94
+0x593A 0x29D95
+0x593D 0x29FF3
+0x593E 0x29FF4
+0x593F 0x29FF5
+0x5940 0x29FF6
+0x5941 0x2A260
+0x5942 0x2A29E
+0x5943 0x2A2A0
+0x5944 0x2A2A1
+0x5945 0x2A31C
+0x5946 0x2A39F
+0x5947 0x20056
+0x5948 0x20412
+0x5949 0x2041F
+0x594A 0x20415
+0x594B 0x20416
+0x594C 0x20417
+0x594D 0x2F80C
+0x594E 0x20418
+0x594F 0x204C2
+0x5950 0x204C3
+0x5951 0x204C4
+0x5952 0x205A1
+0x5953 0x2061B
+0x5954 0x2061C
+0x5955 0x20671
+0x5956 0x20813
+0x5957 0x20B17
+0x5958 0x20B8F
+0x5959 0x2105F
+0x595A 0x21060
+0x595B 0x210AC
+0x595E 0x21061
+0x595F 0x21062
+0x5960 0x21063
+0x5961 0x21064
+0x5962 0x21065
+0x5964 0x21499
+0x5965 0x2149A
+0x5966 0x2149B
+0x5967 0x2149C
+0x5968 0x2149D
+0x5969 0x2149E
+0x596A 0x2149F
+0x596B 0x214A0
+0x596C 0x218DA
+0x596D 0x218DB
+0x596E 0x218DC
+0x596F 0x218DD
+0x5970 0x218DE
+0x5971 0x218DF
+0x5972 0x21AD5
+0x5973 0x21AD6
+0x5974 0x21AD7
+0x5975 0x21AD8
+0x5976 0x21AE0
+0x5977 0x21BB4
+0x5979 0x21F6E
+0x597A 0x21F6F
+0x597B 0x21F70
+0x597C 0x22163
+0x597E 0x222D5
+0x5A21 0x222D6
+0x5A22 0x222D7
+0x5A23 0x222D8
+0x5A24 0x22430
+0x5A25 0x228B5
+0x5A26 0x228B6
+0x5A27 0x228C1
+0x5A28 0x228F7
+0x5A2A 0x228CB
+0x5A2B 0x228E8
+0x5A2D 0x228E9
+0x5A2E 0x228B7
+0x5A2F 0x22A15
+0x5A30 0x22DE6
+0x5A31 0x22DE7
+0x5A32 0x22DE8
+0x5A33 0x22DE9
+0x5A34 0x22DEA
+0x5A35 0x22DEB
+0x5A36 0x2F8CA
+0x5A37 0x2300B
+0x5A38 0x2300C
+0x5A39 0x23064
+0x5A3A 0x232D4
+0x5A3B 0x232D5
+0x5A3C 0x232D6
+0x5A3D 0x232D8
+0x5A3E 0x233A5
+0x5A3F 0x2005B
+0x5A40 0x2370F
+0x5A41 0x23710
+0x5A43 0x23711
+0x5A44 0x23712
+0x5A45 0x23713
+0x5A46 0x23714
+0x5A47 0x23715
+0x5A48 0x23716
+0x5A49 0x23717
+0x5A4A 0x23718
+0x5A4B 0x23719
+0x5A4C 0x2371A
+0x5A4D 0x2372F
+0x5A4E 0x2371B
+0x5A4F 0x2371C
+0x5A50 0x2373F
+0x5A51 0x2371D
+0x5A52 0x2371E
+0x5A53 0x2372C
+0x5A54 0x2371F
+0x5A55 0x23924
+0x5A56 0x239A4
+0x5A57 0x239A5
+0x5A58 0x26251
+0x5A59 0x23AFE
+0x5A5A 0x23C11
+0x5A5B 0x23C12
+0x5A5C 0x23C13
+0x5A5D 0x23C54
+0x5A5E 0x2405E
+0x5A5F 0x24021
+0x5A60 0x2403F
+0x5A61 0x24040
+0x5A62 0x24041
+0x5A63 0x24042
+0x5A64 0x24043
+0x5A65 0x24044
+0x5A66 0x24020
+0x5A67 0x24045
+0x5A69 0x24046
+0x5A6A 0x240B0
+0x5A6B 0x24047
+0x5A6C 0x24057
+0x5A6D 0x24001
+0x5A6E 0x240B1
+0x5A6F 0x2405A
+0x5A70 0x24048
+0x5A71 0x24404
+0x5A72 0x24405
+0x5A74 0x2444F
+0x5A75 0x24450
+0x5A76 0x24406
+0x5A77 0x24407
+0x5A78 0x24408
+0x5A79 0x24409
+0x5A7A 0x2440A
+0x5A7B 0x2440B
+0x5A7C 0x2440C
+0x5A7D 0x2440D
+0x5A7E 0x2440E
+0x5B21 0x2440F
+0x5B22 0x24410
+0x5B23 0x24411
+0x5B24 0x24533
+0x5B25 0x24534
+0x5B26 0x24535
+0x5B27 0x245FC
+0x5B28 0x245FD
+0x5B29 0x248B0
+0x5B2A 0x248B1
+0x5B2B 0x248B2
+0x5B2C 0x248B3
+0x5B2E 0x24A7B
+0x5B2F 0x24A7C
+0x5B30 0x24A7D
+0x5B31 0x24A7E
+0x5B32 0x24A7F
+0x5B33 0x24A80
+0x5B34 0x24A81
+0x5B35 0x24A82
+0x5B36 0x24BF9
+0x5B37 0x24CDA
+0x5B38 0x24EA1
+0x5B3B 0x250AD
+0x5B3C 0x250AE
+0x5B3E 0x252C8
+0x5B3F 0x252C9
+0x5B40 0x252CA
+0x5B41 0x25582
+0x5B42 0x25583
+0x5B43 0x25584
+0x5B44 0x25585
+0x5B45 0x25586
+0x5B46 0x25587
+0x5B47 0x25588
+0x5B48 0x25589
+0x5B49 0x2558A
+0x5B4B 0x25707
+0x5B4C 0x25708
+0x5B4D 0x25701
+0x5B4E 0x25709
+0x5B4F 0x25702
+0x5B50 0x2570A
+0x5B51 0x2570B
+0x5B52 0x2570C
+0x5B53 0x258A7
+0x5B54 0x25898
+0x5B55 0x25899
+0x5B56 0x2589A
+0x5B57 0x2589B
+0x5B58 0x2589C
+0x5B5A 0x2589D
+0x5B5B 0x25A1A
+0x5B5C 0x25AB2
+0x5B5D 0x25CB0
+0x5B5E 0x25CB1
+0x5B60 0x25CB2
+0x5B61 0x25CB3
+0x5B62 0x25CB4
+0x5B63 0x25CB5
+0x5B64 0x25CB6
+0x5B65 0x25CC0
+0x5B66 0x25CB7
+0x5B67 0x25CB8
+0x5B68 0x25CB9
+0x5B69 0x25CBA
+0x5B6A 0x25D1D
+0x5B6B 0x25F0C
+0x5B6C 0x25F0D
+0x5B6D 0x25F0E
+0x5B6E 0x25F35
+0x5B6F 0x25F0F
+0x5B70 0x25F10
+0x5B71 0x25F11
+0x5B72 0x25F12
+0x5B73 0x26122
+0x5B74 0x26123
+0x5B75 0x26124
+0x5B77 0x26125
+0x5B78 0x26126
+0x5B79 0x26127
+0x5B7A 0x26128
+0x5B7B 0x26129
+0x5B7C 0x2612A
+0x5B7D 0x2612B
+0x5B7E 0x2612C
+0x5C21 0x2612D
+0x5C22 0x2612E
+0x5C23 0x26252
+0x5C24 0x26253
+0x5C25 0x26319
+0x5C26 0x263BF
+0x5C27 0x2648B
+0x5C28 0x2648C
+0x5C29 0x26523
+0x5C2A 0x26524
+0x5C2B 0x265F1
+0x5C2C 0x265D8
+0x5C2D 0x2F97F
+0x5C2E 0x2684E
+0x5C2F 0x2684F
+0x5C30 0x26855
+0x5C31 0x26850
+0x5C32 0x26851
+0x5C33 0x26852
+0x5C34 0x26853
+0x5C35 0x26802
+0x5C36 0x26854
+0x5C37 0x268F1
+0x5C38 0x26924
+0x5C39 0x26AD1
+0x5C3A 0x26F7C
+0x5C3B 0x26F7D
+0x5C3C 0x26F7E
+0x5C3D 0x26F7F
+0x5C3E 0x26F80
+0x5C3F 0x26F9F
+0x5C40 0x26F81
+0x5C41 0x26F82
+0x5C42 0x26F83
+0x5C43 0x26F84
+0x5C44 0x26F85
+0x5C45 0x26F86
+0x5C46 0x26F87
+0x5C47 0x26F88
+0x5C48 0x26F9B
+0x5C49 0x26F89
+0x5C4A 0x26F8A
+0x5C4B 0x26F8B
+0x5C4C 0x26F8C
+0x5C4E 0x26FA1
+0x5C4F 0x26F8D
+0x5C50 0x26F8E
+0x5C51 0x271F3
+0x5C52 0x271F4
+0x5C53 0x271F5
+0x5C54 0x27424
+0x5C55 0x27425
+0x5C56 0x27426
+0x5C57 0x27427
+0x5C58 0x27428
+0x5C59 0x27429
+0x5C5A 0x2742A
+0x5C5C 0x2742B
+0x5C5D 0x275CD
+0x5C5E 0x27601
+0x5C5F 0x2258D
+0x5C60 0x27770
+0x5C61 0x27880
+0x5C62 0x27881
+0x5C63 0x27AC0
+0x5C64 0x27AC1
+0x5C65 0x27AC2
+0x5C66 0x27AC3
+0x5C67 0x27AC4
+0x5C68 0x27AC5
+0x5C69 0x27AC6
+0x5C6A 0x27AC7
+0x5C6B 0x27AC8
+0x5C6C 0x27CFE
+0x5C6E 0x27DD9
+0x5C6F 0x27DDC
+0x5C70 0x27DDA
+0x5C71 0x27E75
+0x5C72 0x27F58
+0x5C73 0x27F59
+0x5C74 0x27F5A
+0x5C75 0x27F5B
+0x5C76 0x27F5C
+0x5C77 0x280EC
+0x5C79 0x280F3
+0x5C7A 0x28272
+0x5C7B 0x28273
+0x5C7C 0x28382
+0x5C7D 0x28383
+0x5C7E 0x2842A
+0x5D21 0x2842B
+0x5D22 0x2842C
+0x5D23 0x2842D
+0x5D24 0x285F6
+0x5D25 0x28600
+0x5D26 0x285F7
+0x5D27 0x285F8
+0x5D28 0x285F9
+0x5D2A 0x28894
+0x5D2B 0x28895
+0x5D2C 0x28896
+0x5D2D 0x2891B
+0x5D2E 0x28A86
+0x5D2F 0x28A4C
+0x5D30 0x28A4D
+0x5D31 0x28A83
+0x5D33 0x28A82
+0x5D34 0x28A4E
+0x5D35 0x28A4F
+0x5D36 0x28A50
+0x5D37 0x28A51
+0x5D38 0x28A81
+0x5D3A 0x28A52
+0x5D3B 0x28A53
+0x5D3C 0x28A54
+0x5D3D 0x28A55
+0x5D3F 0x28A56
+0x5D40 0x28A57
+0x5D42 0x28A58
+0x5D43 0x28A5B
+0x5D44 0x28A5C
+0x5D45 0x28A5D
+0x5D46 0x28A5E
+0x5D47 0x28A5F
+0x5D48 0x28A60
+0x5D49 0x28A61
+0x5D4A 0x28A7C
+0x5D4B 0x28A62
+0x5D4E 0x28A63
+0x5D4F 0x28A64
+0x5D50 0x28D73
+0x5D51 0x28F45
+0x5D52 0x28F46
+0x5D53 0x28F47
+0x5D54 0x28F4C
+0x5D55 0x29012
+0x5D57 0x29013
+0x5D58 0x29139
+0x5D59 0x29103
+0x5D5A 0x2910D
+0x5D5B 0x29230
+0x5D5C 0x292D5
+0x5D5D 0x293C0
+0x5D5E 0x294F2
+0x5D5F 0x294F3
+0x5D60 0x294F4
+0x5D61 0x294F5
+0x5D62 0x294F6
+0x5D63 0x294F7
+0x5D64 0x295FA
+0x5D65 0x295FB
+0x5D66 0x29745
+0x5D67 0x29746
+0x5D68 0x29849
+0x5D69 0x298E7
+0x5D6A 0x298E8
+0x5D6B 0x29AD8
+0x5D6C 0x29AD9
+0x5D6D 0x29B55
+0x5D6E 0x29B56
+0x5D6F 0x29B57
+0x5D70 0x29CDA
+0x5D71 0x29CDB
+0x5D72 0x29CDC
+0x5D73 0x29DB8
+0x5D74 0x29DB9
+0x5D75 0x29DBA
+0x5D77 0x29DBB
+0x5D78 0x29F89
+0x5D79 0x29DBC
+0x5D7A 0x2A030
+0x5D7B 0x2A031
+0x5D7C 0x2A032
+0x5D7D 0x2A033
+0x5E21 0x2A034
+0x5E22 0x2A035
+0x5E23 0x2A036
+0x5E25 0x2A037
+0x5E26 0x2A2B2
+0x5E27 0x2A390
+0x5E28 0x2A326
+0x5E29 0x2A3A2
+0x5E2A 0x2A438
+0x5E2C 0x2042E
+0x5E2E 0x2042F
+0x5E2F 0x20430
+0x5E30 0x2042A
+0x5E31 0x2042B
+0x5E32 0x204C9
+0x5E33 0x20537
+0x5E34 0x20620
+0x5E35 0x20672
+0x5E36 0x2081F
+0x5E37 0x20965
+0x5E38 0x209CA
+0x5E39 0x20AC0
+0x5E3A 0x20AC1
+0x5E3B 0x20AC2
+0x5E3C 0x210B7
+0x5E3D 0x210B8
+0x5E3E 0x210B9
+0x5E3F 0x210BA
+0x5E40 0x210BB
+0x5E43 0x210BC
+0x5E44 0x210BD
+0x5E45 0x210BE
+0x5E46 0x210F2
+0x5E47 0x214B5
+0x5E48 0x214B7
+0x5E49 0x214B8
+0x5E4A 0x210DF
+0x5E4B 0x214B9
+0x5E4C 0x214D5
+0x5E4D 0x214BA
+0x5E4E 0x214BB
+0x5E4F 0x2154A
+0x5E50 0x218F2
+0x5E51 0x218F3
+0x5E52 0x218F4
+0x5E53 0x218FA
+0x5E54 0x218F5
+0x5E55 0x21902
+0x5E56 0x21AE2
+0x5E57 0x21AE3
+0x5E58 0x21F8E
+0x5E59 0x21F8B
+0x5E5A 0x222E4
+0x5E5B 0x222EB
+0x5E5C 0x222E5
+0x5E5D 0x22435
+0x5E5E 0x22593
+0x5E5F 0x228EA
+0x5E60 0x228EB
+0x5E62 0x228EC
+0x5E63 0x228ED
+0x5E64 0x22917
+0x5E65 0x228EE
+0x5E66 0x228EF
+0x5E67 0x228F0
+0x5E68 0x22E0E
+0x5E69 0x22E0F
+0x5E6A 0x22E10
+0x5E6B 0x22E19
+0x5E6C 0x22E18
+0x5E6D 0x22E11
+0x5E6E 0x22E12
+0x5E6F 0x22E13
+0x5E70 0x2F8C7
+0x5E71 0x22E14
+0x5E72 0x22E15
+0x5E74 0x22E16
+0x5E75 0x23065
+0x5E76 0x232EA
+0x5E77 0x232EB
+0x5E78 0x232EC
+0x5E79 0x232ED
+0x5E7B 0x232EE
+0x5E7C 0x233AC
+0x5E7D 0x237C2
+0x5E7E 0x23769
+0x5F21 0x23781
+0x5F22 0x2376A
+0x5F23 0x2376B
+0x5F24 0x2376C
+0x5F25 0x2376D
+0x5F26 0x2376E
+0x5F27 0x2376F
+0x5F28 0x23770
+0x5F2A 0x23771
+0x5F2B 0x23772
+0x5F2C 0x23773
+0x5F2D 0x2378C
+0x5F2E 0x23774
+0x5F2F 0x23775
+0x5F30 0x23776
+0x5F31 0x23C24
+0x5F32 0x23C2A
+0x5F33 0x2408E
+0x5F34 0x240AF
+0x5F35 0x2408F
+0x5F36 0x24090
+0x5F37 0x24091
+0x5F39 0x24092
+0x5F3A 0x24093
+0x5F3B 0x24094
+0x5F3C 0x24095
+0x5F3D 0x24096
+0x5F3E 0x24097
+0x5F3F 0x24098
+0x5F40 0x24099
+0x5F41 0x2409A
+0x5F42 0x2409B
+0x5F43 0x2409C
+0x5F44 0x24439
+0x5F45 0x2443B
+0x5F46 0x2443A
+0x5F47 0x2443C
+0x5F48 0x2443D
+0x5F49 0x2443E
+0x5F4A 0x2443F
+0x5F4B 0x24470
+0x5F4C 0x24440
+0x5F4D 0x24441
+0x5F4E 0x248C0
+0x5F4F 0x248C1
+0x5F50 0x24AA4
+0x5F51 0x24A97
+0x5F52 0x24AA5
+0x5F53 0x24A98
+0x5F54 0x24A99
+0x5F55 0x24A9A
+0x5F57 0x24A9B
+0x5F58 0x24AA6
+0x5F59 0x24A9C
+0x5F5A 0x24A9D
+0x5F5B 0x24A9E
+0x5F5C 0x24A9F
+0x5F5D 0x28ACE
+0x5F5E 0x24AC8
+0x5F5F 0x24AA0
+0x5F60 0x24B19
+0x5F61 0x24C0D
+0x5F62 0x250BF
+0x5F63 0x252E9
+0x5F64 0x252EA
+0x5F65 0x255A2
+0x5F66 0x255A3
+0x5F67 0x255A4
+0x5F68 0x255A5
+0x5F69 0x255A6
+0x5F6A 0x25715
+0x5F6B 0x25717
+0x5F6C 0x258BF
+0x5F6D 0x258C0
+0x5F6E 0x258C1
+0x5F6F 0x258C2
+0x5F70 0x258C3
+0x5F71 0x258C4
+0x5F72 0x258C5
+0x5F73 0x2190D
+0x5F74 0x25A23
+0x5F75 0x25ABE
+0x5F76 0x25D03
+0x5F77 0x25D04
+0x5F78 0x25D05
+0x5F79 0x25D06
+0x5F7A 0x25D07
+0x5F7B 0x25D08
+0x5F7C 0x25D09
+0x5F7D 0x25D0A
+0x5F7E 0x25D0B
+0x6021 0x25D0C
+0x6022 0x25D20
+0x6023 0x25D0D
+0x6024 0x25D0E
+0x6025 0x25D0F
+0x6027 0x25F26
+0x6028 0x25F27
+0x6029 0x25F28
+0x602A 0x2615D
+0x602B 0x2615E
+0x602C 0x2615F
+0x602D 0x26160
+0x602E 0x26161
+0x602F 0x26162
+0x6030 0x26163
+0x6031 0x26164
+0x6032 0x26165
+0x6033 0x26257
+0x6034 0x263CF
+0x6035 0x263D0
+0x6036 0x26499
+0x6037 0x2649A
+0x6038 0x265EA
+0x6039 0x265EB
+0x603A 0x265EC
+0x603B 0x2687E
+0x603C 0x2687F
+0x603D 0x26880
+0x6040 0x26881
+0x6041 0x26882
+0x6042 0x268F3
+0x6043 0x26925
+0x6044 0x2699F
+0x6045 0x269A0
+0x6046 0x269F3
+0x6047 0x26A00
+0x6048 0x26FEB
+0x6049 0x26FEC
+0x604A 0x26FED
+0x604B 0x26FEE
+0x604C 0x26FEF
+0x604F 0x26FF0
+0x6050 0x26FF1
+0x6051 0x26FF2
+0x6052 0x26FF3
+0x6053 0x26FF4
+0x6054 0x26FF5
+0x6055 0x26FF9
+0x6056 0x26FFA
+0x6057 0x26FFB
+0x6058 0x26FFC
+0x6059 0x26FFD
+0x605A 0x26FFE
+0x605B 0x26FFF
+0x605C 0x27000
+0x605D 0x2F9AE
+0x605E 0x27001
+0x605F 0x27002
+0x6060 0x27203
+0x6061 0x27486
+0x6062 0x27479
+0x6064 0x2747A
+0x6065 0x2747B
+0x6066 0x2747C
+0x6067 0x27484
+0x6068 0x2747D
+0x6069 0x2747E
+0x606A 0x2747F
+0x606B 0x27786
+0x606C 0x27787
+0x606D 0x27800
+0x606E 0x27801
+0x606F 0x27888
+0x6070 0x27889
+0x6071 0x2788A
+0x6072 0x27AF5
+0x6074 0x27B25
+0x6075 0x27AF6
+0x6076 0x27DEB
+0x6077 0x27DEC
+0x6078 0x27DED
+0x6079 0x27DEE
+0x607B 0x27DEF
+0x607C 0x27DF0
+0x607D 0x27F6C
+0x607E 0x28121
+0x6121 0x28122
+0x6122 0x28123
+0x6123 0x28124
+0x6124 0x28125
+0x6125 0x28126
+0x6126 0x2827B
+0x6127 0x2827C
+0x6128 0x28391
+0x6129 0x28392
+0x612A 0x28393
+0x612B 0x2860E
+0x612C 0x2860F
+0x612D 0x28610
+0x612E 0x288B3
+0x612F 0x28936
+0x6130 0x28AC6
+0x6131 0x28AA1
+0x6132 0x28AA2
+0x6134 0x28AA3
+0x6135 0x28ACC
+0x6136 0x28AA4
+0x6137 0x28AA5
+0x6138 0x28AA6
+0x6139 0x28ACB
+0x613A 0x28AA7
+0x613C 0x28AA8
+0x613D 0x28AA9
+0x613E 0x28AAA
+0x6140 0x28AAB
+0x6141 0x28AAC
+0x6142 0x28AAD
+0x6144 0x28AAE
+0x6145 0x28AAF
+0x6146 0x28AB0
+0x6147 0x28D8C
+0x6148 0x28D8D
+0x6149 0x28D8E
+0x614A 0x2F9F1
+0x614B 0x28D92
+0x614C 0x28D8F
+0x614D 0x28F52
+0x614E 0x28F53
+0x614F 0x28F54
+0x6150 0x28F55
+0x6151 0x29129
+0x6153 0x292F3
+0x6154 0x292F4
+0x6155 0x2950D
+0x6156 0x2950E
+0x6157 0x2950F
+0x6158 0x29510
+0x6159 0x29614
+0x615A 0x29771
+0x615B 0x29772
+0x615C 0x2990F
+0x615D 0x29904
+0x615E 0x29906
+0x6160 0x29907
+0x6161 0x29ADC
+0x6162 0x29ADD
+0x6163 0x29B6D
+0x6164 0x29B79
+0x6165 0x29B6E
+0x6167 0x29CEC
+0x6168 0x29DDD
+0x6169 0x29DDE
+0x616A 0x29DDF
+0x616B 0x29DE0
+0x616C 0x29DE1
+0x616D 0x29DE2
+0x616E 0x29DE3
+0x616F 0x29DE4
+0x6170 0x29E3A
+0x6171 0x29DE5
+0x6173 0x29DE6
+0x6174 0x2A06B
+0x6175 0x2A06C
+0x6176 0x2444E
+0x6178 0x2A2BD
+0x6179 0x2A2BE
+0x617A 0x2A2BF
+0x617B 0x2A334
+0x617D 0x2A512
+0x617E 0x20440
+0x6221 0x20441
+0x6222 0x21102
+0x6223 0x21103
+0x6224 0x21104
+0x6225 0x21105
+0x6226 0x21106
+0x6227 0x214D7
+0x6228 0x214CC
+0x6229 0x21698
+0x622A 0x21906
+0x622B 0x21907
+0x622C 0x219AF
+0x622D 0x219B0
+0x622E 0x21AEA
+0x622F 0x21AF2
+0x6230 0x21FA2
+0x6231 0x21FA3
+0x6232 0x21FA4
+0x6233 0x22176
+0x6234 0x222F5
+0x6235 0x222F6
+0x6236 0x222F7
+0x6238 0x2293B
+0x6239 0x22925
+0x623A 0x2293A
+0x623B 0x2293C
+0x623C 0x2293D
+0x623D 0x2293E
+0x623E 0x22E37
+0x623F 0x22E38
+0x6240 0x22E39
+0x6241 0x22E3A
+0x6242 0x22E3B
+0x6243 0x22E3C
+0x6244 0x22E3D
+0x6245 0x22E3E
+0x6246 0x22E3F
+0x6247 0x22E4B
+0x6249 0x22E40
+0x624A 0x23022
+0x624B 0x23067
+0x624C 0x230D3
+0x624D 0x232FA
+0x624F 0x237BC
+0x6252 0x237A5
+0x6254 0x237B6
+0x6256 0x237A6
+0x6257 0x237BB
+0x6258 0x237A7
+0x6259 0x237A8
+0x625A 0x237A9
+0x625B 0x237AA
+0x625C 0x237AB
+0x625D 0x237AC
+0x625E 0x237BF
+0x625F 0x237AD
+0x6260 0x237AE
+0x6261 0x237AF
+0x6262 0x2392E
+0x6263 0x23B00
+0x6264 0x2409D
+0x6265 0x2409E
+0x6266 0x240CB
+0x6267 0x240CC
+0x6268 0x240CD
+0x6269 0x240CE
+0x626A 0x240CF
+0x626C 0x2409F
+0x626D 0x240D0
+0x626E 0x240D1
+0x626F 0x240D2
+0x6270 0x240D3
+0x6271 0x240D4
+0x6274 0x2445D
+0x6275 0x2445E
+0x6276 0x2445F
+0x6277 0x24460
+0x6279 0x24ABA
+0x627A 0x24ABC
+0x627C 0x24AB5
+0x627D 0x24ABD
+0x627E 0x24AB6
+0x6321 0x24AB7
+0x6322 0x24AB8
+0x6323 0x24AA8
+0x6324 0x2F932
+0x6325 0x24BFE
+0x6326 0x24BFC
+0x6327 0x24EE1
+0x6328 0x250C4
+0x6329 0x250C5
+0x632A 0x25314
+0x632B 0x255AE
+0x632C 0x255AF
+0x632D 0x255B0
+0x632E 0x255B1
+0x632F 0x255B9
+0x6330 0x258E7
+0x6331 0x25D46
+0x6333 0x25D47
+0x6334 0x25D48
+0x6335 0x25D49
+0x6336 0x25D1E
+0x6337 0x25D1F
+0x6338 0x25D4A
+0x6339 0x25D4B
+0x633A 0x25D4C
+0x633B 0x25D4D
+0x633C 0x25D4E
+0x633E 0x25F46
+0x633F 0x25F4B
+0x6340 0x26190
+0x6341 0x26191
+0x6343 0x26192
+0x6344 0x26193
+0x6345 0x26194
+0x6346 0x2625B
+0x6347 0x265F2
+0x6348 0x265F8
+0x6349 0x265F9
+0x634A 0x26894
+0x634B 0x268A4
+0x634C 0x26897
+0x634D 0x26898
+0x634E 0x26929
+0x634F 0x269AE
+0x6350 0x26AAF
+0x6351 0x27059
+0x6352 0x2705A
+0x6354 0x2705B
+0x6355 0x2705C
+0x6356 0x2705D
+0x6357 0x2705E
+0x6358 0x2705F
+0x6359 0x27060
+0x635A 0x27061
+0x635B 0x26FAA
+0x635C 0x27062
+0x635D 0x27063
+0x635E 0x27064
+0x635F 0x27065
+0x6360 0x27066
+0x6361 0x27067
+0x6362 0x27068
+0x6363 0x27069
+0x6364 0x2706A
+0x6365 0x2706B
+0x6366 0x2706C
+0x6367 0x2706D
+0x6368 0x2706E
+0x6369 0x2706F
+0x636B 0x274B2
+0x636C 0x274B3
+0x636D 0x274B4
+0x636F 0x274B5
+0x6370 0x274B6
+0x6371 0x274B7
+0x6372 0x274B8
+0x6373 0x274B9
+0x6374 0x274BA
+0x6375 0x274BB
+0x6376 0x27788
+0x6378 0x27B19
+0x6379 0x27B1A
+0x637A 0x27B1B
+0x637B 0x27C16
+0x637C 0x27E0C
+0x637D 0x27E0D
+0x637E 0x27E0E
+0x6421 0x27E0F
+0x6423 0x27F83
+0x6424 0x27F84
+0x6425 0x27F85
+0x6426 0x28283
+0x6427 0x28284
+0x6428 0x283B0
+0x642A 0x28626
+0x642B 0x28627
+0x642C 0x28636
+0x642D 0x28628
+0x642E 0x28629
+0x6431 0x28AE7
+0x6432 0x28AE8
+0x6433 0x28AE9
+0x6435 0x28AEA
+0x6436 0x28AEB
+0x6438 0x28AEC
+0x6439 0x28AED
+0x643A 0x28AEE
+0x643B 0x28AEF
+0x643C 0x28AF0
+0x643D 0x28AF1
+0x643E 0x28B0C
+0x643F 0x28AF2
+0x6440 0x28AF3
+0x6441 0x28AF4
+0x6442 0x28AF5
+0x6443 0x28AF6
+0x6444 0x28AF7
+0x6445 0x28AF8
+0x6446 0x28DA3
+0x6447 0x28DA4
+0x6448 0x28DA5
+0x6449 0x28DA6
+0x644A 0x28DA7
+0x644C 0x28F5C
+0x644E 0x2914B
+0x644F 0x291E1
+0x6450 0x29315
+0x6452 0x29316
+0x6453 0x29317
+0x6454 0x2952C
+0x6455 0x2952D
+0x6456 0x29622
+0x6457 0x29623
+0x6458 0x29796
+0x6459 0x29797
+0x645B 0x2992E
+0x645C 0x29930
+0x645D 0x29931
+0x645F 0x29ADF
+0x6460 0x29B8B
+0x6461 0x29B8C
+0x6463 0x29B8D
+0x6464 0x29CFC
+0x6465 0x29CFD
+0x6466 0x29CFE
+0x6467 0x29CFF
+0x6468 0x29E17
+0x6469 0x29E2D
+0x646A 0x29E18
+0x646C 0x29E19
+0x646E 0x29E12
+0x646F 0x29E1A
+0x6470 0x29E1B
+0x6471 0x29E1C
+0x6474 0x2A097
+0x6476 0x2A098
+0x6477 0x2A099
+0x6479 0x2A3C4
+0x647A 0x2044F
+0x647B 0x204CD
+0x647C 0x20AC7
+0x647D 0x2111C
+0x647E 0x2111D
+0x6521 0x2111E
+0x6522 0x214E7
+0x6523 0x214E9
+0x6524 0x214EA
+0x6525 0x214EB
+0x6526 0x21915
+0x6527 0x21CF1
+0x6528 0x21CF2
+0x6529 0x21FB6
+0x652A 0x225A0
+0x652B 0x2294A
+0x652C 0x22A20
+0x652D 0x22E60
+0x652E 0x22E61
+0x652F 0x22E41
+0x6530 0x22E62
+0x6531 0x23303
+0x6532 0x23304
+0x6533 0x237D9
+0x6534 0x237DA
+0x6535 0x237DB
+0x6536 0x237DC
+0x6537 0x237DD
+0x6539 0x237DE
+0x653A 0x237DF
+0x653B 0x237E0
+0x653C 0x237E1
+0x653D 0x237E2
+0x653F 0x237E3
+0x6541 0x23C31
+0x6542 0x24105
+0x6543 0x24106
+0x6544 0x24107
+0x6545 0x24472
+0x6546 0x2448A
+0x6547 0x2448B
+0x6548 0x24488
+0x654A 0x2448C
+0x654B 0x2448D
+0x654C 0x2448E
+0x654D 0x2448F
+0x654E 0x24490
+0x654F 0x24542
+0x6550 0x24543
+0x6552 0x24AC1
+0x6553 0x24AC2
+0x6554 0x24AC3
+0x6555 0x24AC4
+0x6556 0x250CB
+0x6557 0x25322
+0x655A 0x255C3
+0x655B 0x255C4
+0x655C 0x255C5
+0x655D 0x255C6
+0x655E 0x2571E
+0x655F 0x25725
+0x6560 0x258F3
+0x6561 0x258F4
+0x6563 0x258F5
+0x6564 0x25A38
+0x6565 0x25A48
+0x6566 0x25ACA
+0x6568 0x25D7A
+0x6569 0x25D7B
+0x656A 0x25F55
+0x656B 0x25F56
+0x656C 0x261B1
+0x656D 0x261B2
+0x656E 0x261B3
+0x6570 0x261B4
+0x6571 0x261B5
+0x6572 0x264A4
+0x6573 0x26600
+0x6574 0x26601
+0x6575 0x26602
+0x6576 0x268AC
+0x6578 0x269B3
+0x6579 0x270B6
+0x657A 0x270B7
+0x657B 0x270B8
+0x657C 0x270B9
+0x657D 0x270BA
+0x657E 0x270BB
+0x6621 0x270BC
+0x6622 0x270BD
+0x6623 0x270BE
+0x6624 0x270BF
+0x6625 0x270C0
+0x6626 0x270C1
+0x6627 0x270C2
+0x6628 0x270C3
+0x6629 0x270C4
+0x662A 0x270C5
+0x662B 0x270C6
+0x662C 0x270C7
+0x662D 0x274E3
+0x662E 0x274E4
+0x662F 0x274E5
+0x6630 0x274E6
+0x6631 0x274E7
+0x6633 0x277B5
+0x6634 0x277A1
+0x6635 0x27895
+0x6636 0x27B3B
+0x6637 0x27B3C
+0x6638 0x27B3D
+0x6639 0x27B3E
+0x663A 0x27C14
+0x663B 0x27E20
+0x663C 0x27E21
+0x663D 0x27E22
+0x663E 0x27E23
+0x663F 0x27E24
+0x6640 0x27F96
+0x6641 0x27F97
+0x6642 0x27F98
+0x6643 0x28194
+0x6644 0x28195
+0x6645 0x28196
+0x6646 0x28197
+0x6647 0x28198
+0x6648 0x2828F
+0x6649 0x28290
+0x664A 0x283BC
+0x664B 0x2843B
+0x664C 0x2863D
+0x664E 0x288DF
+0x664F 0x2891E
+0x6650 0x28B23
+0x6651 0x28B24
+0x6652 0x28B49
+0x6653 0x28B25
+0x6654 0x28B26
+0x6655 0x28B27
+0x6656 0x28B28
+0x6658 0x28B29
+0x6659 0x28B2A
+0x665A 0x28B2E
+0x665B 0x28B2F
+0x665C 0x28B4E
+0x665D 0x28B30
+0x665E 0x2F9EB
+0x665F 0x28B31
+0x6660 0x28B32
+0x6661 0x28B33
+0x6662 0x28B34
+0x6663 0x28B35
+0x6664 0x28B36
+0x6666 0x28B37
+0x6667 0x28B50
+0x6668 0x28B38
+0x666A 0x28B39
+0x666B 0x28B3A
+0x666C 0x28B3B
+0x666D 0x28B3C
+0x666E 0x28B3D
+0x666F 0x28B3E
+0x6670 0x28DB8
+0x6671 0x28DB9
+0x6672 0x28F62
+0x6673 0x28F63
+0x6674 0x29041
+0x6675 0x2916D
+0x6677 0x29352
+0x6678 0x29337
+0x6679 0x293DB
+0x667A 0x2953F
+0x667B 0x29634
+0x667C 0x2985B
+0x667D 0x29946
+0x667E 0x2995A
+0x6721 0x2995B
+0x6722 0x29AE1
+0x6723 0x29AE2
+0x6724 0x29AE3
+0x6725 0x29AE4
+0x6726 0x29BA7
+0x6727 0x29BA8
+0x6728 0x29BA9
+0x6729 0x29D0F
+0x672A 0x29D2B
+0x672B 0x29E56
+0x672C 0x29E57
+0x672D 0x29E58
+0x672E 0x29E5E
+0x672F 0x29E59
+0x6730 0x29E5A
+0x6731 0x29E5B
+0x6732 0x29E5C
+0x6734 0x29E68
+0x6736 0x2A12C
+0x6737 0x2A0E2
+0x6738 0x2A0F3
+0x6739 0x2A2D2
+0x673A 0x2A356
+0x673B 0x2A3CE
+0x673C 0x2A461
+0x673D 0x2A69B
+0x673E 0x2A6B4
+0x673F 0x2045C
+0x6740 0x2F810
+0x6741 0x204D2
+0x6742 0x20571
+0x6743 0x20673
+0x6744 0x2082C
+0x6745 0x20B94
+0x6747 0x2113F
+0x6748 0x21140
+0x6749 0x214F9
+0x674A 0x214FA
+0x674B 0x214FD
+0x674C 0x214FB
+0x674D 0x2191C
+0x674E 0x2191D
+0x674F 0x21AFF
+0x6750 0x21B00
+0x6751 0x21CF7
+0x6752 0x24CFE
+0x6754 0x224B6
+0x6755 0x22954
+0x6756 0x22E77
+0x6757 0x22E79
+0x6758 0x22E7A
+0x6759 0x22E7B
+0x675A 0x23069
+0x675B 0x23802
+0x675C 0x23803
+0x675D 0x23804
+0x675E 0x23805
+0x675F 0x23806
+0x6760 0x23807
+0x6761 0x23808
+0x6762 0x23809
+0x6763 0x2380A
+0x6764 0x2380B
+0x6765 0x23835
+0x6767 0x23C39
+0x6768 0x2411E
+0x6769 0x2411F
+0x676A 0x24120
+0x676B 0x24121
+0x676D 0x24122
+0x676E 0x24123
+0x676F 0x24124
+0x6770 0x2412C
+0x6771 0x244B3
+0x6772 0x244B5
+0x6773 0x244B6
+0x6774 0x244B7
+0x6775 0x244B8
+0x6776 0x24AD0
+0x6777 0x24CFA
+0x6778 0x24F07
+0x6779 0x24FBD
+0x677A 0x250D7
+0x677B 0x250D2
+0x677C 0x255DB
+0x677D 0x255D6
+0x677E 0x2045D
+0x6821 0x25A43
+0x6822 0x25ACF
+0x6823 0x25DA3
+0x6824 0x25DA4
+0x6825 0x25DA5
+0x6826 0x25DA6
+0x6827 0x25DA7
+0x6828 0x25DA8
+0x6829 0x25DA9
+0x682A 0x25F5D
+0x682B 0x25F5E
+0x682C 0x261C9
+0x682D 0x261CA
+0x682E 0x261CB
+0x682F 0x261CC
+0x6830 0x26606
+0x6831 0x26607
+0x6833 0x268C5
+0x6834 0x268F5
+0x6835 0x269B4
+0x6836 0x269B8
+0x6837 0x269B5
+0x6838 0x270FD
+0x683A 0x270FE
+0x683B 0x270FF
+0x683C 0x27100
+0x683D 0x27101
+0x683E 0x27102
+0x683F 0x27103
+0x6840 0x27109
+0x6841 0x27104
+0x6842 0x27105
+0x6843 0x27106
+0x6844 0x27107
+0x6845 0x27511
+0x6846 0x27512
+0x6847 0x27513
+0x6848 0x27514
+0x6849 0x27515
+0x684B 0x27898
+0x684C 0x27899
+0x684D 0x27E3C
+0x684E 0x27E2D
+0x684F 0x27E2E
+0x6851 0x281BB
+0x6852 0x281BC
+0x6854 0x2843D
+0x6855 0x28647
+0x6856 0x28648
+0x6857 0x28649
+0x6858 0x2864A
+0x6859 0x287E1
+0x685A 0x287E7
+0x685B 0x288EB
+0x685C 0x28920
+0x685D 0x28938
+0x685E 0x28B62
+0x685F 0x28B67
+0x6860 0x28B68
+0x6861 0x28B69
+0x6862 0x28B6A
+0x6863 0x28B6B
+0x6864 0x28B6D
+0x6865 0x28B6E
+0x6866 0x28B6F
+0x6867 0x28B70
+0x6868 0x28B71
+0x6869 0x28B72
+0x686A 0x28B8F
+0x686B 0x28B73
+0x686C 0x28B74
+0x686D 0x28B75
+0x686E 0x28B76
+0x686F 0x28B77
+0x6870 0x28DC9
+0x6871 0x28DCA
+0x6873 0x28DCB
+0x6874 0x28DCC
+0x6875 0x28DCD
+0x6876 0x29051
+0x6879 0x29245
+0x687A 0x29559
+0x687B 0x2955A
+0x687C 0x2955B
+0x687D 0x29640
+0x687E 0x297CF
+0x6921 0x2985E
+0x6922 0x2997B
+0x6923 0x29A93
+0x6924 0x29BBC
+0x6925 0x29D16
+0x6926 0x29D30
+0x6928 0x29E8D
+0x6929 0x29E8E
+0x692B 0x29E8F
+0x692C 0x29E90
+0x692D 0x29E91
+0x692E 0x29E92
+0x692F 0x29E93
+0x6930 0x29E94
+0x6931 0x29E95
+0x6932 0x29E96
+0x6933 0x2A123
+0x6934 0x2A114
+0x6935 0x2A2DB
+0x6936 0x2A40A
+0x6937 0x2A5CE
+0x6938 0x20466
+0x6939 0x20468
+0x693A 0x20467
+0x693B 0x204D3
+0x693C 0x21163
+0x693D 0x21504
+0x693E 0x2169E
+0x693F 0x21926
+0x6940 0x2192A
+0x6941 0x2296C
+0x6942 0x22964
+0x6943 0x22E8F
+0x6944 0x22E90
+0x6945 0x23034
+0x6946 0x2330E
+0x6947 0x23825
+0x6948 0x23826
+0x6949 0x23827
+0x694B 0x23828
+0x694E 0x23829
+0x694F 0x2382A
+0x6950 0x2382B
+0x6951 0x2382C
+0x6952 0x23C3E
+0x6953 0x24142
+0x6954 0x24143
+0x6955 0x24133
+0x6956 0x244C1
+0x6957 0x244C2
+0x6958 0x244C3
+0x6959 0x24AD6
+0x695A 0x24AD7
+0x695B 0x255E1
+0x695C 0x255E2
+0x695D 0x2572B
+0x695E 0x25AD1
+0x695F 0x25DCC
+0x6960 0x25DCD
+0x6961 0x25DCE
+0x6962 0x25DCF
+0x6963 0x261DE
+0x6964 0x261DF
+0x6965 0x261E0
+0x6966 0x261E1
+0x6967 0x268F6
+0x6968 0x2712C
+0x696A 0x27154
+0x696B 0x2712D
+0x696C 0x2712E
+0x696D 0x27541
+0x696E 0x27542
+0x696F 0x277C7
+0x6970 0x278A0
+0x6971 0x278A1
+0x6972 0x27B70
+0x6973 0x27B71
+0x6974 0x27B72
+0x6976 0x27E34
+0x6977 0x27E35
+0x6978 0x27E36
+0x6979 0x27FA6
+0x697A 0x281CC
+0x697C 0x28299
+0x697D 0x288F4
+0x697E 0x28B9B
+0x6A21 0x28B9E
+0x6A22 0x28B9F
+0x6A23 0x28BA0
+0x6A24 0x28BA1
+0x6A25 0x28BA2
+0x6A26 0x28BA3
+0x6A27 0x28BA4
+0x6A28 0x28BA5
+0x6A29 0x28BA6
+0x6A2A 0x28BA7
+0x6A2B 0x28BA8
+0x6A2C 0x28DDB
+0x6A2D 0x28DDC
+0x6A2E 0x28DDD
+0x6A2F 0x28DD7
+0x6A30 0x28DDE
+0x6A31 0x28DDF
+0x6A32 0x29059
+0x6A33 0x29446
+0x6A34 0x29565
+0x6A35 0x29649
+0x6A37 0x297DD
+0x6A38 0x29995
+0x6A39 0x29996
+0x6A3A 0x29997
+0x6A3B 0x29BD4
+0x6A3C 0x29BD6
+0x6A3D 0x29D26
+0x6A40 0x29EC8
+0x6A41 0x29EC5
+0x6A42 0x29EC6
+0x6A43 0x29EC7
+0x6A44 0x2A151
+0x6A45 0x2A152
+0x6A46 0x2A153
+0x6A47 0x2A154
+0x6A48 0x2A155
+0x6A49 0x2A2DE
+0x6A4B 0x2046D
+0x6A4C 0x204D5
+0x6A4D 0x21172
+0x6A4E 0x221AE
+0x6A4F 0x2230F
+0x6A50 0x2296B
+0x6A51 0x2296D
+0x6A52 0x2296E
+0x6A53 0x22978
+0x6A54 0x22E98
+0x6A55 0x22E99
+0x6A56 0x22E9A
+0x6A57 0x23844
+0x6A58 0x2385C
+0x6A59 0x23845
+0x6A5A 0x23B01
+0x6A5B 0x24158
+0x6A5C 0x24159
+0x6A5D 0x2415A
+0x6A5F 0x244D9
+0x6A60 0x244D6
+0x6A61 0x24ADA
+0x6A62 0x24ADF
+0x6A63 0x24ADB
+0x6A64 0x24D03
+0x6A65 0x255EF
+0x6A67 0x25733
+0x6A68 0x25AD2
+0x6A69 0x25DE1
+0x6A6A 0x25F6F
+0x6A6B 0x26264
+0x6A6C 0x2660E
+0x6A6D 0x27150
+0x6A6E 0x27151
+0x6A6F 0x27152
+0x6A70 0x27556
+0x6A71 0x27557
+0x6A72 0x27558
+0x6A74 0x27B81
+0x6A75 0x27B82
+0x6A76 0x27C1D
+0x6A77 0x27C1E
+0x6A78 0x27E43
+0x6A79 0x27FAA
+0x6A7A 0x288FD
+0x6A7C 0x28BC6
+0x6A7D 0x28BC7
+0x6A7E 0x28BD9
+0x6B21 0x28BD7
+0x6B23 0x28BC8
+0x6B24 0x28BC9
+0x6B25 0x28BCA
+0x6B26 0x28BCB
+0x6B27 0x28BDA
+0x6B29 0x28BCC
+0x6B2A 0x28BCD
+0x6B2B 0x28BCE
+0x6B2C 0x28BCF
+0x6B2D 0x28BD0
+0x6B2E 0x28BD1
+0x6B2F 0x28BBC
+0x6B30 0x28DE1
+0x6B31 0x28DE2
+0x6B32 0x28DE3
+0x6B33 0x291A9
+0x6B34 0x2924E
+0x6B35 0x29577
+0x6B38 0x299AC
+0x6B39 0x299AD
+0x6B3A 0x29AB6
+0x6B3B 0x29BE5
+0x6B3C 0x29EF8
+0x6B3D 0x29EEA
+0x6B3E 0x29F8D
+0x6B3F 0x29EEB
+0x6B40 0x2A195
+0x6B41 0x2046E
+0x6B42 0x204D8
+0x6B43 0x21183
+0x6B44 0x216A3
+0x6B45 0x21930
+0x6B46 0x21B0F
+0x6B47 0x22979
+0x6B48 0x2297A
+0x6B49 0x22EA7
+0x6B4A 0x22EA8
+0x6B4B 0x22EA9
+0x6B4C 0x22EAA
+0x6B4D 0x23319
+0x6B4E 0x23850
+0x6B4F 0x23851
+0x6B50 0x23852
+0x6B52 0x23868
+0x6B53 0x23853
+0x6B54 0x23854
+0x6B55 0x248E2
+0x6B56 0x24ADC
+0x6B57 0x25915
+0x6B58 0x25916
+0x6B59 0x25A4F
+0x6B5A 0x25DF5
+0x6B5B 0x25DF6
+0x6B5C 0x25DF7
+0x6B5D 0x261F4
+0x6B5E 0x264CC
+0x6B5F 0x2660F
+0x6B60 0x27166
+0x6B61 0x27167
+0x6B63 0x27168
+0x6B64 0x278A4
+0x6B65 0x27B8B
+0x6B66 0x27B8C
+0x6B67 0x281FA
+0x6B68 0x28BE6
+0x6B69 0x28BED
+0x6B6A 0x28BEE
+0x6B6B 0x28BEF
+0x6B6C 0x28BF0
+0x6B6D 0x28BFE
+0x6B6E 0x28DE7
+0x6B6F 0x28DE8
+0x6B70 0x291B3
+0x6B71 0x291E4
+0x6B72 0x29583
+0x6B73 0x29AEC
+0x6B75 0x29F16
+0x6B78 0x29F17
+0x6B79 0x2A1C3
+0x6B7A 0x2A1AC
+0x6B7B 0x2A2ED
+0x6B7E 0x2A5B4
+0x6C22 0x2118A
+0x6C23 0x2118B
+0x6C24 0x21934
+0x6C25 0x21B14
+0x6C26 0x21FDF
+0x6C27 0x224BB
+0x6C28 0x2297F
+0x6C29 0x22981
+0x6C2A 0x22EAD
+0x6C2B 0x22EAE
+0x6C2C 0x23862
+0x6C2D 0x2386E
+0x6C2F 0x2416E
+0x6C31 0x24717
+0x6C32 0x24AE6
+0x6C33 0x24C10
+0x6C34 0x25919
+0x6C36 0x26610
+0x6C37 0x26AF2
+0x6C38 0x27176
+0x6C39 0x27177
+0x6C3A 0x27B95
+0x6C3B 0x27B96
+0x6C3C 0x28C00
+0x6C3D 0x28C01
+0x6C3E 0x28C31
+0x6C3F 0x2F9ED
+0x6C40 0x28C1C
+0x6C41 0x2906D
+0x6C42 0x29BF4
+0x6C43 0x29BF5
+0x6C44 0x29D3D
+0x6C45 0x29F32
+0x6C46 0x29F33
+0x6C47 0x2A2F4
+0x6C49 0x20473
+0x6C4A 0x21937
+0x6C4C 0x23871
+0x6C4D 0x25E0F
+0x6C4F 0x25E0E
+0x6C50 0x26611
+0x6C51 0x27185
+0x6C52 0x28C14
+0x6C53 0x28C15
+0x6C54 0x28C16
+0x6C55 0x28C17
+0x6C56 0x28C18
+0x6C57 0x28C19
+0x6C58 0x28C1A
+0x6C59 0x291C3
+0x6C5A 0x29F42
+0x6C5B 0x29F43
+0x6C5C 0x29F44
+0x6C5D 0x29F48
+0x6C5E 0x2A1FB
+0x6C5F 0x216A5
+0x6C60 0x219B8
+0x6C61 0x22EB2
+0x6C62 0x2303D
+0x6C63 0x23872
+0x6C64 0x244E7
+0x6C65 0x244E8
+0x6C66 0x25359
+0x6C67 0x2573A
+0x6C68 0x25E14
+0x6C69 0x261FF
+0x6C6A 0x269C0
+0x6C6B 0x2718D
+0x6C6D 0x2718E
+0x6C6F 0x28C22
+0x6C72 0x29C04
+0x6C73 0x29C29
+0x6C74 0x29F51
+0x6C75 0x29F66
+0x6C76 0x2A20E
+0x6C77 0x2FA13
+0x6C79 0x2119B
+0x6C7A 0x2119C
+0x6C7B 0x22316
+0x6C7C 0x22986
+0x6C7D 0x22987
+0x6D21 0x28C2C
+0x6D22 0x28C30
+0x6D23 0x28C28
+0x6D24 0x2965F
+0x6D26 0x2417E
+0x6D27 0x25E19
+0x6D28 0x2820A
+0x6D29 0x28C36
+0x6D2A 0x28DFC
+0x6D2B 0x29F6D
+0x6D2C 0x29F6E
+0x6D2D 0x2A6C6
+0x6D2F 0x2387B
+0x6D30 0x26206
+0x6D31 0x2759F
+0x6D32 0x2A232
+0x6D33 0x2820D
+0x6D34 0x2298B
+0x6D35 0x28C3B
+0x6D37 0x2A23D
+0x6D38 0x28C3C
+0x6D39 0x28C3D
diff --git a/test/sun/nio/cs/SurrogateTestEUCTW.plane3.surrogates b/test/sun/nio/cs/SurrogateTestEUCTW.plane3.surrogates
new file mode 100644
index 000000000..b9f55b08e
--- /dev/null
+++ b/test/sun/nio/cs/SurrogateTestEUCTW.plane3.surrogates
@@ -0,0 +1,71 @@
+0x2144 0x2000B
+0x214F 0x2F817
+0x216F 0x201A9
+0x217C 0x2F850
+0x2225 0x2F82A
+0x227B 0x2F815
+0x2329 0x2F82C
+0x233C 0x2F83B
+0x2359 0x21D46
+0x2424 0x23C86
+0x2429 0x2F835
+0x2441 0x2F81B
+0x2452 0x2F80E
+0x257E 0x225D7
+0x2627 0x2F8B2
+0x272A 0x2F98F
+0x274E 0x20209
+0x2753 0x2F80F
+0x2754 0x2F811
+0x275C 0x206EC
+0x2A39 0x2233F
+0x2A45 0x2592E
+0x2C40 0x2F87A
+0x2C51 0x2F899
+0x2D35 0x2F8DF
+0x2D52 0x2F8FE
+0x2E56 0x2F96A
+0x2E5A 0x25133
+0x3023 0x2F841
+0x3053 0x2172E
+0x315C 0x2F8E1
+0x3350 0x2F983
+0x3460 0x20DAE
+0x3470 0x2F855
+0x347E 0x21637
+0x355F 0x2F88D
+0x3565 0x2F89C
+0x3628 0x2F8BA
+0x3640 0x2F8CB
+0x3675 0x2F907
+0x3977 0x20564
+0x3A26 0x2F833
+0x3A4F 0x21364
+0x3C3A 0x2F8E5
+0x3D3F 0x2F934
+0x3F6D 0x28CDD
+0x4043 0x2F823
+0x407E 0x2F87E
+0x416E 0x2F8E8
+0x4333 0x2F94E
+0x4425 0x2F98D
+0x446D 0x2F9DB
+0x4670 0x2F8A6
+0x4731 0x230BA
+0x474B 0x235F3
+0x4826 0x24A0F
+0x486A 0x2F96C
+0x5039 0x20B89
+0x5460 0x2F8AF
+0x553A 0x24039
+0x5545 0x2F921
+0x5678 0x2F9F5
+0x5736 0x29937
+0x584F 0x25CD1
+0x5863 0x265DF
+0x5A33 0x2F86A
+0x5A36 0x2F870
+0x5B26 0x2F9B6
+0x5B2D 0x2F9C1
+0x5C2F 0x2FA19
+0x607C 0x2F9D6
diff --git a/test/sun/nio/cs/SurrogateTestEUCTW.plane4.surrogates b/test/sun/nio/cs/SurrogateTestEUCTW.plane4.surrogates
new file mode 100644
index 000000000..501fc1981
--- /dev/null
+++ b/test/sun/nio/cs/SurrogateTestEUCTW.plane4.surrogates
@@ -0,0 +1,3476 @@
+0x2121 0x20086
+0x2125 0x21FE8
+0x2128 0x2010E
+0x2129 0x20627
+0x212D 0x2053C
+0x212E 0x20675
+0x212F 0x2F828
+0x2133 0x2193C
+0x2134 0x2F875
+0x2135 0x2F878
+0x213F 0x2F819
+0x2140 0x206A5
+0x2141 0x206AA
+0x2142 0x2090F
+0x2143 0x20A0E
+0x2146 0x20B9C
+0x2147 0x20B9B
+0x2148 0x2123C
+0x214A 0x21BC2
+0x214E 0x233B4
+0x2156 0x20065
+0x2158 0x201B2
+0x215C 0x20477
+0x215D 0x20542
+0x215F 0x20633
+0x2162 0x206AF
+0x2163 0x20836
+0x2168 0x20B22
+0x216E 0x211A3
+0x2174 0x21C25
+0x2175 0x21C24
+0x2177 0x22052
+0x2178 0x22189
+0x2179 0x224BF
+0x217D 0x233B5
+0x217E 0x2574C
+0x2222 0x28E14
+0x2223 0x28E12
+0x2225 0x200A3
+0x2226 0x200A2
+0x2229 0x201B6
+0x222B 0x201B5
+0x222C 0x201B4
+0x222F 0x201C2
+0x2230 0x201B8
+0x2232 0x20479
+0x2235 0x20508
+0x2237 0x2057A
+0x2238 0x205B6
+0x2239 0x206BD
+0x223A 0x206B7
+0x223B 0x206BC
+0x223D 0x206C4
+0x223E 0x206C9
+0x2243 0x20930
+0x2244 0x20983
+0x2245 0x20985
+0x2246 0x20A12
+0x2247 0x20A34
+0x2249 0x20AE4
+0x224A 0x20ADE
+0x224B 0x20B2A
+0x224D 0x20BAF
+0x224E 0x20BB4
+0x224F 0x20BB3
+0x2250 0x20BB1
+0x2254 0x215DE
+0x2257 0x216B8
+0x2258 0x216B0
+0x225A 0x219C2
+0x225E 0x21C2A
+0x2262 0x21FE9
+0x2264 0x22057
+0x2267 0x221B6
+0x2268 0x221D7
+0x2269 0x221DE
+0x226E 0x224C2
+0x226F 0x225AB
+0x2272 0x2298F
+0x2276 0x22A6D
+0x2277 0x22EB5
+0x227A 0x233C0
+0x227B 0x233BF
+0x227D 0x239B9
+0x227E 0x23B1C
+0x2323 0x23C80
+0x2324 0x24184
+0x2325 0x24185
+0x2328 0x24724
+0x232C 0x2634C
+0x232E 0x26AF6
+0x2331 0x28670
+0x2333 0x28675
+0x2334 0x28E17
+0x2338 0x201F1
+0x233A 0x201DA
+0x233C 0x205B9
+0x2341 0x206CE
+0x2342 0x206D2
+0x2343 0x206D0
+0x2345 0x20843
+0x2349 0x2084D
+0x234A 0x20934
+0x234C 0x209D9
+0x234E 0x20A18
+0x2350 0x20B38
+0x2352 0x20BD7
+0x2355 0x20BDC
+0x2356 0x20BCB
+0x2357 0x20BD6
+0x2358 0x20BD8
+0x235A 0x20BD1
+0x235B 0x2F83E
+0x235C 0x2F83C
+0x235D 0x20BD2
+0x2360 0x21259
+0x2363 0x215E5
+0x2364 0x215E6
+0x2366 0x215E8
+0x2368 0x216BD
+0x236B 0x216BE
+0x236C 0x21949
+0x236E 0x219CD
+0x2372 0x21B5E
+0x2373 0x21BD0
+0x2375 0x21D06
+0x237C 0x21D7C
+0x237D 0x21D71
+0x237E 0x21FEF
+0x2426 0x2218D
+0x2427 0x221B7
+0x242A 0x22333
+0x242B 0x2237F
+0x242D 0x225F2
+0x2434 0x22A2A
+0x2435 0x22A8B
+0x2437 0x22A83
+0x2438 0x22A8A
+0x243B 0x22A8E
+0x243D 0x22EB6
+0x2442 0x230D8
+0x2444 0x23156
+0x2445 0x233D2
+0x2447 0x2F8DB
+0x2449 0x233C2
+0x244A 0x23887
+0x244B 0x23881
+0x244C 0x239C2
+0x244D 0x239BC
+0x244E 0x23B23
+0x2450 0x23C93
+0x2453 0x2418D
+0x2454 0x2418E
+0x2457 0x2473B
+0x2458 0x2474D
+0x245A 0x24734
+0x245B 0x24731
+0x245C 0x248F2
+0x245D 0x248F0
+0x245F 0x24C15
+0x2460 0x24D28
+0x2463 0x24F25
+0x2464 0x250E7
+0x2466 0x250E9
+0x2467 0x25417
+0x246A 0x2626C
+0x246B 0x26280
+0x246C 0x2634B
+0x2471 0x268DE
+0x2472 0x268FB
+0x2474 0x26951
+0x2477 0x26B01
+0x2478 0x26B02
+0x247A 0x26B05
+0x247C 0x26B03
+0x247E 0x28451
+0x2524 0x28453
+0x2525 0x2867A
+0x2526 0x28678
+0x2527 0x28676
+0x2528 0x28679
+0x2529 0x2868F
+0x252A 0x2867C
+0x252C 0x28E1B
+0x252D 0x28E1C
+0x252F 0x23D92
+0x2532 0x2012E
+0x2533 0x2012C
+0x2535 0x2020C
+0x2537 0x2020B
+0x253A 0x20205
+0x253D 0x2F805
+0x2541 0x205C2
+0x2542 0x205C3
+0x2544 0x20648
+0x2546 0x20646
+0x2549 0x206EA
+0x254B 0x206EB
+0x254D 0x206EE
+0x2552 0x208D8
+0x2553 0x24C1E
+0x2554 0x209DF
+0x2555 0x209DE
+0x2558 0x20A4F
+0x255B 0x20C0D
+0x255C 0x20C08
+0x255E 0x20C09
+0x2561 0x20C12
+0x2562 0x20C65
+0x2567 0x21289
+0x256A 0x21284
+0x256B 0x2129E
+0x256C 0x2128B
+0x256F 0x21562
+0x2574 0x215F9
+0x2576 0x215F7
+0x2579 0x21606
+0x257A 0x216DD
+0x257C 0x216D9
+0x257D 0x216DF
+0x257E 0x216E2
+0x2624 0x200F1
+0x262B 0x21C3F
+0x262C 0x21C3E
+0x262D 0x21D0B
+0x2630 0x21D83
+0x2633 0x21D86
+0x2635 0x2207C
+0x2639 0x221F7
+0x263E 0x221FB
+0x263F 0x2233B
+0x2644 0x225F9
+0x2645 0x225CA
+0x2647 0x225FF
+0x264A 0x22609
+0x264B 0x22603
+0x2651 0x22610
+0x2652 0x2299A
+0x2653 0x2299F
+0x2657 0x22A87
+0x265A 0x22EB7
+0x265C 0x22F08
+0x265D 0x22EF9
+0x2660 0x22EF4
+0x2664 0x26657
+0x2666 0x233D6
+0x2668 0x2F8DE
+0x266B 0x233D4
+0x266E 0x23890
+0x266F 0x2388D
+0x2672 0x23960
+0x2673 0x239CE
+0x2674 0x239CF
+0x2677 0x239D1
+0x267C 0x23CCA
+0x2721 0x23CB7
+0x2723 0x23CB2
+0x2724 0x23CBB
+0x2725 0x23CB9
+0x2728 0x2419E
+0x272A 0x241B2
+0x272D 0x2456F
+0x272E 0x245AC
+0x2730 0x24623
+0x2735 0x2476C
+0x2737 0x24732
+0x2738 0x2475E
+0x273C 0x248FB
+0x273D 0x24B29
+0x273E 0x24BBD
+0x273F 0x24C1F
+0x2741 0x22341
+0x2742 0x24C1D
+0x2744 0x24D31
+0x2745 0x24D2F
+0x2747 0x25043
+0x2749 0x25041
+0x274B 0x250F5
+0x2750 0x250F2
+0x2754 0x2541E
+0x2755 0x25754
+0x2757 0x25756
+0x2758 0x25929
+0x2759 0x25927
+0x275A 0x25928
+0x275D 0x26279
+0x275E 0x2627E
+0x275F 0x264B6
+0x2760 0x264B7
+0x2768 0x2F981
+0x276B 0x2664D
+0x2770 0x26A09
+0x2771 0x26A08
+0x2774 0x26B1E
+0x2775 0x26B1A
+0x2776 0x26B23
+0x2777 0x26B15
+0x2778 0x26B19
+0x2779 0x26B16
+0x277C 0x26B14
+0x277D 0x26B18
+0x2822 0x2721F
+0x2823 0x275DD
+0x2824 0x275DF
+0x2825 0x28469
+0x2828 0x2846C
+0x282A 0x28693
+0x282C 0x28695
+0x282D 0x28694
+0x282E 0x28691
+0x282F 0x28697
+0x2830 0x28E30
+0x2834 0x2FA18
+0x2836 0x20231
+0x283B 0x20236
+0x2841 0x205C9
+0x2842 0x205CA
+0x2844 0x20718
+0x2845 0x20712
+0x2846 0x20719
+0x2847 0x20710
+0x2848 0x20716
+0x284A 0x2085F
+0x284C 0x208DF
+0x284D 0x20917
+0x284F 0x2093C
+0x2851 0x209EA
+0x2852 0x209E9
+0x2853 0x20A1C
+0x2854 0x20A58
+0x2855 0x20A64
+0x2856 0x20AF3
+0x2858 0x20C97
+0x285A 0x20C5A
+0x285B 0x20C59
+0x285D 0x20C8E
+0x285F 0x212BC
+0x2862 0x2160D
+0x2863 0x215FC
+0x2864 0x2160C
+0x2865 0x21707
+0x2866 0x2170A
+0x2868 0x21702
+0x286A 0x21726
+0x286B 0x21708
+0x286C 0x2171D
+0x286F 0x2194E
+0x2871 0x219ED
+0x2872 0x219EE
+0x2873 0x219EF
+0x2876 0x21C50
+0x2877 0x21C4C
+0x287A 0x21C4F
+0x287C 0x21DD4
+0x287E 0x21DB0
+0x2926 0x220A5
+0x2927 0x22209
+0x292F 0x223F3
+0x2930 0x223D7
+0x2933 0x224DC
+0x2938 0x2260B
+0x2942 0x2263A
+0x2943 0x2260D
+0x2944 0x22611
+0x2946 0x22620
+0x2947 0x22601
+0x2949 0x22637
+0x294A 0x2F8A3
+0x294C 0x229AA
+0x294F 0x22AE7
+0x2950 0x22AE8
+0x2953 0x22AF5
+0x2957 0x22B35
+0x2958 0x22AE6
+0x295A 0x22AF8
+0x295C 0x22AF1
+0x295E 0x22F14
+0x295F 0x22F15
+0x2960 0x22F09
+0x2966 0x2317B
+0x2968 0x2317E
+0x2969 0x23366
+0x296A 0x23367
+0x296B 0x2340A
+0x2975 0x2389C
+0x2976 0x23962
+0x2977 0x239E1
+0x2978 0x239DE
+0x2979 0x239DF
+0x297A 0x239E9
+0x297C 0x23CE4
+0x297D 0x23CF7
+0x2A22 0x23CEA
+0x2A23 0x23CF6
+0x2A24 0x23D12
+0x2A25 0x2F901
+0x2A29 0x241D9
+0x2A2B 0x2455F
+0x2A2D 0x24573
+0x2A30 0x2463F
+0x2A31 0x24778
+0x2A33 0x2477D
+0x2A36 0x24912
+0x2A3B 0x24B2F
+0x2A3E 0x24B30
+0x2A3F 0x24BDB
+0x2A42 0x24C29
+0x2A44 0x2F936
+0x2A45 0x24D40
+0x2A47 0x24D3D
+0x2A48 0x24D3E
+0x2A4B 0x24D38
+0x2A4D 0x24F48
+0x2A4F 0x24FD0
+0x2A5B 0x2510E
+0x2A5C 0x25109
+0x2A5E 0x25107
+0x2A60 0x2535F
+0x2A61 0x25360
+0x2A63 0x2542A
+0x2A65 0x25429
+0x2A68 0x2564D
+0x2A6D 0x2576C
+0x2A70 0x25767
+0x2A73 0x25939
+0x2A74 0x25934
+0x2A75 0x25A59
+0x2A78 0x26223
+0x2A7A 0x26282
+0x2A7C 0x26283
+0x2A7D 0x262A8
+0x2A7E 0x26355
+0x2B21 0x263F9
+0x2B22 0x263F8
+0x2B23 0x263FC
+0x2B24 0x263FA
+0x2B26 0x2F97A
+0x2B2B 0x26674
+0x2B2D 0x2666B
+0x2B2E 0x26671
+0x2B30 0x26676
+0x2B31 0x26A0E
+0x2B34 0x26A10
+0x2B35 0x26A0F
+0x2B37 0x26B38
+0x2B38 0x26B39
+0x2B39 0x26B3A
+0x2B3B 0x26B37
+0x2B3C 0x26B3E
+0x2B3F 0x2719C
+0x2B40 0x2722A
+0x2B41 0x2723A
+0x2B42 0x2722B
+0x2B43 0x27228
+0x2B44 0x275AA
+0x2B45 0x2760F
+0x2B47 0x27610
+0x2B48 0x277E6
+0x2B4A 0x27D25
+0x2B4B 0x27E8E
+0x2B4F 0x2848B
+0x2B51 0x2848C
+0x2B52 0x2849A
+0x2B55 0x286B3
+0x2B57 0x286B2
+0x2B5C 0x28E44
+0x2B5F 0x20158
+0x2B60 0x202A7
+0x2B63 0x20263
+0x2B66 0x2026A
+0x2B67 0x20265
+0x2B68 0x2026B
+0x2B6A 0x204ED
+0x2B6B 0x205D9
+0x2B6C 0x2073B
+0x2B6D 0x20732
+0x2B6F 0x20735
+0x2B70 0x20731
+0x2B71 0x2073E
+0x2B72 0x20743
+0x2B73 0x20736
+0x2B74 0x2086D
+0x2B76 0x208E4
+0x2B79 0x209F4
+0x2B7B 0x20A69
+0x2B7C 0x20A6B
+0x2C22 0x20CBF
+0x2C23 0x20CC3
+0x2C24 0x20CAE
+0x2C27 0x20CB1
+0x2C2A 0x20CBB
+0x2C2B 0x20CAF
+0x2C2C 0x20CB0
+0x2C30 0x212EF
+0x2C32 0x212ED
+0x2C34 0x212F0
+0x2C35 0x21593
+0x2C36 0x21634
+0x2C37 0x2162B
+0x2C43 0x21A04
+0x2C44 0x21A03
+0x2C45 0x21A02
+0x2C47 0x21A05
+0x2C4A 0x21A00
+0x2C4B 0x21B74
+0x2C4F 0x21C65
+0x2C50 0x21C63
+0x2C52 0x21DD7
+0x2C56 0x21DE8
+0x2C58 0x21DDB
+0x2C59 0x21DD8
+0x2C5D 0x21E09
+0x2C62 0x21DE5
+0x2C63 0x21DE7
+0x2C65 0x2203F
+0x2C67 0x220C0
+0x2C69 0x220B9
+0x2C6A 0x220BA
+0x2C6E 0x22220
+0x2C6F 0x2234F
+0x2C73 0x22491
+0x2C74 0x22490
+0x2C75 0x224EE
+0x2C76 0x224F3
+0x2C77 0x224EC
+0x2C78 0x224F1
+0x2C79 0x224EB
+0x2C7A 0x224F2
+0x2C7B 0x224F4
+0x2C7C 0x224ED
+0x2C7D 0x22641
+0x2C7E 0x22648
+0x2D21 0x22645
+0x2D26 0x2267F
+0x2D27 0x2268B
+0x2D29 0x2263B
+0x2D2A 0x2264E
+0x2D2E 0x2267C
+0x2D34 0x22AF0
+0x2D35 0x22B36
+0x2D36 0x22B3F
+0x2D37 0x22B43
+0x2D38 0x22B31
+0x2D39 0x22B34
+0x2D3A 0x22B46
+0x2D3D 0x22B2F
+0x2D3E 0x22EC3
+0x2D41 0x22F36
+0x2D45 0x22F21
+0x2D46 0x2F8C8
+0x2D48 0x23073
+0x2D4A 0x230E6
+0x2D50 0x2343F
+0x2D53 0x2346B
+0x2D5A 0x23471
+0x2D5C 0x2F8E2
+0x2D5F 0x238B0
+0x2D63 0x239F3
+0x2D65 0x2F8F5
+0x2D68 0x23B61
+0x2D69 0x23B5F
+0x2D6D 0x23D28
+0x2D6E 0x23D1E
+0x2D6F 0x23D29
+0x2D70 0x2F902
+0x2D71 0x23CEB
+0x2D72 0x23D66
+0x2D74 0x241F6
+0x2D77 0x24560
+0x2D78 0x24577
+0x2D79 0x245BB
+0x2D7B 0x245BC
+0x2E23 0x247A2
+0x2E24 0x247B2
+0x2E25 0x2479E
+0x2E28 0x2493A
+0x2E29 0x24938
+0x2E2E 0x24C4D
+0x2E30 0x24C5E
+0x2E32 0x24D17
+0x2E3D 0x24D64
+0x2E3E 0x24D67
+0x2E42 0x24F59
+0x2E44 0x24FDA
+0x2E48 0x25051
+0x2E4A 0x25055
+0x2E4B 0x2513B
+0x2E4C 0x25134
+0x2E4E 0x25137
+0x2E50 0x25131
+0x2E53 0x2513F
+0x2E54 0x25159
+0x2E56 0x25361
+0x2E59 0x25458
+0x2E5A 0x25462
+0x2E5B 0x25450
+0x2E5D 0x25451
+0x2E60 0x25446
+0x2E63 0x2562D
+0x2E66 0x25948
+0x2E67 0x25951
+0x2E68 0x2594A
+0x2E69 0x2594F
+0x2E6A 0x25950
+0x2E6B 0x25949
+0x2E6C 0x25A63
+0x2E6E 0x25A66
+0x2E6F 0x25A60
+0x2E74 0x25AF1
+0x2E76 0x25B07
+0x2E79 0x25F9B
+0x2E7A 0x25FA3
+0x2E7B 0x25F9D
+0x2F22 0x25FA9
+0x2F23 0x25FA7
+0x2F24 0x25FA4
+0x2F26 0x25FBA
+0x2F27 0x221C1
+0x2F28 0x26226
+0x2F2B 0x26294
+0x2F2C 0x26293
+0x2F31 0x26407
+0x2F32 0x2640D
+0x2F33 0x26402
+0x2F34 0x2640C
+0x2F35 0x26409
+0x2F36 0x26408
+0x2F37 0x26413
+0x2F39 0x264D2
+0x2F3B 0x2653E
+0x2F3C 0x2653C
+0x2F3D 0x26667
+0x2F3E 0x2669E
+0x2F40 0x266AD
+0x2F42 0x266D9
+0x2F43 0x26642
+0x2F44 0x266A3
+0x2F45 0x266A0
+0x2F48 0x2667C
+0x2F49 0x26904
+0x2F4B 0x26958
+0x2F4C 0x26960
+0x2F4D 0x269C9
+0x2F4E 0x269C8
+0x2F51 0x26A1C
+0x2F52 0x26A1A
+0x2F54 0x26B74
+0x2F56 0x26B6E
+0x2F57 0x26B6F
+0x2F58 0x26B79
+0x2F5B 0x26B77
+0x2F60 0x26B7C
+0x2F62 0x26B70
+0x2F65 0x26B7A
+0x2F66 0x26B82
+0x2F6A 0x27244
+0x2F6C 0x27243
+0x2F6E 0x27245
+0x2F70 0x27625
+0x2F71 0x2761F
+0x2F74 0x277E8
+0x2F77 0x27809
+0x2F78 0x278B7
+0x2F79 0x278B9
+0x2F7A 0x27964
+0x2F7B 0x27963
+0x3021 0x27962
+0x3022 0x27965
+0x3024 0x27BAC
+0x3026 0x27D2A
+0x3029 0x27E96
+0x302B 0x27FC2
+0x302C 0x2F9DE
+0x3031 0x284AA
+0x3032 0x284B0
+0x3035 0x286D4
+0x3036 0x286CD
+0x3037 0x286D6
+0x3039 0x287F0
+0x3043 0x29D4B
+0x3044 0x20162
+0x3046 0x202B7
+0x3048 0x202AC
+0x3049 0x202AB
+0x304B 0x202C1
+0x304E 0x205E8
+0x304F 0x20769
+0x3050 0x2075D
+0x3051 0x2075F
+0x3055 0x20764
+0x3056 0x20762
+0x305B 0x208F9
+0x305D 0x208EE
+0x3061 0x209AB
+0x3062 0x209AC
+0x3063 0x209AA
+0x3066 0x20A86
+0x3067 0x20A7A
+0x3069 0x20D28
+0x306E 0x20D31
+0x3075 0x20D2D
+0x3076 0x2F843
+0x3078 0x20D2B
+0x3079 0x20D32
+0x307C 0x21329
+0x307D 0x21326
+0x307E 0x21353
+0x3122 0x21333
+0x3123 0x21334
+0x3124 0x2159D
+0x3127 0x21641
+0x312A 0x21791
+0x312B 0x21769
+0x312D 0x21A22
+0x312F 0x21A34
+0x3130 0x2F86D
+0x3131 0x21B2E
+0x3134 0x21BF4
+0x3136 0x21E28
+0x3138 0x21E1C
+0x313A 0x21E11
+0x313B 0x21E24
+0x313C 0x21E15
+0x313E 0x21E16
+0x313F 0x21E54
+0x3140 0x21E23
+0x3141 0x21FFF
+0x3143 0x220CF
+0x3144 0x220D0
+0x3146 0x220CE
+0x314A 0x221C7
+0x314B 0x2225C
+0x314D 0x22236
+0x3150 0x22243
+0x3155 0x2252A
+0x3156 0x22501
+0x3158 0x2250B
+0x3159 0x2250F
+0x315F 0x226DF
+0x3161 0x226D2
+0x3165 0x226CD
+0x3169 0x226DB
+0x316D 0x226CF
+0x316F 0x229C0
+0x3172 0x22B81
+0x3173 0x22B82
+0x3174 0x22B8A
+0x3175 0x22BA8
+0x3176 0x22B8C
+0x317D 0x22B8E
+0x3222 0x22B8B
+0x3224 0x22B96
+0x3226 0x22BCC
+0x3229 0x22F4F
+0x322A 0x22F4A
+0x322D 0x22F4B
+0x322E 0x22F3D
+0x3230 0x22F44
+0x3231 0x22F49
+0x3232 0x2309E
+0x3233 0x230F3
+0x3235 0x230F5
+0x3238 0x231B3
+0x323C 0x231E5
+0x323D 0x231B6
+0x323E 0x2F8D8
+0x3240 0x23486
+0x3244 0x234B6
+0x3245 0x23485
+0x3247 0x234AB
+0x324B 0x23A0D
+0x324C 0x23A8B
+0x324D 0x23A8C
+0x3256 0x23B72
+0x3259 0x23D8F
+0x325B 0x23D79
+0x325D 0x23D77
+0x325F 0x23D90
+0x3260 0x23D88
+0x3261 0x23D80
+0x3262 0x23D9E
+0x3265 0x23D82
+0x3266 0x23D34
+0x3267 0x23D89
+0x3269 0x23D85
+0x326A 0x23D7E
+0x326B 0x23D7A
+0x326C 0x23DA6
+0x326E 0x23DB5
+0x326F 0x241F4
+0x3273 0x24229
+0x3274 0x24226
+0x3275 0x2422A
+0x3278 0x2457E
+0x327B 0x2465B
+0x327C 0x24661
+0x327D 0x24660
+0x3321 0x2479B
+0x3324 0x247C3
+0x3326 0x247CD
+0x3331 0x24954
+0x3332 0x24959
+0x3336 0x24AF5
+0x333D 0x24C69
+0x333E 0x24C65
+0x3341 0x24D7C
+0x3344 0x24D80
+0x3346 0x24F65
+0x3349 0x24FDF
+0x334A 0x25060
+0x334C 0x2505E
+0x3353 0x2518F
+0x3354 0x25161
+0x3355 0x2515A
+0x3358 0x25367
+0x335C 0x253BB
+0x3368 0x2579B
+0x336C 0x257A9
+0x336E 0x25966
+0x3373 0x25A72
+0x3374 0x25A76
+0x3375 0x25B14
+0x3379 0x25B0F
+0x337E 0x25E41
+0x3421 0x25E46
+0x3423 0x25E4B
+0x3424 0x25E43
+0x3428 0x25FC6
+0x342A 0x25FC7
+0x342C 0x25FCE
+0x342F 0x25FC9
+0x3431 0x25FCB
+0x3432 0x25FC5
+0x3439 0x26369
+0x343F 0x2641E
+0x3440 0x264BA
+0x3442 0x26552
+0x3443 0x26551
+0x3444 0x26553
+0x3445 0x2669F
+0x3446 0x266DB
+0x3449 0x266E3
+0x344E 0x266D7
+0x344F 0x266E9
+0x3454 0x266DE
+0x3455 0x266DC
+0x3456 0x2693C
+0x3457 0x2F98B
+0x3459 0x26A22
+0x345A 0x26A32
+0x345B 0x26A23
+0x345F 0x26BD4
+0x3460 0x26BC8
+0x3461 0x26BBC
+0x3464 0x26BCD
+0x3468 0x26BBE
+0x346A 0x26C40
+0x346B 0x26BD6
+0x346E 0x26BBD
+0x3470 0x26BBA
+0x3472 0x26BC0
+0x3473 0x2F99B
+0x3474 0x2F99D
+0x3475 0x26BC1
+0x3476 0x271A6
+0x3477 0x271A5
+0x3478 0x271A8
+0x347D 0x2725F
+0x347E 0x27270
+0x3521 0x2726A
+0x3522 0x27265
+0x3523 0x27267
+0x3524 0x2726F
+0x3525 0x27287
+0x3528 0x2763D
+0x3529 0x27643
+0x352B 0x27640
+0x3532 0x27818
+0x3536 0x27819
+0x3537 0x278C1
+0x353B 0x278BC
+0x353C 0x278C8
+0x353E 0x27971
+0x3540 0x2796E
+0x3542 0x27978
+0x3545 0x2F9CD
+0x3546 0x2797A
+0x3547 0x27BB1
+0x3548 0x27BAF
+0x3549 0x27BB0
+0x354E 0x27CA8
+0x354F 0x27CA6
+0x3552 0x27D48
+0x3553 0x27D45
+0x3557 0x27EA0
+0x3558 0x27EA4
+0x355A 0x27FD4
+0x355F 0x27FD2
+0x3560 0x28222
+0x3564 0x282B7
+0x3565 0x282CC
+0x3567 0x284E6
+0x356A 0x284C8
+0x356D 0x286F4
+0x356F 0x286ED
+0x3571 0x2867E
+0x3572 0x2F9E3
+0x3576 0x287F9
+0x3577 0x287FD
+0x3579 0x28807
+0x357E 0x28E78
+0x3621 0x28E7A
+0x3622 0x28E79
+0x3623 0x28F8A
+0x3625 0x2907B
+0x3626 0x291D5
+0x3627 0x291E9
+0x3629 0x291EB
+0x362F 0x2016C
+0x3635 0x202FA
+0x363B 0x20318
+0x363E 0x205F6
+0x3640 0x2078A
+0x3641 0x20789
+0x3643 0x2077F
+0x3644 0x20788
+0x3646 0x20783
+0x3647 0x20784
+0x3648 0x20798
+0x3649 0x20763
+0x364A 0x20787
+0x364C 0x2F827
+0x364E 0x208F5
+0x364F 0x20950
+0x3652 0x20A87
+0x3653 0x20A8A
+0x3654 0x20B65
+0x3655 0x20DB7
+0x3656 0x20DC1
+0x3657 0x20DC7
+0x365A 0x20DC5
+0x365B 0x20DCB
+0x365D 0x20DD1
+0x3661 0x20DB8
+0x3662 0x20DCA
+0x3664 0x20DDE
+0x3666 0x20DCE
+0x366A 0x21368
+0x366C 0x2136B
+0x3670 0x2136A
+0x3672 0x21366
+0x3673 0x21377
+0x3674 0x21396
+0x3675 0x2136E
+0x3676 0x2F856
+0x3678 0x21657
+0x367A 0x21656
+0x367B 0x2179C
+0x367C 0x2179E
+0x3721 0x217A1
+0x3723 0x21A42
+0x3725 0x21A46
+0x3726 0x21A3E
+0x3727 0x21B33
+0x372A 0x21BFA
+0x372C 0x21C97
+0x372D 0x21C9B
+0x372E 0x21CAA
+0x3730 0x21E73
+0x3731 0x21E7C
+0x3733 0x21E86
+0x3737 0x220F3
+0x3738 0x220F0
+0x373E 0x220EC
+0x373F 0x222AF
+0x3742 0x22264
+0x3743 0x22268
+0x3744 0x2235A
+0x3746 0x2251F
+0x3747 0x22525
+0x374B 0x226C6
+0x374C 0x226D6
+0x374D 0x226C3
+0x374F 0x2272C
+0x3751 0x2272E
+0x3752 0x2275E
+0x3753 0x22733
+0x3757 0x2272D
+0x3758 0x22746
+0x375A 0x226C1
+0x375B 0x2273A
+0x375C 0x229CC
+0x375D 0x22B9D
+0x375E 0x22B83
+0x375F 0x22BF6
+0x3763 0x22BF8
+0x3766 0x22BFE
+0x3767 0x22BF3
+0x3769 0x22BEB
+0x376A 0x22BFA
+0x376C 0x22C07
+0x376D 0x22BFC
+0x3772 0x22F72
+0x3773 0x22F73
+0x3774 0x22F74
+0x377A 0x22F5F
+0x377B 0x22F60
+0x377C 0x230AA
+0x377D 0x23134
+0x3821 0x231B4
+0x3823 0x231F0
+0x3826 0x2320D
+0x3827 0x231F3
+0x3828 0x2320F
+0x382B 0x234C9
+0x382E 0x234C5
+0x3830 0x234D7
+0x3831 0x234CC
+0x3833 0x234E7
+0x3836 0x234C1
+0x3838 0x234E8
+0x383A 0x238CB
+0x383D 0x238C8
+0x383E 0x2397A
+0x3840 0x23979
+0x3841 0x2397E
+0x3843 0x23A1B
+0x3847 0x23A1F
+0x3848 0x23A19
+0x384D 0x23B89
+0x3850 0x23B8B
+0x3853 0x23E09
+0x3854 0x23DFE
+0x3855 0x23E00
+0x3858 0x23E0B
+0x385D 0x23E4A
+0x3863 0x24279
+0x3866 0x2426C
+0x3867 0x24299
+0x3868 0x2F91B
+0x3869 0x24262
+0x386A 0x24514
+0x386D 0x245C8
+0x386E 0x245D7
+0x386F 0x2460C
+0x3871 0x24670
+0x3874 0x24671
+0x3875 0x247DF
+0x3876 0x247E4
+0x3878 0x247E7
+0x387C 0x24990
+0x3922 0x24B4C
+0x3927 0x24B4F
+0x3929 0x24C7D
+0x392A 0x24C7E
+0x392B 0x24C7C
+0x392D 0x24C8D
+0x392E 0x24D19
+0x3931 0x24DC0
+0x3937 0x24DB6
+0x3939 0x24DA8
+0x393B 0x24FEB
+0x393C 0x24FE7
+0x393D 0x2506F
+0x393E 0x251C7
+0x3940 0x2519F
+0x3944 0x251C4
+0x394E 0x2519B
+0x394F 0x25197
+0x3950 0x251C5
+0x3951 0x2536B
+0x3952 0x253CE
+0x3955 0x254B1
+0x3956 0x254AE
+0x3957 0x254B0
+0x395B 0x2573E
+0x395C 0x257B5
+0x395D 0x257BA
+0x395F 0x257B2
+0x3960 0x257B4
+0x3966 0x25977
+0x3968 0x25986
+0x3969 0x2597B
+0x396B 0x25A7E
+0x396C 0x25B2E
+0x396E 0x25B2F
+0x3970 0x25B37
+0x3973 0x25B32
+0x3977 0x25B36
+0x3978 0x25B39
+0x3979 0x25B35
+0x397A 0x25E5C
+0x397E 0x25E7B
+0x3A21 0x25E61
+0x3A22 0x25FEE
+0x3A23 0x25FEB
+0x3A24 0x25FEF
+0x3A25 0x26020
+0x3A29 0x26230
+0x3A2C 0x262BE
+0x3A2E 0x26367
+0x3A2F 0x2637C
+0x3A32 0x26424
+0x3A36 0x26429
+0x3A37 0x264EF
+0x3A3C 0x2670D
+0x3A46 0x26764
+0x3A48 0x26715
+0x3A50 0x26A35
+0x3A51 0x26A36
+0x3A52 0x26A34
+0x3A53 0x26A37
+0x3A54 0x26C47
+0x3A55 0x26C2B
+0x3A57 0x26C41
+0x3A58 0x26C43
+0x3A5A 0x26C42
+0x3A5D 0x26C32
+0x3A62 0x26C44
+0x3A63 0x26C4A
+0x3A66 0x2F9A0
+0x3A69 0x26C54
+0x3A6A 0x26C6E
+0x3A6B 0x26C52
+0x3A73 0x27292
+0x3A75 0x2F9B8
+0x3A77 0x272BF
+0x3A7C 0x27641
+0x3A7D 0x27669
+0x3A7E 0x27665
+0x3B24 0x27822
+0x3B25 0x2781D
+0x3B26 0x278D2
+0x3B27 0x278DA
+0x3B28 0x278DB
+0x3B2D 0x279A4
+0x3B2E 0x2799E
+0x3B32 0x2799D
+0x3B37 0x279AD
+0x3B38 0x279A6
+0x3B39 0x279A7
+0x3B3A 0x27BB3
+0x3B3B 0x27BE0
+0x3B3C 0x27C35
+0x3B3D 0x27C37
+0x3B40 0x27D4A
+0x3B44 0x27E5E
+0x3B46 0x27EC0
+0x3B4E 0x27FF9
+0x3B56 0x284F0
+0x3B58 0x284F3
+0x3B59 0x2851B
+0x3B5A 0x284F2
+0x3B5B 0x284FB
+0x3B5C 0x2871C
+0x3B5D 0x28713
+0x3B5F 0x2870F
+0x3B61 0x28816
+0x3B62 0x28811
+0x3B63 0x28812
+0x3B65 0x2880E
+0x3B68 0x28C67
+0x3B69 0x28CF2
+0x3B6A 0x28CDA
+0x3B6C 0x28CDC
+0x3B6E 0x28F94
+0x3B6F 0x28F9B
+0x3B70 0x28F92
+0x3B71 0x28F9A
+0x3B72 0x29088
+0x3B73 0x29086
+0x3B75 0x291EF
+0x3B78 0x2925E
+0x3B7A 0x29458
+0x3B7C 0x29456
+0x3B7D 0x29454
+0x3C21 0x2959B
+0x3C22 0x29696
+0x3C23 0x296A4
+0x3C26 0x2969A
+0x3C27 0x29A12
+0x3C2B 0x2036B
+0x3C2E 0x20337
+0x3C2F 0x2033C
+0x3C30 0x2F80A
+0x3C31 0x204F7
+0x3C33 0x20566
+0x3C35 0x207A9
+0x3C36 0x207AE
+0x3C37 0x207AD
+0x3C38 0x207C8
+0x3C39 0x207A5
+0x3C3A 0x207B0
+0x3C3B 0x20895
+0x3C3D 0x20925
+0x3C3F 0x20A99
+0x3C41 0x20B74
+0x3C42 0x20B70
+0x3C43 0x20B6F
+0x3C44 0x20E41
+0x3C45 0x20E54
+0x3C48 0x20E40
+0x3C49 0x20E38
+0x3C4D 0x20E52
+0x3C4E 0x20E3A
+0x3C4F 0x20E57
+0x3C50 0x2F84A
+0x3C51 0x20E59
+0x3C54 0x213B4
+0x3C55 0x213C0
+0x3C5A 0x21375
+0x3C5D 0x21660
+0x3C5E 0x21647
+0x3C60 0x217F0
+0x3C62 0x217EF
+0x3C65 0x217EC
+0x3C66 0x21983
+0x3C68 0x21984
+0x3C69 0x2198F
+0x3C6B 0x21A61
+0x3C6D 0x21A69
+0x3C70 0x21A62
+0x3C7A 0x21EAE
+0x3C7D 0x21EB2
+0x3D22 0x2210B
+0x3D24 0x22110
+0x3D25 0x2210D
+0x3D2B 0x2227F
+0x3D2C 0x22281
+0x3D31 0x2240B
+0x3D32 0x2254E
+0x3D35 0x227EA
+0x3D36 0x22745
+0x3D3F 0x22728
+0x3D40 0x2275D
+0x3D41 0x229DC
+0x3D44 0x229D4
+0x3D46 0x22C64
+0x3D47 0x22C68
+0x3D49 0x22C62
+0x3D4B 0x22C61
+0x3D4D 0x22C66
+0x3D51 0x22BF2
+0x3D52 0x22C69
+0x3D53 0x22C67
+0x3D55 0x22F9A
+0x3D56 0x22F9B
+0x3D57 0x22F85
+0x3D58 0x22F9C
+0x3D5A 0x22FA4
+0x3D5E 0x22F99
+0x3D5F 0x22F86
+0x3D60 0x22F90
+0x3D61 0x23081
+0x3D62 0x230AE
+0x3D66 0x23138
+0x3D6A 0x2353B
+0x3D70 0x2354C
+0x3D73 0x23547
+0x3D74 0x23535
+0x3D77 0x23533
+0x3D79 0x23582
+0x3D7A 0x23540
+0x3E25 0x23A36
+0x3E26 0x23B0E
+0x3E2A 0x23BAD
+0x3E2B 0x23BAA
+0x3E2C 0x23E17
+0x3E2E 0x23E67
+0x3E31 0x23E72
+0x3E33 0x2F90A
+0x3E34 0x23E61
+0x3E35 0x23EB0
+0x3E3A 0x23E6E
+0x3E3B 0x23E64
+0x3E3D 0x23E8C
+0x3E3E 0x23E66
+0x3E40 0x23E6B
+0x3E41 0x23E5F
+0x3E42 0x23E74
+0x3E43 0x23E65
+0x3E44 0x242BB
+0x3E45 0x242BE
+0x3E47 0x242B9
+0x3E4A 0x242EF
+0x3E4D 0x245DA
+0x3E50 0x24690
+0x3E51 0x247E9
+0x3E55 0x24811
+0x3E56 0x2480D
+0x3E57 0x247ED
+0x3E58 0x24821
+0x3E5A 0x24981
+0x3E5B 0x249B1
+0x3E5C 0x24B01
+0x3E5E 0x24B5E
+0x3E5F 0x24B62
+0x3E64 0x24B5B
+0x3E66 0x24C96
+0x3E67 0x24C93
+0x3E6A 0x24C92
+0x3E6C 0x2F939
+0x3E70 0x24DC4
+0x3E71 0x24DC7
+0x3E72 0x24DC3
+0x3E75 0x24DC8
+0x3E79 0x24DCA
+0x3E7B 0x24DC5
+0x3E7C 0x24DCF
+0x3E7D 0x24DDC
+0x3E7E 0x24F7C
+0x3F21 0x25001
+0x3F23 0x251D3
+0x3F24 0x251DC
+0x3F28 0x251D4
+0x3F2A 0x251CC
+0x3F2E 0x251D6
+0x3F2F 0x251DB
+0x3F31 0x251D5
+0x3F32 0x253D9
+0x3F34 0x253DD
+0x3F35 0x253DC
+0x3F36 0x253E0
+0x3F37 0x254CC
+0x3F41 0x254D2
+0x3F43 0x254D3
+0x3F48 0x2568D
+0x3F4E 0x257D8
+0x3F51 0x257BC
+0x3F56 0x25A8A
+0x3F58 0x25A8B
+0x3F59 0x25A8D
+0x3F5C 0x25B53
+0x3F5F 0x25B59
+0x3F64 0x25B56
+0x3F65 0x25B57
+0x3F68 0x25E73
+0x3F69 0x2601B
+0x3F6B 0x26021
+0x3F6C 0x26016
+0x3F6D 0x26018
+0x3F70 0x26044
+0x3F72 0x26026
+0x3F74 0x26236
+0x3F79 0x2643A
+0x3F7B 0x264F4
+0x3F7E 0x26762
+0x4021 0x2675B
+0x4022 0x2676A
+0x4024 0x26768
+0x402B 0x26781
+0x4031 0x26CE7
+0x4033 0x26CE6
+0x4034 0x26CD1
+0x4035 0x26D11
+0x4037 0x26CD0
+0x4038 0x26CD9
+0x4039 0x26D0A
+0x403B 0x26CDA
+0x403C 0x26CDD
+0x403D 0x26CC8
+0x403E 0x26CE2
+0x403F 0x26CE9
+0x4040 0x26CCB
+0x4042 0x26CCC
+0x4043 0x26CC1
+0x4045 0x26CDE
+0x404A 0x26D51
+0x404B 0x26D12
+0x404D 0x26CE0
+0x404E 0x26D2B
+0x404F 0x2F9B4
+0x4050 0x272D8
+0x4051 0x272D1
+0x4053 0x272D2
+0x4054 0x272CD
+0x4058 0x2733D
+0x405A 0x272CA
+0x405C 0x272CB
+0x405E 0x272D7
+0x405F 0x275F4
+0x4063 0x27687
+0x4064 0x2768B
+0x4065 0x27683
+0x4068 0x279C5
+0x4069 0x279D2
+0x406A 0x279C6
+0x406B 0x279D3
+0x406F 0x279F0
+0x4070 0x279CD
+0x4071 0x279CC
+0x4072 0x279DC
+0x4073 0x279D6
+0x4075 0x27BE6
+0x4076 0x27C41
+0x4077 0x27C3F
+0x4079 0x27CC5
+0x407A 0x27CC0
+0x407B 0x27CC6
+0x407C 0x27CBE
+0x407D 0x27CBF
+0x4122 0x27D63
+0x4123 0x27ED3
+0x4124 0x27EDA
+0x4125 0x27ED5
+0x412B 0x282EE
+0x412D 0x282FC
+0x412E 0x28414
+0x4130 0x28523
+0x4131 0x28522
+0x4132 0x28530
+0x4133 0x286B5
+0x4135 0x28738
+0x4137 0x2873F
+0x4144 0x28968
+0x4145 0x28967
+0x4147 0x28965
+0x414A 0x28C75
+0x414B 0x28CF7
+0x414C 0x28CF3
+0x414D 0x28CF6
+0x414F 0x28D00
+0x4151 0x28CFF
+0x4152 0x28CF5
+0x4158 0x29092
+0x4159 0x29206
+0x415B 0x29207
+0x415C 0x2926B
+0x415E 0x2926C
+0x4160 0x29393
+0x4162 0x29394
+0x4166 0x29462
+0x4167 0x29463
+0x4169 0x2945F
+0x416A 0x29464
+0x416B 0x2945B
+0x416C 0x29459
+0x416F 0x295A4
+0x4170 0x295AC
+0x4173 0x296B5
+0x4176 0x296AE
+0x4178 0x296C5
+0x417C 0x2983B
+0x4223 0x29ABF
+0x4224 0x29C2B
+0x4225 0x29C84
+0x4226 0x29C80
+0x4227 0x29D4D
+0x4228 0x29D4F
+0x422A 0x29D4C
+0x422B 0x29F92
+0x4230 0x203AE
+0x4231 0x20379
+0x4234 0x20371
+0x4236 0x203B3
+0x4238 0x2032C
+0x4239 0x20377
+0x423A 0x2052F
+0x423B 0x207C3
+0x423D 0x207CD
+0x4240 0x207C9
+0x4244 0x207CE
+0x4245 0x208A5
+0x4246 0x208A0
+0x4247 0x208FE
+0x4248 0x20959
+0x4249 0x20A9A
+0x424C 0x20EE4
+0x424D 0x20ED7
+0x424E 0x20EDC
+0x4250 0x20EE7
+0x4254 0x20EE5
+0x425A 0x21414
+0x425C 0x213F1
+0x4261 0x215B6
+0x4262 0x2166E
+0x4263 0x2166C
+0x4264 0x21681
+0x4265 0x21842
+0x426A 0x2181A
+0x426E 0x21827
+0x426F 0x21825
+0x4270 0x21817
+0x4271 0x2181C
+0x4272 0x2183D
+0x4273 0x21820
+0x4276 0x21A81
+0x427A 0x21C09
+0x427B 0x21CC6
+0x427C 0x21CC4
+0x427E 0x21CC5
+0x4323 0x21EEF
+0x4325 0x21EDF
+0x4326 0x21EDE
+0x4327 0x21EEE
+0x4328 0x21EF5
+0x4329 0x21EEC
+0x432B 0x21EDD
+0x4334 0x22122
+0x4337 0x22297
+0x4338 0x22295
+0x433C 0x224A9
+0x433E 0x22553
+0x4340 0x22556
+0x4341 0x22555
+0x4344 0x227E3
+0x4345 0x227E2
+0x434F 0x227A9
+0x4351 0x2F8AB
+0x4352 0x22833
+0x4353 0x2280A
+0x4355 0x22A59
+0x4357 0x22CBC
+0x4359 0x22CC4
+0x435A 0x22CC7
+0x435B 0x22CC6
+0x435F 0x22CB8
+0x4360 0x22CDA
+0x4362 0x22CB7
+0x4363 0x22CC0
+0x4365 0x22CCD
+0x4367 0x22FBC
+0x4368 0x22FAB
+0x436A 0x23086
+0x436C 0x2325A
+0x4370 0x23343
+0x4372 0x235AC
+0x4376 0x235BE
+0x437B 0x235AB
+0x4426 0x21B3E
+0x4429 0x238F9
+0x442B 0x238F3
+0x442C 0x238F7
+0x442E 0x23A45
+0x442F 0x23A48
+0x4434 0x23A44
+0x4436 0x23AAF
+0x4437 0x23AB1
+0x443B 0x23BCF
+0x443D 0x23BCB
+0x443E 0x23BCD
+0x4440 0x23C50
+0x4441 0x23EEC
+0x4442 0x23F1A
+0x4445 0x23ED8
+0x4447 0x23ED0
+0x4448 0x23ED1
+0x444B 0x23E7B
+0x444C 0x23ED2
+0x444E 0x23ED4
+0x444F 0x23EE7
+0x4450 0x23EDF
+0x4451 0x23EDE
+0x4453 0x23ED9
+0x4454 0x23ECF
+0x4455 0x2430D
+0x445D 0x24338
+0x4461 0x246A9
+0x446B 0x2483E
+0x446C 0x24846
+0x446D 0x249ED
+0x446E 0x2F930
+0x4472 0x24B6C
+0x447A 0x24CAC
+0x447D 0x24DC9
+0x4522 0x24E12
+0x4525 0x24DFD
+0x4526 0x24E01
+0x4527 0x24E11
+0x4529 0x24E89
+0x452A 0x24E05
+0x452B 0x24DFE
+0x452C 0x24E0B
+0x452D 0x24E20
+0x452E 0x24E04
+0x452F 0x24F88
+0x4531 0x25002
+0x4533 0x25003
+0x453A 0x25229
+0x453B 0x2523B
+0x453E 0x25206
+0x4545 0x25203
+0x4547 0x25378
+0x4548 0x25379
+0x4549 0x2537D
+0x454B 0x2537F
+0x4550 0x25532
+0x4552 0x25500
+0x4554 0x25522
+0x4556 0x256A9
+0x455C 0x25804
+0x455F 0x2F959
+0x4561 0x259B8
+0x4562 0x25A9B
+0x4567 0x25B92
+0x456C 0x25B8F
+0x456F 0x25B98
+0x4571 0x25BAE
+0x4573 0x25E9D
+0x4576 0x26049
+0x4577 0x26050
+0x4578 0x26046
+0x457A 0x2604E
+0x457D 0x26055
+0x4622 0x26064
+0x4624 0x26238
+0x4631 0x264FE
+0x463A 0x267A6
+0x4643 0x2679C
+0x4644 0x26799
+0x4648 0x267B5
+0x4649 0x267A3
+0x464A 0x267A0
+0x464B 0x267A7
+0x464C 0x2679B
+0x464D 0x269DF
+0x464E 0x269E1
+0x4652 0x26A4D
+0x4654 0x26DF3
+0x4655 0x26D6F
+0x4656 0x26D69
+0x4659 0x26D6B
+0x465A 0x26D78
+0x465B 0x26D87
+0x465D 0x26D85
+0x465E 0x26D82
+0x465F 0x26D90
+0x4662 0x26D80
+0x4663 0x26D67
+0x4666 0x26D61
+0x4668 0x26D93
+0x466A 0x26DF2
+0x466B 0x26D86
+0x466E 0x271CD
+0x466F 0x271C4
+0x4674 0x2730F
+0x4677 0x2730D
+0x467A 0x27373
+0x467C 0x2F9BA
+0x467D 0x2730A
+0x4721 0x27308
+0x4722 0x27313
+0x4724 0x275F8
+0x4728 0x276AB
+0x4729 0x276A8
+0x472C 0x276A5
+0x472F 0x276C3
+0x4730 0x276A4
+0x4732 0x276D4
+0x4733 0x276BA
+0x4734 0x277F1
+0x4737 0x2783F
+0x4739 0x278EA
+0x473B 0x279F7
+0x473E 0x279FA
+0x473F 0x279F5
+0x4741 0x279FE
+0x4744 0x27A00
+0x4747 0x27A02
+0x4748 0x279FB
+0x4749 0x27A07
+0x474B 0x27A1A
+0x474D 0x27BB8
+0x4750 0x27BE9
+0x4751 0x27BEB
+0x4752 0x27C50
+0x4753 0x27C4F
+0x4755 0x27D86
+0x4757 0x27D8E
+0x475C 0x27EF0
+0x475D 0x27EFB
+0x4760 0x28042
+0x4763 0x28085
+0x4768 0x28305
+0x476F 0x2874B
+0x4772 0x28763
+0x477A 0x28999
+0x477C 0x28C81
+0x477D 0x28D17
+0x477E 0x28D10
+0x4821 0x28D12
+0x4825 0x28EFA
+0x4826 0x28EF3
+0x4827 0x28EF2
+0x4828 0x28EF5
+0x4829 0x28EF6
+0x482A 0x28FBB
+0x482B 0x28FC2
+0x482C 0x290A7
+0x482F 0x290A8
+0x4830 0x290A3
+0x4832 0x290AA
+0x4836 0x291DC
+0x4839 0x2920F
+0x483C 0x29279
+0x483E 0x2927F
+0x483F 0x29285
+0x4845 0x2941B
+0x4848 0x29477
+0x4849 0x29476
+0x484A 0x29498
+0x484F 0x2947A
+0x4852 0x295BC
+0x4853 0x295BA
+0x4855 0x295B6
+0x4858 0x295B4
+0x485A 0x296CF
+0x4861 0x2987B
+0x4863 0x29A1C
+0x4864 0x29A21
+0x4865 0x29A1D
+0x4866 0x29AC0
+0x4868 0x29AFF
+0x486C 0x29D56
+0x486E 0x29FA1
+0x486F 0x29FA2
+0x4870 0x29FA6
+0x4871 0x2A256
+0x4872 0x2A257
+0x4875 0x2A301
+0x4876 0x2A3ED
+0x4877 0x2FA1C
+0x4878 0x2A5F2
+0x487A 0x203B8
+0x487C 0x203C0
+0x487E 0x203B7
+0x4921 0x203E1
+0x4924 0x207E8
+0x4926 0x208B2
+0x4928 0x20AAE
+0x492B 0x20F7E
+0x492F 0x20F76
+0x4932 0x20F96
+0x4934 0x21420
+0x4935 0x21421
+0x4936 0x21423
+0x4937 0x21429
+0x4938 0x21677
+0x4939 0x21851
+0x493B 0x21856
+0x493D 0x21888
+0x493E 0x21859
+0x493F 0x21855
+0x4941 0x21997
+0x4942 0x21998
+0x4947 0x21AA1
+0x4948 0x21AA3
+0x494E 0x21F0A
+0x4951 0x21F3D
+0x4952 0x21F0C
+0x4956 0x2213D
+0x4957 0x22139
+0x4958 0x222B0
+0x4959 0x222B2
+0x495A 0x222AE
+0x4960 0x22420
+0x4962 0x2256E
+0x4963 0x2256D
+0x4964 0x2256A
+0x4966 0x22832
+0x496A 0x22839
+0x496E 0x227A3
+0x4970 0x2287F
+0x4971 0x22835
+0x4972 0x2283D
+0x4973 0x229F4
+0x4974 0x229F5
+0x4977 0x22D48
+0x4978 0x22D28
+0x497B 0x22D27
+0x497C 0x22D32
+0x497D 0x22D2C
+0x4A21 0x22D2E
+0x4A25 0x22D23
+0x4A26 0x22D31
+0x4A27 0x2F8C5
+0x4A2C 0x22FC9
+0x4A2D 0x23089
+0x4A2F 0x230BB
+0x4A33 0x23397
+0x4A34 0x23393
+0x4A35 0x23628
+0x4A3B 0x23618
+0x4A3C 0x2363B
+0x4A3E 0x23627
+0x4A3F 0x23624
+0x4A40 0x2361B
+0x4A41 0x23631
+0x4A43 0x23626
+0x4A44 0x236A3
+0x4A45 0x2363F
+0x4A46 0x23622
+0x4A47 0x23619
+0x4A49 0x23641
+0x4A4A 0x2362B
+0x4A4D 0x2390C
+0x4A51 0x23A4E
+0x4A52 0x23AB9
+0x4A53 0x23AFA
+0x4A54 0x23BE9
+0x4A55 0x23BE8
+0x4A56 0x23BE4
+0x4A5A 0x23F5F
+0x4A5B 0x23F5D
+0x4A5C 0x23F52
+0x4A5E 0x23F74
+0x4A60 0x23F46
+0x4A63 0x23FAA
+0x4A65 0x23F4A
+0x4A66 0x23F59
+0x4A67 0x23F4B
+0x4A6B 0x24350
+0x4A70 0x246D0
+0x4A74 0x246CC
+0x4A78 0x24864
+0x4A79 0x24865
+0x4A7D 0x2485C
+0x4A7E 0x24A15
+0x4B28 0x24B79
+0x4B2B 0x24CC5
+0x4B2C 0x24CB8
+0x4B2D 0x24E2C
+0x4B30 0x24E37
+0x4B31 0x24E35
+0x4B32 0x24E31
+0x4B34 0x24E2F
+0x4B36 0x24E2B
+0x4B39 0x24E2D
+0x4B3A 0x24E2A
+0x4B3C 0x24F95
+0x4B3E 0x2523E
+0x4B40 0x25247
+0x4B41 0x25245
+0x4B46 0x25252
+0x4B48 0x25270
+0x4B49 0x25250
+0x4B4A 0x25258
+0x4B4B 0x25251
+0x4B4C 0x2523D
+0x4B4E 0x25241
+0x4B4F 0x2520C
+0x4B50 0x2523C
+0x4B51 0x25386
+0x4B52 0x25383
+0x4B53 0x25389
+0x4B54 0x253F3
+0x4B5A 0x2552D
+0x4B5F 0x256C5
+0x4B60 0x2F955
+0x4B67 0x25843
+0x4B69 0x25837
+0x4B6A 0x25845
+0x4B6D 0x259E5
+0x4B6E 0x25AA6
+0x4B6F 0x25BDB
+0x4B71 0x25BDA
+0x4B72 0x25BE6
+0x4B7C 0x25BF8
+0x4B7D 0x25BE9
+0x4C23 0x25BE8
+0x4C24 0x25BF6
+0x4C29 0x25BE7
+0x4C2F 0x25BD5
+0x4C32 0x25ED3
+0x4C33 0x25EC7
+0x4C34 0x25ED1
+0x4C36 0x25EC3
+0x4C38 0x26080
+0x4C39 0x26098
+0x4C3B 0x26084
+0x4C41 0x26097
+0x4C42 0x26083
+0x4C43 0x26081
+0x4C46 0x2608C
+0x4C47 0x26242
+0x4C48 0x263AB
+0x4C4A 0x263A3
+0x4C4B 0x263A6
+0x4C4C 0x2645C
+0x4C4D 0x26469
+0x4C4E 0x26467
+0x4C50 0x2658B
+0x4C51 0x265A8
+0x4C53 0x267D8
+0x4C56 0x2F989
+0x4C57 0x267DC
+0x4C59 0x267E0
+0x4C5A 0x267E5
+0x4C60 0x26918
+0x4C61 0x26919
+0x4C66 0x26A5F
+0x4C67 0x26A5E
+0x4C69 0x26E02
+0x4C75 0x26E12
+0x4C76 0x26E36
+0x4C79 0x2F9A8
+0x4C7B 0x26E23
+0x4C7C 0x26E03
+0x4C7E 0x26E00
+0x4D22 0x26E46
+0x4D23 0x26E61
+0x4D27 0x27384
+0x4D29 0x2736B
+0x4D2A 0x27362
+0x4D2B 0x27356
+0x4D2C 0x2736A
+0x4D2D 0x27352
+0x4D2E 0x27355
+0x4D32 0x27361
+0x4D33 0x2F9BB
+0x4D34 0x27358
+0x4D35 0x27377
+0x4D38 0x276D7
+0x4D3B 0x276DE
+0x4D3D 0x276DF
+0x4D41 0x276D1
+0x4D43 0x276E2
+0x4D44 0x276E1
+0x4D45 0x276DD
+0x4D49 0x2784B
+0x4D4B 0x2784E
+0x4D4D 0x278FC
+0x4D50 0x278FA
+0x4D52 0x278FB
+0x4D54 0x278FE
+0x4D57 0x27A31
+0x4D5D 0x27A38
+0x4D62 0x27A3A
+0x4D63 0x27BBB
+0x4D66 0x27C59
+0x4D69 0x27CDB
+0x4D6A 0x27CDF
+0x4D6B 0x27CE2
+0x4D6F 0x27D9E
+0x4D70 0x27DA1
+0x4D72 0x27F10
+0x4D7A 0x28076
+0x4D7B 0x2807F
+0x4D7C 0x2807D
+0x4E24 0x28082
+0x4E25 0x28257
+0x4E2C 0x2832E
+0x4E2F 0x2858B
+0x4E30 0x2858D
+0x4E34 0x28590
+0x4E36 0x286EC
+0x4E37 0x2876F
+0x4E38 0x2876B
+0x4E39 0x28771
+0x4E3A 0x28778
+0x4E42 0x289AD
+0x4E49 0x28D2F
+0x4E4B 0x28F78
+0x4E4D 0x291F8
+0x4E4E 0x29219
+0x4E50 0x2929B
+0x4E51 0x29294
+0x4E52 0x29297
+0x4E53 0x29299
+0x4E54 0x293A6
+0x4E55 0x293A4
+0x4E56 0x293A7
+0x4E58 0x29495
+0x4E5B 0x29490
+0x4E5E 0x2949B
+0x4E5F 0x295C4
+0x4E62 0x295C6
+0x4E68 0x296E3
+0x4E6A 0x296DF
+0x4E6B 0x296DD
+0x4E6C 0x296E7
+0x4E71 0x29A2D
+0x4E72 0x29A2C
+0x4E77 0x29A34
+0x4E78 0x29A38
+0x4E7A 0x29B1D
+0x4E7C 0x29B1A
+0x4E7D 0x29B1B
+0x4E7E 0x29B14
+0x4F22 0x29B17
+0x4F23 0x29C21
+0x4F26 0x29CAA
+0x4F27 0x29CA1
+0x4F2D 0x29D63
+0x4F2E 0x29D79
+0x4F2F 0x29D60
+0x4F31 0x29D62
+0x4F33 0x29D61
+0x4F36 0x29D70
+0x4F38 0x29D6A
+0x4F3A 0x29FC8
+0x4F3C 0x29FC5
+0x4F3D 0x29FBE
+0x4F3E 0x29FC2
+0x4F43 0x29FC7
+0x4F45 0x29FB0
+0x4F46 0x29FCA
+0x4F4E 0x2A30D
+0x4F4F 0x2A307
+0x4F50 0x2A396
+0x4F51 0x2A3EF
+0x4F54 0x2A41E
+0x4F55 0x2A41D
+0x4F57 0x2A590
+0x4F58 0x203EB
+0x4F5C 0x203EE
+0x4F5E 0x203EF
+0x4F5F 0x203EC
+0x4F60 0x207FA
+0x4F65 0x20904
+0x4F66 0x20FD3
+0x4F68 0x20FD1
+0x4F69 0x20FFA
+0x4F6E 0x20FC8
+0x4F70 0x20FD5
+0x4F72 0x20FCD
+0x4F73 0x20FD2
+0x4F74 0x20FFB
+0x4F75 0x2122A
+0x4F76 0x21488
+0x4F77 0x21461
+0x4F79 0x21463
+0x4F7A 0x21462
+0x4F7C 0x20057
+0x4F7D 0x218C8
+0x4F7E 0x21898
+0x5022 0x21AC1
+0x5023 0x21F3F
+0x5024 0x21F41
+0x5028 0x22152
+0x502A 0x2215E
+0x502D 0x222C7
+0x502F 0x22370
+0x5030 0x22427
+0x5032 0x22471
+0x5033 0x224B0
+0x5035 0x22842
+0x5036 0x22843
+0x503C 0x22857
+0x503D 0x2289D
+0x503E 0x22D89
+0x503F 0x22D8D
+0x5040 0x22D8B
+0x5041 0x22D80
+0x5042 0x22D92
+0x5043 0x22D8A
+0x5044 0x22DC8
+0x5046 0x22D8F
+0x5047 0x22D93
+0x5048 0x22D91
+0x504A 0x22FF2
+0x504B 0x22FDE
+0x504D 0x230C8
+0x5054 0x232A7
+0x5055 0x232A1
+0x5057 0x2368C
+0x5058 0x2367F
+0x505B 0x2367B
+0x505C 0x23695
+0x505D 0x23699
+0x505F 0x2368E
+0x5061 0x236DA
+0x5062 0x2368A
+0x5063 0x2369C
+0x5065 0x2367E
+0x5068 0x2391A
+0x5069 0x23A55
+0x506C 0x23A60
+0x5070 0x23BFB
+0x5073 0x23BFD
+0x5079 0x23FD0
+0x507C 0x23FC5
+0x507E 0x23FD2
+0x5121 0x24011
+0x5126 0x243AD
+0x5127 0x243A4
+0x5128 0x243A9
+0x5129 0x243B0
+0x512A 0x2439D
+0x512C 0x24598
+0x5131 0x24892
+0x5133 0x2488A
+0x5135 0x2488D
+0x5136 0x24896
+0x513B 0x24A45
+0x513C 0x24A4B
+0x513D 0x24B0F
+0x513E 0x24B16
+0x5140 0x24B8A
+0x5143 0x24CC9
+0x5145 0x24CC8
+0x5146 0x24CCA
+0x5147 0x24E64
+0x514B 0x24E5D
+0x514C 0x24E63
+0x5151 0x24E88
+0x5152 0x24F3A
+0x5153 0x24F39
+0x5158 0x25017
+0x5159 0x25093
+0x515B 0x25095
+0x515E 0x25276
+0x5162 0x25280
+0x5163 0x2527B
+0x5165 0x25248
+0x5166 0x252A8
+0x5167 0x25288
+0x5168 0x2538B
+0x5169 0x2538A
+0x516A 0x2538C
+0x516B 0x253FC
+0x516F 0x25558
+0x5171 0x25551
+0x5172 0x25555
+0x5173 0x25553
+0x5177 0x256DC
+0x517B 0x2585C
+0x517E 0x25865
+0x5221 0x2F95A
+0x5223 0x259EE
+0x5226 0x259F0
+0x5228 0x259F2
+0x522A 0x25C35
+0x522C 0x25C22
+0x522E 0x25C20
+0x5230 0x25C2D
+0x5231 0x25C28
+0x5232 0x25C26
+0x5233 0x25C3C
+0x5235 0x25C38
+0x523C 0x25C2A
+0x523E 0x25C1A
+0x523F 0x25C30
+0x5240 0x25BE3
+0x5241 0x25C19
+0x5242 0x25EE9
+0x5243 0x25EE7
+0x5245 0x260D6
+0x5246 0x260C4
+0x5248 0x26087
+0x524A 0x260C7
+0x524B 0x260D9
+0x524D 0x260DF
+0x5250 0x2630A
+0x5251 0x26301
+0x5252 0x263B1
+0x5254 0x263C1
+0x5257 0x26476
+0x5258 0x2650D
+0x5259 0x2650E
+0x525D 0x26807
+0x525F 0x26809
+0x5260 0x26816
+0x5265 0x2680E
+0x5268 0x26806
+0x5269 0x2691E
+0x526A 0x2694A
+0x5270 0x26EA6
+0x5271 0x26E91
+0x5274 0x26EB8
+0x5275 0x26E96
+0x5278 0x26EC5
+0x527D 0x26F0A
+0x5326 0x26EB2
+0x5328 0x26EB7
+0x5329 0x26EB4
+0x532A 0x26E89
+0x532B 0x26E8D
+0x532D 0x26E87
+0x532E 0x26EC2
+0x532F 0x26E9C
+0x5330 0x26E92
+0x5332 0x26ECA
+0x5334 0x26E8A
+0x5335 0x271E0
+0x5337 0x271E6
+0x5338 0x271E5
+0x533A 0x273A5
+0x533B 0x273B3
+0x533F 0x273B5
+0x5340 0x273AF
+0x5342 0x273B0
+0x5343 0x273CC
+0x5345 0x273A2
+0x5346 0x273BE
+0x5347 0x273C6
+0x5348 0x273AC
+0x5349 0x273AE
+0x534C 0x2F9C3
+0x534D 0x27708
+0x534E 0x27705
+0x5351 0x276FE
+0x5354 0x27700
+0x5357 0x27864
+0x5358 0x27868
+0x535D 0x2786A
+0x535E 0x27869
+0x535F 0x2790D
+0x5360 0x27912
+0x5363 0x2790F
+0x5365 0x27A67
+0x5366 0x27A79
+0x5367 0x27A72
+0x5368 0x27A66
+0x5369 0x27A7C
+0x536C 0x27A68
+0x536D 0x27A85
+0x536E 0x27A76
+0x536F 0x27A74
+0x5370 0x27A71
+0x5371 0x27A64
+0x5374 0x27BF8
+0x5376 0x27C6C
+0x5378 0x27CEB
+0x537C 0x27DB8
+0x5421 0x27F2D
+0x5422 0x27F2E
+0x5423 0x27F28
+0x5424 0x27F29
+0x5425 0x27F31
+0x5427 0x27F2F
+0x5428 0x27F2A
+0x542A 0x280A4
+0x542B 0x280B7
+0x542C 0x280BF
+0x5431 0x28263
+0x5435 0x28367
+0x5436 0x285BE
+0x5437 0x2F9E0
+0x5438 0x28795
+0x5439 0x2879C
+0x543E 0x28871
+0x543F 0x28872
+0x5441 0x2886F
+0x5444 0x289F1
+0x5447 0x289E8
+0x544A 0x2F9EA
+0x544D 0x28D49
+0x544E 0x28D64
+0x5450 0x28D48
+0x5454 0x28F2C
+0x5455 0x28FE1
+0x5456 0x28FEF
+0x5457 0x290C0
+0x545A 0x290D7
+0x545B 0x290D4
+0x545E 0x292AD
+0x5465 0x292AE
+0x5466 0x292AC
+0x546B 0x29427
+0x546C 0x294AE
+0x546E 0x294B0
+0x5471 0x294C0
+0x5472 0x294C4
+0x5479 0x29707
+0x547B 0x296FD
+0x5523 0x2FA04
+0x5524 0x2981B
+0x5525 0x2981C
+0x5527 0x298B2
+0x5528 0x298B4
+0x5529 0x298B7
+0x552A 0x298B1
+0x552B 0x298B3
+0x552C 0x298AE
+0x5533 0x29A3F
+0x5534 0x29B36
+0x5537 0x29B31
+0x5538 0x29B3B
+0x5539 0x29B35
+0x553A 0x29B3A
+0x553B 0x29B37
+0x553C 0x29C22
+0x553D 0x29C36
+0x553E 0x29C32
+0x5540 0x29CC0
+0x5546 0x29D85
+0x5549 0x29D89
+0x554C 0x29FE1
+0x5551 0x2A00A
+0x5553 0x2A009
+0x5556 0x29FE8
+0x555B 0x2A318
+0x5564 0x2A5C5
+0x5566 0x2040D
+0x5567 0x2040C
+0x5568 0x20421
+0x556A 0x20616
+0x556B 0x2080E
+0x556E 0x20817
+0x5571 0x21048
+0x5575 0x21055
+0x5576 0x21049
+0x5577 0x2104C
+0x5579 0x2104F
+0x557A 0x2103D
+0x557D 0x2148A
+0x557E 0x214A8
+0x5621 0x2168A
+0x5623 0x218CB
+0x5625 0x218D5
+0x5626 0x221D4
+0x5629 0x21F5C
+0x562A 0x21F75
+0x562C 0x22161
+0x562E 0x21696
+0x5630 0x2258A
+0x5631 0x228D0
+0x5634 0x22849
+0x5635 0x228CF
+0x5637 0x22DD6
+0x5638 0x22D7F
+0x563A 0x22DD2
+0x563B 0x22DCF
+0x563C 0x23006
+0x563D 0x23009
+0x5642 0x23706
+0x5643 0x236F1
+0x5644 0x23704
+0x5646 0x236FA
+0x5647 0x236F4
+0x564A 0x236F9
+0x564C 0x2368B
+0x564D 0x23703
+0x5650 0x239A2
+0x5654 0x23C0C
+0x5655 0x23C0B
+0x565A 0x24024
+0x565D 0x2F914
+0x565F 0x24025
+0x5661 0x243F6
+0x5663 0x243FB
+0x5665 0x24532
+0x5666 0x245FB
+0x5668 0x246F2
+0x5669 0x246F3
+0x566D 0x2489C
+0x566E 0x24A72
+0x5670 0x24A74
+0x5674 0x24B86
+0x5676 0x24B8E
+0x5677 0x24B90
+0x5679 0x24BCD
+0x567A 0x24BF7
+0x567B 0x24CD6
+0x567C 0x24E84
+0x567D 0x24E95
+0x567E 0x24E8A
+0x5723 0x24E97
+0x5727 0x24FA0
+0x5728 0x24FA1
+0x5729 0x25022
+0x572A 0x250A6
+0x572B 0x250A4
+0x5735 0x252AF
+0x5736 0x252B0
+0x5737 0x252BD
+0x573A 0x25576
+0x573C 0x2557B
+0x573D 0x25579
+0x5743 0x256EE
+0x5744 0x256F1
+0x5746 0x25894
+0x574A 0x25891
+0x574E 0x25A10
+0x5751 0x25AAF
+0x575C 0x25C7B
+0x575D 0x25C77
+0x5760 0x25C80
+0x5761 0x25CC6
+0x5763 0x25C7C
+0x5764 0x25C90
+0x5766 0x25CA3
+0x5767 0x25C7D
+0x5768 0x25CBD
+0x576C 0x25F13
+0x576F 0x26111
+0x5770 0x26144
+0x5771 0x2610D
+0x5774 0x26314
+0x5776 0x263B8
+0x5778 0x263B7
+0x5779 0x26483
+0x577C 0x26514
+0x577E 0x2651C
+0x5825 0x265D4
+0x5826 0x265D5
+0x5829 0x26843
+0x582A 0x26842
+0x582D 0x2F98A
+0x582E 0x26841
+0x582F 0x2694E
+0x5831 0x26A87
+0x5837 0x26F39
+0x5839 0x26F8F
+0x583A 0x26F2A
+0x583F 0x26F2B
+0x5841 0x26F50
+0x5843 0x26F6E
+0x5845 0x26F3B
+0x5846 0x26F53
+0x5847 0x26F5F
+0x5848 0x26F2F
+0x5849 0x26F30
+0x584A 0x26F38
+0x584B 0x26F4C
+0x584C 0x271F1
+0x5850 0x27407
+0x5851 0x27416
+0x5853 0x27414
+0x5855 0x273FB
+0x5859 0x273F8
+0x585A 0x27410
+0x585B 0x2741D
+0x585C 0x273FF
+0x585D 0x2740B
+0x585E 0x27404
+0x5860 0x273FE
+0x5861 0x275FF
+0x5866 0x27723
+0x586C 0x2792A
+0x586D 0x27AA0
+0x586E 0x27A98
+0x586F 0x27A9C
+0x5871 0x27A9E
+0x5872 0x27AA6
+0x5873 0x27AB5
+0x5874 0x27AB0
+0x5878 0x27CF9
+0x5879 0x27CF5
+0x587B 0x27DD2
+0x587E 0x27F50
+0x5921 0x27F4E
+0x5922 0x27F4B
+0x5923 0x27F52
+0x5924 0x27F4D
+0x5927 0x280E4
+0x5929 0x280DA
+0x592E 0x280DF
+0x592F 0x280E8
+0x5933 0x28370
+0x5934 0x28372
+0x5936 0x28377
+0x593A 0x285E6
+0x593B 0x287AA
+0x593E 0x2888C
+0x5940 0x28889
+0x5943 0x28A32
+0x5948 0x28A7A
+0x594A 0x28C9E
+0x594B 0x28CA0
+0x594C 0x28D70
+0x5950 0x28D6E
+0x5951 0x28D66
+0x5953 0x28D65
+0x5956 0x28F7F
+0x5957 0x28FE0
+0x5959 0x28FFF
+0x595A 0x290F6
+0x595B 0x290F7
+0x595C 0x290F5
+0x595E 0x290FC
+0x5961 0x290F9
+0x5965 0x292CA
+0x5966 0x292C3
+0x5967 0x292C6
+0x5969 0x293B8
+0x596A 0x293BD
+0x596C 0x293BC
+0x596D 0x29405
+0x596E 0x294E0
+0x596F 0x294E9
+0x5971 0x294DF
+0x5972 0x294EC
+0x5974 0x294E5
+0x5975 0x294DE
+0x5976 0x2FA00
+0x5978 0x294F0
+0x5979 0x294E3
+0x597B 0x295EC
+0x5A23 0x295F2
+0x5A24 0x295EF
+0x5A25 0x295E9
+0x5A26 0x296FB
+0x5A2B 0x29737
+0x5A2C 0x298DE
+0x5A2F 0x298DA
+0x5A32 0x29A4B
+0x5A34 0x29A49
+0x5A36 0x29AD5
+0x5A39 0x29B52
+0x5A3A 0x29B47
+0x5A3C 0x29B48
+0x5A3D 0x29CCC
+0x5A3E 0x29CD0
+0x5A46 0x29D86
+0x5A47 0x29DA7
+0x5A48 0x29DA3
+0x5A4A 0x29DB6
+0x5A4B 0x29DAD
+0x5A4C 0x2A013
+0x5A53 0x2A017
+0x5A54 0x2A022
+0x5A57 0x2A049
+0x5A58 0x2A026
+0x5A59 0x2FA0C
+0x5A5A 0x2A03C
+0x5A5B 0x2A028
+0x5A5C 0x2A2A8
+0x5A5E 0x2A3FB
+0x5A60 0x2A432
+0x5A61 0x2A4D6
+0x5A62 0x2A548
+0x5A65 0x2A5C6
+0x5A69 0x20425
+0x5A6A 0x20426
+0x5A6B 0x20424
+0x5A6C 0x20433
+0x5A6D 0x20570
+0x5A6F 0x20B90
+0x5A71 0x21095
+0x5A72 0x210A1
+0x5A73 0x21092
+0x5A74 0x2108F
+0x5A75 0x2109F
+0x5A76 0x21096
+0x5A77 0x21098
+0x5A78 0x2109D
+0x5A79 0x210A0
+0x5A7B 0x21697
+0x5A7C 0x218EB
+0x5A7E 0x21F87
+0x5B22 0x22432
+0x5B26 0x228D8
+0x5B27 0x228FB
+0x5B28 0x22906
+0x5B2A 0x228D1
+0x5B2C 0x2F8B0
+0x5B33 0x22DF6
+0x5B34 0x22E04
+0x5B35 0x22DFE
+0x5B37 0x22DFF
+0x5B38 0x22DF7
+0x5B39 0x23018
+0x5B3B 0x23014
+0x5B3C 0x230CD
+0x5B3D 0x23120
+0x5B3E 0x232DE
+0x5B42 0x23745
+0x5B43 0x23753
+0x5B45 0x2374B
+0x5B46 0x23755
+0x5B47 0x23741
+0x5B4B 0x2375C
+0x5B4C 0x23754
+0x5B4D 0x23A71
+0x5B4E 0x23AD0
+0x5B51 0x23C53
+0x5B52 0x24029
+0x5B53 0x2407E
+0x5B55 0x24079
+0x5B58 0x24070
+0x5B59 0x2406A
+0x5B5C 0x24085
+0x5B5D 0x24064
+0x5B5F 0x24078
+0x5B61 0x24432
+0x5B62 0x24427
+0x5B63 0x2442F
+0x5B68 0x248BA
+0x5B6A 0x24A71
+0x5B6B 0x24A8C
+0x5B6D 0x24B1A
+0x5B70 0x24B98
+0x5B71 0x24CE4
+0x5B76 0x24EC2
+0x5B78 0x24EBA
+0x5B7A 0x24EC8
+0x5C21 0x250B9
+0x5C22 0x250B8
+0x5C23 0x250A5
+0x5C24 0x252E2
+0x5C28 0x252D9
+0x5C2B 0x252AC
+0x5C2C 0x252DD
+0x5C30 0x2559D
+0x5C33 0x25711
+0x5C34 0x25703
+0x5C38 0x258EE
+0x5C3C 0x25CA4
+0x5C3D 0x25CD8
+0x5C3E 0x25CDD
+0x5C3F 0x25CDE
+0x5C41 0x25CE7
+0x5C45 0x25CD4
+0x5C47 0x25CCE
+0x5C4D 0x25CF1
+0x5C4E 0x25CD3
+0x5C52 0x25CCA
+0x5C53 0x25CE9
+0x5C57 0x25F1A
+0x5C58 0x25F41
+0x5C59 0x2F968
+0x5C5C 0x2613D
+0x5C5D 0x26140
+0x5C61 0x26143
+0x5C63 0x2613F
+0x5C64 0x2613C
+0x5C66 0x26321
+0x5C67 0x26320
+0x5C69 0x263C6
+0x5C6C 0x263D1
+0x5C6D 0x263CA
+0x5C6E 0x2648E
+0x5C6F 0x26491
+0x5C72 0x265E3
+0x5C73 0x26888
+0x5C75 0x26870
+0x5C77 0x2699D
+0x5C78 0x26A9D
+0x5C79 0x26A91
+0x5C7A 0x26A98
+0x5C7B 0x26A99
+0x5D22 0x26FBF
+0x5D24 0x26FAE
+0x5D25 0x26FB1
+0x5D26 0x26FCC
+0x5D27 0x27004
+0x5D29 0x27016
+0x5D2A 0x26FCD
+0x5D2D 0x26FE0
+0x5D2E 0x26FCB
+0x5D2F 0x26FD4
+0x5D30 0x26FC9
+0x5D31 0x271FF
+0x5D33 0x271FD
+0x5D34 0x27457
+0x5D35 0x27452
+0x5D36 0x27450
+0x5D37 0x27445
+0x5D38 0x2744D
+0x5D3A 0x27453
+0x5D3C 0x27482
+0x5D3D 0x27444
+0x5D3E 0x275CE
+0x5D3F 0x275CF
+0x5D40 0x275D2
+0x5D41 0x27602
+0x5D42 0x2774F
+0x5D43 0x27758
+0x5D45 0x27743
+0x5D47 0x27752
+0x5D4B 0x27749
+0x5D4C 0x27753
+0x5D4D 0x2774D
+0x5D4F 0x27884
+0x5D51 0x27883
+0x5D52 0x27932
+0x5D53 0x27AE2
+0x5D55 0x27AE4
+0x5D56 0x27AD3
+0x5D58 0x27AD5
+0x5D59 0x27ADD
+0x5D5C 0x27AEC
+0x5D5D 0x27AE6
+0x5D5E 0x27AD2
+0x5D5F 0x27AFA
+0x5D60 0x27ADA
+0x5D62 0x27C06
+0x5D63 0x27C04
+0x5D65 0x27C7B
+0x5D66 0x27D04
+0x5D67 0x27D02
+0x5D6B 0x27F60
+0x5D6F 0x28107
+0x5D70 0x28105
+0x5D71 0x2810C
+0x5D73 0x2815A
+0x5D76 0x2811A
+0x5D79 0x2838A
+0x5E21 0x2838C
+0x5E22 0x28609
+0x5E23 0x288A6
+0x5E25 0x288AC
+0x5E26 0x288A9
+0x5E28 0x28A8B
+0x5E2A 0x28A8C
+0x5E2D 0x28A88
+0x5E2E 0x28A89
+0x5E30 0x28A93
+0x5E33 0x28D83
+0x5E34 0x28F4F
+0x5E37 0x29120
+0x5E39 0x29236
+0x5E3A 0x292E2
+0x5E3D 0x292EE
+0x5E3F 0x292E7
+0x5E40 0x292E9
+0x5E44 0x292DF
+0x5E46 0x293C7
+0x5E48 0x29509
+0x5E4A 0x29501
+0x5E53 0x29605
+0x5E54 0x2960C
+0x5E55 0x29778
+0x5E56 0x2975D
+0x5E5C 0x2975E
+0x5E5D 0x29760
+0x5E5E 0x29767
+0x5E60 0x2FA05
+0x5E61 0x298F4
+0x5E64 0x298F1
+0x5E66 0x298FA
+0x5E69 0x298F8
+0x5E6A 0x298F9
+0x5E6B 0x29909
+0x5E6C 0x298FD
+0x5E6D 0x298F7
+0x5E6F 0x29A59
+0x5E71 0x29B60
+0x5E72 0x29B68
+0x5E78 0x29B6A
+0x5E79 0x29C14
+0x5E7A 0x29C3E
+0x5E7B 0x29CE4
+0x5F28 0x29DD2
+0x5F2D 0x2A058
+0x5F2E 0x2A050
+0x5F30 0x2A05C
+0x5F33 0x28119
+0x5F37 0x2FA0E
+0x5F41 0x2A4DF
+0x5F47 0x2A5D9
+0x5F4B 0x20966
+0x5F4E 0x210E1
+0x5F4F 0x210EF
+0x5F50 0x210E8
+0x5F51 0x21233
+0x5F53 0x218FE
+0x5F56 0x21AEF
+0x5F57 0x21AEC
+0x5F58 0x21CEC
+0x5F59 0x21F9C
+0x5F5B 0x21F99
+0x5F5C 0x22170
+0x5F5D 0x2216E
+0x5F5F 0x22441
+0x5F62 0x22902
+0x5F63 0x22901
+0x5F65 0x22A1B
+0x5F66 0x22E23
+0x5F67 0x22E25
+0x5F68 0x22E24
+0x5F69 0x22E26
+0x5F6A 0x22E33
+0x5F6B 0x22E2F
+0x5F6C 0x2308F
+0x5F6D 0x23356
+0x5F74 0x23799
+0x5F76 0x2F8ED
+0x5F78 0x23AD9
+0x5F7A 0x240B7
+0x5F7C 0x240B6
+0x6021 0x24454
+0x6022 0x24457
+0x6023 0x2447A
+0x6026 0x24A8E
+0x6028 0x24A90
+0x6029 0x24AB9
+0x602D 0x24CEF
+0x6031 0x24EE2
+0x6033 0x24ED6
+0x6034 0x24ED8
+0x6035 0x24EDA
+0x6036 0x24EDE
+0x603A 0x25308
+0x603B 0x25304
+0x603C 0x2530A
+0x603D 0x2530B
+0x603E 0x25302
+0x6040 0x255AA
+0x6041 0x255C1
+0x6043 0x258D7
+0x6044 0x258D9
+0x6046 0x258DE
+0x6047 0x258DA
+0x604A 0x25A2A
+0x604D 0x25D31
+0x604F 0x25D2B
+0x6050 0x25D2C
+0x6051 0x25D29
+0x6052 0x25D2E
+0x6054 0x25D27
+0x6055 0x25D28
+0x6057 0x25D5F
+0x6058 0x25D30
+0x6059 0x25D24
+0x605C 0x25F3A
+0x605E 0x25F39
+0x605F 0x25F40
+0x6060 0x26180
+0x6061 0x26184
+0x6064 0x26175
+0x6065 0x26176
+0x6067 0x2617C
+0x6069 0x26178
+0x606A 0x2619B
+0x606B 0x2617E
+0x606C 0x2625A
+0x606E 0x2632C
+0x6070 0x2649C
+0x6071 0x26847
+0x6072 0x2688A
+0x6075 0x26927
+0x6076 0x2704A
+0x6079 0x27027
+0x607C 0x2702E
+0x607D 0x27026
+0x607E 0x27208
+0x6122 0x274BD
+0x6123 0x27496
+0x6127 0x274BE
+0x6128 0x2748E
+0x6129 0x27774
+0x612B 0x27780
+0x6132 0x2793C
+0x6133 0x2793D
+0x6135 0x2793A
+0x6136 0x27942
+0x6138 0x27B24
+0x6139 0x27B06
+0x613C 0x27B15
+0x613E 0x27B02
+0x613F 0x27B0C
+0x6141 0x27B08
+0x6142 0x27B0A
+0x6143 0x27B05
+0x6144 0x27B1C
+0x6147 0x27C82
+0x6149 0x27C86
+0x614B 0x27E03
+0x614C 0x27F7B
+0x614E 0x27F7A
+0x6153 0x28180
+0x6155 0x28158
+0x615A 0x283AA
+0x615B 0x283AB
+0x615C 0x28436
+0x615D 0x2844A
+0x6160 0x287D6
+0x616A 0x28B03
+0x616B 0x28ACF
+0x616D 0x28D9F
+0x616E 0x28DA2
+0x616F 0x2902A
+0x6170 0x2902F
+0x6171 0x29144
+0x6172 0x29140
+0x6175 0x29311
+0x6176 0x2930F
+0x6178 0x2930D
+0x6179 0x29307
+0x617A 0x29303
+0x6221 0x29435
+0x6224 0x29504
+0x622A 0x29526
+0x622E 0x2951E
+0x6231 0x2960E
+0x6233 0x2961D
+0x6234 0x2961E
+0x6235 0x2961F
+0x6237 0x29788
+0x6239 0x2978D
+0x623A 0x29791
+0x623B 0x29780
+0x623D 0x29854
+0x623E 0x29855
+0x6242 0x29925
+0x6243 0x2991A
+0x624B 0x29B88
+0x624D 0x29B7A
+0x6250 0x29B80
+0x6251 0x29D1E
+0x6252 0x29DFC
+0x6253 0x29E25
+0x6258 0x29E0B
+0x625A 0x29E06
+0x625B 0x29E04
+0x625E 0x29DF9
+0x625F 0x29E00
+0x6263 0x29E02
+0x6265 0x29E07
+0x6269 0x2A0B5
+0x626B 0x2A087
+0x626D 0x2A093
+0x626E 0x2FA0F
+0x6270 0x2A0BE
+0x6271 0x2A266
+0x6273 0x2A2C7
+0x6274 0x2A2CF
+0x6278 0x2A33D
+0x627A 0x2A33C
+0x627B 0x2A347
+0x6322 0x2A3C3
+0x6325 0x2A51B
+0x6328 0x2A5C9
+0x632A 0x2A5DD
+0x632C 0x2A693
+0x632E 0x2043D
+0x6333 0x214E6
+0x6336 0x21AF7
+0x6337 0x21FB0
+0x6338 0x21FAE
+0x633D 0x2259F
+0x633E 0x2259E
+0x633F 0x22930
+0x6341 0x2294F
+0x6344 0x22927
+0x6345 0x22951
+0x6348 0x22E51
+0x6349 0x22E54
+0x634A 0x22E56
+0x634B 0x23027
+0x634D 0x23024
+0x6352 0x237EC
+0x6353 0x237C4
+0x6356 0x240F8
+0x6357 0x240F6
+0x6358 0x240F7
+0x6359 0x240ED
+0x635C 0x240F4
+0x635D 0x240EF
+0x6360 0x2447F
+0x6361 0x244A2
+0x6362 0x2447E
+0x6364 0x248C5
+0x636A 0x24EF1
+0x636B 0x24EF2
+0x636D 0x2502F
+0x6372 0x25323
+0x6373 0x25329
+0x6377 0x2571B
+0x6378 0x258EB
+0x637A 0x258EA
+0x637B 0x25A33
+0x637D 0x25D63
+0x6421 0x25D92
+0x6422 0x25D65
+0x6425 0x261A0
+0x6426 0x2F970
+0x6427 0x2625E
+0x6429 0x268AA
+0x642B 0x268A9
+0x642E 0x2709C
+0x6431 0x27092
+0x6435 0x27086
+0x6439 0x27083
+0x643F 0x2F9C2
+0x6442 0x274CE
+0x6445 0x27793
+0x6449 0x27B2E
+0x644A 0x27B27
+0x644B 0x27B28
+0x6450 0x27E18
+0x6451 0x27E16
+0x6452 0x27F8D
+0x6454 0x27F8E
+0x6457 0x27F90
+0x6458 0x27F8F
+0x6459 0x28181
+0x645C 0x2818A
+0x645D 0x2818C
+0x645E 0x2828D
+0x6462 0x283B2
+0x6464 0x287D9
+0x6468 0x28B0D
+0x646A 0x28B13
+0x646E 0x28B1B
+0x6470 0x28DAC
+0x6472 0x28DB3
+0x6474 0x2915E
+0x6476 0x29160
+0x6477 0x29168
+0x6478 0x29163
+0x6479 0x29169
+0x647A 0x29167
+0x647D 0x29328
+0x6521 0x2932E
+0x6522 0x29330
+0x6524 0x29326
+0x6525 0x29331
+0x6526 0x29341
+0x6528 0x293DA
+0x652A 0x2F9FA
+0x652B 0x2940B
+0x652D 0x29534
+0x652E 0x29533
+0x6532 0x29539
+0x6533 0x2953B
+0x6534 0x29540
+0x6535 0x29630
+0x6537 0x29632
+0x6538 0x29637
+0x653D 0x29781
+0x653E 0x2979F
+0x653F 0x297A7
+0x6542 0x29944
+0x6543 0x29947
+0x6544 0x29948
+0x6545 0x2993D
+0x6548 0x29949
+0x654A 0x29A80
+0x654B 0x29BA0
+0x654C 0x29B9D
+0x6550 0x29B9C
+0x6551 0x29C47
+0x6552 0x29D07
+0x6556 0x29E49
+0x6558 0x29E44
+0x655C 0x29EDF
+0x655E 0x29E4C
+0x6560 0x29E4F
+0x6563 0x2A0C1
+0x6565 0x2A0B9
+0x6566 0x2A0CB
+0x6567 0x2A0CF
+0x6568 0x2A0C4
+0x656D 0x2A0CA
+0x656E 0x2A0C3
+0x656F 0x2A2D0
+0x6570 0x2A351
+0x6573 0x2A3A8
+0x6574 0x2A3C7
+0x6575 0x2A3C6
+0x6577 0x2A3CA
+0x6578 0x2A402
+0x657A 0x2A45D
+0x657B 0x2A45A
+0x657E 0x2A459
+0x6622 0x2A4CC
+0x6623 0x2A51C
+0x6624 0x2A5CC
+0x6628 0x2A5E8
+0x6629 0x2A5EC
+0x662A 0x2A5EA
+0x662B 0x2A6AD
+0x662C 0x2A6B0
+0x662D 0x2045F
+0x662E 0x20458
+0x662F 0x20457
+0x6631 0x20B93
+0x6633 0x2113B
+0x6635 0x21134
+0x6636 0x214F2
+0x6638 0x21AFD
+0x6639 0x21C1D
+0x663C 0x22304
+0x663D 0x22448
+0x663E 0x22958
+0x663F 0x22E4F
+0x6641 0x22E6E
+0x6642 0x22E72
+0x6644 0x2302E
+0x6645 0x237FC
+0x6646 0x237F4
+0x6647 0x23C36
+0x6648 0x2410E
+0x664B 0x24114
+0x664D 0x24119
+0x664F 0x244A6
+0x6651 0x24AC9
+0x6652 0x24AC0
+0x6653 0x24ACC
+0x6654 0x24B1B
+0x6655 0x24BAA
+0x6656 0x24BA8
+0x6657 0x24F03
+0x665C 0x25035
+0x6662 0x255D9
+0x6666 0x25A3F
+0x6667 0x25A3D
+0x666B 0x25D8B
+0x6670 0x25D68
+0x6671 0x25D8A
+0x6672 0x25F58
+0x6673 0x25F57
+0x6674 0x261CE
+0x6675 0x261BC
+0x6676 0x261C0
+0x6677 0x261C1
+0x6678 0x261BF
+0x6679 0x261AB
+0x667A 0x2625F
+0x667C 0x264A6
+0x667E 0x26529
+0x6726 0x268B8
+0x6729 0x270DD
+0x672A 0x270D6
+0x672B 0x2F9B1
+0x672C 0x270D5
+0x672D 0x270E7
+0x672E 0x270D8
+0x672F 0x274EC
+0x6731 0x27500
+0x6732 0x27507
+0x6733 0x274FD
+0x6734 0x274F1
+0x6735 0x274FF
+0x6736 0x277AA
+0x6737 0x277B0
+0x6738 0x27B48
+0x673A 0x27B53
+0x673C 0x27B4D
+0x6742 0x27B43
+0x6743 0x27B50
+0x6746 0x27C8C
+0x6747 0x27E27
+0x6749 0x27F99
+0x674B 0x281B1
+0x674D 0x281B0
+0x674E 0x281AA
+0x674F 0x281AC
+0x6753 0x283C8
+0x6754 0x283CA
+0x6755 0x28642
+0x6756 0x287E0
+0x6757 0x288E7
+0x6758 0x288E8
+0x6759 0x288E6
+0x675D 0x28B5B
+0x675E 0x28B56
+0x6760 0x28B5A
+0x6764 0x28CB8
+0x6765 0x28DC5
+0x6768 0x29048
+0x6769 0x2917D
+0x676A 0x2917C
+0x676B 0x29181
+0x676C 0x29182
+0x676D 0x29162
+0x676F 0x29345
+0x6774 0x293E3
+0x6778 0x29550
+0x677A 0x2954F
+0x677D 0x29639
+0x6821 0x2963A
+0x6825 0x297C1
+0x6826 0x2994E
+0x6827 0x2996E
+0x682C 0x29971
+0x682E 0x29A8C
+0x682F 0x29A89
+0x6831 0x29AE5
+0x6832 0x29BB3
+0x6833 0x29BB6
+0x6834 0x29BB4
+0x6835 0x29C4D
+0x6837 0x29D13
+0x6838 0x29E78
+0x683F 0x29E72
+0x6845 0x2A275
+0x6846 0x2A2DA
+0x6847 0x2A2D7
+0x684F 0x2FA16
+0x6850 0x2A469
+0x6851 0x2A467
+0x6853 0x2A466
+0x6854 0x2A46F
+0x6855 0x2A471
+0x6857 0x2A4CF
+0x6858 0x2A523
+0x685B 0x2A5A5
+0x685D 0x2A5FE
+0x685E 0x2A5FB
+0x685F 0x2A5FD
+0x6864 0x2116D
+0x6866 0x21B05
+0x6867 0x21C20
+0x6869 0x21FC8
+0x686A 0x21FC9
+0x686D 0x23127
+0x686F 0x2381E
+0x6870 0x23936
+0x6872 0x2413D
+0x6874 0x248D7
+0x6876 0x24BAD
+0x6877 0x24D00
+0x6879 0x2533A
+0x687D 0x25726
+0x6923 0x25DB7
+0x6924 0x25DB6
+0x6925 0x25DC0
+0x6927 0x25D9B
+0x6929 0x261D8
+0x692F 0x268C0
+0x6931 0x268BF
+0x6932 0x26ABF
+0x6934 0x27120
+0x6935 0x270D0
+0x6936 0x2710E
+0x6938 0x2711D
+0x6939 0x2711E
+0x693A 0x27115
+0x693B 0x27114
+0x693C 0x2751E
+0x693D 0x2752C
+0x693F 0x277B9
+0x6940 0x277B8
+0x6941 0x277B6
+0x6942 0x2789E
+0x6943 0x2789C
+0x6944 0x2794D
+0x6946 0x27B6E
+0x6947 0x27B60
+0x6949 0x27B64
+0x694A 0x27B62
+0x694B 0x261E5
+0x694D 0x27FA3
+0x6950 0x283D2
+0x6951 0x283D5
+0x6957 0x29055
+0x6959 0x29193
+0x695D 0x29356
+0x695F 0x293E9
+0x6961 0x29445
+0x6964 0x2967C
+0x6966 0x297D3
+0x696C 0x2998E
+0x696D 0x29A97
+0x696F 0x29A9B
+0x6970 0x29A99
+0x6973 0x29BCF
+0x6975 0x29C59
+0x6978 0x29D20
+0x6979 0x29D23
+0x697A 0x29D2A
+0x6A22 0x29EB0
+0x6A24 0x2A12F
+0x6A28 0x2A132
+0x6A29 0x2A143
+0x6A2A 0x2A13F
+0x6A2B 0x2A139
+0x6A2D 0x2A130
+0x6A2E 0x2A2DD
+0x6A2F 0x2A3DA
+0x6A30 0x2A3DB
+0x6A32 0x2A484
+0x6A33 0x2A47F
+0x6A34 0x2A472
+0x6A35 0x2A480
+0x6A36 0x2A4EE
+0x6A38 0x2A52A
+0x6A39 0x2A522
+0x6A3A 0x2A571
+0x6A3B 0x2A5CD
+0x6A3E 0x2A60F
+0x6A3F 0x2A618
+0x6A40 0x2046A
+0x6A45 0x21B0C
+0x6A47 0x225A6
+0x6A4A 0x23037
+0x6A4D 0x23AE2
+0x6A4F 0x244BC
+0x6A52 0x24AD5
+0x6A56 0x24F12
+0x6A58 0x2534B
+0x6A59 0x25341
+0x6A5A 0x253A1
+0x6A5B 0x255EC
+0x6A5E 0x25DD4
+0x6A5F 0x25DD8
+0x6A60 0x25DD9
+0x6A62 0x25DDA
+0x6A63 0x25F6C
+0x6A64 0x25F6D
+0x6A67 0x261E7
+0x6A68 0x261EB
+0x6A69 0x261EC
+0x6A6A 0x26262
+0x6A6C 0x2652B
+0x6A6D 0x2660D
+0x6A6E 0x268CD
+0x6A6F 0x26AC3
+0x6A70 0x2713F
+0x6A71 0x2713C
+0x6A72 0x2713E
+0x6A73 0x2713D
+0x6A74 0x2713A
+0x6A75 0x27138
+0x6A76 0x27544
+0x6A77 0x27545
+0x6A79 0x27548
+0x6A7A 0x27550
+0x6A7D 0x27B78
+0x6A7E 0x27B79
+0x6B22 0x27E3E
+0x6B25 0x28654
+0x6B28 0x28BB9
+0x6B2B 0x2905F
+0x6B2E 0x29572
+0x6B2F 0x29575
+0x6B36 0x29AA3
+0x6B37 0x29AA5
+0x6B38 0x29BDC
+0x6B39 0x29BDD
+0x6B3A 0x29C5A
+0x6B3E 0x29EDB
+0x6B3F 0x29EDC
+0x6B41 0x2A1AB
+0x6B42 0x2A184
+0x6B43 0x2A176
+0x6B49 0x2A183
+0x6B4C 0x2A27F
+0x6B4F 0x2A373
+0x6B50 0x2A3AD
+0x6B51 0x2A3B0
+0x6B53 0x2A40F
+0x6B54 0x2A40C
+0x6B57 0x2A579
+0x6B59 0x2A577
+0x6B5A 0x2A57A
+0x6B5D 0x2A632
+0x6B5E 0x2A627
+0x6B5F 0x2A62A
+0x6B60 0x2A62C
+0x6B62 0x2A628
+0x6B63 0x2A629
+0x6B64 0x2A638
+0x6B65 0x2082F
+0x6B66 0x2117B
+0x6B67 0x21B0D
+0x6B69 0x21FD6
+0x6B6A 0x21FD5
+0x6B6B 0x22EA1
+0x6B6C 0x2384C
+0x6B73 0x24FC0
+0x6B77 0x25DF4
+0x6B7A 0x261F0
+0x6B7C 0x2633F
+0x6B7E 0x2755D
+0x6C21 0x27572
+0x6C22 0x27562
+0x6C24 0x27566
+0x6C27 0x27B88
+0x6C2A 0x281E8
+0x6C2B 0x281E4
+0x6C2F 0x288FF
+0x6C31 0x291AF
+0x6C32 0x291AE
+0x6C35 0x293F2
+0x6C36 0x29448
+0x6C37 0x29581
+0x6C38 0x2957E
+0x6C3B 0x29652
+0x6C3C 0x297EF
+0x6C3F 0x29AAD
+0x6C40 0x29BE6
+0x6C42 0x29BED
+0x6C44 0x29BE9
+0x6C45 0x29C61
+0x6C46 0x29C60
+0x6C47 0x29D33
+0x6C4B 0x29F0B
+0x6C4C 0x29F08
+0x6C4F 0x29F07
+0x6C53 0x2A1CA
+0x6C55 0x2A1C6
+0x6C57 0x2A284
+0x6C58 0x2A2EB
+0x6C59 0x2A37D
+0x6C5C 0x2A49B
+0x6C5D 0x2A4A2
+0x6C5E 0x2A4A1
+0x6C5F 0x2A4A0
+0x6C60 0x2A49C
+0x6C63 0x2A580
+0x6C65 0x2A640
+0x6C67 0x2A639
+0x6C68 0x2A63C
+0x6C6B 0x208CA
+0x6C6D 0x21189
+0x6C6F 0x2303C
+0x6C70 0x23940
+0x6C71 0x24163
+0x6C72 0x24169
+0x6C74 0x25353
+0x6C77 0x25917
+0x6C78 0x2591A
+0x6C79 0x25E00
+0x6C7E 0x2756F
+0x6D21 0x278AB
+0x6D23 0x27B91
+0x6D26 0x27FB1
+0x6D28 0x281EF
+0x6D29 0x28DF1
+0x6D2A 0x28DF2
+0x6D2B 0x291B7
+0x6D2C 0x291B5
+0x6D2E 0x29586
+0x6D2F 0x2965A
+0x6D31 0x299C6
+0x6D32 0x299CB
+0x6D34 0x29AB2
+0x6D36 0x29BF3
+0x6D38 0x29F27
+0x6D3B 0x2A1D5
+0x6D3C 0x2A1D8
+0x6D3E 0x2A1EC
+0x6D3F 0x2A287
+0x6D40 0x2A2F2
+0x6D45 0x2A4AD
+0x6D46 0x2A4B0
+0x6D47 0x2A4FD
+0x6D49 0x2A587
+0x6D4A 0x2A64A
+0x6D4D 0x2A64E
+0x6D4E 0x2A649
+0x6D4F 0x2A651
+0x6D50 0x2A64D
+0x6D52 0x20472
+0x6D54 0x21B16
+0x6D55 0x2386D
+0x6D56 0x23941
+0x6D58 0x24171
+0x6D59 0x24174
+0x6D5D 0x25F7C
+0x6D5F 0x2718A
+0x6D60 0x27956
+0x6D63 0x28BFA
+0x6D66 0x2965B
+0x6D6A 0x2A1F5
+0x6D6B 0x2A1F0
+0x6D6C 0x2A2F3
+0x6D6D 0x2A37F
+0x6D6E 0x2A413
+0x6D71 0x21B19
+0x6D72 0x22985
+0x6D73 0x22EB0
+0x6D74 0x24177
+0x6D75 0x255FF
+0x6D7A 0x27187
+0x6D7C 0x2718B
+0x6D7E 0x27B9E
+0x6E23 0x2958F
+0x6E26 0x29839
+0x6E27 0x299D4
+0x6E28 0x29AF1
+0x6E29 0x29C02
+0x6E2A 0x29C6B
+0x6E2B 0x29D40
+0x6E2E 0x2A210
+0x6E2F 0x2A4BE
+0x6E30 0x2A4B9
+0x6E32 0x2A664
+0x6E34 0x24AE9
+0x6E35 0x27190
+0x6E38 0x2721C
+0x6E3A 0x27592
+0x6E3B 0x278AE
+0x6E3C 0x27BA3
+0x6E3E 0x291C9
+0x6E40 0x299D8
+0x6E41 0x29D44
+0x6E42 0x2A224
+0x6E46 0x2A670
+0x6E47 0x2A6D3
+0x6E4A 0x2A4C3
+0x6E4E 0x25E21
+0x6E4F 0x26ACA
+0x6E50 0x2759C
+0x6E51 0x29C73
+0x6E52 0x2A386
+0x6E53 0x2A5C1
+0x6E54 0x29C09
+0x6E56 0x2A6D5
+0x6E5C 0x291D4
diff --git a/test/sun/nio/cs/SurrogateTestEUCTW.plane5.surrogates b/test/sun/nio/cs/SurrogateTestEUCTW.plane5.surrogates
new file mode 100644
index 000000000..7c7131f85
--- /dev/null
+++ b/test/sun/nio/cs/SurrogateTestEUCTW.plane5.surrogates
@@ -0,0 +1,8143 @@
+0x2121 0x200D1
+0x2122 0x200CB
+0x2123 0x200C9
+0x2124 0x2010C
+0x2125 0x20000
+0x2126 0x20087
+0x2127 0x2010D
+0x2128 0x2010F
+0x2129 0x2F81D
+0x212A 0x22398
+0x212B 0x200D2
+0x212C 0x20111
+0x212D 0x2007E
+0x212E 0x20AD3
+0x212F 0x21552
+0x2130 0x21CFE
+0x2131 0x225A9
+0x2132 0x23942
+0x2133 0x20009
+0x2134 0x200D6
+0x2135 0x204DD
+0x2136 0x204DC
+0x2137 0x20502
+0x2138 0x20573
+0x2139 0x20676
+0x213A 0x206A7
+0x213B 0x206A8
+0x213C 0x20833
+0x213D 0x208CC
+0x213E 0x20A0D
+0x213F 0x20A2C
+0x2140 0x20B1B
+0x2142 0x20B1D
+0x2143 0x20B99
+0x2144 0x2123E
+0x2145 0x21D2D
+0x2146 0x21D2F
+0x2147 0x22399
+0x2148 0x233B3
+0x2149 0x239B6
+0x214A 0x23B1B
+0x214B 0x244EF
+0x214C 0x248E9
+0x214D 0x20014
+0x214E 0x20094
+0x214F 0x200E1
+0x2150 0x20506
+0x2151 0x2054A
+0x2152 0x20544
+0x2153 0x20631
+0x2154 0x2067A
+0x2155 0x206AD
+0x2156 0x206AE
+0x2157 0x206B1
+0x2158 0x20838
+0x2159 0x20837
+0x215A 0x2097D
+0x215B 0x2097E
+0x215C 0x20A2D
+0x215D 0x20A32
+0x215E 0x20B23
+0x215F 0x20B26
+0x2160 0x2F83A
+0x2161 0x20BA0
+0x2162 0x216A8
+0x2163 0x2193F
+0x2164 0x219BC
+0x2165 0x21BC4
+0x2166 0x21D3B
+0x2167 0x22019
+0x2168 0x22018
+0x2169 0x221B3
+0x216A 0x223AA
+0x216B 0x224BE
+0x216C 0x225AC
+0x216D 0x22A25
+0x216E 0x22A66
+0x216F 0x22A6B
+0x2170 0x23943
+0x2171 0x239B5
+0x2172 0x23AEC
+0x2173 0x23C76
+0x2175 0x24614
+0x2176 0x215DC
+0x2177 0x2471C
+0x2178 0x2471D
+0x2179 0x264D0
+0x217A 0x26612
+0x217B 0x26AF3
+0x217C 0x28669
+0x217E 0x28E11
+0x2221 0x28E15
+0x2222 0x28E10
+0x2223 0x28E13
+0x2224 0x200A4
+0x2225 0x200A5
+0x2226 0x201D0
+0x2227 0x201BA
+0x2228 0x201CB
+0x2229 0x2057B
+0x222A 0x20686
+0x222B 0x206BB
+0x222C 0x206BA
+0x222D 0x206C3
+0x222E 0x206B9
+0x222F 0x206C0
+0x2231 0x20839
+0x2232 0x2083B
+0x2233 0x20841
+0x2234 0x208D1
+0x2235 0x208CF
+0x2236 0x208D2
+0x2237 0x2092E
+0x2238 0x2096E
+0x2239 0x2098C
+0x223A 0x20988
+0x223B 0x20A35
+0x223D 0x20A3A
+0x223E 0x20A3B
+0x223F 0x20A38
+0x2240 0x20A39
+0x2241 0x20B2E
+0x2242 0x20B2C
+0x2243 0x20BC8
+0x2244 0x20BB5
+0x2245 0x20BAD
+0x2246 0x20BB0
+0x2247 0x20BAB
+0x2248 0x211B3
+0x2249 0x211A9
+0x224A 0x216BB
+0x224B 0x216B9
+0x224C 0x21B5A
+0x224D 0x21BCD
+0x224E 0x21C2B
+0x224F 0x21D05
+0x2252 0x21D51
+0x2253 0x21D4B
+0x2254 0x21FEA
+0x2255 0x21FED
+0x2256 0x22036
+0x2257 0x22062
+0x2258 0x22056
+0x2259 0x22055
+0x225A 0x22064
+0x225B 0x22058
+0x225D 0x221DA
+0x225E 0x221D8
+0x225F 0x223AD
+0x2260 0x223AB
+0x2261 0x224C0
+0x2262 0x224C3
+0x2263 0x225B3
+0x2264 0x225B7
+0x2265 0x225BA
+0x2268 0x225C7
+0x2269 0x225B5
+0x226A 0x2298E
+0x226B 0x22A73
+0x226C 0x22A6C
+0x226D 0x22A74
+0x226E 0x2F8B4
+0x226F 0x22A72
+0x2270 0x22A71
+0x2271 0x22A82
+0x2272 0x22A70
+0x2273 0x2313F
+0x2274 0x233BA
+0x2275 0x233B8
+0x2276 0x239B7
+0x2277 0x24723
+0x2278 0x24721
+0x2279 0x2472B
+0x227A 0x24726
+0x227B 0x24722
+0x227C 0x24D25
+0x227D 0x250E4
+0x227E 0x25415
+0x2321 0x264E4
+0x2322 0x26633
+0x2323 0x2662A
+0x2324 0x26632
+0x2325 0x26629
+0x2326 0x26AFB
+0x2327 0x2795B
+0x2328 0x2795C
+0x2329 0x27C28
+0x232A 0x2866F
+0x232B 0x2866D
+0x232C 0x2866B
+0x232D 0x2866E
+0x232E 0x28E16
+0x232F 0x20022
+0x2330 0x20116
+0x2331 0x20148
+0x2332 0x201D8
+0x2333 0x20200
+0x2335 0x20480
+0x2336 0x204E4
+0x2338 0x204E7
+0x2339 0x2050C
+0x233A 0x20553
+0x233B 0x205B7
+0x233C 0x20AE8
+0x233D 0x206D1
+0x233E 0x206E5
+0x233F 0x206D8
+0x2340 0x206D6
+0x2341 0x206DA
+0x2342 0x206D9
+0x2343 0x206D5
+0x2344 0x206E6
+0x2345 0x206D4
+0x2346 0x206D3
+0x2347 0x20844
+0x2348 0x208D6
+0x2349 0x208D7
+0x234A 0x20913
+0x234C 0x20970
+0x234D 0x20992
+0x234E 0x209DB
+0x234F 0x209DA
+0x2350 0x20A41
+0x2351 0x20A43
+0x2352 0x20B33
+0x2353 0x20BF6
+0x2354 0x20BD4
+0x2355 0x20BDD
+0x2356 0x20BD0
+0x2357 0x20C04
+0x2358 0x20BD9
+0x2359 0x20BDB
+0x235A 0x20C05
+0x235B 0x20BD3
+0x235C 0x20BE1
+0x235D 0x21280
+0x235E 0x21277
+0x235F 0x21281
+0x2360 0x21282
+0x2361 0x21283
+0x2362 0x2F85C
+0x2363 0x21561
+0x2364 0x21560
+0x2365 0x216D8
+0x2366 0x216D6
+0x2367 0x216D7
+0x2368 0x24605
+0x2369 0x2194D
+0x236A 0x21948
+0x236B 0x21BD6
+0x236C 0x21BCF
+0x236D 0x21BD9
+0x236E 0x21BD8
+0x236F 0x21C3D
+0x2371 0x21D54
+0x2372 0x21D5B
+0x2373 0x21D5C
+0x2375 0x21D59
+0x2376 0x21D58
+0x2377 0x21D5A
+0x2378 0x21D55
+0x2379 0x21D56
+0x237A 0x21D82
+0x237B 0x21FF0
+0x237C 0x2201C
+0x237D 0x2206A
+0x237E 0x22069
+0x2421 0x22071
+0x2422 0x22067
+0x2423 0x2206C
+0x2424 0x2206E
+0x2425 0x22079
+0x2426 0x2218B
+0x2427 0x221B8
+0x2428 0x221E7
+0x2429 0x221E8
+0x242A 0x221E4
+0x242B 0x221E6
+0x242C 0x221E5
+0x242D 0x221F0
+0x242E 0x22383
+0x242F 0x223B7
+0x2430 0x223BB
+0x2431 0x223B9
+0x2432 0x223C5
+0x2433 0x22453
+0x2434 0x224C4
+0x2435 0x224C6
+0x2436 0x224CB
+0x2437 0x225C8
+0x2438 0x2F89F
+0x2439 0x225C9
+0x243A 0x225DB
+0x243B 0x22994
+0x243C 0x22A95
+0x243D 0x22A88
+0x243E 0x22A8D
+0x243F 0x22EEC
+0x2440 0x22EEE
+0x2441 0x22EF1
+0x2442 0x2312E
+0x2443 0x23149
+0x2444 0x2335F
+0x2445 0x233D1
+0x2446 0x233CB
+0x2447 0x23885
+0x2449 0x2394A
+0x244A 0x23947
+0x244B 0x2394B
+0x244C 0x239BB
+0x244D 0x239C4
+0x244F 0x23B02
+0x2450 0x23C82
+0x2451 0x23C91
+0x2452 0x23C8F
+0x2453 0x23C92
+0x2454 0x2418F
+0x2455 0x24191
+0x2456 0x241B4
+0x2457 0x24192
+0x2458 0x244F4
+0x2459 0x245AA
+0x245A 0x24735
+0x245B 0x24737
+0x245C 0x2473D
+0x245D 0x2473C
+0x245E 0x2472F
+0x245F 0x24730
+0x2460 0x248F8
+0x2461 0x248EF
+0x2462 0x24B26
+0x2464 0x24D26
+0x2465 0x24D27
+0x2466 0x24F41
+0x2467 0x24FC6
+0x2468 0x24FC7
+0x2469 0x250EB
+0x246A 0x250E8
+0x246B 0x250EA
+0x246C 0x2541A
+0x246D 0x25419
+0x246F 0x25923
+0x2470 0x25924
+0x2471 0x25E25
+0x2472 0x26635
+0x2473 0x26634
+0x2474 0x26A07
+0x2475 0x2721D
+0x2476 0x277E1
+0x2477 0x27BAB
+0x2478 0x28460
+0x2479 0x28677
+0x247A 0x2867D
+0x247C 0x28E1E
+0x247D 0x28E1A
+0x247E 0x28E1D
+0x2521 0x2006B
+0x2522 0x2012D
+0x2523 0x2014C
+0x2524 0x2022A
+0x2526 0x20215
+0x2527 0x2022C
+0x2528 0x20206
+0x2529 0x20208
+0x252A 0x2020A
+0x252C 0x20556
+0x252D 0x20584
+0x252F 0x205C6
+0x2530 0x206F5
+0x2531 0x20709
+0x2532 0x206F8
+0x2533 0x206E8
+0x2534 0x206FB
+0x2535 0x206E9
+0x2536 0x206F6
+0x2539 0x20852
+0x253C 0x20854
+0x253D 0x20851
+0x253E 0x20939
+0x253F 0x2093A
+0x2540 0x20998
+0x2541 0x20A4E
+0x2543 0x20C36
+0x2544 0x20C0C
+0x2545 0x20C10
+0x2546 0x20C32
+0x2547 0x20C11
+0x2548 0x20C18
+0x2549 0x20C1C
+0x254A 0x20C1A
+0x254B 0x20C19
+0x254C 0x20C0B
+0x254D 0x20C0F
+0x254E 0x20C1D
+0x254F 0x20C21
+0x2550 0x20C13
+0x2551 0x20C1B
+0x2552 0x20C15
+0x2554 0x211D1
+0x2555 0x211C8
+0x2556 0x2128D
+0x2557 0x212B5
+0x255A 0x215F8
+0x255B 0x216E0
+0x255C 0x216E1
+0x255E 0x216DE
+0x255F 0x216FE
+0x2560 0x216DC
+0x2561 0x21701
+0x2562 0x216FD
+0x2563 0x21700
+0x2564 0x219D7
+0x2565 0x219D6
+0x2566 0x219D9
+0x2567 0x21B65
+0x2568 0x21BD2
+0x2569 0x21BDC
+0x256A 0x21BE1
+0x256B 0x21BDE
+0x256C 0x21C42
+0x256D 0x21C4B
+0x256F 0x21D8E
+0x2570 0x21D91
+0x2571 0x21D8B
+0x2572 0x21D90
+0x2573 0x21D88
+0x2574 0x21D89
+0x2575 0x21D84
+0x2576 0x21DAA
+0x2577 0x2208D
+0x2578 0x2208F
+0x2579 0x2207D
+0x257A 0x2207F
+0x257B 0x2207B
+0x257C 0x22080
+0x257D 0x2207E
+0x257E 0x22083
+0x2621 0x22081
+0x2622 0x22086
+0x2623 0x2208A
+0x2624 0x221BD
+0x2625 0x221BE
+0x2627 0x221F4
+0x2628 0x221F3
+0x2629 0x22202
+0x262A 0x221F6
+0x262B 0x221F5
+0x262C 0x221F2
+0x262D 0x22204
+0x262E 0x2233D
+0x262F 0x223C6
+0x2630 0x22489
+0x2631 0x224D4
+0x2632 0x224D6
+0x2633 0x224D2
+0x2634 0x225FA
+0x2635 0x22606
+0x2636 0x2260C
+0x2637 0x2260A
+0x2638 0x2260F
+0x2639 0x22A2F
+0x263B 0x22AB7
+0x263C 0x22ABE
+0x263D 0x22ABC
+0x263E 0x22AE2
+0x263F 0x22F06
+0x2640 0x22EF7
+0x2641 0x22F07
+0x2642 0x22EF6
+0x2643 0x23B35
+0x2644 0x2315F
+0x2645 0x23165
+0x2646 0x23164
+0x2647 0x23161
+0x2648 0x2315A
+0x2649 0x2315D
+0x264A 0x2F8D7
+0x264B 0x233D7
+0x264C 0x233D5
+0x264D 0x233DE
+0x264E 0x233E1
+0x264F 0x233E0
+0x2650 0x233D9
+0x2652 0x233DA
+0x2653 0x233DF
+0x2654 0x233F6
+0x2655 0x23403
+0x2657 0x23893
+0x2658 0x2388B
+0x2659 0x23891
+0x265A 0x23892
+0x265B 0x2388A
+0x265C 0x23889
+0x265D 0x2388F
+0x265E 0x23956
+0x265F 0x23959
+0x2660 0x239CA
+0x2661 0x239CC
+0x2663 0x239D0
+0x2664 0x239CD
+0x2665 0x239D6
+0x2666 0x239CB
+0x2667 0x23A83
+0x2668 0x23A82
+0x2669 0x23B06
+0x266A 0x23B2A
+0x266B 0x23B2C
+0x266C 0x23B2B
+0x266D 0x23B29
+0x266E 0x23CBD
+0x266F 0x23CB3
+0x2670 0x23CBE
+0x2671 0x23CC0
+0x2672 0x23CB5
+0x2673 0x23CB6
+0x2674 0x2419D
+0x2675 0x2419F
+0x2676 0x24620
+0x2678 0x2461E
+0x2679 0x2461C
+0x267A 0x24632
+0x267B 0x2461F
+0x267C 0x2462B
+0x267D 0x24621
+0x267E 0x24626
+0x2721 0x24624
+0x2722 0x2461D
+0x2723 0x24627
+0x2724 0x2475B
+0x2725 0x24759
+0x2726 0x24780
+0x2727 0x24755
+0x2728 0x24750
+0x2729 0x2475A
+0x272A 0x24756
+0x272B 0x24763
+0x272C 0x24752
+0x272D 0x24758
+0x272F 0x24739
+0x2730 0x248F9
+0x2731 0x24B28
+0x2733 0x24BBC
+0x2734 0x24BD6
+0x2735 0x24C05
+0x2736 0x24C20
+0x2738 0x24D33
+0x2739 0x24F46
+0x273A 0x24F42
+0x273B 0x24F43
+0x273C 0x24F47
+0x273D 0x24FCB
+0x273E 0x25042
+0x273F 0x25045
+0x2740 0x250FD
+0x2741 0x250F4
+0x2742 0x250F9
+0x2743 0x250FA
+0x2744 0x2535E
+0x2745 0x2541D
+0x2747 0x25758
+0x2748 0x25755
+0x2749 0x25A57
+0x274A 0x25A58
+0x274B 0x25AD9
+0x274C 0x25ADC
+0x274D 0x25ADB
+0x274E 0x25E27
+0x274F 0x25F85
+0x2750 0x25F87
+0x2751 0x25F8A
+0x2752 0x2628B
+0x2753 0x2634F
+0x2754 0x26530
+0x2755 0x2652F
+0x2756 0x26668
+0x2757 0x26649
+0x2759 0x26648
+0x275A 0x2663F
+0x275B 0x2664B
+0x275C 0x2665C
+0x275D 0x26646
+0x275E 0x26640
+0x275F 0x26A0D
+0x2760 0x26B1B
+0x2761 0x26B1D
+0x2762 0x26B17
+0x2764 0x26B22
+0x2765 0x275A7
+0x2766 0x27608
+0x2767 0x27806
+0x2768 0x2847D
+0x276A 0x28463
+0x276B 0x28464
+0x276C 0x2847F
+0x276D 0x2846B
+0x276E 0x2847C
+0x276F 0x28468
+0x2770 0x28465
+0x2771 0x2846A
+0x2772 0x28698
+0x2773 0x28699
+0x2774 0x286AE
+0x2775 0x28E2B
+0x2776 0x28E2D
+0x2777 0x28E31
+0x2778 0x28E2E
+0x2779 0x28E2F
+0x277A 0x2006D
+0x277B 0x20131
+0x277C 0x2022D
+0x277D 0x20239
+0x277E 0x20238
+0x2822 0x2023A
+0x2823 0x20235
+0x2824 0x20262
+0x2825 0x204EA
+0x2826 0x204EB
+0x2827 0x20515
+0x2828 0x205CC
+0x2829 0x205C8
+0x282A 0x205CD
+0x282B 0x205DB
+0x282C 0x205CB
+0x282D 0x20711
+0x282E 0x20726
+0x282F 0x20862
+0x2830 0x2085E
+0x2831 0x20861
+0x2832 0x20941
+0x2833 0x2093F
+0x2834 0x20975
+0x2835 0x23965
+0x2836 0x20B49
+0x2837 0x209EB
+0x2838 0x20A1A
+0x2839 0x20A57
+0x283A 0x20C6B
+0x283B 0x20CA9
+0x283C 0x20C54
+0x283D 0x20C62
+0x283E 0x20CAA
+0x283F 0x20C58
+0x2840 0x20C72
+0x2841 0x20C63
+0x2842 0x20C73
+0x2843 0x20C8B
+0x2844 0x20C8C
+0x2845 0x20C5C
+0x2846 0x20C51
+0x2847 0x20C16
+0x2848 0x20C60
+0x2849 0x20C61
+0x284A 0x20C5E
+0x284B 0x20C5D
+0x284C 0x20C64
+0x284D 0x20C53
+0x284E 0x20C5F
+0x284F 0x20C5B
+0x2850 0x20C6E
+0x2851 0x20C55
+0x2852 0x20C52
+0x2853 0x20C68
+0x2854 0x211D2
+0x2855 0x211D6
+0x2856 0x211D3
+0x2857 0x212B8
+0x2858 0x212BB
+0x2859 0x212EB
+0x285A 0x212E8
+0x285B 0x212B6
+0x285C 0x212EA
+0x285D 0x212E7
+0x285E 0x212E9
+0x285F 0x21591
+0x2860 0x21610
+0x2861 0x2160E
+0x2862 0x2160F
+0x2863 0x2170B
+0x2864 0x21703
+0x2865 0x2172B
+0x2866 0x21709
+0x2867 0x21728
+0x2868 0x2172C
+0x2869 0x21725
+0x286A 0x21727
+0x286B 0x2170F
+0x286C 0x219E9
+0x286D 0x219EC
+0x286F 0x21B27
+0x2870 0x21B73
+0x2871 0x21BE2
+0x2872 0x21BE6
+0x2873 0x2F876
+0x2874 0x21C61
+0x2875 0x21C51
+0x2876 0x21D12
+0x2877 0x21D0E
+0x2878 0x21DAD
+0x2879 0x21DAF
+0x287A 0x21DB1
+0x287B 0x21DD3
+0x287C 0x22094
+0x287D 0x22092
+0x287E 0x22090
+0x2921 0x2209D
+0x2922 0x22093
+0x2923 0x22095
+0x2924 0x22098
+0x2925 0x22097
+0x2927 0x2F88A
+0x2928 0x22207
+0x2929 0x2220B
+0x292A 0x22208
+0x292B 0x223D9
+0x292C 0x223D5
+0x292D 0x224D7
+0x292E 0x224DF
+0x2930 0x224DE
+0x2931 0x224E3
+0x2932 0x224E2
+0x2934 0x22647
+0x2936 0x2263D
+0x2937 0x22638
+0x2938 0x22A44
+0x2939 0x22A3A
+0x293A 0x22AB8
+0x293B 0x22B2A
+0x293C 0x22B00
+0x293D 0x22AF3
+0x293E 0x22AF2
+0x293F 0x22AEB
+0x2940 0x22AFA
+0x2941 0x22AED
+0x2942 0x22AEC
+0x2943 0x22AFF
+0x2944 0x22AFB
+0x2946 0x22B4E
+0x2947 0x22AEF
+0x2948 0x22AF7
+0x2949 0x22F10
+0x294A 0x22F11
+0x294B 0x22F0C
+0x294C 0x22F0B
+0x294D 0x230DD
+0x294E 0x23130
+0x2950 0x2317A
+0x2951 0x23177
+0x2952 0x23328
+0x2953 0x23327
+0x2954 0x23365
+0x2955 0x2340E
+0x2956 0x2340B
+0x2957 0x23441
+0x2958 0x23413
+0x2959 0x2340F
+0x295A 0x23412
+0x295B 0x23430
+0x295C 0x238A0
+0x295D 0x238A3
+0x295E 0x2389E
+0x295F 0x23897
+0x2960 0x238A1
+0x2961 0x2389D
+0x2962 0x2389B
+0x2963 0x23963
+0x2964 0x239E3
+0x2965 0x239E4
+0x2966 0x239E6
+0x2967 0x239E7
+0x2968 0x239DD
+0x296A 0x239EC
+0x296B 0x239E5
+0x296C 0x239F1
+0x296D 0x23B3B
+0x296E 0x23B39
+0x296F 0x23B3A
+0x2970 0x23B3C
+0x2971 0x23B3D
+0x2972 0x23B47
+0x2973 0x23B3F
+0x2974 0x23B44
+0x2975 0x23C48
+0x2976 0x23C49
+0x2977 0x23C60
+0x2978 0x23CE3
+0x2979 0x23CE9
+0x297A 0x23CF0
+0x297D 0x23CF2
+0x297E 0x23CED
+0x2A21 0x23CEC
+0x2A22 0x23CE6
+0x2A23 0x23D16
+0x2A25 0x241BC
+0x2A26 0x241BE
+0x2A27 0x241C0
+0x2A28 0x241E0
+0x2A29 0x24500
+0x2A2A 0x24502
+0x2A2B 0x244FE
+0x2A2C 0x2455E
+0x2A2D 0x245B3
+0x2A2E 0x245B7
+0x2A2F 0x2463A
+0x2A30 0x24639
+0x2A31 0x2463E
+0x2A32 0x24638
+0x2A33 0x2463D
+0x2A34 0x2464F
+0x2A35 0x2476E
+0x2A36 0x2475F
+0x2A37 0x24781
+0x2A38 0x24782
+0x2A39 0x24771
+0x2A3A 0x2477B
+0x2A3B 0x24779
+0x2A3C 0x24777
+0x2A3D 0x24773
+0x2A3E 0x2476F
+0x2A3F 0x24797
+0x2A40 0x2477E
+0x2A41 0x248FC
+0x2A42 0x24911
+0x2A43 0x24932
+0x2A44 0x24931
+0x2A45 0x24910
+0x2A46 0x24AEC
+0x2A47 0x24AEB
+0x2A48 0x24B2C
+0x2A49 0x24B2D
+0x2A4A 0x24BDA
+0x2A4B 0x24C2E
+0x2A4C 0x24C2C
+0x2A4D 0x24C2A
+0x2A4E 0x24C33
+0x2A4F 0x24C4B
+0x2A50 0x24D18
+0x2A51 0x24D42
+0x2A52 0x24D3B
+0x2A53 0x24D3F
+0x2A54 0x24D41
+0x2A55 0x24D43
+0x2A56 0x24D3C
+0x2A57 0x24F4C
+0x2A58 0x24F4A
+0x2A59 0x24F49
+0x2A5A 0x24F56
+0x2A5B 0x24FCF
+0x2A5C 0x25047
+0x2A5D 0x25048
+0x2A5E 0x25046
+0x2A5F 0x2511B
+0x2A60 0x25111
+0x2A61 0x25114
+0x2A62 0x2511D
+0x2A63 0x25117
+0x2A64 0x2511E
+0x2A65 0x2510B
+0x2A66 0x2511C
+0x2A67 0x25112
+0x2A68 0x25116
+0x2A69 0x2510D
+0x2A6A 0x25115
+0x2A6B 0x25113
+0x2A6C 0x25118
+0x2A6E 0x253AC
+0x2A6F 0x25444
+0x2A70 0x2542C
+0x2A71 0x25445
+0x2A72 0x25766
+0x2A73 0x2576E
+0x2A74 0x25765
+0x2A75 0x25768
+0x2A76 0x25784
+0x2A77 0x25938
+0x2A78 0x2593B
+0x2A79 0x2593A
+0x2A7A 0x2593F
+0x2A7B 0x25ADF
+0x2A7C 0x25ADD
+0x2A7D 0x25ADE
+0x2A7E 0x25AE2
+0x2B22 0x25E2C
+0x2B23 0x25E2F
+0x2B24 0x25F8F
+0x2B25 0x25F90
+0x2B26 0x25F8C
+0x2B27 0x25F93
+0x2B28 0x26225
+0x2B29 0x26288
+0x2B2A 0x262A7
+0x2B2B 0x263F7
+0x2B2C 0x264BB
+0x2B2D 0x26538
+0x2B2E 0x26539
+0x2B2F 0x26537
+0x2B30 0x26614
+0x2B31 0x2666E
+0x2B32 0x2667B
+0x2B34 0x2666C
+0x2B35 0x2667F
+0x2B36 0x26678
+0x2B37 0x2667A
+0x2B38 0x2666F
+0x2B3A 0x268FE
+0x2B3B 0x26B48
+0x2B3C 0x26B4B
+0x2B3D 0x26B41
+0x2B3E 0x26B49
+0x2B3F 0x26B3B
+0x2B40 0x2722D
+0x2B41 0x275E3
+0x2B42 0x2761A
+0x2B43 0x2760D
+0x2B44 0x27613
+0x2B45 0x27611
+0x2B46 0x2761C
+0x2B48 0x278B5
+0x2B4A 0x27C29
+0x2B4B 0x27CA1
+0x2B4C 0x27D24
+0x2B4D 0x27FBB
+0x2B4E 0x282A1
+0x2B4F 0x28483
+0x2B50 0x2848D
+0x2B51 0x28487
+0x2B52 0x28485
+0x2B53 0x2848A
+0x2B54 0x284A3
+0x2B55 0x28489
+0x2B56 0x28484
+0x2B57 0x284A2
+0x2B58 0x286B1
+0x2B59 0x286B0
+0x2B5A 0x286AF
+0x2B5B 0x286B6
+0x2B5C 0x286C9
+0x2B5D 0x286CA
+0x2B5E 0x286C8
+0x2B5F 0x286B4
+0x2B60 0x28C59
+0x2B61 0x28CC9
+0x2B62 0x28E41
+0x2B63 0x28E4C
+0x2B65 0x28E45
+0x2B66 0x28E5A
+0x2B67 0x200B9
+0x2B68 0x20294
+0x2B69 0x2026E
+0x2B6A 0x202A2
+0x2B6B 0x20267
+0x2B6D 0x202A3
+0x2B6E 0x20276
+0x2B6F 0x2026C
+0x2B70 0x20264
+0x2B71 0x202A5
+0x2B72 0x20230
+0x2B73 0x202A6
+0x2B74 0x20269
+0x2B75 0x202A4
+0x2B76 0x20490
+0x2B77 0x2055F
+0x2B78 0x20560
+0x2B79 0x205DA
+0x2B7A 0x205D8
+0x2B7B 0x205DD
+0x2B7D 0x20759
+0x2B7E 0x2075B
+0x2C21 0x2075A
+0x2C22 0x20739
+0x2C23 0x20734
+0x2C24 0x20744
+0x2C25 0x20733
+0x2C26 0x2073C
+0x2C27 0x20758
+0x2C28 0x2076A
+0x2C29 0x2086F
+0x2C2A 0x20872
+0x2C2B 0x20870
+0x2C2C 0x20871
+0x2C2D 0x2086E
+0x2C2E 0x208F0
+0x2C2F 0x208EB
+0x2C30 0x20949
+0x2C31 0x2094C
+0x2C32 0x209F5
+0x2C33 0x20A20
+0x2C34 0x20A6A
+0x2C35 0x20A72
+0x2C36 0x20B4B
+0x2C37 0x20B5D
+0x2C38 0x20C50
+0x2C39 0x20CF9
+0x2C3A 0x20CFA
+0x2C3B 0x20CFB
+0x2C3C 0x20D23
+0x2C3D 0x20CB7
+0x2C3E 0x20D22
+0x2C3F 0x20CB5
+0x2C40 0x20CC4
+0x2C41 0x20CB4
+0x2C42 0x20CEF
+0x2C44 0x20CCD
+0x2C45 0x20CF0
+0x2C46 0x20CB8
+0x2C47 0x20CCB
+0x2C48 0x20CF1
+0x2C49 0x20CBA
+0x2C4A 0x20D03
+0x2C4B 0x20CF8
+0x2C4C 0x20CB6
+0x2C4D 0x20CBC
+0x2C4E 0x20CB3
+0x2C4F 0x20D21
+0x2C50 0x20CF7
+0x2C51 0x20CC2
+0x2C52 0x20CBE
+0x2C53 0x20CC9
+0x2C54 0x20CBD
+0x2C55 0x20CCE
+0x2C56 0x20CB9
+0x2C57 0x20CC7
+0x2C58 0x20CCA
+0x2C59 0x20CCC
+0x2C5A 0x20D26
+0x2C5B 0x211E4
+0x2C5C 0x211E0
+0x2C5D 0x211F0
+0x2C5E 0x212EC
+0x2C5F 0x21324
+0x2C60 0x21318
+0x2C61 0x2132F
+0x2C62 0x21325
+0x2C63 0x21528
+0x2C64 0x21522
+0x2C65 0x2156A
+0x2C66 0x20157
+0x2C67 0x21594
+0x2C68 0x21592
+0x2C69 0x2159C
+0x2C6A 0x21622
+0x2C6B 0x21630
+0x2C6C 0x2161D
+0x2C6D 0x21623
+0x2C6E 0x21735
+0x2C6F 0x21733
+0x2C70 0x2172F
+0x2C71 0x2174D
+0x2C72 0x21731
+0x2C73 0x2175B
+0x2C74 0x2175A
+0x2C75 0x21732
+0x2C76 0x2175C
+0x2C77 0x21759
+0x2C78 0x2175D
+0x2C79 0x21969
+0x2C7A 0x2196D
+0x2C7B 0x22232
+0x2C7D 0x21A0A
+0x2C7E 0x21A20
+0x2D21 0x21A1F
+0x2D22 0x21A0D
+0x2D23 0x21BE8
+0x2D24 0x21BEC
+0x2D25 0x21C77
+0x2D26 0x21C70
+0x2D27 0x21C71
+0x2D28 0x21DF8
+0x2D29 0x21DD6
+0x2D2A 0x21DD9
+0x2D2B 0x21DDE
+0x2D2C 0x21DD5
+0x2D2D 0x21DE1
+0x2D2F 0x21DE2
+0x2D30 0x21DDD
+0x2D31 0x21DE0
+0x2D32 0x21E0E
+0x2D33 0x21E08
+0x2D34 0x21DDC
+0x2D35 0x21E0A
+0x2D36 0x21E0C
+0x2D37 0x220B4
+0x2D38 0x220B1
+0x2D39 0x220B6
+0x2D3A 0x220BC
+0x2D3B 0x2221D
+0x2D3C 0x22224
+0x2D3D 0x22219
+0x2D3E 0x2221B
+0x2D3F 0x22222
+0x2D40 0x2221A
+0x2D41 0x2221C
+0x2D42 0x22221
+0x2D43 0x223E6
+0x2D44 0x223E4
+0x2D45 0x223E7
+0x2D46 0x223EA
+0x2D48 0x2F89B
+0x2D49 0x224F0
+0x2D4A 0x224F5
+0x2D4B 0x224EF
+0x2D4C 0x22642
+0x2D4D 0x2266E
+0x2D4E 0x2263C
+0x2D4F 0x22697
+0x2D50 0x2268C
+0x2D51 0x22681
+0x2D52 0x22671
+0x2D53 0x226CE
+0x2D54 0x226BA
+0x2D55 0x2267A
+0x2D56 0x2267E
+0x2D58 0x22672
+0x2D59 0x226BB
+0x2D5B 0x22673
+0x2D5C 0x22682
+0x2D5E 0x229BA
+0x2D5F 0x229B8
+0x2D60 0x22A4B
+0x2D61 0x22A48
+0x2D62 0x22B2B
+0x2D63 0x22AF4
+0x2D64 0x22B2C
+0x2D65 0x22B42
+0x2D66 0x22B48
+0x2D67 0x22B44
+0x2D68 0x22B45
+0x2D69 0x22B3C
+0x2D6A 0x22B37
+0x2D6B 0x22B33
+0x2D6C 0x22B41
+0x2D6D 0x22B32
+0x2D6E 0x22B87
+0x2D6F 0x22F27
+0x2D70 0x22F23
+0x2D71 0x22F2D
+0x2D72 0x22F1F
+0x2D73 0x22F2C
+0x2D74 0x22F28
+0x2D75 0x23075
+0x2D76 0x23074
+0x2D77 0x230E7
+0x2D78 0x23132
+0x2D79 0x23131
+0x2D7A 0x23199
+0x2D7B 0x23196
+0x2D7C 0x23198
+0x2D7D 0x2319D
+0x2D7E 0x23192
+0x2E21 0x23194
+0x2E22 0x23195
+0x2E23 0x23197
+0x2E24 0x266B9
+0x2E26 0x23411
+0x2E27 0x2343B
+0x2E28 0x23479
+0x2E29 0x23442
+0x2E2A 0x23443
+0x2E2C 0x23478
+0x2E2D 0x238AC
+0x2E2F 0x238B1
+0x2E30 0x238B4
+0x2E31 0x238B3
+0x2E32 0x238AF
+0x2E33 0x238AA
+0x2E34 0x238B2
+0x2E35 0x23968
+0x2E36 0x239F2
+0x2E37 0x239FE
+0x2E38 0x239F8
+0x2E39 0x239F9
+0x2E3A 0x239FF
+0x2E3B 0x239F5
+0x2E3C 0x239F7
+0x2E3D 0x239FD
+0x2E3E 0x23A00
+0x2E3F 0x23A88
+0x2E40 0x23B6E
+0x2E41 0x23B5D
+0x2E42 0x23B63
+0x2E43 0x23B60
+0x2E44 0x23C61
+0x2E45 0x23D37
+0x2E46 0x23D71
+0x2E47 0x23D23
+0x2E48 0x23D22
+0x2E49 0x23D1F
+0x2E4A 0x23D25
+0x2E4B 0x241FD
+0x2E4C 0x24211
+0x2E4D 0x24223
+0x2E4E 0x241F0
+0x2E4F 0x241EF
+0x2E50 0x2450E
+0x2E51 0x2450C
+0x2E52 0x245BA
+0x2E54 0x24652
+0x2E55 0x24655
+0x2E56 0x24653
+0x2E57 0x24654
+0x2E58 0x24651
+0x2E59 0x24658
+0x2E5A 0x247B0
+0x2E5B 0x2479F
+0x2E5D 0x247A1
+0x2E5E 0x2479A
+0x2E5F 0x247BE
+0x2E60 0x247A0
+0x2E61 0x24937
+0x2E63 0x24AF1
+0x2E64 0x24AF2
+0x2E65 0x24B34
+0x2E66 0x24B37
+0x2E67 0x24B35
+0x2E68 0x2238C
+0x2E69 0x24BDF
+0x2E6A 0x24C4C
+0x2E6B 0x24C4E
+0x2E6C 0x24C64
+0x2E6D 0x24C63
+0x2E6E 0x24C36
+0x2E6F 0x24D58
+0x2E70 0x24D68
+0x2E71 0x24D5B
+0x2E72 0x24D5F
+0x2E73 0x24D59
+0x2E74 0x24D65
+0x2E75 0x24D60
+0x2E76 0x24D5E
+0x2E77 0x24FD5
+0x2E78 0x24FD6
+0x2E79 0x2504E
+0x2E7A 0x25052
+0x2E7B 0x25135
+0x2E7C 0x25139
+0x2E7D 0x25158
+0x2E7E 0x25141
+0x2F21 0x25157
+0x2F22 0x25138
+0x2F23 0x2513D
+0x2F24 0x25132
+0x2F25 0x25144
+0x2F26 0x2F944
+0x2F27 0x25363
+0x2F28 0x25362
+0x2F29 0x253B8
+0x2F2A 0x253B0
+0x2F2B 0x253B1
+0x2F2C 0x2544D
+0x2F2D 0x25463
+0x2F2E 0x25470
+0x2F2F 0x2544B
+0x2F30 0x2544F
+0x2F31 0x2544E
+0x2F32 0x25453
+0x2F33 0x25447
+0x2F35 0x25454
+0x2F36 0x25452
+0x2F37 0x25459
+0x2F38 0x2547E
+0x2F39 0x2562B
+0x2F3A 0x2562E
+0x2F3B 0x2577F
+0x2F3C 0x2577E
+0x2F3D 0x25781
+0x2F3E 0x25783
+0x2F3F 0x25947
+0x2F40 0x25954
+0x2F41 0x2594D
+0x2F42 0x2594C
+0x2F43 0x2594B
+0x2F44 0x25957
+0x2F45 0x25A65
+0x2F46 0x25A64
+0x2F47 0x25A61
+0x2F48 0x25A62
+0x2F49 0x25AF0
+0x2F4A 0x25AF3
+0x2F4B 0x25AF9
+0x2F4C 0x25AF4
+0x2F4D 0x25AF5
+0x2F4E 0x25AEF
+0x2F4F 0x25AF8
+0x2F50 0x25AFC
+0x2F51 0x25AF7
+0x2F52 0x25AFD
+0x2F53 0x25B17
+0x2F54 0x25E34
+0x2F55 0x25E36
+0x2F56 0x25E38
+0x2F57 0x25FAF
+0x2F58 0x25FAE
+0x2F59 0x25FAC
+0x2F5A 0x25FA2
+0x2F5B 0x26228
+0x2F5C 0x22EC2
+0x2F5D 0x2629C
+0x2F5E 0x262B3
+0x2F5F 0x26290
+0x2F60 0x26406
+0x2F61 0x26404
+0x2F62 0x2640B
+0x2F63 0x26405
+0x2F64 0x26540
+0x2F65 0x2654F
+0x2F66 0x266AB
+0x2F67 0x2669D
+0x2F68 0x266B8
+0x2F69 0x266B2
+0x2F6A 0x266D2
+0x2F6B 0x266CF
+0x2F6C 0x266A2
+0x2F6E 0x266A5
+0x2F6F 0x266A9
+0x2F70 0x266A7
+0x2F71 0x266D0
+0x2F72 0x26902
+0x2F73 0x269CF
+0x2F74 0x269D0
+0x2F75 0x26A16
+0x2F76 0x26A19
+0x2F77 0x26B75
+0x2F78 0x26B71
+0x2F79 0x26B91
+0x2F7A 0x26B72
+0x2F7B 0x26B8E
+0x2F7C 0x26B6D
+0x2F7D 0x26B88
+0x2F7E 0x26B73
+0x3022 0x26B81
+0x3023 0x26B76
+0x3024 0x26B7B
+0x3025 0x26B7F
+0x3026 0x26B90
+0x3027 0x26B78
+0x3028 0x2724B
+0x3029 0x27248
+0x302A 0x2725B
+0x302B 0x27251
+0x302C 0x2723D
+0x302D 0x27240
+0x302E 0x27246
+0x302F 0x2724D
+0x3030 0x2723B
+0x3031 0x2724A
+0x3032 0x27241
+0x3033 0x2723E
+0x3034 0x2724E
+0x3035 0x275AC
+0x3036 0x275E6
+0x3037 0x275E9
+0x3038 0x27629
+0x303A 0x27633
+0x303B 0x2762E
+0x303C 0x2761E
+0x303E 0x2F9C5
+0x303F 0x27622
+0x3040 0x27627
+0x3041 0x277E7
+0x3042 0x2780B
+0x3043 0x27966
+0x3044 0x27BAD
+0x3045 0x27BAE
+0x3047 0x27C2B
+0x3048 0x27C2A
+0x3049 0x27D2C
+0x304A 0x27D2D
+0x304D 0x27E8F
+0x304E 0x27E93
+0x304F 0x27FC6
+0x3050 0x27FC5
+0x3051 0x28215
+0x3052 0x28213
+0x3053 0x282B1
+0x3054 0x282A9
+0x3056 0x284A8
+0x3057 0x284AB
+0x3058 0x284BE
+0x3059 0x284AC
+0x305A 0x284A9
+0x305B 0x284A6
+0x305C 0x284C1
+0x305D 0x286CC
+0x305E 0x286D1
+0x305F 0x286D3
+0x3060 0x286E4
+0x3061 0x286CB
+0x3062 0x286E1
+0x3063 0x286D2
+0x3064 0x286E3
+0x3065 0x286CF
+0x3066 0x286D0
+0x3067 0x286E5
+0x3068 0x2870E
+0x3069 0x28CCC
+0x306A 0x28CCA
+0x306B 0x28CCB
+0x306C 0x28E5C
+0x306D 0x28E61
+0x306E 0x28E5D
+0x306F 0x28E59
+0x3070 0x29077
+0x3071 0x29684
+0x3072 0x20041
+0x3073 0x200FD
+0x3074 0x2011A
+0x3075 0x20163
+0x3076 0x202B6
+0x3077 0x202B2
+0x3078 0x202E9
+0x3079 0x202E7
+0x307A 0x202D6
+0x307B 0x20330
+0x307C 0x202EC
+0x307D 0x202DD
+0x307E 0x202E8
+0x3121 0x202B0
+0x3122 0x202B5
+0x3123 0x202E1
+0x3124 0x20498
+0x3125 0x20499
+0x3127 0x20593
+0x3128 0x205E5
+0x312A 0x20760
+0x312B 0x2075E
+0x312D 0x2087B
+0x312E 0x208F1
+0x312F 0x208F3
+0x3130 0x20A7F
+0x3131 0x2F838
+0x3132 0x20B57
+0x3133 0x20B58
+0x3134 0x20D39
+0x3135 0x20DA7
+0x3136 0x20D35
+0x3137 0x20D60
+0x3138 0x20D51
+0x3139 0x20D62
+0x313A 0x20D42
+0x313B 0x20D3C
+0x313C 0x20D43
+0x313D 0x20DAB
+0x313E 0x20DA9
+0x313F 0x20DB4
+0x3140 0x20D79
+0x3141 0x20D6A
+0x3142 0x20D3B
+0x3143 0x20DAA
+0x3144 0x20D33
+0x3145 0x20D37
+0x3146 0x20D27
+0x3147 0x20DA8
+0x3148 0x20D70
+0x3149 0x20D2F
+0x314A 0x20D36
+0x314B 0x20DB5
+0x314C 0x20D30
+0x314D 0x20D3A
+0x314E 0x20D38
+0x314F 0x20DB1
+0x3150 0x20DAC
+0x3151 0x20D2E
+0x3152 0x20D75
+0x3153 0x20DB0
+0x3154 0x211F7
+0x3155 0x21200
+0x3156 0x211F1
+0x3157 0x211F3
+0x3158 0x21360
+0x3159 0x21361
+0x315A 0x21332
+0x315B 0x2132D
+0x315C 0x2134A
+0x315D 0x2132A
+0x315E 0x21567
+0x315F 0x215A2
+0x3160 0x215A3
+0x3161 0x2159E
+0x3162 0x215A4
+0x3163 0x21644
+0x3164 0x21632
+0x3165 0x2179B
+0x3166 0x21798
+0x3167 0x21799
+0x3168 0x2179A
+0x3169 0x21766
+0x316A 0x21762
+0x316B 0x2176B
+0x316C 0x24562
+0x316D 0x21767
+0x316E 0x21A3B
+0x316F 0x21A23
+0x3170 0x21A29
+0x3171 0x21B7E
+0x3172 0x21BF3
+0x3174 0x21BF5
+0x3176 0x21C80
+0x3177 0x21C7E
+0x3178 0x21C7C
+0x3179 0x21C7F
+0x317A 0x21C7D
+0x317B 0x21C81
+0x317C 0x21E25
+0x317D 0x21E29
+0x317E 0x21E17
+0x3221 0x21E63
+0x3222 0x21E67
+0x3223 0x21E65
+0x3224 0x21E2A
+0x3225 0x21E68
+0x3226 0x21E26
+0x3227 0x21E64
+0x3228 0x21E1B
+0x3229 0x21E62
+0x322A 0x21E69
+0x322B 0x21FFE
+0x322C 0x22044
+0x322D 0x22042
+0x322E 0x220B7
+0x322F 0x220D2
+0x3230 0x220D4
+0x3231 0x220D7
+0x3232 0x220DC
+0x3233 0x220D1
+0x3234 0x220D5
+0x3235 0x220CD
+0x3236 0x220D8
+0x3237 0x2219A
+0x3238 0x22242
+0x3239 0x22235
+0x323A 0x22258
+0x323B 0x22234
+0x323C 0x2223C
+0x323D 0x2223B
+0x323E 0x2223E
+0x323F 0x2223D
+0x3240 0x2225A
+0x3241 0x22241
+0x3242 0x22238
+0x3243 0x22245
+0x3244 0x22233
+0x3245 0x22326
+0x3247 0x223F7
+0x3248 0x223EF
+0x3249 0x223F0
+0x324A 0x223EE
+0x324B 0x2249D
+0x324C 0x22506
+0x324D 0x22511
+0x324E 0x22508
+0x324F 0x22502
+0x3250 0x2250A
+0x3251 0x22507
+0x3252 0x22691
+0x3253 0x2268E
+0x3254 0x22685
+0x3255 0x226E8
+0x3256 0x22717
+0x3257 0x226D4
+0x3259 0x226C4
+0x325A 0x226D5
+0x325C 0x226D8
+0x325D 0x22680
+0x325E 0x226DE
+0x325F 0x22742
+0x3260 0x229C7
+0x3261 0x229BF
+0x3262 0x22B8D
+0x3263 0x22B89
+0x3264 0x22B90
+0x3265 0x22B9A
+0x3266 0x22BC8
+0x3267 0x22B92
+0x3268 0x22BA1
+0x3269 0x22B84
+0x326A 0x22F57
+0x326B 0x22F47
+0x326C 0x22F77
+0x326D 0x22F3A
+0x326E 0x22F50
+0x326F 0x22F42
+0x3270 0x22F43
+0x3271 0x22FA3
+0x3272 0x23077
+0x3273 0x231B2
+0x3274 0x231E2
+0x3275 0x231BD
+0x3276 0x23374
+0x3277 0x23482
+0x3278 0x234B8
+0x327A 0x234BA
+0x327B 0x234B9
+0x327C 0x234BB
+0x327D 0x23487
+0x327E 0x2F8E4
+0x3321 0x23483
+0x3322 0x234B7
+0x3323 0x20043
+0x3324 0x238CE
+0x3325 0x238BA
+0x3326 0x23973
+0x3327 0x23A09
+0x3328 0x23A0A
+0x3329 0x23A0B
+0x332A 0x23A07
+0x332B 0x23A05
+0x332C 0x23A0E
+0x332D 0x23A97
+0x332E 0x23B77
+0x332F 0x23B7B
+0x3330 0x23B7A
+0x3331 0x23B74
+0x3332 0x23B79
+0x3333 0x23D86
+0x3334 0x23DF5
+0x3335 0x23DA5
+0x3336 0x23D9D
+0x3337 0x23DBE
+0x3338 0x23D96
+0x3339 0x23DE1
+0x333A 0x23DA4
+0x333B 0x23DA1
+0x333C 0x23DF6
+0x333E 0x23D8D
+0x333F 0x23D8B
+0x3340 0x23D78
+0x3341 0x23D98
+0x3342 0x23E0A
+0x3343 0x2425D
+0x3344 0x24227
+0x3345 0x2425F
+0x3346 0x245C0
+0x3347 0x245C1
+0x3348 0x2466D
+0x3349 0x2465E
+0x334A 0x2468A
+0x334B 0x24662
+0x334C 0x24664
+0x334E 0x247C0
+0x334F 0x247CA
+0x3350 0x247D1
+0x3352 0x247C7
+0x3353 0x247CE
+0x3355 0x247C5
+0x3356 0x24936
+0x3357 0x24957
+0x3358 0x24977
+0x3359 0x24AF6
+0x335A 0x24AF7
+0x335B 0x24B55
+0x335C 0x24B44
+0x335D 0x24B3E
+0x335E 0x24B42
+0x335F 0x24B52
+0x3360 0x24BE1
+0x3361 0x24C08
+0x3362 0x24C68
+0x3363 0x24C67
+0x3365 0x2F937
+0x3366 0x24D7E
+0x3367 0x24D93
+0x3368 0x24D79
+0x3369 0x24D81
+0x336A 0x24D7D
+0x336B 0x24D7B
+0x336C 0x24D94
+0x336E 0x24F66
+0x336F 0x24FD9
+0x3370 0x24FE0
+0x3371 0x2F93E
+0x3372 0x2505F
+0x3373 0x2515F
+0x3374 0x2515E
+0x3375 0x25168
+0x3377 0x25188
+0x3378 0x2516A
+0x3379 0x2516C
+0x337A 0x25166
+0x337B 0x25167
+0x337C 0x25189
+0x337D 0x25160
+0x337E 0x25185
+0x3421 0x2032A
+0x3422 0x25368
+0x3423 0x253B9
+0x3424 0x253BA
+0x3425 0x253BE
+0x3426 0x2546F
+0x3427 0x25480
+0x3428 0x25474
+0x3429 0x25481
+0x342A 0x2547A
+0x342B 0x2549C
+0x342C 0x25473
+0x342D 0x25482
+0x342E 0x2547F
+0x342F 0x254A7
+0x3430 0x25479
+0x3431 0x25478
+0x3432 0x2547D
+0x3433 0x254A8
+0x3434 0x2547C
+0x3435 0x25668
+0x3436 0x2564E
+0x3437 0x2579E
+0x343A 0x25798
+0x343C 0x25785
+0x343D 0x2579C
+0x343E 0x257C5
+0x343F 0x2579A
+0x3440 0x25968
+0x3441 0x25965
+0x3442 0x25967
+0x3443 0x25961
+0x3444 0x25960
+0x3447 0x25A7B
+0x3449 0x25B19
+0x344A 0x25B0E
+0x344B 0x25B31
+0x344C 0x25B12
+0x344D 0x25B10
+0x344E 0x25B15
+0x344F 0x25B3F
+0x3450 0x25B1D
+0x3451 0x25B1E
+0x3452 0x25E4D
+0x3453 0x25E48
+0x3454 0x25E45
+0x3455 0x25E42
+0x3456 0x25E49
+0x3457 0x25E4A
+0x3458 0x25E47
+0x345A 0x25E4C
+0x345B 0x25FCD
+0x345C 0x25FD5
+0x345D 0x25FC4
+0x345E 0x25FCA
+0x345F 0x25FC3
+0x3461 0x26229
+0x3462 0x262B4
+0x3463 0x2636D
+0x3464 0x26366
+0x3465 0x2636A
+0x3466 0x26415
+0x3467 0x264D3
+0x3468 0x264EC
+0x3469 0x26555
+0x346B 0x266D6
+0x346C 0x266D8
+0x346D 0x26751
+0x346E 0x266E0
+0x346F 0x26703
+0x3470 0x26704
+0x3471 0x266DA
+0x3472 0x266EA
+0x3473 0x26702
+0x3474 0x266D3
+0x3475 0x266E4
+0x3476 0x266E5
+0x3477 0x2693B
+0x3478 0x26966
+0x3479 0x26A2C
+0x347A 0x26A21
+0x347B 0x26A26
+0x347C 0x26AD4
+0x347D 0x26AD5
+0x347E 0x26AD9
+0x3521 0x26BD5
+0x3522 0x26BEB
+0x3523 0x26BC5
+0x3525 0x26C27
+0x3526 0x26BF0
+0x3527 0x26BB9
+0x3528 0x26C18
+0x3529 0x26BEE
+0x352B 0x26BB7
+0x352C 0x26BBB
+0x352D 0x26BEF
+0x352E 0x26BB8
+0x352F 0x26BDF
+0x3530 0x26BDA
+0x3531 0x26BE3
+0x3532 0x26BC9
+0x3533 0x26BEC
+0x3534 0x271A4
+0x3536 0x271A3
+0x3537 0x2725E
+0x3538 0x27261
+0x3539 0x27262
+0x353A 0x27263
+0x353B 0x2728E
+0x353C 0x27269
+0x353D 0x2726B
+0x353E 0x27285
+0x353F 0x2728D
+0x3540 0x27264
+0x3541 0x2726D
+0x3542 0x2764C
+0x3543 0x27649
+0x3544 0x27647
+0x3545 0x27648
+0x3546 0x27642
+0x3547 0x27645
+0x3548 0x2765B
+0x3549 0x2765D
+0x354A 0x27646
+0x354B 0x27813
+0x354C 0x2781A
+0x354D 0x2780E
+0x354E 0x2780F
+0x354F 0x2781B
+0x3550 0x27812
+0x3551 0x278C3
+0x3552 0x278BE
+0x3553 0x278BD
+0x3554 0x27979
+0x3555 0x2797C
+0x3558 0x27980
+0x3559 0x27975
+0x355A 0x2799B
+0x355C 0x27974
+0x355F 0x22041
+0x3560 0x22494
+0x3561 0x27C30
+0x3562 0x27CA7
+0x3563 0x27CA5
+0x3564 0x27CA4
+0x3565 0x27D3A
+0x3566 0x27E5B
+0x3567 0x27E9F
+0x3568 0x27EA8
+0x3569 0x27EB3
+0x356A 0x27EA1
+0x356B 0x27EA7
+0x356C 0x27EB2
+0x356D 0x27E9D
+0x356E 0x27EA3
+0x356F 0x27EA2
+0x3570 0x27FEF
+0x3571 0x27FD9
+0x3573 0x27FD5
+0x3574 0x27FDD
+0x3575 0x27FDA
+0x3576 0x27FEE
+0x3577 0x27FD7
+0x3578 0x2821A
+0x3579 0x28219
+0x357A 0x28218
+0x357B 0x282B3
+0x357C 0x282BF
+0x357D 0x282BB
+0x357E 0x282C0
+0x3621 0x282B9
+0x3622 0x282B8
+0x3623 0x282D5
+0x3624 0x28411
+0x3625 0x28410
+0x3626 0x284C3
+0x3627 0x284C2
+0x3628 0x284E9
+0x3629 0x284CD
+0x362A 0x284E5
+0x362B 0x284CA
+0x362C 0x284C7
+0x362D 0x284E8
+0x362E 0x286F1
+0x362F 0x2870C
+0x3630 0x286EF
+0x3631 0x286EE
+0x3632 0x286F3
+0x3633 0x2870D
+0x3634 0x286F6
+0x3635 0x286F0
+0x3637 0x287F5
+0x3638 0x287F4
+0x3639 0x287F8
+0x363A 0x287FE
+0x363B 0x28911
+0x363C 0x28922
+0x363D 0x28942
+0x363E 0x28C5C
+0x363F 0x28C5A
+0x3640 0x28C5D
+0x3641 0x28CD1
+0x3642 0x28CD0
+0x3643 0x28E75
+0x3644 0x28E7B
+0x3645 0x28F89
+0x3646 0x2944D
+0x3647 0x29689
+0x3648 0x29692
+0x3649 0x2968C
+0x364A 0x29688
+0x364B 0x29867
+0x364C 0x29868
+0x364D 0x20321
+0x364E 0x202F2
+0x364F 0x20309
+0x3650 0x202F8
+0x3651 0x202F0
+0x3652 0x202F3
+0x3653 0x202F5
+0x3654 0x202FB
+0x3655 0x202F7
+0x3656 0x202EF
+0x3657 0x2030B
+0x3658 0x204A2
+0x3659 0x205F5
+0x365A 0x205F3
+0x365B 0x205F4
+0x365C 0x205F2
+0x365D 0x20698
+0x365E 0x20768
+0x365F 0x20780
+0x3660 0x20785
+0x3661 0x2078E
+0x3662 0x2078F
+0x3663 0x202F4
+0x3664 0x20786
+0x3665 0x207A4
+0x3666 0x20886
+0x3667 0x20889
+0x3668 0x20887
+0x3669 0x20885
+0x366B 0x20888
+0x366C 0x20AFF
+0x366D 0x20B66
+0x366F 0x20DC3
+0x3671 0x20DC4
+0x3672 0x20E3B
+0x3673 0x20DE7
+0x3674 0x20DF8
+0x3675 0x20DFB
+0x3677 0x20DBE
+0x3678 0x20DC6
+0x367B 0x20DFC
+0x367C 0x20DC0
+0x367D 0x20E33
+0x367E 0x20DC9
+0x3721 0x20DFE
+0x3722 0x20DDA
+0x3723 0x20DCC
+0x3724 0x20DBB
+0x3725 0x20DFD
+0x3726 0x20DDF
+0x3727 0x20DCD
+0x3728 0x20DC2
+0x3729 0x20DC8
+0x372A 0x20E32
+0x372B 0x20E2D
+0x372C 0x20DD2
+0x372D 0x20E31
+0x372E 0x20DD3
+0x372F 0x20E2E
+0x3730 0x20DCF
+0x3731 0x211FF
+0x3732 0x21209
+0x3733 0x211FC
+0x3734 0x21372
+0x3735 0x213AA
+0x3736 0x213AB
+0x3737 0x213A7
+0x3738 0x2137B
+0x3739 0x21376
+0x373A 0x213A8
+0x373B 0x213AC
+0x373E 0x215AA
+0x373F 0x20A03
+0x3740 0x215AC
+0x3741 0x215AD
+0x3742 0x215AB
+0x3743 0x21650
+0x3744 0x21658
+0x3745 0x217DD
+0x3747 0x217AE
+0x3748 0x217A2
+0x3749 0x217AB
+0x374A 0x217E3
+0x374B 0x217AF
+0x374C 0x217E0
+0x374D 0x217E4
+0x374F 0x217A7
+0x3750 0x217AA
+0x3751 0x217E2
+0x3752 0x217E1
+0x3753 0x217DF
+0x3754 0x217AD
+0x3755 0x217E5
+0x3756 0x217D1
+0x3757 0x217AC
+0x3758 0x217D5
+0x3759 0x217A3
+0x375A 0x2179F
+0x375B 0x21979
+0x375C 0x21976
+0x375D 0x21A43
+0x375E 0x21A3D
+0x375F 0x21A47
+0x3760 0x21A44
+0x3761 0x21A3F
+0x3762 0x21A5B
+0x3763 0x21B7F
+0x3764 0x21C9A
+0x3765 0x21C9C
+0x3767 0x21D1E
+0x3768 0x21E88
+0x3769 0x21E6A
+0x376A 0x21E76
+0x376B 0x21E72
+0x376C 0x21E70
+0x376D 0x21E7E
+0x376E 0x21E6C
+0x376F 0x21E6F
+0x3770 0x21E75
+0x3771 0x21E77
+0x3772 0x21E78
+0x3773 0x21E8A
+0x3774 0x21E79
+0x3775 0x21E94
+0x3776 0x22001
+0x3777 0x22105
+0x3778 0x220F1
+0x3779 0x220EE
+0x377A 0x220EF
+0x377B 0x22104
+0x377D 0x220FA
+0x377E 0x22107
+0x3821 0x220F4
+0x3822 0x220F5
+0x3823 0x2219C
+0x3824 0x2226D
+0x3825 0x22269
+0x3826 0x22266
+0x3827 0x22262
+0x3828 0x22246
+0x382A 0x22265
+0x382B 0x2225D
+0x382C 0x2225E
+0x382D 0x2225F
+0x382E 0x2238E
+0x382F 0x22402
+0x3830 0x22406
+0x3831 0x22404
+0x3832 0x22403
+0x3833 0x22462
+0x3834 0x22527
+0x3835 0x22521
+0x3836 0x22520
+0x3837 0x22524
+0x3838 0x22529
+0x3839 0x22531
+0x383A 0x22523
+0x383B 0x22522
+0x383C 0x226DC
+0x383D 0x2274D
+0x383E 0x226E5
+0x383F 0x226D3
+0x3840 0x226EE
+0x3841 0x226E6
+0x3843 0x22736
+0x3844 0x22740
+0x3845 0x2283F
+0x3846 0x2273D
+0x3847 0x22744
+0x3849 0x2275F
+0x384A 0x22729
+0x384B 0x22749
+0x384C 0x2278A
+0x384D 0x2272A
+0x384E 0x22787
+0x384F 0x2274C
+0x3850 0x22731
+0x3851 0x22748
+0x3852 0x2272B
+0x3853 0x2273B
+0x3854 0x22741
+0x3855 0x226C9
+0x3856 0x22734
+0x3857 0x22753
+0x3858 0x22735
+0x3859 0x22747
+0x385A 0x22738
+0x385B 0x229D1
+0x385C 0x229D2
+0x385D 0x22A51
+0x385E 0x22A55
+0x385F 0x22A52
+0x3860 0x22A53
+0x3861 0x22B8F
+0x3862 0x22BF4
+0x3863 0x22C47
+0x3864 0x22C0D
+0x3865 0x22C1C
+0x3866 0x22BFB
+0x3867 0x22C19
+0x3868 0x22BF7
+0x3869 0x22BF9
+0x386A 0x22BF5
+0x386B 0x22BE9
+0x386C 0x22C0A
+0x386D 0x22BEE
+0x386E 0x22C0B
+0x386F 0x22BFD
+0x3870 0x22C06
+0x3871 0x22C02
+0x3872 0x22C16
+0x3873 0x22C18
+0x3874 0x22BF0
+0x3875 0x22ED4
+0x3876 0x22F66
+0x3877 0x22F6A
+0x3878 0x22F75
+0x3879 0x22F76
+0x387A 0x22F80
+0x387B 0x22F6D
+0x387D 0x22F69
+0x387E 0x22F67
+0x3921 0x22F68
+0x3922 0x22F5D
+0x3923 0x230A4
+0x3924 0x230FE
+0x3925 0x230FD
+0x3926 0x231EC
+0x3927 0x231E9
+0x3928 0x23221
+0x3929 0x231EB
+0x392A 0x231E7
+0x392B 0x231F2
+0x392C 0x23220
+0x392D 0x2337A
+0x392E 0x2352D
+0x392F 0x2352E
+0x3930 0x234CA
+0x3931 0x2352F
+0x3932 0x234C8
+0x3934 0x234CB
+0x3935 0x234C3
+0x3936 0x23484
+0x3937 0x234D2
+0x3938 0x234C6
+0x393A 0x234CF
+0x393B 0x234D5
+0x393C 0x234D4
+0x393D 0x234DD
+0x393E 0x2352B
+0x393F 0x235A3
+0x3940 0x234DB
+0x3941 0x2352C
+0x3942 0x23513
+0x3944 0x238D1
+0x3945 0x238CC
+0x3946 0x238D5
+0x3947 0x238C9
+0x3948 0x238CF
+0x3949 0x238D2
+0x394A 0x2397B
+0x394B 0x2397C
+0x394C 0x23A23
+0x394D 0x23A1D
+0x394E 0x23A1C
+0x394F 0x23A1E
+0x3950 0x23A22
+0x3951 0x23A24
+0x3952 0x23A20
+0x3953 0x23A18
+0x3954 0x23A21
+0x3955 0x23B88
+0x3956 0x23B8A
+0x3957 0x23B94
+0x3958 0x23B8F
+0x3959 0x23B8E
+0x395A 0x23B90
+0x395C 0x23BA7
+0x395D 0x23C64
+0x395F 0x23E18
+0x3960 0x23E14
+0x3961 0x23E1D
+0x3962 0x23E05
+0x3963 0x23DFF
+0x3964 0x23E1B
+0x3965 0x23E1A
+0x3966 0x23E19
+0x3967 0x23E03
+0x3968 0x23E0E
+0x3969 0x23E47
+0x396A 0x23E04
+0x396B 0x23E5A
+0x396C 0x23E07
+0x396D 0x23E20
+0x396E 0x2426A
+0x396F 0x24266
+0x3970 0x2427A
+0x3971 0x24265
+0x3972 0x242AF
+0x3973 0x245CD
+0x3974 0x245CF
+0x3975 0x245D1
+0x3976 0x245CE
+0x3977 0x2465F
+0x3978 0x24677
+0x3979 0x24674
+0x397A 0x24688
+0x397B 0x24675
+0x397C 0x24689
+0x397D 0x24672
+0x397E 0x247C6
+0x3A21 0x247EA
+0x3A22 0x247E0
+0x3A23 0x24807
+0x3A24 0x247E6
+0x3A25 0x247E5
+0x3A26 0x247DD
+0x3A27 0x247E3
+0x3A28 0x247DA
+0x3A29 0x249AE
+0x3A2A 0x2497E
+0x3A2B 0x2497D
+0x3A2C 0x2497F
+0x3A2E 0x249D9
+0x3A2F 0x24AFA
+0x3A30 0x24AFB
+0x3A31 0x24B4D
+0x3A32 0x24B54
+0x3A33 0x24B51
+0x3A34 0x24B50
+0x3A35 0x24D98
+0x3A36 0x24D95
+0x3A37 0x24D9D
+0x3A38 0x24DC1
+0x3A39 0x24D9A
+0x3A3A 0x24D9B
+0x3A3C 0x24D9C
+0x3A3D 0x24DD7
+0x3A3E 0x24DA4
+0x3A3F 0x24D96
+0x3A40 0x24DA0
+0x3A41 0x24F31
+0x3A42 0x24FE9
+0x3A43 0x2506E
+0x3A44 0x2519A
+0x3A45 0x251A5
+0x3A46 0x25194
+0x3A47 0x251A6
+0x3A48 0x25199
+0x3A49 0x2518B
+0x3A4A 0x25198
+0x3A4B 0x25191
+0x3A4C 0x2518C
+0x3A4D 0x251A1
+0x3A4E 0x251A3
+0x3A4F 0x251C6
+0x3A50 0x2536F
+0x3A51 0x2536D
+0x3A52 0x2536A
+0x3A53 0x2536C
+0x3A54 0x25371
+0x3A55 0x2536E
+0x3A56 0x253DF
+0x3A57 0x254AC
+0x3A58 0x254AA
+0x3A5A 0x254B5
+0x3A5B 0x254AD
+0x3A5C 0x254B2
+0x3A5D 0x254B3
+0x3A5E 0x254AB
+0x3A5F 0x254B6
+0x3A60 0x254C7
+0x3A61 0x254C6
+0x3A62 0x2566C
+0x3A63 0x25670
+0x3A64 0x257B3
+0x3A66 0x2598C
+0x3A67 0x25981
+0x3A68 0x25983
+0x3A69 0x2597D
+0x3A6A 0x25985
+0x3A6B 0x25990
+0x3A6C 0x259A2
+0x3A6D 0x2598D
+0x3A6E 0x2598F
+0x3A6F 0x2597E
+0x3A70 0x2598A
+0x3A71 0x2597F
+0x3A72 0x25976
+0x3A73 0x25987
+0x3A74 0x25978
+0x3A75 0x25A80
+0x3A76 0x25A82
+0x3A77 0x25A81
+0x3A78 0x25A83
+0x3A79 0x25B5A
+0x3A7A 0x25B34
+0x3A7B 0x25B2C
+0x3A7C 0x25B2A
+0x3A7D 0x25B40
+0x3A7E 0x25B2D
+0x3B21 0x25B33
+0x3B22 0x25B2B
+0x3B23 0x25B4B
+0x3B25 0x25B3C
+0x3B26 0x25E5A
+0x3B27 0x25E77
+0x3B28 0x25E60
+0x3B29 0x25FFA
+0x3B2A 0x25FF9
+0x3B2B 0x25FFC
+0x3B2D 0x25FF5
+0x3B2E 0x25FE8
+0x3B2F 0x26009
+0x3B30 0x25FE7
+0x3B31 0x25FE6
+0x3B32 0x25FE9
+0x3B33 0x26232
+0x3B34 0x2622C
+0x3B35 0x262BD
+0x3B36 0x262BC
+0x3B37 0x2637A
+0x3B38 0x2637E
+0x3B39 0x26379
+0x3B3B 0x26423
+0x3B3C 0x26430
+0x3B3D 0x26428
+0x3B3E 0x264D4
+0x3B3F 0x26ACE
+0x3B40 0x264F1
+0x3B41 0x264F0
+0x3B42 0x26560
+0x3B43 0x26565
+0x3B44 0x266A8
+0x3B45 0x2670A
+0x3B46 0x2671B
+0x3B47 0x26712
+0x3B48 0x26707
+0x3B49 0x2674F
+0x3B4A 0x2670E
+0x3B4B 0x26752
+0x3B4C 0x26716
+0x3B4E 0x26753
+0x3B4F 0x26754
+0x3B50 0x2F984
+0x3B51 0x26756
+0x3B52 0x2696D
+0x3B53 0x26972
+0x3B54 0x26A2F
+0x3B55 0x26C2A
+0x3B57 0x26C63
+0x3B58 0x26C84
+0x3B59 0x26CAF
+0x3B5A 0x26C45
+0x3B5B 0x26C70
+0x3B5C 0x26C56
+0x3B5D 0x26C16
+0x3B5E 0x26C3D
+0x3B5F 0x26C38
+0x3B60 0x26C6F
+0x3B61 0x26C77
+0x3B62 0x26C2E
+0x3B63 0x26C31
+0x3B64 0x26C4C
+0x3B65 0x26C5F
+0x3B66 0x26C75
+0x3B67 0x26C39
+0x3B68 0x26C3A
+0x3B69 0x26C2C
+0x3B6A 0x26C2D
+0x3B6B 0x26C3F
+0x3B6C 0x26C2F
+0x3B6D 0x26C30
+0x3B6E 0x26C3E
+0x3B71 0x271B2
+0x3B72 0x272B7
+0x3B73 0x2728F
+0x3B75 0x27296
+0x3B76 0x2729E
+0x3B77 0x27297
+0x3B78 0x27295
+0x3B79 0x272A5
+0x3B7A 0x27298
+0x3B7C 0x272A3
+0x3B7D 0x2729A
+0x3B7E 0x272AD
+0x3C21 0x272A6
+0x3C22 0x272B6
+0x3C23 0x27299
+0x3C24 0x272AF
+0x3C25 0x272AC
+0x3C27 0x2729F
+0x3C28 0x27294
+0x3C29 0x275EB
+0x3C2A 0x2766F
+0x3C2B 0x2766D
+0x3C2C 0x2767E
+0x3C2D 0x2766C
+0x3C2E 0x27661
+0x3C2F 0x27663
+0x3C30 0x2766B
+0x3C31 0x2765E
+0x3C32 0x2763E
+0x3C33 0x27664
+0x3C34 0x276AD
+0x3C36 0x27820
+0x3C37 0x278D1
+0x3C38 0x278D5
+0x3C39 0x279AE
+0x3C3A 0x279AF
+0x3C3B 0x2799F
+0x3C3C 0x279A8
+0x3C3D 0x279CA
+0x3C3E 0x27BE1
+0x3C3F 0x27C39
+0x3C40 0x27C38
+0x3C41 0x27C3B
+0x3C42 0x27CAD
+0x3C43 0x27CB5
+0x3C44 0x27CAF
+0x3C45 0x27CB1
+0x3C46 0x27CAE
+0x3C47 0x27CB4
+0x3C48 0x27CB0
+0x3C49 0x27D4B
+0x3C4A 0x27D51
+0x3C4B 0x27D4C
+0x3C4D 0x27D60
+0x3C4E 0x27EBE
+0x3C4F 0x27EB9
+0x3C50 0x27EB7
+0x3C51 0x27EB6
+0x3C53 0x27EBD
+0x3C54 0x27EB8
+0x3C55 0x27EC1
+0x3C56 0x27FF7
+0x3C57 0x27FF3
+0x3C58 0x27FF4
+0x3C59 0x27FFB
+0x3C5A 0x27FFD
+0x3C5B 0x27FF5
+0x3C5D 0x27FFA
+0x3C5E 0x28014
+0x3C60 0x27FF2
+0x3C61 0x27FFC
+0x3C62 0x28000
+0x3C64 0x2822B
+0x3C65 0x28229
+0x3C66 0x2822E
+0x3C68 0x282D7
+0x3C69 0x282DB
+0x3C6A 0x282D9
+0x3C6B 0x282D8
+0x3C6C 0x282E6
+0x3C6D 0x282D6
+0x3C6E 0x282D1
+0x3C6F 0x282E7
+0x3C70 0x282D0
+0x3C71 0x282DC
+0x3C72 0x284ED
+0x3C73 0x2851A
+0x3C74 0x28519
+0x3C75 0x28516
+0x3C76 0x284EC
+0x3C77 0x284EF
+0x3C78 0x284EE
+0x3C79 0x284F4
+0x3C7A 0x2852F
+0x3C7B 0x28730
+0x3C7C 0x28719
+0x3C7D 0x28718
+0x3C7E 0x28711
+0x3D21 0x28716
+0x3D22 0x28712
+0x3D23 0x28710
+0x3D24 0x28714
+0x3D25 0x2880C
+0x3D26 0x2880D
+0x3D27 0x28910
+0x3D28 0x28929
+0x3D29 0x28928
+0x3D2A 0x28C65
+0x3D2B 0x28C66
+0x3D2C 0x28CDE
+0x3D2D 0x28CDF
+0x3D2E 0x28CE0
+0x3D2F 0x28CD9
+0x3D30 0x28CDB
+0x3D31 0x28CD8
+0x3D32 0x28CE3
+0x3D33 0x28CD7
+0x3D34 0x28EA6
+0x3D35 0x28EA7
+0x3D36 0x28EBF
+0x3D37 0x28EA8
+0x3D38 0x28E9F
+0x3D39 0x28EA1
+0x3D3A 0x28EA2
+0x3D3B 0x28EAD
+0x3D3C 0x28EA3
+0x3D3D 0x28EA0
+0x3D3E 0x29083
+0x3D3F 0x29085
+0x3D40 0x29082
+0x3D41 0x29084
+0x3D42 0x291EE
+0x3D43 0x2925D
+0x3D44 0x29392
+0x3D45 0x29455
+0x3D46 0x29453
+0x3D47 0x2F9FC
+0x3D48 0x29451
+0x3D49 0x29452
+0x3D4A 0x29450
+0x3D4B 0x2959D
+0x3D4C 0x29687
+0x3D4D 0x29697
+0x3D4E 0x2969B
+0x3D4F 0x2969D
+0x3D50 0x29869
+0x3D51 0x29A11
+0x3D53 0x29C7A
+0x3D55 0x23244
+0x3D56 0x200C6
+0x3D57 0x20340
+0x3D58 0x2032E
+0x3D59 0x20368
+0x3D5A 0x2032D
+0x3D5B 0x20334
+0x3D5C 0x20332
+0x3D5D 0x20369
+0x3D5E 0x20331
+0x3D5F 0x2036A
+0x3D60 0x2033E
+0x3D61 0x2036F
+0x3D62 0x20375
+0x3D63 0x204F6
+0x3D64 0x20520
+0x3D65 0x20528
+0x3D66 0x20567
+0x3D67 0x205FB
+0x3D68 0x205FE
+0x3D69 0x205FC
+0x3D6A 0x205FD
+0x3D6B 0x205FF
+0x3D6C 0x205FA
+0x3D6D 0x207AC
+0x3D6E 0x207AF
+0x3D6F 0x207B1
+0x3D71 0x207BF
+0x3D72 0x207BE
+0x3D73 0x207A7
+0x3D74 0x207AA
+0x3D75 0x20894
+0x3D76 0x20893
+0x3D77 0x20899
+0x3D79 0x208FA
+0x3D7A 0x20956
+0x3D7B 0x20A22
+0x3D7C 0x20A91
+0x3D7D 0x20A92
+0x3D7E 0x20B08
+0x3E21 0x20B06
+0x3E22 0x20DD6
+0x3E23 0x20E37
+0x3E24 0x20E4B
+0x3E25 0x20ECE
+0x3E26 0x20ED0
+0x3E27 0x20E39
+0x3E28 0x20E64
+0x3E29 0x20ECF
+0x3E2A 0x20E46
+0x3E2B 0x20E66
+0x3E2C 0x20E56
+0x3E2D 0x20E43
+0x3E2E 0x20E4A
+0x3E2F 0x20E58
+0x3E30 0x20E65
+0x3E31 0x20E5A
+0x3E32 0x20E5B
+0x3E33 0x20E55
+0x3E34 0x20E50
+0x3E35 0x20E4C
+0x3E36 0x20ECD
+0x3E37 0x20E51
+0x3E38 0x20E47
+0x3E3A 0x20E53
+0x3E3B 0x20E62
+0x3E3C 0x20ECC
+0x3E3E 0x20E7F
+0x3E3F 0x20E4D
+0x3E40 0x2120A
+0x3E41 0x2120C
+0x3E42 0x2120F
+0x3E43 0x213BB
+0x3E44 0x213B9
+0x3E45 0x213EB
+0x3E46 0x213AE
+0x3E47 0x213C1
+0x3E48 0x213EA
+0x3E49 0x213BE
+0x3E4A 0x213BF
+0x3E4B 0x213BA
+0x3E4C 0x213B7
+0x3E4D 0x213B3
+0x3E4E 0x213E9
+0x3E4F 0x2156E
+0x3E50 0x215AF
+0x3E51 0x215B3
+0x3E52 0x215B2
+0x3E53 0x21668
+0x3E54 0x21669
+0x3E55 0x2166A
+0x3E56 0x217DE
+0x3E57 0x217EB
+0x3E58 0x21811
+0x3E59 0x217ED
+0x3E5A 0x217E9
+0x3E5B 0x217F7
+0x3E5C 0x217F4
+0x3E5D 0x217EA
+0x3E5E 0x21812
+0x3E5F 0x217E8
+0x3E60 0x21813
+0x3E61 0x2198E
+0x3E62 0x21986
+0x3E63 0x21A63
+0x3E64 0x21A65
+0x3E65 0x21B99
+0x3E66 0x21CC2
+0x3E67 0x21CAE
+0x3E68 0x21CB0
+0x3E69 0x21CAD
+0x3E6A 0x21EB4
+0x3E6B 0x21ED1
+0x3E6C 0x21EAD
+0x3E6E 0x21EBD
+0x3E6F 0x21EB7
+0x3E70 0x21EAB
+0x3E71 0x21EAF
+0x3E72 0x21EC1
+0x3E73 0x21EB5
+0x3E74 0x2210F
+0x3E75 0x2210E
+0x3E76 0x2211C
+0x3E77 0x22113
+0x3E78 0x2210A
+0x3E79 0x2211E
+0x3E7A 0x22114
+0x3E7B 0x2211A
+0x3E7C 0x221CB
+0x3E7D 0x22287
+0x3E7E 0x22293
+0x3F22 0x22284
+0x3F23 0x22285
+0x3F24 0x22292
+0x3F25 0x22280
+0x3F26 0x2232B
+0x3F27 0x22363
+0x3F28 0x2240A
+0x3F2A 0x22466
+0x3F2B 0x22534
+0x3F2C 0x22533
+0x3F2D 0x2254D
+0x3F2E 0x22789
+0x3F2F 0x22757
+0x3F31 0x2274A
+0x3F33 0x22739
+0x3F34 0x2273F
+0x3F35 0x22790
+0x3F36 0x2278F
+0x3F37 0x227B2
+0x3F38 0x2279F
+0x3F39 0x22795
+0x3F3A 0x227A1
+0x3F3B 0x2279C
+0x3F3C 0x2278E
+0x3F3D 0x227A0
+0x3F3E 0x227AE
+0x3F3F 0x22796
+0x3F40 0x227CA
+0x3F41 0x227AC
+0x3F43 0x227A6
+0x3F44 0x22797
+0x3F45 0x22793
+0x3F46 0x203B6
+0x3F47 0x229D6
+0x3F48 0x229E0
+0x3F49 0x229D8
+0x3F4A 0x22A56
+0x3F4B 0x22C6E
+0x3F4C 0x22C7E
+0x3F4D 0x22C74
+0x3F4E 0x22C77
+0x3F4F 0x22C80
+0x3F50 0x22C7A
+0x3F51 0x22C6B
+0x3F52 0x22C5F
+0x3F53 0x22C76
+0x3F54 0x22CB0
+0x3F55 0x22C63
+0x3F56 0x22F92
+0x3F57 0x22F82
+0x3F58 0x22F9D
+0x3F59 0x22F94
+0x3F5A 0x22F83
+0x3F5B 0x22F8B
+0x3F5C 0x22F84
+0x3F5D 0x23057
+0x3F5E 0x23084
+0x3F5F 0x230B5
+0x3F60 0x23109
+0x3F61 0x231E6
+0x3F63 0x23225
+0x3F64 0x23251
+0x3F65 0x2333E
+0x3F66 0x2F8DA
+0x3F67 0x23385
+0x3F68 0x2353F
+0x3F69 0x23542
+0x3F6A 0x23538
+0x3F6B 0x2353A
+0x3F6C 0x2354E
+0x3F6D 0x23545
+0x3F6E 0x23539
+0x3F6F 0x23537
+0x3F70 0x23544
+0x3F71 0x2F8E7
+0x3F72 0x235A4
+0x3F73 0x2353D
+0x3F74 0x23541
+0x3F75 0x238DF
+0x3F76 0x238DE
+0x3F77 0x238CA
+0x3F78 0x238E9
+0x3F79 0x238E2
+0x3F7A 0x238E0
+0x3F7B 0x23989
+0x3F7C 0x23987
+0x3F7D 0x23A32
+0x3F7E 0x23A33
+0x4021 0x23AAC
+0x4022 0x23AF9
+0x4023 0x23B0D
+0x4024 0x23BB9
+0x4025 0x23E5E
+0x4026 0x23E6A
+0x4028 0x23E81
+0x4029 0x23E69
+0x402A 0x23EAC
+0x402B 0x23E80
+0x402C 0x23E75
+0x402D 0x23E71
+0x402E 0x23E76
+0x402F 0x23E6F
+0x4030 0x242B6
+0x4031 0x24303
+0x4032 0x242BF
+0x4033 0x24301
+0x4034 0x242B2
+0x4035 0x242C4
+0x4036 0x245DB
+0x4037 0x245DC
+0x4038 0x245D8
+0x4039 0x29672
+0x403A 0x246B5
+0x403B 0x246A8
+0x403C 0x2468F
+0x403D 0x2469E
+0x403E 0x2468E
+0x403F 0x247DE
+0x4040 0x247E2
+0x4041 0x24820
+0x4042 0x2481D
+0x4043 0x2481A
+0x4044 0x24819
+0x4045 0x2482B
+0x4046 0x24818
+0x4047 0x24810
+0x4048 0x2480E
+0x4049 0x24824
+0x404A 0x2481F
+0x404B 0x24813
+0x404C 0x24835
+0x404D 0x24983
+0x404F 0x249D7
+0x4050 0x24B02
+0x4051 0x24B03
+0x4052 0x24B5C
+0x4053 0x24B5F
+0x4054 0x24BC7
+0x4055 0x24C9A
+0x4056 0x24C97
+0x4057 0x24CA3
+0x4058 0x24DF7
+0x4059 0x24DC6
+0x405A 0x24DCC
+0x405B 0x24DD6
+0x405C 0x24DCD
+0x405D 0x24DF9
+0x405E 0x24DD9
+0x405F 0x24DD8
+0x4061 0x24DD1
+0x4062 0x24DCE
+0x4063 0x24DD5
+0x4065 0x24DD4
+0x4066 0x24DF8
+0x4067 0x24F7A
+0x4068 0x24F79
+0x4069 0x24F7F
+0x406A 0x24FF3
+0x406B 0x24FF5
+0x406C 0x24FF6
+0x406D 0x24FF4
+0x406E 0x24FF7
+0x4070 0x25079
+0x4071 0x2519C
+0x4072 0x251DF
+0x4073 0x251F5
+0x4074 0x251FF
+0x4075 0x251D1
+0x4076 0x251DA
+0x4077 0x251CF
+0x4078 0x251CD
+0x4079 0x251DE
+0x407A 0x251D8
+0x407B 0x23AAD
+0x407C 0x251E0
+0x407D 0x251FE
+0x407E 0x2519E
+0x4121 0x25375
+0x4122 0x25373
+0x4123 0x25372
+0x4124 0x253D8
+0x4125 0x254D0
+0x4126 0x254D6
+0x4127 0x254D7
+0x4128 0x254CA
+0x4129 0x254CD
+0x412A 0x2568A
+0x412B 0x25689
+0x412C 0x2568B
+0x412D 0x257D3
+0x412E 0x257DA
+0x412F 0x257CE
+0x4130 0x257D2
+0x4132 0x257D4
+0x4133 0x257D7
+0x4134 0x257D5
+0x4135 0x257FB
+0x4136 0x257CD
+0x4137 0x257FA
+0x4138 0x257D6
+0x413A 0x2599B
+0x413B 0x2599E
+0x413C 0x2599D
+0x413D 0x259A4
+0x413E 0x2599F
+0x413F 0x259A5
+0x4140 0x259A8
+0x4141 0x25A8F
+0x4142 0x25A8C
+0x4143 0x25A95
+0x4144 0x25B60
+0x4145 0x25B55
+0x4146 0x25B5C
+0x4147 0x25B6F
+0x4148 0x25B51
+0x4149 0x25B61
+0x414A 0x25BA7
+0x414B 0x25B5E
+0x414C 0x25B62
+0x414D 0x25B54
+0x414E 0x25B6E
+0x414F 0x25B52
+0x4150 0x25B58
+0x4151 0x25B6D
+0x4152 0x25B5F
+0x4153 0x25B6C
+0x4154 0x25B50
+0x4155 0x25B5D
+0x4156 0x25B8E
+0x4157 0x25E72
+0x4158 0x25E78
+0x4159 0x25E75
+0x415A 0x25E76
+0x415B 0x25E7C
+0x415C 0x25E7E
+0x415D 0x25E7D
+0x415E 0x26015
+0x415F 0x26014
+0x4160 0x2601D
+0x4161 0x2601C
+0x4162 0x26023
+0x4163 0x26057
+0x4164 0x262C8
+0x4166 0x262C9
+0x4167 0x262C5
+0x4168 0x26387
+0x4169 0x2638A
+0x416A 0x26394
+0x416B 0x26439
+0x416C 0x26440
+0x416D 0x2643E
+0x416E 0x26438
+0x416F 0x264D6
+0x4171 0x26577
+0x4172 0x26578
+0x4173 0x2657D
+0x4174 0x266DD
+0x4175 0x2675E
+0x4176 0x26777
+0x4177 0x267D4
+0x4178 0x26766
+0x4179 0x2675F
+0x417A 0x26773
+0x417B 0x26772
+0x417C 0x26797
+0x417D 0x2675A
+0x417E 0x26796
+0x4221 0x2675D
+0x4222 0x26765
+0x4223 0x26770
+0x4224 0x26775
+0x4225 0x26774
+0x4226 0x2675C
+0x4227 0x26760
+0x4229 0x2676D
+0x422A 0x26941
+0x422B 0x26A3C
+0x422C 0x26A3E
+0x422E 0x26A49
+0x422F 0x26BE4
+0x4230 0x26D0C
+0x4231 0x26D15
+0x4232 0x26D0E
+0x4233 0x26CD4
+0x4234 0x26CC7
+0x4235 0x26D14
+0x4236 0x26CDB
+0x4237 0x26D5F
+0x4238 0x26CED
+0x4239 0x26D09
+0x423A 0x26CCF
+0x423B 0x26CFF
+0x423C 0x26D1A
+0x423D 0x26CF5
+0x423E 0x26CEE
+0x423F 0x26CE5
+0x4240 0x26D0D
+0x4241 0x26CDF
+0x4242 0x26CEC
+0x4243 0x26CD7
+0x4244 0x26D2C
+0x4245 0x26CCD
+0x4246 0x26CE3
+0x4247 0x26D00
+0x4248 0x26CEB
+0x4249 0x26CFD
+0x424A 0x26D0F
+0x424B 0x26D2D
+0x424C 0x26D50
+0x424D 0x26CFE
+0x424E 0x26CC4
+0x424F 0x26CE1
+0x4250 0x26CF9
+0x4251 0x271BB
+0x4252 0x271BC
+0x4255 0x271BA
+0x4256 0x272D0
+0x4257 0x272D6
+0x4258 0x272CE
+0x4259 0x272E1
+0x425A 0x272D5
+0x425B 0x272CF
+0x425C 0x272D3
+0x425E 0x272D4
+0x425F 0x275B5
+0x4260 0x27690
+0x4261 0x276A1
+0x4262 0x27681
+0x4263 0x27685
+0x4264 0x2766E
+0x4265 0x27688
+0x4266 0x27682
+0x4267 0x27686
+0x4268 0x2768F
+0x4269 0x27689
+0x426A 0x27680
+0x426B 0x27684
+0x426D 0x27829
+0x426E 0x2782B
+0x426F 0x2782A
+0x4270 0x27830
+0x4271 0x278E2
+0x4272 0x278E3
+0x4273 0x278E1
+0x4274 0x279D5
+0x4275 0x279C4
+0x4276 0x279C9
+0x4277 0x279E0
+0x4278 0x279DF
+0x4279 0x279CB
+0x427A 0x279DD
+0x427B 0x279E8
+0x427C 0x279D4
+0x427D 0x27A1C
+0x427E 0x27BB5
+0x4321 0x27BB6
+0x4322 0x27BE5
+0x4323 0x27C45
+0x4324 0x27C49
+0x4325 0x27C40
+0x4326 0x27C46
+0x4327 0x27C44
+0x4328 0x27C4A
+0x4329 0x27CC9
+0x432A 0x27CC4
+0x432B 0x27CC2
+0x432C 0x27D68
+0x432E 0x27D82
+0x432F 0x27D6B
+0x4330 0x27D67
+0x4331 0x27D6C
+0x4332 0x27D6D
+0x4333 0x27D71
+0x4335 0x27ED7
+0x4336 0x27ED2
+0x4337 0x27ED9
+0x4339 0x27EBC
+0x433A 0x27EDD
+0x433B 0x27ED6
+0x433D 0x27ED8
+0x433E 0x28020
+0x433F 0x28016
+0x4340 0x28018
+0x4341 0x28015
+0x4342 0x28019
+0x4343 0x28027
+0x4344 0x28050
+0x4345 0x2801D
+0x4346 0x2802C
+0x4347 0x2801C
+0x4348 0x28029
+0x4349 0x2802B
+0x434A 0x28024
+0x434C 0x28028
+0x434D 0x28239
+0x434E 0x282F2
+0x434F 0x282F0
+0x4351 0x282ED
+0x4352 0x282EF
+0x4353 0x282EA
+0x4354 0x28301
+0x4355 0x284BC
+0x4356 0x2855C
+0x4357 0x2855B
+0x4358 0x2855A
+0x4359 0x28526
+0x435A 0x28743
+0x435B 0x28733
+0x435C 0x2873A
+0x435D 0x28737
+0x435E 0x28736
+0x435F 0x2873C
+0x4360 0x28734
+0x4361 0x2874A
+0x4362 0x2873B
+0x4363 0x28735
+0x4364 0x2873D
+0x4365 0x28740
+0x4366 0x2873E
+0x4367 0x28717
+0x4368 0x28826
+0x4369 0x28824
+0x436A 0x28810
+0x436B 0x28836
+0x436C 0x28825
+0x436E 0x28966
+0x436F 0x28C7F
+0x4370 0x28C7A
+0x4371 0x28CFB
+0x4372 0x28CFD
+0x4373 0x28CFC
+0x4374 0x28CFA
+0x4375 0x28ED6
+0x4376 0x28ED2
+0x4377 0x28EC8
+0x4378 0x28EC2
+0x4379 0x28EC7
+0x437A 0x28ECD
+0x437B 0x28EC1
+0x437C 0x28EC6
+0x437D 0x28ECC
+0x437E 0x28FA1
+0x4421 0x29095
+0x4422 0x29094
+0x4423 0x29097
+0x4424 0x29096
+0x4425 0x29093
+0x4426 0x290A1
+0x4427 0x29209
+0x4428 0x29208
+0x4429 0x29267
+0x442A 0x29265
+0x442B 0x29262
+0x442C 0x29261
+0x442D 0x29397
+0x442E 0x29401
+0x442F 0x29419
+0x4430 0x29418
+0x4431 0x2945C
+0x4432 0x29467
+0x4433 0x2946C
+0x4435 0x2F9FD
+0x4436 0x29466
+0x4437 0x29461
+0x4438 0x2946E
+0x4439 0x2945D
+0x443A 0x2945A
+0x443B 0x295A2
+0x443C 0x295A9
+0x443D 0x295A5
+0x443E 0x295A6
+0x443F 0x295B2
+0x4440 0x295A3
+0x4441 0x296AC
+0x4442 0x296AA
+0x4443 0x296AF
+0x4444 0x296AB
+0x4445 0x296B1
+0x4446 0x296C6
+0x4447 0x296AD
+0x4448 0x296B9
+0x4449 0x29870
+0x444B 0x29C0C
+0x444C 0x29C81
+0x444D 0x29C83
+0x444E 0x29C7E
+0x444F 0x29D51
+0x4450 0x29F99
+0x4451 0x29F94
+0x4452 0x29F95
+0x4453 0x2A2FE
+0x4454 0x2A418
+0x4455 0x20105
+0x4456 0x20372
+0x4458 0x20399
+0x4459 0x204AD
+0x445A 0x20606
+0x445B 0x207C2
+0x445C 0x207CB
+0x445D 0x207D5
+0x445E 0x207D2
+0x445F 0x207CC
+0x4460 0x207D7
+0x4461 0x207C5
+0x4462 0x207CA
+0x4464 0x208A2
+0x4465 0x208A3
+0x4466 0x208A1
+0x4468 0x208A6
+0x4469 0x208A4
+0x446A 0x208FF
+0x446B 0x20900
+0x446D 0x20A06
+0x446E 0x20A25
+0x446F 0x20A9F
+0x4470 0x20B7F
+0x4471 0x20EEA
+0x4472 0x20EEB
+0x4473 0x20EDE
+0x4474 0x20F18
+0x4475 0x20EE0
+0x4476 0x20EE8
+0x4477 0x20EDF
+0x4478 0x20EF1
+0x4479 0x20EEC
+0x447A 0x20F1A
+0x447B 0x20EE6
+0x447C 0x20EE1
+0x447D 0x20F5D
+0x447E 0x20077
+0x4521 0x20F1E
+0x4523 0x20F80
+0x4524 0x21217
+0x4525 0x2141D
+0x4526 0x213F7
+0x4527 0x213EF
+0x4528 0x213EE
+0x4529 0x213ED
+0x452A 0x213F5
+0x452B 0x2141E
+0x452C 0x215BD
+0x452D 0x257FF
+0x452E 0x215BE
+0x452F 0x2166D
+0x4530 0x21676
+0x4531 0x2184C
+0x4532 0x21819
+0x4533 0x21848
+0x4534 0x2181E
+0x4535 0x2184A
+0x4536 0x21849
+0x4537 0x21826
+0x4538 0x21995
+0x4539 0x21A85
+0x453A 0x21A7E
+0x453B 0x21A97
+0x453C 0x21A7D
+0x453D 0x21B42
+0x453E 0x21B9E
+0x453F 0x21C0C
+0x4540 0x21C0B
+0x4541 0x21C0E
+0x4542 0x21CCF
+0x4543 0x21ED8
+0x4544 0x21EE0
+0x4545 0x21EE8
+0x4546 0x21EE9
+0x4547 0x21EE2
+0x4548 0x21EE1
+0x4549 0x21EDA
+0x454A 0x21EE3
+0x454B 0x21ED9
+0x454C 0x21EF0
+0x454D 0x21EE7
+0x454E 0x21EE4
+0x454F 0x22123
+0x4550 0x22131
+0x4551 0x22133
+0x4552 0x2210C
+0x4553 0x269E0
+0x4554 0x22126
+0x4555 0x22124
+0x4556 0x22132
+0x4557 0x22127
+0x4558 0x22121
+0x4559 0x22130
+0x455A 0x221A2
+0x455B 0x221CC
+0x455C 0x22296
+0x455D 0x2F88F
+0x455E 0x22298
+0x455F 0x2229C
+0x4560 0x2229B
+0x4561 0x2236B
+0x4562 0x22412
+0x4563 0x22414
+0x4564 0x2255A
+0x4565 0x22554
+0x4566 0x22551
+0x4567 0x2255E
+0x4568 0x22558
+0x456A 0x22559
+0x456B 0x2279A
+0x456C 0x227F2
+0x456D 0x227AD
+0x456E 0x22820
+0x456F 0x227F1
+0x4570 0x227F0
+0x4571 0x227F3
+0x4572 0x227F4
+0x4573 0x227E9
+0x4574 0x227FE
+0x4575 0x2282E
+0x4576 0x227E8
+0x4577 0x227E7
+0x4578 0x227FF
+0x4579 0x227F5
+0x457A 0x229E5
+0x457B 0x229E7
+0x457C 0x229E6
+0x457D 0x229E9
+0x457E 0x22A58
+0x4621 0x22C6C
+0x4622 0x22CD9
+0x4624 0x22CCB
+0x4626 0x22CBE
+0x4627 0x22CB5
+0x4628 0x22CD1
+0x4629 0x22CC2
+0x462A 0x22CB6
+0x462B 0x22CD3
+0x462C 0x2F8C2
+0x462D 0x22EDA
+0x462F 0x22FAE
+0x4631 0x22FAC
+0x4632 0x22FA9
+0x4633 0x22FBA
+0x4634 0x22FA7
+0x4635 0x22FB3
+0x4636 0x22FBD
+0x4637 0x22FB1
+0x4638 0x2310E
+0x4639 0x23111
+0x463A 0x2310F
+0x463B 0x23252
+0x463C 0x2326A
+0x463D 0x23254
+0x463E 0x23255
+0x463F 0x23253
+0x4640 0x23257
+0x4641 0x2F8D0
+0x4642 0x2325B
+0x4643 0x23258
+0x4644 0x23259
+0x4646 0x235B8
+0x4647 0x235B5
+0x4648 0x235BF
+0x4649 0x235C1
+0x464A 0x235BB
+0x464C 0x235C3
+0x464D 0x235AD
+0x464E 0x235A8
+0x464F 0x235AE
+0x4650 0x235AA
+0x4651 0x235D0
+0x4652 0x235B1
+0x4653 0x235BC
+0x4654 0x235B7
+0x4655 0x235B0
+0x4656 0x235FA
+0x4657 0x235FB
+0x4658 0x235B9
+0x4659 0x23907
+0x465A 0x238FC
+0x465B 0x238FF
+0x465C 0x238F2
+0x465D 0x238F8
+0x465E 0x238F4
+0x4661 0x23AAE
+0x4662 0x23B0F
+0x4663 0x23B10
+0x4664 0x29AC1
+0x4665 0x23BC7
+0x4666 0x23BC6
+0x4667 0x23BCE
+0x4669 0x23BDC
+0x466A 0x23ED5
+0x466B 0x23ED3
+0x466C 0x23F20
+0x466D 0x23EE2
+0x466E 0x23EF1
+0x466F 0x23EDB
+0x4670 0x23EEA
+0x4671 0x23EEB
+0x4672 0x23EE1
+0x4673 0x23EFF
+0x4674 0x23ED6
+0x4675 0x23EE0
+0x4676 0x23ED7
+0x4677 0x23EE5
+0x4679 0x2431B
+0x467A 0x24310
+0x467B 0x2430F
+0x467C 0x2430E
+0x467D 0x24339
+0x467E 0x2430A
+0x4721 0x24314
+0x4722 0x2430C
+0x4723 0x24523
+0x4724 0x2455A
+0x4725 0x245E2
+0x4726 0x24693
+0x4727 0x246B0
+0x4728 0x246AB
+0x4729 0x246BD
+0x472A 0x246B1
+0x472B 0x2468D
+0x472C 0x246AD
+0x472D 0x246AA
+0x472E 0x246AC
+0x472F 0x246BC
+0x4730 0x246C9
+0x4731 0x24847
+0x4732 0x24862
+0x4733 0x24840
+0x4734 0x24844
+0x4735 0x2483F
+0x4736 0x24843
+0x4737 0x2483D
+0x4738 0x24860
+0x4739 0x2485F
+0x473A 0x2483A
+0x473B 0x24842
+0x473C 0x2485E
+0x473D 0x2485D
+0x473E 0x249BC
+0x473F 0x249E0
+0x4740 0x249EE
+0x4741 0x249EB
+0x4742 0x24A0D
+0x4743 0x24B09
+0x4744 0x24B0C
+0x4745 0x24B69
+0x4746 0x24B74
+0x4747 0x24B67
+0x474A 0x24CAD
+0x474B 0x24DFF
+0x474C 0x24E16
+0x474D 0x24E08
+0x474E 0x24E09
+0x474F 0x24E00
+0x4750 0x24DFC
+0x4751 0x24E13
+0x4752 0x24E14
+0x4753 0x24E0A
+0x4754 0x2983E
+0x4755 0x24E29
+0x4756 0x24E17
+0x4757 0x24E3B
+0x4758 0x24DFB
+0x475A 0x24E0E
+0x475C 0x25008
+0x475D 0x2521B
+0x475E 0x2521A
+0x475F 0x25219
+0x4760 0x25202
+0x4762 0x25217
+0x4763 0x25207
+0x4764 0x25213
+0x4765 0x25209
+0x4766 0x2520A
+0x4767 0x25212
+0x4768 0x252AA
+0x4769 0x25238
+0x476A 0x2537B
+0x476B 0x2537C
+0x476C 0x2537A
+0x476D 0x253EA
+0x476E 0x253EB
+0x476F 0x253EF
+0x4770 0x253F0
+0x4771 0x25509
+0x4772 0x25502
+0x4773 0x25501
+0x4774 0x2552B
+0x4775 0x25507
+0x4777 0x25528
+0x4778 0x254FB
+0x4779 0x2552A
+0x477A 0x254FE
+0x477B 0x25504
+0x477C 0x25529
+0x477D 0x2550A
+0x4821 0x256C2
+0x4823 0x256A6
+0x4825 0x22FC6
+0x4826 0x21C07
+0x4827 0x2580A
+0x4828 0x257FD
+0x4829 0x25806
+0x482A 0x2580D
+0x482B 0x25809
+0x482C 0x2580B
+0x482D 0x25800
+0x482E 0x25805
+0x482F 0x2583D
+0x4830 0x259D5
+0x4831 0x259BF
+0x4832 0x259BA
+0x4833 0x259C7
+0x4834 0x25A98
+0x4835 0x25A9A
+0x4837 0x25BA4
+0x4838 0x25B9C
+0x4839 0x25B9D
+0x483A 0x25BA2
+0x483B 0x25B96
+0x483C 0x25B95
+0x483D 0x25BA5
+0x483E 0x25BAA
+0x483F 0x25BAD
+0x4840 0x25B9A
+0x4841 0x25BA3
+0x4842 0x25B97
+0x4843 0x25B90
+0x4844 0x25BAF
+0x4845 0x25B8D
+0x4847 0x25BA8
+0x4848 0x25BEE
+0x4849 0x25EA3
+0x484A 0x25E99
+0x484B 0x25EA1
+0x484C 0x25E9C
+0x484D 0x25EA4
+0x484E 0x25ECB
+0x484F 0x26056
+0x4850 0x26048
+0x4851 0x26059
+0x4852 0x2604A
+0x4853 0x2605C
+0x4855 0x2604F
+0x4856 0x2604D
+0x4857 0x2605D
+0x4858 0x2623A
+0x4859 0x262E3
+0x485A 0x262E1
+0x485B 0x262DE
+0x485C 0x26397
+0x485D 0x2639A
+0x485E 0x26448
+0x485F 0x2644A
+0x4860 0x2644C
+0x4861 0x2644E
+0x4862 0x2644F
+0x4863 0x2644B
+0x4864 0x2644D
+0x4865 0x26447
+0x4866 0x26451
+0x4867 0x264DA
+0x4868 0x264F9
+0x4869 0x264FC
+0x486A 0x264FB
+0x486B 0x264FD
+0x486C 0x264F8
+0x486D 0x264FA
+0x486E 0x2658A
+0x486F 0x2658E
+0x4870 0x26588
+0x4871 0x26589
+0x4872 0x2658D
+0x4873 0x26590
+0x4874 0x2F97E
+0x4875 0x2671C
+0x4876 0x267AB
+0x4877 0x267A4
+0x4878 0x267A8
+0x4879 0x267AD
+0x487A 0x2679F
+0x487B 0x2679A
+0x487C 0x267B0
+0x487D 0x267A5
+0x487E 0x267D5
+0x4921 0x267A2
+0x4922 0x267B2
+0x4923 0x2679D
+0x4924 0x267A1
+0x4925 0x26915
+0x4926 0x26942
+0x4927 0x26973
+0x4928 0x26984
+0x4929 0x269DD
+0x492A 0x26A5C
+0x492B 0x26A4C
+0x492D 0x26A4B
+0x492E 0x26C67
+0x492F 0x26DA8
+0x4930 0x26D7F
+0x4931 0x26D8D
+0x4932 0x26D8B
+0x4933 0x26DF7
+0x4934 0x26DA9
+0x4935 0x26DF4
+0x4936 0x26D9A
+0x4937 0x26D8C
+0x4938 0x26D95
+0x4939 0x26D7E
+0x493A 0x26D77
+0x493D 0x26D71
+0x493E 0x26DFD
+0x493F 0x26D88
+0x4940 0x26D99
+0x4941 0x26D6D
+0x4942 0x26DD4
+0x4943 0x26D91
+0x4944 0x26D7D
+0x4945 0x26D63
+0x4946 0x26D75
+0x4947 0x26DF9
+0x4948 0x26D8E
+0x4949 0x26D74
+0x494A 0x26DD9
+0x494B 0x26D66
+0x494C 0x26DFA
+0x494D 0x26DF5
+0x494F 0x271C1
+0x4950 0x271C9
+0x4951 0x27303
+0x4952 0x2732C
+0x4953 0x27334
+0x4954 0x27317
+0x4955 0x27309
+0x4956 0x27304
+0x4957 0x27306
+0x4958 0x2731A
+0x4959 0x2730E
+0x495A 0x27327
+0x495B 0x27305
+0x495C 0x27307
+0x495D 0x27319
+0x495E 0x27314
+0x495F 0x2730C
+0x4960 0x2731D
+0x4961 0x27322
+0x4962 0x27323
+0x4963 0x275BB
+0x4964 0x275BC
+0x4965 0x275BA
+0x4966 0x276A9
+0x4967 0x276B5
+0x4968 0x276AC
+0x4969 0x276AA
+0x496A 0x276AF
+0x496B 0x276B7
+0x496E 0x2783D
+0x496F 0x27845
+0x4970 0x27848
+0x4971 0x2783C
+0x4972 0x2783E
+0x4973 0x278EC
+0x4974 0x278ED
+0x4975 0x278E9
+0x4976 0x27A0A
+0x4977 0x27A0B
+0x4978 0x279F8
+0x4979 0x27A04
+0x497A 0x279F6
+0x497B 0x279F9
+0x497C 0x27C53
+0x497D 0x27C52
+0x497E 0x27C60
+0x4A21 0x27C63
+0x4A22 0x27CCE
+0x4A23 0x27CCD
+0x4A24 0x27CD0
+0x4A25 0x27CCC
+0x4A26 0x27D87
+0x4A27 0x27D8D
+0x4A28 0x27D9D
+0x4A2A 0x27E63
+0x4A2B 0x27EF4
+0x4A2C 0x27EF1
+0x4A2D 0x27EFF
+0x4A2E 0x27EF5
+0x4A2F 0x27EFC
+0x4A30 0x27EF2
+0x4A31 0x27EF6
+0x4A33 0x27EFA
+0x4A35 0x2802E
+0x4A36 0x28045
+0x4A37 0x28043
+0x4A38 0x28051
+0x4A39 0x2804C
+0x4A3A 0x28073
+0x4A3B 0x28047
+0x4A3C 0x2804B
+0x4A3D 0x2804F
+0x4A3F 0x28044
+0x4A40 0x2804D
+0x4A41 0x2804E
+0x4A42 0x2804A
+0x4A43 0x28041
+0x4A44 0x28052
+0x4A45 0x2809F
+0x4A46 0x28054
+0x4A47 0x28059
+0x4A48 0x280A2
+0x4A49 0x2824B
+0x4A4A 0x28248
+0x4A4B 0x2830D
+0x4A4C 0x2831F
+0x4A4D 0x28308
+0x4A4E 0x2830E
+0x4A4F 0x2831D
+0x4A50 0x28304
+0x4A51 0x28418
+0x4A52 0x2841B
+0x4A53 0x28566
+0x4A54 0x28562
+0x4A55 0x28583
+0x4A56 0x28567
+0x4A57 0x28762
+0x4A58 0x2874F
+0x4A59 0x2874E
+0x4A5A 0x28767
+0x4A5B 0x28753
+0x4A5C 0x2874D
+0x4A5D 0x2874C
+0x4A5E 0x28768
+0x4A5F 0x28751
+0x4A61 0x28758
+0x4A62 0x2875B
+0x4A63 0x28750
+0x4A64 0x2876A
+0x4A65 0x28839
+0x4A66 0x28838
+0x4A67 0x28982
+0x4A68 0x28984
+0x4A69 0x28986
+0x4A6A 0x28C80
+0x4A6B 0x28C86
+0x4A6C 0x28D25
+0x4A6D 0x28D11
+0x4A6F 0x28D0E
+0x4A70 0x28D15
+0x4A71 0x28D0F
+0x4A72 0x28D18
+0x4A73 0x28D0D
+0x4A74 0x28D13
+0x4A75 0x28D16
+0x4A76 0x28D19
+0x4A77 0x28F08
+0x4A78 0x28EF7
+0x4A79 0x28EFB
+0x4A7A 0x28EFC
+0x4A7B 0x28FB4
+0x4A7C 0x28FBE
+0x4A7D 0x28FC1
+0x4A7E 0x290A6
+0x4B21 0x290A5
+0x4B22 0x290A2
+0x4B23 0x290A4
+0x4B24 0x29212
+0x4B25 0x2920E
+0x4B26 0x2927A
+0x4B27 0x29278
+0x4B28 0x2927D
+0x4B29 0x2927E
+0x4B2A 0x29281
+0x4B2B 0x29283
+0x4B2C 0x29280
+0x4B2D 0x29282
+0x4B2E 0x2939B
+0x4B2F 0x29399
+0x4B30 0x2939C
+0x4B31 0x2939A
+0x4B32 0x293A1
+0x4B33 0x2941A
+0x4B34 0x2941C
+0x4B35 0x2948A
+0x4B36 0x29479
+0x4B37 0x29473
+0x4B38 0x29475
+0x4B39 0x2947C
+0x4B3A 0x29478
+0x4B3B 0x29460
+0x4B3C 0x29483
+0x4B3D 0x29470
+0x4B40 0x29487
+0x4B41 0x29484
+0x4B42 0x2947B
+0x4B43 0x2947E
+0x4B44 0x29474
+0x4B45 0x295B9
+0x4B46 0x295B8
+0x4B47 0x295B7
+0x4B48 0x295B5
+0x4B49 0x296CC
+0x4B4A 0x296CE
+0x4B4B 0x296D1
+0x4B4D 0x296CB
+0x4B4F 0x2987E
+0x4B50 0x2987A
+0x4B51 0x29877
+0x4B52 0x2988C
+0x4B53 0x298E1
+0x4B54 0x29A20
+0x4B55 0x29A1E
+0x4B56 0x29AC2
+0x4B57 0x29B0F
+0x4B58 0x29B00
+0x4B5A 0x29B10
+0x4B5B 0x29C0D
+0x4B5C 0x29C0E
+0x4B5D 0x29C8E
+0x4B5E 0x29C8D
+0x4B5F 0x29C8A
+0x4B60 0x29C8B
+0x4B61 0x29C8C
+0x4B62 0x29C8F
+0x4B63 0x29D57
+0x4B65 0x29D55
+0x4B66 0x29D5B
+0x4B67 0x29FAC
+0x4B68 0x29FA7
+0x4B69 0x29FA0
+0x4B6A 0x29F9E
+0x4B6C 0x2A28D
+0x4B6E 0x2A393
+0x4B6F 0x2A394
+0x4B70 0x2A392
+0x4B71 0x20181
+0x4B72 0x203D6
+0x4B73 0x203C3
+0x4B74 0x203E4
+0x4B75 0x203E2
+0x4B76 0x20409
+0x4B77 0x203BF
+0x4B78 0x203C8
+0x4B79 0x203C7
+0x4B7A 0x204B5
+0x4B7B 0x204B2
+0x4B7C 0x2060C
+0x4B7D 0x2060B
+0x4B7E 0x2060A
+0x4C21 0x20605
+0x4C22 0x207D3
+0x4C23 0x207E6
+0x4C24 0x207E9
+0x4C25 0x207F0
+0x4C26 0x207EA
+0x4C27 0x207E7
+0x4C28 0x208B1
+0x4C29 0x208B3
+0x4C2A 0x208B4
+0x4C2B 0x208B0
+0x4C2C 0x2095C
+0x4C2D 0x2095D
+0x4C2E 0x2095E
+0x4C2F 0x209C0
+0x4C30 0x20AAF
+0x4C32 0x20B86
+0x4C33 0x20B83
+0x4C34 0x20B84
+0x4C35 0x20F5C
+0x4C36 0x20F70
+0x4C37 0x20F8C
+0x4C38 0x20F7B
+0x4C39 0x20F66
+0x4C3A 0x20F79
+0x4C3B 0x20F63
+0x4C3C 0x20FC5
+0x4C3D 0x20F6B
+0x4C3E 0x20F6D
+0x4C3F 0x20F72
+0x4C40 0x20F69
+0x4C41 0x20F75
+0x4C42 0x20F89
+0x4C43 0x20FC6
+0x4C44 0x20FA5
+0x4C45 0x203E7
+0x4C46 0x20F6A
+0x4C47 0x20F97
+0x4C48 0x2145A
+0x4C49 0x2145C
+0x4C4A 0x21459
+0x4C4B 0x21424
+0x4C4C 0x21425
+0x4C4D 0x21430
+0x4C4E 0x21458
+0x4C4F 0x21431
+0x4C50 0x21576
+0x4C51 0x215C1
+0x4C52 0x21685
+0x4C53 0x2167D
+0x4C54 0x21865
+0x4C55 0x21887
+0x4C56 0x21852
+0x4C57 0x21854
+0x4C58 0x2188A
+0x4C59 0x21850
+0x4C5A 0x21886
+0x4C5B 0x2184F
+0x4C5C 0x21868
+0x4C5D 0x2199D
+0x4C5E 0x21AA0
+0x4C5F 0x21ABA
+0x4C60 0x21ABD
+0x4C61 0x21AB8
+0x4C62 0x21BA6
+0x4C64 0x21CDE
+0x4C65 0x21CD8
+0x4C66 0x21CD1
+0x4C67 0x21F13
+0x4C69 0x21F0E
+0x4C6A 0x21F1B
+0x4C6B 0x21F3A
+0x4C6D 0x21F1C
+0x4C6E 0x21F12
+0x4C6F 0x21F16
+0x4C70 0x21F1A
+0x4C71 0x21448
+0x4C72 0x2214B
+0x4C73 0x22137
+0x4C74 0x22136
+0x4C75 0x22138
+0x4C76 0x2213A
+0x4C77 0x22149
+0x4C78 0x2213C
+0x4C79 0x2214A
+0x4C7A 0x222B1
+0x4C7B 0x222C2
+0x4C7C 0x222B5
+0x4C7D 0x222C4
+0x4C7E 0x222B6
+0x4D21 0x2241E
+0x4D22 0x2241F
+0x4D23 0x224AF
+0x4D24 0x2256B
+0x4D25 0x2256F
+0x4D26 0x22792
+0x4D27 0x227E4
+0x4D28 0x2282C
+0x4D29 0x227EF
+0x4D2B 0x2284F
+0x4D2C 0x22852
+0x4D2D 0x22850
+0x4D2E 0x2283A
+0x4D2F 0x22837
+0x4D30 0x22847
+0x4D31 0x22864
+0x4D32 0x22840
+0x4D33 0x2283C
+0x4D34 0x22845
+0x4D35 0x22841
+0x4D36 0x229F3
+0x4D38 0x22CC1
+0x4D39 0x22CB4
+0x4D3B 0x22D2A
+0x4D3C 0x22D22
+0x4D3D 0x22D29
+0x4D3F 0x22D3E
+0x4D40 0x22D3C
+0x4D41 0x22D30
+0x4D42 0x22FC7
+0x4D43 0x22FD5
+0x4D44 0x22FD6
+0x4D45 0x22FD3
+0x4D46 0x22FCE
+0x4D47 0x22FC8
+0x4D48 0x2305C
+0x4D49 0x2305F
+0x4D4A 0x23062
+0x4D4C 0x230BD
+0x4D4D 0x230BF
+0x4D4E 0x2325C
+0x4D4F 0x232B6
+0x4D51 0x2329D
+0x4D52 0x2327F
+0x4D54 0x23294
+0x4D55 0x23281
+0x4D56 0x23347
+0x4D57 0x23346
+0x4D59 0x23394
+0x4D5A 0x23675
+0x4D5B 0x2361A
+0x4D5C 0x2362A
+0x4D5D 0x23632
+0x4D5E 0x23617
+0x4D5F 0x23623
+0x4D60 0x23674
+0x4D62 0x23676
+0x4D63 0x2362E
+0x4D64 0x23625
+0x4D65 0x23620
+0x4D66 0x23671
+0x4D67 0x23616
+0x4D68 0x23670
+0x4D69 0x2362C
+0x4D6A 0x2362F
+0x4D6B 0x2361F
+0x4D6C 0x23664
+0x4D6E 0x23908
+0x4D6F 0x23914
+0x4D70 0x2390A
+0x4D71 0x2390B
+0x4D72 0x23A4F
+0x4D73 0x23A59
+0x4D74 0x23A54
+0x4D75 0x23A51
+0x4D76 0x23AB6
+0x4D77 0x23BEC
+0x4D78 0x23BED
+0x4D79 0x23BEA
+0x4D7A 0x23EEE
+0x4D7B 0x23F5A
+0x4D7C 0x23F73
+0x4D7D 0x23F65
+0x4D7E 0x23F61
+0x4E21 0x23F55
+0x4E22 0x23F6B
+0x4E23 0x23F64
+0x4E24 0x23F5B
+0x4E25 0x23F4C
+0x4E26 0x23F6F
+0x4E27 0x23F84
+0x4E28 0x23F70
+0x4E29 0x2435D
+0x4E2A 0x24357
+0x4E2B 0x24366
+0x4E2C 0x24353
+0x4E2D 0x24398
+0x4E2E 0x24397
+0x4E2F 0x24528
+0x4E30 0x245EB
+0x4E31 0x245EA
+0x4E32 0x245E8
+0x4E33 0x245EC
+0x4E34 0x245EF
+0x4E35 0x246D1
+0x4E36 0x246CA
+0x4E38 0x246CF
+0x4E39 0x246CD
+0x4E3A 0x246CE
+0x4E3B 0x24870
+0x4E3C 0x24867
+0x4E3D 0x24873
+0x4E3E 0x2486D
+0x4E3F 0x24876
+0x4E40 0x24879
+0x4E41 0x2486A
+0x4E42 0x2488B
+0x4E43 0x24872
+0x4E44 0x24871
+0x4E45 0x2486E
+0x4E46 0x2487A
+0x4E47 0x24A16
+0x4E48 0x24A39
+0x4E49 0x24A3B
+0x4E4A 0x24B10
+0x4E4B 0x24B96
+0x4E4C 0x24B7B
+0x4E4D 0x24B7C
+0x4E4E 0x24B7D
+0x4E4F 0x24CBE
+0x4E50 0x24E5C
+0x4E51 0x24E38
+0x4E52 0x24E39
+0x4E53 0x24E2E
+0x4E54 0x24E34
+0x4E55 0x24E32
+0x4E56 0x24E5B
+0x4E57 0x24E33
+0x4E58 0x24E3C
+0x4E5A 0x2500E
+0x4E5B 0x2500F
+0x4E5C 0x25010
+0x4E5D 0x25087
+0x4E5E 0x2525B
+0x4E5F 0x25253
+0x4E61 0x2525C
+0x4E62 0x2523F
+0x4E63 0x25259
+0x4E64 0x2524A
+0x4E65 0x25244
+0x4E66 0x2524C
+0x4E67 0x25240
+0x4E68 0x2525F
+0x4E69 0x2525E
+0x4E6A 0x2524E
+0x4E6B 0x25254
+0x4E6C 0x25243
+0x4E6D 0x25287
+0x4E6E 0x25382
+0x4E6F 0x25385
+0x4E70 0x25531
+0x4E71 0x25547
+0x4E72 0x2552E
+0x4E73 0x2552F
+0x4E74 0x25548
+0x4E75 0x25534
+0x4E77 0x2059F
+0x4E78 0x25832
+0x4E79 0x25836
+0x4E7A 0x25833
+0x4E7B 0x25831
+0x4E7C 0x25840
+0x4E7D 0x25841
+0x4E7E 0x259DD
+0x4F21 0x259D2
+0x4F22 0x259D9
+0x4F24 0x259DF
+0x4F25 0x259DB
+0x4F26 0x259D8
+0x4F27 0x259D3
+0x4F28 0x259DE
+0x4F29 0x259E0
+0x4F2A 0x259D4
+0x4F2B 0x259D7
+0x4F2C 0x259DA
+0x4F2D 0x25AA7
+0x4F2E 0x25BFE
+0x4F2F 0x25BDD
+0x4F30 0x25C40
+0x4F31 0x25BE2
+0x4F33 0x25BD6
+0x4F34 0x25BDE
+0x4F35 0x25BEF
+0x4F37 0x25BEB
+0x4F38 0x25BEA
+0x4F39 0x25BE4
+0x4F3A 0x25BD1
+0x4F3C 0x25BEC
+0x4F3D 0x25BFA
+0x4F3E 0x25BD9
+0x4F3F 0x25BF3
+0x4F40 0x25BE1
+0x4F41 0x25BDC
+0x4F42 0x25BE5
+0x4F43 0x25BDF
+0x4F44 0x25BD4
+0x4F46 0x25C05
+0x4F47 0x25ED6
+0x4F48 0x25ED5
+0x4F49 0x25ED0
+0x4F4A 0x25EC8
+0x4F4B 0x25EC4
+0x4F4C 0x25EC9
+0x4F4D 0x25ECD
+0x4F4E 0x25ED2
+0x4F4F 0x25ECC
+0x4F50 0x25ECA
+0x4F51 0x260A0
+0x4F52 0x26092
+0x4F55 0x2608B
+0x4F56 0x260A1
+0x4F57 0x26095
+0x4F58 0x26088
+0x4F59 0x26086
+0x4F5A 0x2608D
+0x4F5B 0x26085
+0x4F5C 0x26091
+0x4F5D 0x26089
+0x4F5E 0x260A2
+0x4F5F 0x262F0
+0x4F60 0x262F3
+0x4F61 0x262F4
+0x4F62 0x262EF
+0x4F63 0x26306
+0x4F64 0x263A2
+0x4F65 0x2645E
+0x4F66 0x26463
+0x4F67 0x26460
+0x4F68 0x2645B
+0x4F69 0x2647B
+0x4F6A 0x26458
+0x4F6B 0x26459
+0x4F6C 0x2645D
+0x4F6D 0x26505
+0x4F6E 0x26506
+0x4F6F 0x26502
+0x4F70 0x26503
+0x4F71 0x26504
+0x4F72 0x265A2
+0x4F73 0x265A7
+0x4F74 0x265A6
+0x4F75 0x265A4
+0x4F76 0x265AC
+0x4F77 0x265A9
+0x4F78 0x267E7
+0x4F79 0x26801
+0x4F7A 0x267DF
+0x4F7B 0x267D9
+0x4F7C 0x267E3
+0x4F7D 0x2680F
+0x4F7E 0x2691A
+0x5021 0x26945
+0x5022 0x26948
+0x5023 0x2697B
+0x5024 0x26985
+0x5025 0x26986
+0x5026 0x269FE
+0x5027 0x269FF
+0x5028 0x26A64
+0x5029 0x26A71
+0x502A 0x26A72
+0x502B 0x26A61
+0x502C 0x26A62
+0x502D 0x26A6C
+0x502E 0x26A60
+0x502F 0x26A5D
+0x5030 0x26A63
+0x5031 0x26A67
+0x5032 0x26E01
+0x5033 0x26E2A
+0x5034 0x26E30
+0x5035 0x26E06
+0x5036 0x26E7D
+0x5037 0x26E22
+0x5038 0x26EB9
+0x5039 0x26E0A
+0x503A 0x26E10
+0x503B 0x26D8F
+0x503C 0x26E80
+0x503D 0x26E13
+0x503E 0x26E2E
+0x503F 0x26E18
+0x5040 0x26E17
+0x5041 0x26E1A
+0x5042 0x26E14
+0x5043 0x26E47
+0x5044 0x26E63
+0x5045 0x26E38
+0x5047 0x26E7F
+0x5048 0x26E21
+0x5049 0x26E37
+0x504A 0x26E31
+0x504B 0x26E1B
+0x504C 0x26EA5
+0x504D 0x26F6C
+0x504E 0x271D3
+0x504F 0x27388
+0x5050 0x2736E
+0x5051 0x2735C
+0x5052 0x27374
+0x5053 0x27354
+0x5054 0x27383
+0x5056 0x27365
+0x5057 0x27360
+0x5058 0x27370
+0x5059 0x2736F
+0x505A 0x2736D
+0x505B 0x27372
+0x505C 0x2736C
+0x505D 0x27376
+0x505E 0x27375
+0x505F 0x27359
+0x5060 0x273C7
+0x5061 0x275C1
+0x5062 0x275F9
+0x5063 0x276E3
+0x5064 0x276E7
+0x5065 0x276D6
+0x5066 0x276CF
+0x5067 0x276DA
+0x5068 0x276E9
+0x5069 0x276D2
+0x506A 0x27855
+0x506B 0x2784F
+0x506C 0x2784D
+0x506D 0x27851
+0x506E 0x27856
+0x506F 0x278F9
+0x5070 0x278F8
+0x5071 0x27906
+0x5072 0x27903
+0x5073 0x27909
+0x5074 0x278F7
+0x5075 0x278F5
+0x5076 0x27A47
+0x5077 0x27A45
+0x5078 0x27A3E
+0x5079 0x27A46
+0x507A 0x27A29
+0x507B 0x27A34
+0x507C 0x27A3F
+0x507D 0x27A44
+0x507E 0x27A35
+0x5121 0x27A5A
+0x5122 0x27A2A
+0x5123 0x27A33
+0x5124 0x27A37
+0x5125 0x27A43
+0x5126 0x27A39
+0x5127 0x27A30
+0x5128 0x27A5D
+0x5129 0x27A32
+0x512A 0x27A27
+0x512B 0x27BBD
+0x512C 0x27BBA
+0x512D 0x27BBC
+0x512E 0x27BF1
+0x512F 0x27BF0
+0x5130 0x27C61
+0x5131 0x27C5C
+0x5132 0x27C58
+0x5133 0x27C5D
+0x5134 0x27CDA
+0x5135 0x27CD9
+0x5136 0x27CDD
+0x5137 0x27CDC
+0x5138 0x27CDE
+0x513A 0x27DA0
+0x513B 0x27DA2
+0x513C 0x27F0F
+0x513D 0x27F13
+0x513E 0x27F12
+0x513F 0x27F11
+0x5140 0x27F14
+0x5141 0x27F19
+0x5142 0x27F0E
+0x5143 0x27F17
+0x5144 0x27F21
+0x5145 0x27F20
+0x5146 0x27F16
+0x5147 0x28078
+0x5149 0x28087
+0x514A 0x28079
+0x514B 0x28080
+0x514C 0x28077
+0x514D 0x28081
+0x514E 0x28046
+0x514F 0x2807A
+0x5150 0x2809C
+0x5151 0x28083
+0x5152 0x28084
+0x5153 0x280AD
+0x5154 0x2809D
+0x5155 0x2809E
+0x5156 0x28255
+0x5157 0x28336
+0x5158 0x2832B
+0x5159 0x28327
+0x515A 0x28346
+0x515B 0x2832C
+0x515C 0x28345
+0x515D 0x28333
+0x515E 0x2832D
+0x515F 0x28334
+0x5160 0x28322
+0x5162 0x2841F
+0x5163 0x285B3
+0x5164 0x2858C
+0x5165 0x2858F
+0x5166 0x285AF
+0x5167 0x285AD
+0x5168 0x2858E
+0x5169 0x285AC
+0x516A 0x285B0
+0x516B 0x285B1
+0x516C 0x285AE
+0x516D 0x28599
+0x516E 0x286EB
+0x516F 0x28774
+0x5170 0x28775
+0x5171 0x2878E
+0x5172 0x2876D
+0x5173 0x28770
+0x5174 0x2878C
+0x5175 0x2884F
+0x5176 0x28851
+0x5177 0x28858
+0x5178 0x2884C
+0x5179 0x2884E
+0x517A 0x28915
+0x517B 0x289BE
+0x517C 0x289DB
+0x517D 0x289B3
+0x517E 0x289AE
+0x5221 0x28C87
+0x5222 0x28C8A
+0x5223 0x28C88
+0x5224 0x28C8B
+0x5225 0x28C8C
+0x5226 0x28D44
+0x5227 0x28D2D
+0x5228 0x28D2A
+0x5229 0x28D31
+0x522A 0x28D2C
+0x522B 0x28D45
+0x522C 0x28D30
+0x522D 0x28D29
+0x522E 0x28D46
+0x522F 0x28EF4
+0x5230 0x28F14
+0x5231 0x28F10
+0x5232 0x28F0F
+0x5233 0x28F12
+0x5234 0x28F0B
+0x5235 0x28F0C
+0x5236 0x28F0A
+0x5237 0x28F13
+0x5238 0x28F0E
+0x5239 0x28FD9
+0x523A 0x28FD0
+0x523C 0x290C1
+0x523D 0x290BF
+0x523E 0x290BD
+0x523F 0x290BC
+0x5240 0x290BA
+0x5241 0x290BB
+0x5242 0x290D1
+0x5243 0x290BE
+0x5244 0x290D0
+0x5245 0x290B9
+0x5246 0x2921A
+0x5247 0x2921C
+0x5248 0x2921B
+0x5249 0x29291
+0x524A 0x29296
+0x524B 0x2929F
+0x524C 0x2929C
+0x524D 0x2929A
+0x524E 0x2929D
+0x524F 0x293AD
+0x5250 0x293A5
+0x5251 0x293AE
+0x5252 0x29403
+0x5253 0x29426
+0x5254 0x29420
+0x5255 0x29423
+0x5256 0x29424
+0x5257 0x29421
+0x5258 0x29428
+0x5259 0x29425
+0x525A 0x2941E
+0x525B 0x29494
+0x525C 0x29493
+0x525D 0x2948F
+0x525E 0x2949A
+0x525F 0x294AD
+0x5261 0x295CA
+0x5262 0x295C5
+0x5263 0x296BB
+0x5264 0x296E1
+0x5265 0x296EA
+0x5266 0x296E4
+0x5267 0x296ED
+0x5268 0x296E6
+0x5269 0x296E0
+0x526A 0x296E8
+0x526B 0x296E5
+0x526C 0x2981A
+0x526D 0x29894
+0x526E 0x29896
+0x526F 0x2989E
+0x5270 0x29895
+0x5271 0x298A1
+0x5272 0x2988E
+0x5273 0x2989B
+0x5274 0x29892
+0x5275 0x29897
+0x5276 0x29899
+0x5277 0x29893
+0x5278 0x29A32
+0x5279 0x29A2F
+0x527A 0x29A2E
+0x527B 0x29A33
+0x527C 0x29B1C
+0x527D 0x29B1E
+0x527E 0x29B11
+0x5321 0x29B20
+0x5322 0x29B1F
+0x5323 0x29B19
+0x5324 0x29B16
+0x5325 0x29CAC
+0x5326 0x29CB9
+0x5327 0x29CB3
+0x5328 0x29CA6
+0x5329 0x29CA2
+0x532A 0x29CA9
+0x532B 0x29CA7
+0x532C 0x29D6C
+0x532D 0x29D6D
+0x532E 0x29D69
+0x532F 0x29D80
+0x5330 0x29D66
+0x5331 0x29D65
+0x5332 0x29D71
+0x5333 0x29D6B
+0x5334 0x29FBD
+0x5335 0x29FC1
+0x5336 0x29FD3
+0x5337 0x29FB6
+0x5339 0x29FB9
+0x533A 0x29FD4
+0x533B 0x29FB7
+0x533C 0x29FDB
+0x533D 0x29FB8
+0x533E 0x29FC0
+0x533F 0x29FBC
+0x5340 0x29FD5
+0x5341 0x29FBF
+0x5342 0x29FC3
+0x5343 0x29FC9
+0x5344 0x2A258
+0x5345 0x2A290
+0x5346 0x2A295
+0x5347 0x2A297
+0x5348 0x2A309
+0x5349 0x2A308
+0x534A 0x2A306
+0x534B 0x2A305
+0x534C 0x2A310
+0x534D 0x2A397
+0x534E 0x2A395
+0x534F 0x2A3EE
+0x5350 0x2A41F
+0x5351 0x2FA1A
+0x5352 0x21B4B
+0x5353 0x2018E
+0x5354 0x203E8
+0x5355 0x203F0
+0x5356 0x203F4
+0x5357 0x20406
+0x5358 0x203ED
+0x535A 0x203E9
+0x535B 0x20400
+0x535C 0x204B8
+0x535D 0x2056D
+0x535E 0x20804
+0x535F 0x20801
+0x5360 0x20803
+0x5361 0x20802
+0x5364 0x20962
+0x5365 0x20ABA
+0x5366 0x20B13
+0x5367 0x20FDE
+0x5368 0x20FD7
+0x5369 0x20FE4
+0x536A 0x20FCE
+0x536B 0x20FE3
+0x536C 0x20FDD
+0x536D 0x2103A
+0x536E 0x20FDB
+0x536F 0x20FD6
+0x5370 0x20FE0
+0x5371 0x20FD4
+0x5372 0x20FCB
+0x5373 0x20FE1
+0x5374 0x20FC9
+0x5375 0x20FDF
+0x5376 0x2103C
+0x5377 0x20FFC
+0x5378 0x20FCF
+0x5379 0x21479
+0x537A 0x21476
+0x537B 0x21478
+0x537C 0x21687
+0x537D 0x2189C
+0x537E 0x218B1
+0x5421 0x218C1
+0x5422 0x2189A
+0x5423 0x21892
+0x5425 0x218C2
+0x5426 0x21896
+0x5427 0x218C0
+0x5428 0x21891
+0x5429 0x21895
+0x542A 0x219A2
+0x542B 0x21AC3
+0x542C 0x21AC0
+0x542D 0x21AC2
+0x542E 0x20B8A
+0x542F 0x21BB0
+0x5430 0x21C16
+0x5431 0x21F46
+0x5432 0x21F4A
+0x5433 0x21F3E
+0x5434 0x21F45
+0x5435 0x21F42
+0x5437 0x21F5B
+0x5438 0x21F44
+0x5439 0x22004
+0x543A 0x24022
+0x543B 0x22155
+0x543C 0x22157
+0x543D 0x22151
+0x543E 0x2214E
+0x543F 0x2215A
+0x5440 0x222C6
+0x5441 0x222C3
+0x5443 0x222C5
+0x5444 0x222CC
+0x5445 0x22371
+0x5446 0x22426
+0x5447 0x224B2
+0x5448 0x2257A
+0x5449 0x22584
+0x544A 0x2257B
+0x544B 0x22874
+0x544C 0x2288C
+0x544D 0x22851
+0x544E 0x22848
+0x544F 0x2288D
+0x5450 0x22892
+0x5451 0x22898
+0x5452 0x22893
+0x5453 0x228B0
+0x5454 0x2284E
+0x5455 0x22896
+0x5456 0x22897
+0x5457 0x2289C
+0x5458 0x228CA
+0x5459 0x22D33
+0x545A 0x22D83
+0x545B 0x22D84
+0x545C 0x22D9A
+0x545D 0x22D8C
+0x545F 0x22D99
+0x5460 0x22EE0
+0x5461 0x22FE4
+0x5462 0x22FF8
+0x5463 0x22FED
+0x5464 0x22FF3
+0x5465 0x22FF4
+0x5466 0x22FF5
+0x5467 0x22FFD
+0x5468 0x23119
+0x5469 0x2329E
+0x546A 0x232C4
+0x546B 0x2329F
+0x546C 0x2339B
+0x546D 0x2339F
+0x546E 0x2339A
+0x546F 0x236AA
+0x5470 0x2369D
+0x5471 0x23692
+0x5472 0x236A2
+0x5473 0x236AF
+0x5474 0x236EB
+0x5475 0x236A0
+0x5476 0x236A1
+0x5477 0x23694
+0x5478 0x23698
+0x5479 0x2368F
+0x547A 0x23687
+0x547B 0x23684
+0x547C 0x236A9
+0x547D 0x2367C
+0x547E 0x23918
+0x5521 0x23A5F
+0x5522 0x23A62
+0x5523 0x23A61
+0x5524 0x23AC0
+0x5525 0x23B15
+0x5526 0x23BFC
+0x5527 0x23BF9
+0x5528 0x23FC8
+0x5529 0x23FC9
+0x552A 0x23FDE
+0x552B 0x23FCA
+0x552C 0x23FE2
+0x552F 0x24004
+0x5530 0x23FCC
+0x5531 0x23FDD
+0x5532 0x23FE4
+0x5533 0x23FD3
+0x5534 0x23FC7
+0x5535 0x23FC6
+0x5537 0x24037
+0x5538 0x243D8
+0x5539 0x243EE
+0x553A 0x243B2
+0x553B 0x243A3
+0x553C 0x243B3
+0x553D 0x243ED
+0x553E 0x243F8
+0x553F 0x24531
+0x5540 0x2455B
+0x5541 0x24566
+0x5542 0x24569
+0x5543 0x24596
+0x5544 0x2459B
+0x5545 0x245F7
+0x5546 0x245F3
+0x5547 0x245F4
+0x5548 0x245F5
+0x5549 0x246E2
+0x554A 0x246E7
+0x554B 0x246E5
+0x554C 0x246E9
+0x554D 0x246E6
+0x554E 0x246E3
+0x554F 0x24874
+0x5550 0x2487F
+0x5551 0x2488F
+0x5552 0x24890
+0x5553 0x24897
+0x5554 0x248A3
+0x5555 0x2488E
+0x5556 0x24898
+0x5557 0x2488C
+0x5558 0x24A42
+0x5559 0x24A44
+0x555A 0x24A69
+0x555B 0x24A43
+0x555C 0x24A68
+0x555E 0x24B8D
+0x555F 0x24B88
+0x5560 0x24B8B
+0x5561 0x24B89
+0x5562 0x24CCC
+0x5563 0x24D1F
+0x5564 0x24E80
+0x5565 0x24E5E
+0x5566 0x24E67
+0x5567 0x24E68
+0x5568 0x24E65
+0x556A 0x24E74
+0x556B 0x24E69
+0x556C 0x24E61
+0x556D 0x24E62
+0x556E 0x24E6C
+0x556F 0x24E93
+0x5570 0x24E86
+0x5571 0x24F9D
+0x5572 0x24F9B
+0x5573 0x2501B
+0x5574 0x25016
+0x5575 0x25019
+0x5576 0x25014
+0x5577 0x25018
+0x5578 0x25015
+0x5579 0x25099
+0x557A 0x25098
+0x557B 0x2525D
+0x557C 0x25289
+0x557D 0x2527A
+0x557E 0x2527D
+0x5621 0x2524B
+0x5623 0x25278
+0x5624 0x2527F
+0x5625 0x25277
+0x5626 0x2527E
+0x5627 0x25279
+0x5628 0x252AB
+0x5629 0x2527C
+0x562A 0x25274
+0x562B 0x25275
+0x562C 0x252A7
+0x562D 0x2538D
+0x562E 0x2554E
+0x562F 0x25566
+0x5630 0x25561
+0x5631 0x2554D
+0x5632 0x2554F
+0x5634 0x25554
+0x5635 0x2557C
+0x5636 0x256DA
+0x5637 0x256DE
+0x5638 0x256D8
+0x5639 0x256DD
+0x563A 0x256DF
+0x563B 0x25866
+0x563C 0x25862
+0x563D 0x2585F
+0x563E 0x25864
+0x563F 0x25863
+0x5640 0x25860
+0x5641 0x25888
+0x5642 0x2586A
+0x5643 0x25867
+0x5644 0x25887
+0x5645 0x2583F
+0x5646 0x2586C
+0x5647 0x2586E
+0x5648 0x258AD
+0x5649 0x259F1
+0x564A 0x259F4
+0x564B 0x259F6
+0x564C 0x259F5
+0x564D 0x259F8
+0x564E 0x259FB
+0x564F 0x259EC
+0x5650 0x259EF
+0x5651 0x259ED
+0x5653 0x259F7
+0x5654 0x259F9
+0x5655 0x259FD
+0x5656 0x25AB1
+0x5657 0x25C36
+0x5658 0x25C1B
+0x5659 0x25C32
+0x565A 0x25C42
+0x565B 0x25C4D
+0x565C 0x25C1F
+0x565D 0x25C21
+0x565E 0x25C1C
+0x565F 0x25C31
+0x5660 0x25C2E
+0x5661 0x25C47
+0x5662 0x25C3B
+0x5663 0x25C41
+0x5664 0x25C18
+0x5665 0x25C39
+0x5666 0x25C1D
+0x5667 0x25C27
+0x5668 0x25C23
+0x566A 0x25EEE
+0x566B 0x25EE8
+0x566C 0x25EE5
+0x566D 0x25EEF
+0x566E 0x25EE4
+0x566F 0x25EEC
+0x5670 0x25EF0
+0x5671 0x260D7
+0x5672 0x260D8
+0x5673 0x260D4
+0x5674 0x260CA
+0x5675 0x260D2
+0x5676 0x260CB
+0x5677 0x260D3
+0x5678 0x260E6
+0x5679 0x260E2
+0x567A 0x26249
+0x567B 0x26248
+0x567C 0x262FF
+0x567D 0x26309
+0x567E 0x263B0
+0x5721 0x263AF
+0x5722 0x2647C
+0x5723 0x26478
+0x5724 0x2647A
+0x5725 0x26472
+0x5726 0x26479
+0x5727 0x2647E
+0x5728 0x2650C
+0x5729 0x2650B
+0x572A 0x265CD
+0x572B 0x265BE
+0x572C 0x265BC
+0x572D 0x265BF
+0x572E 0x265C0
+0x572F 0x265BD
+0x5730 0x26838
+0x5731 0x26808
+0x5732 0x26805
+0x5733 0x2683B
+0x5734 0x26810
+0x5735 0x2680C
+0x5736 0x2680D
+0x5737 0x26804
+0x5738 0x2683A
+0x5739 0x26813
+0x573A 0x26837
+0x573B 0x26839
+0x573C 0x2691F
+0x573D 0x2694B
+0x573E 0x269EE
+0x573F 0x26A75
+0x5740 0x26A78
+0x5741 0x26A7C
+0x5742 0x26A74
+0x5743 0x26A76
+0x5744 0x26AEA
+0x5745 0x26AEB
+0x5746 0x26DFB
+0x5747 0x26E19
+0x5748 0x26EA7
+0x5749 0x26E8C
+0x574A 0x26EDC
+0x574B 0x26E98
+0x574C 0x26EBE
+0x574D 0x26E9E
+0x574E 0x26F0F
+0x574F 0x26E9F
+0x5750 0x26EDD
+0x5751 0x26E93
+0x5752 0x26EBB
+0x5753 0x26EB6
+0x5754 0x26E90
+0x5755 0x26EA1
+0x5756 0x26EBD
+0x5757 0x26EDE
+0x5758 0x26E3A
+0x5759 0x26F22
+0x575A 0x26E97
+0x575B 0x26E94
+0x575C 0x26EC3
+0x575D 0x26E8E
+0x575E 0x26EA8
+0x575F 0x26E99
+0x5760 0x26EAD
+0x5761 0x26E9B
+0x5762 0x26EA2
+0x5763 0x26F21
+0x5764 0x26EAC
+0x5765 0x26F0E
+0x5766 0x26F31
+0x5767 0x271E1
+0x5768 0x271DE
+0x5769 0x271DF
+0x576A 0x271DC
+0x576B 0x271DD
+0x576C 0x271EC
+0x576D 0x271E7
+0x576E 0x27369
+0x576F 0x273B8
+0x5770 0x273A1
+0x5771 0x273A8
+0x5772 0x273BA
+0x5773 0x273C2
+0x5774 0x273A6
+0x5775 0x273A4
+0x5776 0x273A3
+0x5777 0x273AB
+0x5778 0x273BC
+0x5779 0x273B7
+0x577A 0x273BF
+0x577B 0x273AD
+0x577C 0x273B1
+0x577D 0x273CA
+0x577E 0x273C4
+0x5821 0x273B9
+0x5822 0x275C8
+0x5823 0x275C6
+0x5824 0x275C7
+0x5825 0x2770A
+0x5826 0x2770D
+0x5827 0x276FB
+0x5828 0x27703
+0x5829 0x27702
+0x582A 0x276FC
+0x582B 0x276F9
+0x582C 0x276F8
+0x582D 0x2786E
+0x582E 0x27863
+0x582F 0x27862
+0x5830 0x27861
+0x5831 0x2786B
+0x5833 0x2786F
+0x5834 0x27866
+0x5835 0x2786C
+0x5836 0x2790E
+0x5837 0x27915
+0x5838 0x27916
+0x5839 0x27910
+0x583A 0x27917
+0x583B 0x27911
+0x583C 0x27A6E
+0x583D 0x27A6C
+0x583E 0x27A87
+0x583F 0x27A83
+0x5840 0x27A63
+0x5841 0x27ADC
+0x5842 0x27BC0
+0x5843 0x27BF7
+0x5844 0x27BFA
+0x5845 0x27C70
+0x5846 0x27C6A
+0x5847 0x27C68
+0x5848 0x27C69
+0x5849 0x27C84
+0x584A 0x27CEC
+0x584B 0x27CE7
+0x584C 0x27CEE
+0x584D 0x27DBA
+0x584E 0x27DB2
+0x584F 0x27DB5
+0x5850 0x27DCB
+0x5851 0x2080B
+0x5852 0x27DD0
+0x5853 0x27E6D
+0x5854 0x27E6C
+0x5856 0x27F45
+0x5857 0x27F46
+0x5858 0x27F34
+0x5859 0x27F2C
+0x585A 0x27F35
+0x585B 0x27F44
+0x585D 0x27F76
+0x585E 0x280B1
+0x585F 0x280AA
+0x5860 0x280A1
+0x5861 0x280B2
+0x5863 0x280A6
+0x5864 0x280B5
+0x5865 0x280B4
+0x5866 0x280B8
+0x5867 0x280AF
+0x5868 0x280B0
+0x5869 0x280A3
+0x586A 0x28262
+0x586B 0x28264
+0x586C 0x28356
+0x586D 0x28351
+0x586E 0x2834F
+0x586F 0x28368
+0x5870 0x2834C
+0x5871 0x28350
+0x5873 0x28348
+0x5874 0x2834A
+0x5875 0x28421
+0x5876 0x285E3
+0x5877 0x285B9
+0x5878 0x285DE
+0x5879 0x285B7
+0x587A 0x285E1
+0x587B 0x285B6
+0x587C 0x285B5
+0x587D 0x285DF
+0x5921 0x28797
+0x5922 0x2879A
+0x5923 0x2879B
+0x5924 0x28798
+0x5925 0x28792
+0x5926 0x28793
+0x5927 0x287D7
+0x5928 0x28773
+0x5929 0x2886B
+0x592A 0x28874
+0x592B 0x28878
+0x592C 0x2886D
+0x592D 0x28918
+0x592E 0x289E9
+0x592F 0x289F5
+0x5930 0x289EA
+0x5931 0x28A2E
+0x5932 0x289E7
+0x5933 0x289FE
+0x5934 0x289E5
+0x5935 0x28A36
+0x5936 0x289F0
+0x5937 0x289E6
+0x5938 0x28A2C
+0x5939 0x28C89
+0x593A 0x28C95
+0x593B 0x28C93
+0x593C 0x28D4D
+0x593D 0x28D4A
+0x593E 0x28D4F
+0x593F 0x28D50
+0x5940 0x28D4B
+0x5941 0x28F2A
+0x5942 0x28F2B
+0x5943 0x28F2F
+0x5944 0x28F2E
+0x5945 0x28F7C
+0x5946 0x28FED
+0x5947 0x28FE2
+0x5948 0x290E0
+0x5949 0x290DC
+0x594A 0x290DA
+0x594B 0x290D6
+0x594C 0x290F4
+0x594D 0x290D9
+0x594E 0x290D5
+0x594F 0x29222
+0x5950 0x29221
+0x5951 0x29224
+0x5952 0x29225
+0x5953 0x29226
+0x5954 0x29223
+0x5955 0x292AA
+0x5956 0x292AF
+0x5957 0x292B0
+0x5958 0x292AB
+0x5959 0x293AF
+0x595A 0x293B7
+0x595B 0x293B5
+0x595C 0x293B2
+0x595D 0x293B3
+0x595E 0x2942B
+0x595F 0x294D8
+0x5960 0x294C2
+0x5961 0x294AF
+0x5962 0x294BC
+0x5963 0x294B8
+0x5964 0x294BE
+0x5965 0x294B7
+0x5966 0x294B4
+0x5967 0x294BF
+0x5968 0x294B3
+0x5969 0x294B1
+0x596A 0x294BB
+0x596B 0x294BD
+0x596C 0x294D6
+0x596D 0x294DD
+0x596E 0x295D8
+0x596F 0x295D3
+0x5970 0x295D5
+0x5971 0x295E3
+0x5972 0x295E2
+0x5973 0x295D9
+0x5974 0x295DE
+0x5975 0x295DF
+0x5976 0x295DA
+0x5977 0x295D4
+0x5978 0x296F3
+0x5979 0x296E2
+0x597A 0x2970D
+0x597B 0x29701
+0x597C 0x29705
+0x597D 0x2971A
+0x597E 0x29703
+0x5A21 0x2971F
+0x5A22 0x29716
+0x5A23 0x296FA
+0x5A24 0x296FC
+0x5A25 0x2970A
+0x5A27 0x298BC
+0x5A28 0x298CA
+0x5A29 0x298B6
+0x5A2A 0x298C7
+0x5A2B 0x298BF
+0x5A2D 0x298B9
+0x5A2F 0x298B0
+0x5A30 0x298B8
+0x5A31 0x298BD
+0x5A32 0x29891
+0x5A33 0x298BB
+0x5A34 0x298BE
+0x5A35 0x29A3E
+0x5A36 0x29A3D
+0x5A37 0x29B38
+0x5A38 0x29B3D
+0x5A39 0x29B39
+0x5A3A 0x29B33
+0x5A3B 0x29C33
+0x5A3C 0x29CBB
+0x5A3D 0x29CC6
+0x5A3E 0x29CC5
+0x5A3F 0x29CC7
+0x5A40 0x29CCB
+0x5A41 0x29CA8
+0x5A42 0x29CC8
+0x5A43 0x29CBE
+0x5A44 0x29CC1
+0x5A45 0x29CBD
+0x5A46 0x29D82
+0x5A47 0x29D9E
+0x5A48 0x29D81
+0x5A49 0x29D84
+0x5A4B 0x29D96
+0x5A4C 0x29D8E
+0x5A4D 0x29D88
+0x5A4E 0x29D87
+0x5A4F 0x29FE0
+0x5A50 0x2A00D
+0x5A51 0x29FDF
+0x5A52 0x29FE4
+0x5A53 0x29FE2
+0x5A54 0x29FDD
+0x5A55 0x29FEC
+0x5A56 0x29FDE
+0x5A57 0x29FE7
+0x5A58 0x29FEA
+0x5A59 0x29FE3
+0x5A5A 0x2A25C
+0x5A5C 0x2A25D
+0x5A5D 0x2A29C
+0x5A5E 0x2A31D
+0x5A5F 0x2A39D
+0x5A60 0x2A39E
+0x5A61 0x2A39B
+0x5A62 0x2A3B5
+0x5A63 0x2A3B9
+0x5A64 0x2A3B6
+0x5A65 0x2A3F3
+0x5A66 0x2A3F2
+0x5A67 0x2A3F4
+0x5A68 0x2A426
+0x5A69 0x2A427
+0x5A6A 0x2A425
+0x5A6B 0x2A506
+0x5A6C 0x2A50B
+0x5A6D 0x2A53A
+0x5A6E 0x2A53C
+0x5A6F 0x2040A
+0x5A70 0x2040B
+0x5A71 0x204BF
+0x5A72 0x204FD
+0x5A73 0x20618
+0x5A74 0x291DF
+0x5A75 0x25390
+0x5A76 0x2069E
+0x5A77 0x207FC
+0x5A78 0x20810
+0x5A79 0x2080F
+0x5A7A 0x2080D
+0x5A7B 0x208B9
+0x5A7C 0x208B7
+0x5A7D 0x208BA
+0x5A7E 0x2090A
+0x5B21 0x21041
+0x5B22 0x2108B
+0x5B23 0x21046
+0x5B24 0x21053
+0x5B25 0x210E2
+0x5B26 0x2103F
+0x5B27 0x20F7C
+0x5B28 0x2104B
+0x5B29 0x2104E
+0x5B2A 0x2108A
+0x5B2B 0x21047
+0x5B2C 0x21493
+0x5B2D 0x27DCE
+0x5B2E 0x2148C
+0x5B2F 0x214AF
+0x5B30 0x214C9
+0x5B31 0x215C6
+0x5B32 0x215C8
+0x5B33 0x21691
+0x5B34 0x218CF
+0x5B35 0x218D4
+0x5B36 0x218CE
+0x5B37 0x21ADD
+0x5B38 0x21AD4
+0x5B39 0x21F49
+0x5B3A 0x21F63
+0x5B3B 0x21F5D
+0x5B3D 0x21F67
+0x5B3E 0x21FBB
+0x5B3F 0x21F60
+0x5B40 0x21F80
+0x5B41 0x2215F
+0x5B42 0x22160
+0x5B43 0x222DA
+0x5B44 0x222D2
+0x5B45 0x222DD
+0x5B46 0x2258E
+0x5B47 0x22588
+0x5B48 0x2256C
+0x5B49 0x2289E
+0x5B4A 0x228C9
+0x5B4B 0x228A4
+0x5B4D 0x228D9
+0x5B4E 0x228D2
+0x5B4F 0x228DA
+0x5B50 0x228DD
+0x5B51 0x228CE
+0x5B52 0x228FC
+0x5B53 0x22A14
+0x5B54 0x22A60
+0x5B55 0x22DD7
+0x5B56 0x22DCB
+0x5B57 0x22DCD
+0x5B58 0x22DD5
+0x5B59 0x22EE7
+0x5B5A 0x23000
+0x5B5B 0x2300A
+0x5B5C 0x2300F
+0x5B5D 0x23002
+0x5B5E 0x23001
+0x5B5F 0x2311D
+0x5B60 0x232CA
+0x5B61 0x232CB
+0x5B62 0x232CD
+0x5B63 0x2334F
+0x5B64 0x2339C
+0x5B65 0x23680
+0x5B66 0x2370D
+0x5B67 0x23702
+0x5B69 0x23707
+0x5B6A 0x236F7
+0x5B6B 0x236F8
+0x5B6C 0x236FD
+0x5B6D 0x23724
+0x5B6E 0x236FB
+0x5B6F 0x23739
+0x5B70 0x2373A
+0x5B71 0x23922
+0x5B73 0x23A6A
+0x5B74 0x23A6D
+0x5B75 0x23A74
+0x5B76 0x23C0E
+0x5B77 0x23FDF
+0x5B78 0x2402B
+0x5B79 0x23FE3
+0x5B7A 0x24026
+0x5B7B 0x2402A
+0x5B7C 0x24023
+0x5B7D 0x24035
+0x5B7E 0x2404A
+0x5C21 0x243FD
+0x5C22 0x24400
+0x5C23 0x2441E
+0x5C24 0x243FF
+0x5C25 0x2459E
+0x5C26 0x245FA
+0x5C27 0x246F1
+0x5C28 0x24895
+0x5C29 0x248A8
+0x5C2A 0x248A6
+0x5C2B 0x24A6E
+0x5C2C 0x24A83
+0x5C2D 0x24A6D
+0x5C2E 0x24B8F
+0x5C30 0x24CDF
+0x5C31 0x24CD5
+0x5C32 0x24CE0
+0x5C33 0x24CD3
+0x5C34 0x24CD8
+0x5C35 0x24E8C
+0x5C37 0x24E94
+0x5C38 0x24E96
+0x5C39 0x24E85
+0x5C3A 0x24E8F
+0x5C3B 0x24EA9
+0x5C3C 0x24E8E
+0x5C3D 0x24E90
+0x5C3E 0x24EB8
+0x5C3F 0x24EC3
+0x5C40 0x24EBB
+0x5C41 0x24FA5
+0x5C42 0x24FA2
+0x5C44 0x24FA3
+0x5C45 0x250B5
+0x5C46 0x250AC
+0x5C47 0x250A8
+0x5C48 0x252AD
+0x5C49 0x252B8
+0x5C4A 0x252B4
+0x5C4B 0x252AE
+0x5C4C 0x252B6
+0x5C4E 0x252C1
+0x5C4F 0x252BF
+0x5C50 0x25392
+0x5C51 0x25400
+0x5C52 0x25401
+0x5C53 0x25575
+0x5C54 0x25572
+0x5C55 0x25578
+0x5C56 0x25570
+0x5C57 0x2557E
+0x5C58 0x2557D
+0x5C59 0x2557F
+0x5C5A 0x256EF
+0x5C5B 0x2586D
+0x5C5C 0x2588E
+0x5C5D 0x2588F
+0x5C5E 0x2588A
+0x5C5F 0x2588D
+0x5C60 0x25895
+0x5C61 0x2588B
+0x5C62 0x2588C
+0x5C63 0x258B0
+0x5C64 0x25893
+0x5C65 0x259FC
+0x5C66 0x25A15
+0x5C67 0x25A0E
+0x5C68 0x25A18
+0x5C69 0x25A11
+0x5C6A 0x25A0D
+0x5C6B 0x25ABB
+0x5C6C 0x25AB3
+0x5C6E 0x25CA1
+0x5C6F 0x25C9A
+0x5C70 0x25C84
+0x5C71 0x25CA0
+0x5C72 0x25C86
+0x5C73 0x25C9D
+0x5C74 0x25CAA
+0x5C75 0x25C78
+0x5C76 0x25C8D
+0x5C77 0x25C8A
+0x5C78 0x25CA6
+0x5C79 0x25C7A
+0x5C7A 0x25C97
+0x5C7B 0x25C88
+0x5C7C 0x25C8E
+0x5D21 0x25C76
+0x5D22 0x25C81
+0x5D23 0x25C85
+0x5D24 0x25C75
+0x5D25 0x25CA8
+0x5D26 0x25C8F
+0x5D27 0x25C91
+0x5D28 0x25CA2
+0x5D29 0x25C9C
+0x5D2A 0x25C89
+0x5D2B 0x25C7F
+0x5D2C 0x25C96
+0x5D2D 0x25C79
+0x5D2E 0x25C9F
+0x5D2F 0x25CA7
+0x5D31 0x25C87
+0x5D32 0x25C9B
+0x5D33 0x25CA5
+0x5D34 0x25C8B
+0x5D35 0x25CC9
+0x5D36 0x25EFF
+0x5D37 0x25F03
+0x5D38 0x25F00
+0x5D39 0x25F02
+0x5D3A 0x25F04
+0x5D3B 0x25F05
+0x5D3C 0x25EE6
+0x5D3D 0x25F1F
+0x5D3E 0x26114
+0x5D40 0x2610C
+0x5D41 0x2610F
+0x5D42 0x26119
+0x5D43 0x2610B
+0x5D44 0x26113
+0x5D45 0x260D5
+0x5D47 0x2611C
+0x5D48 0x26250
+0x5D49 0x2624E
+0x5D4A 0x26312
+0x5D4B 0x263B9
+0x5D4C 0x26485
+0x5D4D 0x26488
+0x5D4E 0x26490
+0x5D4F 0x26513
+0x5D50 0x265D0
+0x5D51 0x265D1
+0x5D52 0x265D2
+0x5D53 0x265D7
+0x5D54 0x265D6
+0x5D55 0x265E5
+0x5D56 0x26846
+0x5D57 0x2686B
+0x5D58 0x26845
+0x5D59 0x2683F
+0x5D5A 0x2683E
+0x5D5C 0x2686A
+0x5D5D 0x26868
+0x5D5E 0x2684C
+0x5D5F 0x26923
+0x5D60 0x26922
+0x5D61 0x26997
+0x5D62 0x26991
+0x5D63 0x25AB5
+0x5D64 0x26998
+0x5D65 0x2699C
+0x5D66 0x26A89
+0x5D68 0x26A8B
+0x5D69 0x26A8A
+0x5D6A 0x26A8D
+0x5D6B 0x26A8E
+0x5D6C 0x26A88
+0x5D6D 0x26F4E
+0x5D6E 0x26F44
+0x5D6F 0x26F37
+0x5D70 0x26F75
+0x5D71 0x26F54
+0x5D72 0x26F76
+0x5D73 0x26F34
+0x5D74 0x26F6B
+0x5D75 0x26F32
+0x5D76 0x26F57
+0x5D77 0x26F52
+0x5D78 0x26F45
+0x5D7A 0x26EB1
+0x5D7B 0x26F4B
+0x5D7C 0x26F47
+0x5D7D 0x26F33
+0x5D7E 0x26F40
+0x5E21 0x26F3C
+0x5E22 0x26F43
+0x5E23 0x26F4F
+0x5E24 0x26F55
+0x5E25 0x26F41
+0x5E26 0x26FB2
+0x5E27 0x26FC0
+0x5E28 0x27434
+0x5E29 0x273F9
+0x5E2A 0x27419
+0x5E2B 0x2740D
+0x5E2C 0x273FA
+0x5E2D 0x2741E
+0x5E2E 0x2741F
+0x5E2F 0x2740E
+0x5E30 0x27440
+0x5E31 0x27408
+0x5E33 0x27413
+0x5E34 0x2744C
+0x5E36 0x275CC
+0x5E37 0x275CB
+0x5E38 0x27724
+0x5E39 0x27725
+0x5E3A 0x2773D
+0x5E3B 0x27720
+0x5E3C 0x27727
+0x5E3D 0x27726
+0x5E3E 0x2771D
+0x5E3F 0x2771E
+0x5E40 0x27732
+0x5E41 0x2776C
+0x5E42 0x27759
+0x5E44 0x2787A
+0x5E45 0x27879
+0x5E46 0x2791B
+0x5E47 0x2792E
+0x5E48 0x27923
+0x5E49 0x27920
+0x5E4A 0x2791F
+0x5E4B 0x27AB6
+0x5E4C 0x27AB9
+0x5E4D 0x27AA1
+0x5E4E 0x27AA3
+0x5E4F 0x27AA8
+0x5E50 0x27AAF
+0x5E51 0x27A9A
+0x5E52 0x27A99
+0x5E53 0x27AA2
+0x5E54 0x27A9D
+0x5E56 0x27AAB
+0x5E57 0x27BC9
+0x5E58 0x27BFE
+0x5E59 0x27C00
+0x5E5A 0x27BFC
+0x5E5B 0x27C07
+0x5E5C 0x27C75
+0x5E5D 0x27C72
+0x5E5E 0x27C73
+0x5E5F 0x27C74
+0x5E60 0x27CFA
+0x5E61 0x27CFC
+0x5E62 0x27CF8
+0x5E63 0x27CF6
+0x5E64 0x27CFB
+0x5E65 0x27DCD
+0x5E66 0x27DD1
+0x5E67 0x27DCF
+0x5E68 0x27E74
+0x5E69 0x27E72
+0x5E6A 0x27E73
+0x5E6B 0x27F54
+0x5E6C 0x27F51
+0x5E6E 0x27F53
+0x5E6F 0x27F49
+0x5E70 0x27F4C
+0x5E71 0x27F4A
+0x5E72 0x27F4F
+0x5E73 0x27F56
+0x5E74 0x28100
+0x5E75 0x280D5
+0x5E76 0x280D7
+0x5E77 0x280FF
+0x5E78 0x280D9
+0x5E79 0x280E3
+0x5E7A 0x280D3
+0x5E7C 0x280D8
+0x5E7D 0x280D4
+0x5E7E 0x280DE
+0x5F21 0x28271
+0x5F22 0x28374
+0x5F23 0x28388
+0x5F24 0x2837F
+0x5F25 0x2836B
+0x5F26 0x28387
+0x5F27 0x28379
+0x5F28 0x28378
+0x5F29 0x28389
+0x5F2A 0x28380
+0x5F2B 0x28376
+0x5F2C 0x28429
+0x5F2D 0x28428
+0x5F2E 0x2842F
+0x5F2F 0x285E5
+0x5F30 0x28604
+0x5F31 0x28603
+0x5F32 0x285F0
+0x5F33 0x285E8
+0x5F34 0x285EA
+0x5F35 0x285F1
+0x5F36 0x28601
+0x5F37 0x28602
+0x5F38 0x287A9
+0x5F39 0x287AB
+0x5F3A 0x287B7
+0x5F3B 0x287B6
+0x5F3D 0x288A0
+0x5F3E 0x2888E
+0x5F3F 0x28886
+0x5F40 0x28887
+0x5F41 0x28885
+0x5F42 0x2888B
+0x5F43 0x28888
+0x5F44 0x28890
+0x5F45 0x2891A
+0x5F46 0x28934
+0x5F47 0x28A37
+0x5F48 0x28A2F
+0x5F49 0x28A30
+0x5F4A 0x28A39
+0x5F4B 0x28A34
+0x5F4C 0x28A33
+0x5F4D 0x28A85
+0x5F4E 0x28A84
+0x5F4F 0x28A3A
+0x5F50 0x28C9F
+0x5F51 0x28D69
+0x5F52 0x28D6C
+0x5F53 0x28D6A
+0x5F54 0x28D67
+0x5F55 0x28D6B
+0x5F56 0x28F3F
+0x5F57 0x28F40
+0x5F58 0x2900B
+0x5F59 0x290D2
+0x5F5A 0x290F8
+0x5F5B 0x29101
+0x5F5C 0x290FA
+0x5F5D 0x29116
+0x5F5E 0x2F9F6
+0x5F5F 0x2922C
+0x5F60 0x2922D
+0x5F61 0x2922F
+0x5F62 0x2922E
+0x5F63 0x292C1
+0x5F64 0x292F5
+0x5F65 0x292C4
+0x5F66 0x292DE
+0x5F67 0x292CC
+0x5F68 0x292D2
+0x5F69 0x292C2
+0x5F6A 0x292CD
+0x5F6B 0x292CF
+0x5F6C 0x292DD
+0x5F6D 0x292C8
+0x5F6E 0x293BA
+0x5F6F 0x293BE
+0x5F70 0x293BF
+0x5F71 0x2942E
+0x5F72 0x29430
+0x5F73 0x294E7
+0x5F74 0x294EE
+0x5F75 0x294E8
+0x5F76 0x294E6
+0x5F77 0x294E2
+0x5F78 0x294E4
+0x5F79 0x294FB
+0x5F7A 0x294FC
+0x5F7B 0x294EA
+0x5F7C 0x295ED
+0x5F7D 0x295F6
+0x5F7E 0x295F3
+0x6021 0x295F4
+0x6022 0x295F1
+0x6023 0x295F7
+0x6024 0x295F5
+0x6025 0x295EA
+0x6026 0x295EB
+0x6027 0x29700
+0x6028 0x2972C
+0x6029 0x29712
+0x602A 0x2973D
+0x602B 0x29733
+0x602D 0x29730
+0x602E 0x29740
+0x602F 0x29731
+0x6030 0x29757
+0x6032 0x29735
+0x6033 0x29732
+0x6034 0x2972D
+0x6035 0x29736
+0x6036 0x29738
+0x6037 0x29762
+0x6038 0x2975F
+0x6039 0x2978A
+0x603A 0x298D6
+0x603B 0x298D8
+0x603C 0x298DD
+0x603D 0x298E4
+0x603E 0x298E3
+0x603F 0x29A4D
+0x6040 0x29AD7
+0x6041 0x29B4A
+0x6042 0x29B4C
+0x6043 0x29B50
+0x6044 0x29B4B
+0x6045 0x29B4E
+0x6046 0x29B4F
+0x6047 0x29C39
+0x6048 0x29CD2
+0x6049 0x29CCD
+0x604A 0x29CD3
+0x604B 0x29CE1
+0x604C 0x29CCE
+0x604D 0x29CD5
+0x604E 0x29CDD
+0x604F 0x29CD4
+0x6050 0x29CCF
+0x6051 0x29DCB
+0x6052 0x29DA6
+0x6053 0x29DC2
+0x6054 0x29DA5
+0x6055 0x29DA9
+0x6056 0x29DA2
+0x6057 0x29DA4
+0x6058 0x29DB0
+0x6059 0x29DCC
+0x605A 0x29DAF
+0x605B 0x29DBF
+0x605C 0x2A024
+0x605D 0x2A01A
+0x605E 0x2A014
+0x605F 0x2A03A
+0x6060 0x2A020
+0x6061 0x2A01B
+0x6062 0x2A021
+0x6063 0x2A025
+0x6064 0x2A01E
+0x6065 0x2A03F
+0x6066 0x2A040
+0x6067 0x2A018
+0x6068 0x2A02C
+0x6069 0x2A015
+0x606A 0x2A02D
+0x606B 0x2A01F
+0x606C 0x2A029
+0x606D 0x2A04B
+0x606E 0x2A2B3
+0x606F 0x2A2A5
+0x6070 0x2A2A7
+0x6071 0x2A2AB
+0x6072 0x2A2A6
+0x6073 0x2A2AA
+0x6074 0x2A322
+0x6075 0x2A323
+0x6076 0x2A3A1
+0x6077 0x2A3A3
+0x6078 0x2A3A0
+0x6079 0x2A3BD
+0x607A 0x2A3BA
+0x607B 0x2A3FA
+0x607C 0x2A3F8
+0x607D 0x2A3FC
+0x607E 0x2A3F6
+0x6121 0x2A434
+0x6122 0x2A443
+0x6124 0x2A4D4
+0x6125 0x2A50D
+0x6126 0x2A543
+0x6127 0x2A541
+0x6128 0x2A53D
+0x6129 0x2A540
+0x612A 0x2A53E
+0x612B 0x2A53F
+0x612C 0x2A546
+0x612E 0x2A5D4
+0x612F 0x20435
+0x6130 0x20436
+0x6131 0x20432
+0x6132 0x2043A
+0x6133 0x204C8
+0x6134 0x20536
+0x6135 0x2061E
+0x6136 0x2061D
+0x6137 0x2061F
+0x6138 0x2081C
+0x6139 0x2081D
+0x613A 0x20820
+0x613C 0x208C0
+0x613D 0x2109A
+0x613E 0x21093
+0x613F 0x210DD
+0x6141 0x210A3
+0x6142 0x210A9
+0x6143 0x2109C
+0x6144 0x2109B
+0x6146 0x21097
+0x6147 0x214B1
+0x6148 0x214CA
+0x6149 0x214B3
+0x614A 0x214CD
+0x614B 0x218EA
+0x614C 0x218EE
+0x614D 0x218EF
+0x614E 0x21ADF
+0x614F 0x21B50
+0x6150 0x21BBB
+0x6151 0x21F88
+0x6152 0x21F89
+0x6153 0x21F8C
+0x6154 0x21F85
+0x6155 0x21F5E
+0x6156 0x21F94
+0x6157 0x21F95
+0x6158 0x2216B
+0x6159 0x2216A
+0x615A 0x22169
+0x615B 0x222E3
+0x615C 0x222F1
+0x615D 0x22437
+0x615E 0x22433
+0x615F 0x22591
+0x6160 0x2258F
+0x6161 0x22597
+0x6162 0x228D4
+0x6163 0x228DE
+0x6164 0x228D3
+0x6165 0x228E0
+0x6166 0x22943
+0x6167 0x2290B
+0x6168 0x228FF
+0x6169 0x22904
+0x616A 0x22907
+0x616B 0x22DF9
+0x616C 0x22DFA
+0x616D 0x22DFB
+0x616E 0x22DF8
+0x616F 0x23012
+0x6170 0x23010
+0x6171 0x2311F
+0x6172 0x232DF
+0x6173 0x232E3
+0x6174 0x23352
+0x6175 0x233A9
+0x6176 0x23765
+0x6177 0x23787
+0x6178 0x23742
+0x6179 0x23752
+0x617A 0x2374C
+0x617B 0x2369F
+0x617C 0x23701
+0x617D 0x23748
+0x617E 0x2374F
+0x6221 0x2377E
+0x6222 0x2374D
+0x6223 0x23758
+0x6224 0x23747
+0x6225 0x2375E
+0x6226 0x23749
+0x6227 0x2374E
+0x6228 0x2375D
+0x6229 0x2375A
+0x622A 0x23786
+0x622B 0x23751
+0x622C 0x23929
+0x622D 0x239A6
+0x622E 0x239A7
+0x622F 0x23A70
+0x6230 0x23A6F
+0x6231 0x23AD3
+0x6232 0x23AD2
+0x6233 0x23C28
+0x6234 0x23C1B
+0x6235 0x23C1A
+0x6236 0x23C1C
+0x6237 0x23C21
+0x6238 0x24032
+0x6239 0x24066
+0x623A 0x2407D
+0x623B 0x24073
+0x623C 0x2407F
+0x623D 0x24065
+0x623E 0x24080
+0x623F 0x24061
+0x6240 0x24075
+0x6241 0x2406E
+0x6242 0x24067
+0x6243 0x24071
+0x6244 0x2406C
+0x6245 0x24063
+0x6246 0x24062
+0x6247 0x24083
+0x6248 0x240B2
+0x6249 0x24081
+0x624A 0x2406F
+0x624B 0x2406B
+0x624C 0x24082
+0x624D 0x2408A
+0x624E 0x24429
+0x624F 0x24430
+0x6250 0x24431
+0x6251 0x24597
+0x6252 0x24600
+0x6253 0x245FF
+0x6254 0x248B6
+0x6255 0x248B5
+0x6256 0x248C3
+0x6257 0x24A8D
+0x6258 0x24B18
+0x6259 0x24B9C
+0x625A 0x24B9A
+0x625B 0x24B99
+0x625C 0x24EB7
+0x625D 0x24EC4
+0x625E 0x24EC6
+0x625F 0x24EC7
+0x6260 0x24EBC
+0x6261 0x24EC0
+0x6262 0x24EC5
+0x6263 0x24ECD
+0x6264 0x24EC1
+0x6265 0x24EBE
+0x6266 0x24FA7
+0x6267 0x24FB8
+0x6268 0x25023
+0x626A 0x252E8
+0x626B 0x252DE
+0x626C 0x252E3
+0x626D 0x252EF
+0x626E 0x252DC
+0x626F 0x252E4
+0x6270 0x252E1
+0x6271 0x252E5
+0x6272 0x25395
+0x6273 0x25394
+0x6274 0x25393
+0x6275 0x2538E
+0x6276 0x25598
+0x6277 0x2559C
+0x6278 0x25599
+0x6279 0x255A0
+0x627A 0x2559E
+0x627B 0x25704
+0x627C 0x258D3
+0x627D 0x258B4
+0x627E 0x258BB
+0x6321 0x258B7
+0x6322 0x258B8
+0x6323 0x258BD
+0x6324 0x258B6
+0x6325 0x258B9
+0x6326 0x258B5
+0x6327 0x25A22
+0x6328 0x25A21
+0x6329 0x25AC3
+0x632A 0x25ABC
+0x632B 0x25CFF
+0x632C 0x25CE5
+0x632D 0x25CF7
+0x632E 0x25CD2
+0x632F 0x25D00
+0x6330 0x25CDB
+0x6331 0x25CF0
+0x6332 0x25CE2
+0x6333 0x25CCD
+0x6335 0x25CE1
+0x6336 0x25CF2
+0x6337 0x25CDC
+0x6338 0x25CCC
+0x6339 0x25CD6
+0x633A 0x25CF3
+0x633B 0x25CFA
+0x633C 0x25CF6
+0x633D 0x25CEC
+0x633E 0x25CEA
+0x633F 0x25CE3
+0x6340 0x25CD0
+0x6342 0x25C95
+0x6343 0x25CD5
+0x6344 0x25CF4
+0x6345 0x25CCB
+0x6346 0x25CDA
+0x6347 0x25CC8
+0x6348 0x25CDF
+0x6349 0x25CF5
+0x634A 0x25CCF
+0x634B 0x25CC7
+0x634C 0x25CD7
+0x634D 0x25F24
+0x634F 0x25F1C
+0x6350 0x25F21
+0x6351 0x25F1E
+0x6352 0x25F18
+0x6353 0x25F1B
+0x6355 0x26146
+0x6356 0x2614B
+0x6357 0x26148
+0x6358 0x26147
+0x6359 0x26167
+0x635A 0x26154
+0x635B 0x26315
+0x635C 0x26322
+0x635D 0x263C5
+0x635E 0x26329
+0x635F 0x263C7
+0x6360 0x2648D
+0x6361 0x2651B
+0x6362 0x26520
+0x6363 0x265E2
+0x6364 0x265E7
+0x6365 0x265E8
+0x6366 0x265E1
+0x6367 0x26872
+0x6368 0x2687B
+0x6369 0x26874
+0x636A 0x26871
+0x636B 0x26879
+0x636C 0x26875
+0x636D 0x26890
+0x636E 0x26877
+0x636F 0x2687D
+0x6370 0x2694F
+0x6371 0x26950
+0x6372 0x269A3
+0x6373 0x269A2
+0x6374 0x269F4
+0x6375 0x26A94
+0x6376 0x26A9A
+0x6377 0x26A9B
+0x6378 0x26AA7
+0x6379 0x26A97
+0x637A 0x26A95
+0x637B 0x26A92
+0x637C 0x26A9C
+0x637D 0x26A96
+0x637E 0x26FB6
+0x6421 0x26FB8
+0x6422 0x26FB0
+0x6423 0x27018
+0x6424 0x26FC5
+0x6425 0x26FB5
+0x6426 0x26FC2
+0x6427 0x27006
+0x6428 0x27019
+0x6429 0x26FB9
+0x642A 0x27015
+0x642B 0x26FD6
+0x642C 0x26FAC
+0x642E 0x26FC6
+0x642F 0x26FB3
+0x6430 0x26FC3
+0x6431 0x26FCA
+0x6432 0x26FCF
+0x6433 0x26FBD
+0x6434 0x26FCE
+0x6435 0x27014
+0x6436 0x26FBA
+0x6437 0x2701A
+0x6438 0x26FC1
+0x6439 0x26FBB
+0x643C 0x27201
+0x643D 0x271FC
+0x643E 0x2745A
+0x643F 0x27454
+0x6440 0x27461
+0x6441 0x2745C
+0x6442 0x27455
+0x6443 0x2744A
+0x6444 0x2744B
+0x6445 0x27451
+0x6446 0x27469
+0x6447 0x2746B
+0x6449 0x27466
+0x644A 0x27458
+0x644B 0x2745D
+0x644C 0x27467
+0x644D 0x27456
+0x644E 0x27488
+0x644F 0x27464
+0x6450 0x2744E
+0x6451 0x27757
+0x6452 0x2775A
+0x6453 0x27751
+0x6454 0x2774A
+0x6455 0x2774B
+0x6457 0x27747
+0x6458 0x2776F
+0x6459 0x2776A
+0x645A 0x2776B
+0x645B 0x27746
+0x645C 0x2776D
+0x645D 0x27754
+0x645E 0x2776E
+0x645F 0x2774C
+0x6460 0x27878
+0x6461 0x27886
+0x6462 0x27882
+0x6464 0x27AE1
+0x6465 0x27AE5
+0x6466 0x27ADB
+0x6467 0x27ADE
+0x6468 0x27AD7
+0x6469 0x27C03
+0x646A 0x27C7C
+0x646B 0x27C7E
+0x646C 0x27D05
+0x646D 0x27D07
+0x646E 0x27DE6
+0x646F 0x27DE1
+0x6470 0x27DFB
+0x6471 0x27DE5
+0x6472 0x27DE7
+0x6473 0x27DDF
+0x6474 0x27DFF
+0x6475 0x27E76
+0x6476 0x27F63
+0x6477 0x27F66
+0x6478 0x27F65
+0x6479 0x27F5E
+0x647A 0x27F64
+0x647B 0x27F6B
+0x647C 0x27F5F
+0x647D 0x27F67
+0x647E 0x27F68
+0x6521 0x28108
+0x6522 0x28109
+0x6523 0x28117
+0x6524 0x28115
+0x6525 0x2811B
+0x6526 0x2810B
+0x6527 0x28128
+0x6528 0x2810E
+0x6529 0x28118
+0x652A 0x28153
+0x652B 0x28145
+0x652C 0x2810D
+0x652D 0x2810A
+0x652E 0x28113
+0x652F 0x2814A
+0x6530 0x28279
+0x6531 0x283A1
+0x6532 0x2838D
+0x6533 0x283A2
+0x6534 0x28390
+0x6536 0x28431
+0x6537 0x28430
+0x6538 0x2861F
+0x6539 0x28619
+0x653A 0x2860C
+0x653B 0x2861E
+0x653C 0x2861D
+0x653D 0x28607
+0x653E 0x28766
+0x653F 0x287C5
+0x6540 0x287BA
+0x6541 0x287BD
+0x6542 0x287C2
+0x6543 0x287C3
+0x6544 0x287BF
+0x6546 0x288A1
+0x6547 0x288A2
+0x6548 0x288A8
+0x6549 0x288A3
+0x654A 0x288AA
+0x654B 0x288AF
+0x654C 0x288B9
+0x654D 0x28937
+0x654E 0x28A8F
+0x6550 0x28A8E
+0x6551 0x28A87
+0x6552 0x28A8A
+0x6553 0x28A92
+0x6554 0x28A97
+0x6555 0x28A9F
+0x6556 0x28B05
+0x6557 0x28CA9
+0x6558 0x28CA7
+0x6559 0x28D8A
+0x655A 0x28D82
+0x655B 0x28D85
+0x655C 0x28D8B
+0x655D 0x28D89
+0x655E 0x28D81
+0x655F 0x28D80
+0x6560 0x28D87
+0x6561 0x28D86
+0x6562 0x28F4D
+0x6563 0x2901C
+0x6564 0x2901F
+0x6565 0x29121
+0x6566 0x2911D
+0x6567 0x29122
+0x6568 0x290FE
+0x6569 0x2911B
+0x656A 0x2913A
+0x656B 0x29137
+0x656C 0x29117
+0x656D 0x29138
+0x656E 0x29126
+0x656F 0x29118
+0x6570 0x29234
+0x6571 0x29235
+0x6572 0x29232
+0x6574 0x292E1
+0x6575 0x292FD
+0x6576 0x292E3
+0x6577 0x292E8
+0x6578 0x292F9
+0x6579 0x292FF
+0x657A 0x292FE
+0x657C 0x292E0
+0x657D 0x29300
+0x6621 0x292EC
+0x6622 0x292E4
+0x6623 0x292EF
+0x6624 0x292FA
+0x6625 0x293CA
+0x6626 0x29431
+0x6627 0x29432
+0x6628 0x29434
+0x6629 0x29441
+0x662A 0x29500
+0x662B 0x29506
+0x662C 0x29508
+0x662D 0x29505
+0x662E 0x29503
+0x662F 0x2950B
+0x6630 0x29502
+0x6631 0x2950A
+0x6632 0x295F0
+0x6633 0x29613
+0x6634 0x2960A
+0x6635 0x2960F
+0x6636 0x29611
+0x6637 0x29608
+0x6638 0x2960B
+0x6639 0x29612
+0x663A 0x2960D
+0x663B 0x2975B
+0x663C 0x29763
+0x663D 0x29761
+0x663E 0x29768
+0x663F 0x2975A
+0x6640 0x2984E
+0x6641 0x2984D
+0x6642 0x29850
+0x6643 0x298FC
+0x6644 0x29912
+0x6645 0x298F5
+0x6646 0x2991E
+0x6647 0x298F0
+0x6648 0x298F3
+0x6649 0x298F2
+0x664A 0x29901
+0x664B 0x298EF
+0x664C 0x298EE
+0x664D 0x29916
+0x664E 0x298F6
+0x664F 0x298FB
+0x6650 0x2991C
+0x6652 0x29A5D
+0x6653 0x29A60
+0x6654 0x29A66
+0x6655 0x29A5F
+0x6656 0x29A61
+0x6657 0x29A5B
+0x6658 0x29A62
+0x6659 0x29A57
+0x665A 0x29B69
+0x665B 0x29B6B
+0x665C 0x29B61
+0x665D 0x29B77
+0x665E 0x29B5F
+0x665F 0x29B63
+0x6660 0x29B62
+0x6661 0x29B65
+0x6662 0x29CEF
+0x6663 0x29CE2
+0x6664 0x29D00
+0x6665 0x29CE8
+0x6666 0x29CF2
+0x6667 0x29CE7
+0x6669 0x29CE5
+0x666A 0x29DD5
+0x666B 0x29DD0
+0x666C 0x29DDA
+0x666D 0x29DD3
+0x666F 0x29DD9
+0x6670 0x29DCF
+0x6671 0x29DD6
+0x6672 0x29DD8
+0x6673 0x29DF5
+0x6674 0x29DCE
+0x6675 0x29DD7
+0x6676 0x29DF4
+0x6677 0x29DCD
+0x6678 0x29E01
+0x667A 0x2A052
+0x667B 0x2A055
+0x667C 0x2A05A
+0x667D 0x2A04D
+0x667E 0x2A054
+0x6721 0x2A053
+0x6722 0x2A05E
+0x6723 0x2A067
+0x6724 0x2A065
+0x6725 0x2A04E
+0x6727 0x2A04F
+0x6728 0x2A061
+0x6729 0x2A06E
+0x672A 0x2A051
+0x672B 0x2A05B
+0x672C 0x2A263
+0x672D 0x2A2B7
+0x672E 0x2A2B6
+0x672F 0x2A2C3
+0x6730 0x2A2BB
+0x6731 0x2A2B5
+0x6732 0x2A32E
+0x6733 0x2A330
+0x6734 0x2A333
+0x6735 0x2A331
+0x6736 0x2A3A4
+0x6737 0x2A3C1
+0x6738 0x2A3BB
+0x6739 0x2A3BE
+0x673A 0x2A400
+0x673B 0x2A3FF
+0x673C 0x2A440
+0x673E 0x2A43F
+0x673F 0x2A444
+0x6742 0x2A4DB
+0x6743 0x2A50F
+0x6744 0x2A511
+0x6745 0x2A54E
+0x6746 0x2A54D
+0x6747 0x2A54B
+0x6748 0x2A54C
+0x6749 0x2A595
+0x674A 0x2043B
+0x674B 0x20445
+0x674C 0x20444
+0x674D 0x2043E
+0x674E 0x2043C
+0x674F 0x2043F
+0x6750 0x204CC
+0x6751 0x204CE
+0x6752 0x20622
+0x6753 0x20623
+0x6754 0x2069F
+0x6755 0x208C5
+0x6756 0x208C4
+0x6757 0x210E9
+0x6758 0x21099
+0x675A 0x210E6
+0x675B 0x210E7
+0x675C 0x210F7
+0x675D 0x214D2
+0x675F 0x218FD
+0x6760 0x2190C
+0x6761 0x2190B
+0x6762 0x21CED
+0x6765 0x21F9B
+0x6766 0x2200A
+0x6767 0x2216F
+0x6768 0x22175
+0x6769 0x222F2
+0x676A 0x222F8
+0x676B 0x2243E
+0x676C 0x22924
+0x676D 0x2290E
+0x676E 0x22916
+0x676F 0x22918
+0x6770 0x22910
+0x6771 0x22931
+0x6772 0x22944
+0x6774 0x22929
+0x6775 0x2292F
+0x6776 0x2294B
+0x6777 0x22936
+0x6779 0x22E34
+0x677A 0x22E00
+0x677B 0x22E2B
+0x677C 0x23020
+0x677D 0x23021
+0x677E 0x2301E
+0x6821 0x2301D
+0x6822 0x232F5
+0x6823 0x232F2
+0x6824 0x232F6
+0x6825 0x23790
+0x6826 0x2379D
+0x6827 0x2379C
+0x6828 0x23792
+0x6829 0x23794
+0x682A 0x237D1
+0x682B 0x23793
+0x682C 0x237B7
+0x682D 0x23797
+0x682E 0x237B0
+0x682F 0x2379F
+0x6830 0x237C9
+0x6831 0x2392D
+0x6832 0x2392C
+0x6833 0x23A77
+0x6834 0x23C2C
+0x6835 0x240C0
+0x6836 0x240B9
+0x6837 0x24453
+0x6838 0x24540
+0x6839 0x24702
+0x683A 0x246FB
+0x683C 0x24A8B
+0x683D 0x24AAE
+0x683E 0x24AAB
+0x683F 0x24BA1
+0x6840 0x2A2CD
+0x6841 0x24CEA
+0x6842 0x24EDD
+0x6843 0x24EDC
+0x6844 0x24ED9
+0x6845 0x24FAB
+0x6846 0x24FAC
+0x6847 0x24FAD
+0x6848 0x24FB2
+0x6849 0x2502C
+0x684A 0x2502B
+0x684B 0x250C2
+0x684C 0x25300
+0x684D 0x2530D
+0x684E 0x25306
+0x684F 0x252FF
+0x6850 0x25303
+0x6851 0x25301
+0x6852 0x25310
+0x6853 0x2530F
+0x6854 0x25305
+0x6855 0x25398
+0x6856 0x25397
+0x6857 0x25396
+0x6858 0x25399
+0x6859 0x255AC
+0x685A 0x255AB
+0x685B 0x25712
+0x685C 0x258D8
+0x685D 0x258DF
+0x685E 0x258D6
+0x685F 0x25A2D
+0x6860 0x25A32
+0x6861 0x25D3F
+0x6862 0x25D2F
+0x6863 0x25D26
+0x6864 0x25D3A
+0x6865 0x25D39
+0x6867 0x25D3B
+0x6868 0x25D35
+0x6869 0x25D2A
+0x686A 0x25D21
+0x686B 0x25D38
+0x686C 0x25D37
+0x686D 0x25D34
+0x686F 0x25D22
+0x6870 0x25D36
+0x6871 0x25D44
+0x6872 0x25F45
+0x6873 0x25F3B
+0x6874 0x25F36
+0x6875 0x25F42
+0x6876 0x2617A
+0x6877 0x26186
+0x6878 0x2618B
+0x6879 0x2617F
+0x687A 0x26181
+0x687B 0x2632A
+0x687C 0x263D5
+0x687D 0x2649F
+0x687E 0x2649D
+0x6921 0x26526
+0x6922 0x265F4
+0x6923 0x265F5
+0x6924 0x26815
+0x6925 0x2688E
+0x6926 0x2688F
+0x6927 0x26926
+0x6928 0x269A7
+0x6929 0x269AF
+0x692A 0x26AAD
+0x692B 0x26AAC
+0x692C 0x26AAB
+0x692D 0x26AAA
+0x692E 0x2702F
+0x692F 0x27021
+0x6930 0x27023
+0x6931 0x270A3
+0x6932 0x27049
+0x6933 0x2703A
+0x6934 0x27048
+0x6935 0x2702D
+0x6936 0x27025
+0x6937 0x27029
+0x6938 0x27032
+0x6939 0x27034
+0x693A 0x27024
+0x693B 0x2702C
+0x693C 0x2704B
+0x693D 0x2703B
+0x693E 0x27020
+0x693F 0x27028
+0x6940 0x27498
+0x6942 0x27497
+0x6944 0x2749D
+0x6945 0x274A8
+0x6946 0x275D5
+0x6947 0x27777
+0x6948 0x27778
+0x6949 0x27772
+0x694A 0x27773
+0x694B 0x27802
+0x694C 0x2793B
+0x694D 0x27AFE
+0x694E 0x27B0B
+0x694F 0x27AFF
+0x6950 0x27B07
+0x6953 0x27B30
+0x6954 0x27BCD
+0x6955 0x27BCF
+0x6956 0x27C10
+0x6957 0x27C0A
+0x6958 0x27C83
+0x6959 0x27D15
+0x695A 0x27D0E
+0x695B 0x27D0C
+0x695C 0x27E02
+0x695D 0x27DFE
+0x695E 0x27E05
+0x695F 0x27E15
+0x6960 0x27E08
+0x6961 0x27F7F
+0x6962 0x27F77
+0x6963 0x27F7C
+0x6964 0x27F82
+0x6965 0x27F7E
+0x6966 0x27F78
+0x6967 0x27F7D
+0x6968 0x27F79
+0x6969 0x27F81
+0x696A 0x2814B
+0x696B 0x28163
+0x696C 0x28164
+0x696D 0x28156
+0x696E 0x28154
+0x696F 0x2814E
+0x6970 0x28110
+0x6971 0x2814F
+0x6972 0x28157
+0x6973 0x2815E
+0x6974 0x28151
+0x6975 0x2816A
+0x6976 0x28169
+0x6977 0x283AD
+0x6978 0x283A4
+0x6979 0x283AC
+0x697A 0x283A9
+0x697B 0x283AE
+0x697C 0x2044C
+0x697D 0x28650
+0x697E 0x28635
+0x6A21 0x28632
+0x6A22 0x287D8
+0x6A23 0x287D1
+0x6A24 0x287CF
+0x6A25 0x287BE
+0x6A26 0x288D5
+0x6A27 0x288C1
+0x6A28 0x288C6
+0x6A29 0x288C3
+0x6A2A 0x288C2
+0x6A2B 0x288C0
+0x6A2C 0x288C5
+0x6A2D 0x288C7
+0x6A2E 0x288BF
+0x6A2F 0x288C4
+0x6A30 0x288D4
+0x6A31 0x28A90
+0x6A32 0x28AD2
+0x6A34 0x28AD4
+0x6A35 0x28CAF
+0x6A36 0x28CAE
+0x6A37 0x28CB2
+0x6A38 0x28CAD
+0x6A39 0x28D9C
+0x6A3A 0x28DA0
+0x6A3B 0x28DB6
+0x6A3C 0x28F3D
+0x6A3D 0x28F56
+0x6A3E 0x28F82
+0x6A3F 0x29028
+0x6A40 0x2902B
+0x6A41 0x2913C
+0x6A42 0x2913E
+0x6A43 0x2913F
+0x6A44 0x29142
+0x6A45 0x2913D
+0x6A46 0x29141
+0x6A47 0x2913B
+0x6A48 0x29149
+0x6A49 0x29143
+0x6A4A 0x29239
+0x6A4B 0x29238
+0x6A4C 0x29322
+0x6A4D 0x29308
+0x6A4E 0x2930C
+0x6A4F 0x29306
+0x6A50 0x29313
+0x6A51 0x29304
+0x6A52 0x29320
+0x6A53 0x2931D
+0x6A54 0x29305
+0x6A55 0x2930A
+0x6A56 0x293D6
+0x6A57 0x293D7
+0x6A58 0x29436
+0x6A59 0x29437
+0x6A5A 0x29523
+0x6A5B 0x29522
+0x6A5C 0x29520
+0x6A5D 0x2951A
+0x6A5E 0x2951D
+0x6A5F 0x2961C
+0x6A60 0x29620
+0x6A61 0x29677
+0x6A62 0x2977F
+0x6A63 0x2978B
+0x6A64 0x2977D
+0x6A65 0x29799
+0x6A66 0x29784
+0x6A67 0x29789
+0x6A68 0x29785
+0x6A69 0x29783
+0x6A6A 0x29786
+0x6A6B 0x2979E
+0x6A6C 0x29853
+0x6A6D 0x29917
+0x6A6F 0x29919
+0x6A70 0x29920
+0x6A71 0x2991F
+0x6A72 0x29923
+0x6A73 0x29918
+0x6A74 0x29921
+0x6A75 0x29929
+0x6A76 0x29924
+0x6A77 0x29926
+0x6A78 0x29A5E
+0x6A79 0x29A6F
+0x6A7A 0x29A6E
+0x6A7B 0x29A74
+0x6A7C 0x29A72
+0x6A7D 0x29A73
+0x6A7E 0x29B7D
+0x6B21 0x29B7E
+0x6B22 0x29B85
+0x6B23 0x29B7F
+0x6B24 0x29B84
+0x6B25 0x29C44
+0x6B26 0x29CF5
+0x6B27 0x29CF8
+0x6B28 0x29D03
+0x6B29 0x29CF6
+0x6B2A 0x29E28
+0x6B2C 0x29E39
+0x6B2D 0x29DFB
+0x6B2E 0x29E0E
+0x6B2F 0x29DFD
+0x6B30 0x29E1F
+0x6B32 0x29E03
+0x6B34 0x29E10
+0x6B36 0x29E0D
+0x6B37 0x29E27
+0x6B38 0x29E41
+0x6B39 0x2A072
+0x6B3A 0x2A078
+0x6B3B 0x2A080
+0x6B3D 0x2A085
+0x6B3E 0x2A07B
+0x6B40 0x2A07D
+0x6B41 0x2A091
+0x6B42 0x2A088
+0x6B43 0x2A0AA
+0x6B44 0x2A08D
+0x6B45 0x2A089
+0x6B46 0x2A095
+0x6B47 0x2A09B
+0x6B48 0x2A08C
+0x6B49 0x2A09E
+0x6B4A 0x2A07C
+0x6B4B 0x2A086
+0x6B4C 0x2A084
+0x6B4D 0x2A268
+0x6B4E 0x2A2C5
+0x6B4F 0x2A2C4
+0x6B50 0x2A2C9
+0x6B51 0x2A2C6
+0x6B52 0x2A342
+0x6B53 0x2A345
+0x6B54 0x2A341
+0x6B55 0x2A344
+0x6B56 0x2A3A6
+0x6B57 0x2A3C2
+0x6B58 0x2A442
+0x6B59 0x2A449
+0x6B5A 0x2A448
+0x6B5B 0x2A44A
+0x6B5C 0x2A44C
+0x6B5D 0x2A44B
+0x6B5E 0x2A517
+0x6B5F 0x2A518
+0x6B60 0x2A515
+0x6B61 0x2A552
+0x6B62 0x2A554
+0x6B63 0x2A553
+0x6B64 0x2A59A
+0x6B65 0x2A59B
+0x6B66 0x2A5DC
+0x6B67 0x2A5E4
+0x6B68 0x2A691
+0x6B6A 0x2A6BA
+0x6B6B 0x20451
+0x6B6C 0x2045B
+0x6B6D 0x204CF
+0x6B6E 0x23305
+0x6B6F 0x21113
+0x6B70 0x21115
+0x6B71 0x21114
+0x6B72 0x21123
+0x6B74 0x21111
+0x6B75 0x21112
+0x6B77 0x214F0
+0x6B78 0x2169B
+0x6B79 0x21912
+0x6B7A 0x21916
+0x6B7B 0x21917
+0x6B7C 0x219B5
+0x6B7D 0x21CF4
+0x6B7E 0x21FB1
+0x6C21 0x22179
+0x6C22 0x222FF
+0x6C23 0x222FC
+0x6C24 0x222FB
+0x6C25 0x2243F
+0x6C26 0x22444
+0x6C27 0x2259D
+0x6C28 0x22932
+0x6C29 0x2294C
+0x6C2A 0x2292B
+0x6C2B 0x2295A
+0x6C2C 0x22A1F
+0x6C2D 0x22E01
+0x6C2E 0x22E2D
+0x6C2F 0x22E27
+0x6C30 0x22E59
+0x6C31 0x22E5A
+0x6C32 0x22E4D
+0x6C33 0x22E58
+0x6C34 0x23023
+0x6C35 0x23025
+0x6C36 0x2302B
+0x6C37 0x232FF
+0x6C38 0x233AE
+0x6C39 0x237CB
+0x6C3A 0x237CA
+0x6C3B 0x237D0
+0x6C3C 0x237CE
+0x6C3D 0x237CC
+0x6C3E 0x237D8
+0x6C3F 0x237C6
+0x6C40 0x237D2
+0x6C41 0x237CF
+0x6C42 0x237C8
+0x6C43 0x23B17
+0x6C45 0x240C4
+0x6C46 0x29240
+0x6C47 0x240E9
+0x6C48 0x240F2
+0x6C49 0x240FC
+0x6C4A 0x240EA
+0x6C4B 0x240EB
+0x6C4C 0x240FD
+0x6C4D 0x24478
+0x6C4E 0x24477
+0x6C4F 0x24473
+0x6C50 0x2449E
+0x6C51 0x24479
+0x6C52 0x245A2
+0x6C53 0x24603
+0x6C54 0x24704
+0x6C55 0x24705
+0x6C56 0x248CE
+0x6C57 0x24ABF
+0x6C58 0x24EF6
+0x6C59 0x24EF7
+0x6C5A 0x25031
+0x6C5B 0x25030
+0x6C5C 0x250C9
+0x6C5D 0x250C7
+0x6C5E 0x2531C
+0x6C5F 0x25328
+0x6C60 0x2531A
+0x6C61 0x2531E
+0x6C62 0x2531B
+0x6C63 0x2531F
+0x6C64 0x255BF
+0x6C65 0x255BB
+0x6C66 0x255BC
+0x6C67 0x255C0
+0x6C68 0x2571A
+0x6C69 0x258EF
+0x6C6A 0x258EC
+0x6C6B 0x258E9
+0x6C6C 0x258F0
+0x6C6D 0x258FE
+0x6C6E 0x25A34
+0x6C6F 0x25D6A
+0x6C70 0x25D95
+0x6C71 0x25D6C
+0x6C72 0x25D72
+0x6C73 0x25D67
+0x6C74 0x25D60
+0x6C75 0x25D6B
+0x6C76 0x25D5E
+0x6C77 0x25D6F
+0x6C78 0x25D66
+0x6C7A 0x25D62
+0x6C7B 0x25D5D
+0x6C7C 0x25D5C
+0x6C7D 0x2F965
+0x6C7E 0x25F50
+0x6D21 0x2619F
+0x6D23 0x2619E
+0x6D24 0x261A6
+0x6D25 0x26335
+0x6D26 0x26338
+0x6D27 0x26336
+0x6D28 0x2633A
+0x6D29 0x263DC
+0x6D2A 0x2687C
+0x6D2B 0x268AB
+0x6D2D 0x268A8
+0x6D2E 0x268A7
+0x6D2F 0x2692B
+0x6D30 0x2692C
+0x6D31 0x26928
+0x6D32 0x2092B
+0x6D33 0x269A9
+0x6D34 0x269AA
+0x6D35 0x269AB
+0x6D36 0x269F8
+0x6D37 0x26AB1
+0x6D38 0x26AF0
+0x6D39 0x26AEF
+0x6D3A 0x270A8
+0x6D3B 0x2708B
+0x6D3C 0x27094
+0x6D3D 0x2709E
+0x6D3E 0x2708F
+0x6D3F 0x27088
+0x6D40 0x2707E
+0x6D41 0x27081
+0x6D42 0x27030
+0x6D43 0x2709B
+0x6D44 0x27082
+0x6D45 0x27090
+0x6D46 0x27085
+0x6D47 0x2707F
+0x6D48 0x270A9
+0x6D49 0x270DE
+0x6D4A 0x2720D
+0x6D4C 0x274CF
+0x6D4D 0x274CB
+0x6D4E 0x274D8
+0x6D4F 0x274DD
+0x6D50 0x274D3
+0x6D51 0x274D0
+0x6D52 0x274D5
+0x6D53 0x274D6
+0x6D54 0x275D6
+0x6D55 0x27792
+0x6D56 0x27795
+0x6D57 0x2A5CB
+0x6D58 0x2778D
+0x6D59 0x2779B
+0x6D5A 0x2779D
+0x6D5B 0x2778F
+0x6D5C 0x2779E
+0x6D5D 0x277A6
+0x6D5E 0x27896
+0x6D5F 0x27892
+0x6D60 0x27B16
+0x6D61 0x27B2A
+0x6D62 0x27B29
+0x6D63 0x27B2C
+0x6D64 0x27C15
+0x6D65 0x27C12
+0x6D66 0x27C11
+0x6D67 0x27C13
+0x6D68 0x27C88
+0x6D69 0x27C8B
+0x6D6A 0x27C8A
+0x6D6B 0x27C87
+0x6D6C 0x27D17
+0x6D6D 0x27D16
+0x6D6E 0x27D1A
+0x6D6F 0x27E19
+0x6D70 0x27E17
+0x6D71 0x27F91
+0x6D72 0x27F94
+0x6D73 0x2818B
+0x6D74 0x28190
+0x6D75 0x2818F
+0x6D76 0x28186
+0x6D77 0x28183
+0x6D78 0x2818E
+0x6D79 0x28187
+0x6D7A 0x281A8
+0x6D7B 0x28185
+0x6D7C 0x281A6
+0x6D7D 0x28182
+0x6D7E 0x281A7
+0x6E21 0x283B9
+0x6E22 0x283B7
+0x6E23 0x283B4
+0x6E24 0x283B6
+0x6E25 0x283B3
+0x6E26 0x283C6
+0x6E27 0x2863C
+0x6E28 0x28640
+0x6E29 0x28638
+0x6E2A 0x28791
+0x6E2B 0x287A6
+0x6E2C 0x287DA
+0x6E2D 0x288DA
+0x6E2E 0x288D8
+0x6E2F 0x288D9
+0x6E30 0x288DB
+0x6E31 0x288D7
+0x6E32 0x28B16
+0x6E33 0x28B12
+0x6E34 0x28B1F
+0x6E36 0x28B14
+0x6E37 0x28B1A
+0x6E38 0x28B10
+0x6E39 0x28CB3
+0x6E3A 0x28DAE
+0x6E3B 0x28DC1
+0x6E3C 0x28DB0
+0x6E3D 0x28DAF
+0x6E3E 0x28DB1
+0x6E3F 0x28DAD
+0x6E40 0x28DB2
+0x6E41 0x28DC4
+0x6E42 0x2903C
+0x6E43 0x2903F
+0x6E44 0x29161
+0x6E45 0x29166
+0x6E46 0x2923C
+0x6E47 0x2923B
+0x6E48 0x2932C
+0x6E4A 0x2932A
+0x6E4B 0x2933E
+0x6E4C 0x2932F
+0x6E4D 0x29332
+0x6E4E 0x29327
+0x6E4F 0x29329
+0x6E50 0x29340
+0x6E51 0x293DF
+0x6E52 0x293DE
+0x6E53 0x2943C
+0x6E54 0x2943B
+0x6E55 0x2943E
+0x6E56 0x29521
+0x6E57 0x29546
+0x6E58 0x2953C
+0x6E59 0x29536
+0x6E5A 0x29538
+0x6E5B 0x29535
+0x6E5C 0x29631
+0x6E5D 0x29636
+0x6E5E 0x2962D
+0x6E5F 0x29633
+0x6E60 0x2962F
+0x6E61 0x2962E
+0x6E62 0x29635
+0x6E63 0x297AC
+0x6E64 0x297A9
+0x6E65 0x297A6
+0x6E67 0x2994C
+0x6E68 0x29943
+0x6E69 0x29941
+0x6E6A 0x2994F
+0x6E6B 0x29942
+0x6E6C 0x29951
+0x6E6E 0x29940
+0x6E6F 0x29950
+0x6E70 0x29945
+0x6E71 0x2994A
+0x6E72 0x2994B
+0x6E73 0x29A83
+0x6E74 0x29A82
+0x6E75 0x29A81
+0x6E76 0x29AE0
+0x6E77 0x29B98
+0x6E78 0x29B9F
+0x6E79 0x29B9B
+0x6E7A 0x29B9A
+0x6E7B 0x29B99
+0x6E7C 0x29B96
+0x6E7D 0x29BAE
+0x6E7E 0x29B9E
+0x6F21 0x29D09
+0x6F22 0x29D0D
+0x6F23 0x29E4E
+0x6F24 0x29E4A
+0x6F25 0x29E4D
+0x6F26 0x29E40
+0x6F27 0x29E3E
+0x6F28 0x29E48
+0x6F29 0x29E42
+0x6F2A 0x29E62
+0x6F2B 0x29E45
+0x6F2C 0x29E51
+0x6F2D 0x2A0C6
+0x6F2E 0x2A0D0
+0x6F2F 0x2A0C0
+0x6F30 0x2A0B7
+0x6F31 0x2A0C2
+0x6F32 0x2A0BC
+0x6F33 0x2A0C5
+0x6F34 0x2A0DC
+0x6F35 0x2A0DB
+0x6F36 0x2A0D2
+0x6F37 0x2A0C7
+0x6F38 0x2A0B6
+0x6F39 0x2A0C9
+0x6F3A 0x2A0CC
+0x6F3B 0x2A0D1
+0x6F3C 0x2A0CD
+0x6F3D 0x2A0DA
+0x6F3E 0x2A0BA
+0x6F3F 0x2A0D3
+0x6F40 0x2A0CE
+0x6F41 0x2A0F6
+0x6F42 0x2A0BD
+0x6F43 0x2A0DD
+0x6F44 0x2A0C8
+0x6F45 0x2A10D
+0x6F46 0x2A135
+0x6F47 0x2A271
+0x6F48 0x2A26E
+0x6F49 0x2A26F
+0x6F4A 0x2A2D6
+0x6F4B 0x2A34C
+0x6F4C 0x2A34F
+0x6F4D 0x2A354
+0x6F4E 0x2A353
+0x6F4F 0x2A3C9
+0x6F50 0x2A3C8
+0x6F51 0x2A403
+0x6F53 0x2A404
+0x6F55 0x2A457
+0x6F56 0x2A452
+0x6F57 0x2A453
+0x6F59 0x2A456
+0x6F5A 0x2A45C
+0x6F5B 0x2A455
+0x6F5C 0x2A564
+0x6F5D 0x2A55D
+0x6F5E 0x2A55E
+0x6F5F 0x2A5A2
+0x6F60 0x2A5A3
+0x6F62 0x2A5E7
+0x6F63 0x2A5E6
+0x6F64 0x2A698
+0x6F65 0x2A6AC
+0x6F66 0x2A6AF
+0x6F67 0x2A6AE
+0x6F68 0x20459
+0x6F69 0x205A9
+0x6F6A 0x2082A
+0x6F6B 0x208C7
+0x6F6C 0x21141
+0x6F6D 0x21137
+0x6F6E 0x21135
+0x6F6F 0x21133
+0x6F70 0x21139
+0x6F71 0x21132
+0x6F72 0x214FF
+0x6F73 0x21501
+0x6F74 0x214F8
+0x6F75 0x2191B
+0x6F76 0x21919
+0x6F77 0x21BBF
+0x6F78 0x21FBC
+0x6F79 0x21FBE
+0x6F7A 0x21FBD
+0x6F7B 0x2217D
+0x6F7C 0x22446
+0x6F7D 0x22447
+0x6F7E 0x225A4
+0x7021 0x22A21
+0x7022 0x22A62
+0x7023 0x22E86
+0x7025 0x2302F
+0x7026 0x23031
+0x7028 0x237F8
+0x7029 0x237F5
+0x702A 0x237F9
+0x702B 0x237F2
+0x702C 0x237FA
+0x702D 0x237F3
+0x702E 0x23814
+0x702F 0x237FD
+0x7030 0x2380F
+0x7031 0x2380E
+0x7032 0x23801
+0x7033 0x23937
+0x7034 0x23935
+0x7035 0x23934
+0x7036 0x23931
+0x7037 0x23A7A
+0x7038 0x23A7B
+0x7039 0x23C37
+0x703A 0x2412B
+0x703B 0x240FB
+0x703C 0x24116
+0x703D 0x24113
+0x703F 0x24111
+0x7040 0x2410F
+0x7041 0x2411B
+0x7042 0x24138
+0x7043 0x244A4
+0x7044 0x24709
+0x7045 0x24707
+0x7046 0x2470B
+0x7047 0x248D3
+0x7048 0x248D1
+0x7049 0x248D8
+0x704A 0x24B1D
+0x704B 0x24BA9
+0x704C 0x24BD0
+0x704D 0x27215
+0x704E 0x24F02
+0x704F 0x24F05
+0x7050 0x24F01
+0x7051 0x24F00
+0x7052 0x2532E
+0x7053 0x25330
+0x7054 0x2532F
+0x7055 0x25331
+0x7056 0x255D2
+0x7057 0x255D3
+0x7058 0x25902
+0x7059 0x25A40
+0x705A 0x25A42
+0x705B 0x25A3B
+0x705C 0x25ACE
+0x705D 0x25D98
+0x705E 0x25D8F
+0x705F 0x25D94
+0x7060 0x25D91
+0x7062 0x25DBA
+0x7063 0x25D90
+0x7064 0x25D86
+0x7065 0x25D9A
+0x7066 0x25D8C
+0x7067 0x25D93
+0x7068 0x25D87
+0x7069 0x25D88
+0x706A 0x25D97
+0x706B 0x25D8D
+0x706C 0x25D9C
+0x706D 0x25DBD
+0x706E 0x25F3C
+0x706F 0x25F59
+0x7071 0x261D1
+0x7072 0x261BB
+0x7073 0x261BE
+0x7074 0x2625D
+0x7075 0x263E2
+0x7076 0x26605
+0x7077 0x268BA
+0x7079 0x268F4
+0x707A 0x269B2
+0x707B 0x269F9
+0x707C 0x26AB7
+0x707D 0x26AB6
+0x707E 0x27089
+0x7121 0x270F9
+0x7122 0x270D9
+0x7123 0x270E8
+0x7124 0x270D4
+0x7125 0x270DB
+0x7126 0x270E2
+0x7127 0x270DF
+0x7128 0x270D1
+0x7129 0x270E9
+0x712A 0x270EA
+0x712B 0x27213
+0x712C 0x27211
+0x712D 0x274FA
+0x712E 0x274F8
+0x712F 0x274F4
+0x7130 0x274FB
+0x7131 0x2750E
+0x7132 0x27502
+0x7133 0x2750F
+0x7134 0x27790
+0x7135 0x277AD
+0x7136 0x277A9
+0x7137 0x27948
+0x7138 0x27B5A
+0x7139 0x27B4F
+0x713A 0x27B4E
+0x713B 0x27B55
+0x713C 0x27B54
+0x713D 0x27B4A
+0x713E 0x27BD5
+0x713F 0x27C18
+0x7140 0x27C8D
+0x7141 0x27D1D
+0x7142 0x27D19
+0x7143 0x27E26
+0x7144 0x27E28
+0x7145 0x27E2B
+0x7146 0x27E7D
+0x7147 0x27FA0
+0x7148 0x27F9A
+0x7149 0x27F9B
+0x714A 0x281B5
+0x714B 0x281AD
+0x714C 0x281B2
+0x714D 0x28294
+0x714E 0x283C9
+0x714F 0x2864E
+0x7150 0x2864F
+0x7151 0x28644
+0x7152 0x28652
+0x7153 0x288E9
+0x7154 0x28939
+0x7157 0x28DC7
+0x7158 0x28DD3
+0x7159 0x28DC6
+0x715A 0x28DC3
+0x715C 0x28DD2
+0x715D 0x28F66
+0x715E 0x2917F
+0x715F 0x29180
+0x7160 0x29184
+0x7161 0x29185
+0x7162 0x291E3
+0x7164 0x29241
+0x7165 0x29244
+0x7166 0x29243
+0x7167 0x2934E
+0x7168 0x2934F
+0x716A 0x29349
+0x716B 0x2934A
+0x716C 0x2934B
+0x716D 0x29343
+0x716E 0x293E0
+0x716F 0x293E5
+0x7170 0x293E1
+0x7171 0x293E6
+0x7172 0x293E2
+0x7173 0x2940C
+0x7174 0x29440
+0x7175 0x29549
+0x7176 0x2954A
+0x7177 0x29554
+0x7178 0x2954C
+0x7179 0x29555
+0x717A 0x29556
+0x717B 0x2963B
+0x717C 0x2963D
+0x717D 0x297A4
+0x717E 0x297A8
+0x7221 0x297C3
+0x7222 0x297BF
+0x7223 0x297C8
+0x7224 0x297C2
+0x7225 0x297CA
+0x7226 0x297CC
+0x7227 0x297C9
+0x7228 0x297BE
+0x7229 0x297CD
+0x722A 0x297C7
+0x722B 0x297C5
+0x722C 0x2985D
+0x722E 0x2996C
+0x722F 0x2996B
+0x7230 0x29970
+0x7231 0x2996D
+0x7232 0x2996F
+0x7233 0x29989
+0x7234 0x29984
+0x7235 0x29A8D
+0x7236 0x29A8A
+0x7237 0x29A8E
+0x7238 0x29A91
+0x7239 0x29BB5
+0x723A 0x29BB1
+0x723B 0x29BAF
+0x723C 0x29BB9
+0x723D 0x29BB7
+0x723E 0x29BB0
+0x7240 0x29C17
+0x7242 0x29C4F
+0x7243 0x29D19
+0x7244 0x29D10
+0x7245 0x29D18
+0x7246 0x29D11
+0x7247 0x29D1C
+0x7248 0x29D12
+0x7249 0x29E76
+0x724A 0x29E71
+0x724C 0x29E7A
+0x724D 0x29E7F
+0x724F 0x29E73
+0x7250 0x29EAB
+0x7252 0x29E77
+0x7253 0x29E74
+0x7254 0x29E7E
+0x7255 0x29E9B
+0x7256 0x29E84
+0x7257 0x29E7C
+0x7258 0x2A129
+0x7259 0x2A12B
+0x725A 0x2A10E
+0x725B 0x2A100
+0x725C 0x2A10B
+0x725D 0x2A0FE
+0x725E 0x2A0FA
+0x725F 0x2A117
+0x7260 0x2A0FF
+0x7261 0x2A10C
+0x7262 0x2A10F
+0x7264 0x2A102
+0x7265 0x2A101
+0x7266 0x2A0FC
+0x7267 0x2A149
+0x7268 0x2A106
+0x7269 0x2A112
+0x726A 0x2A113
+0x726B 0x2A278
+0x726C 0x2A35B
+0x726D 0x2A362
+0x726E 0x2A35F
+0x726F 0x2A35D
+0x7270 0x2A3AB
+0x7271 0x2A3D5
+0x7272 0x2A3D4
+0x7273 0x2A3D3
+0x7274 0x2A407
+0x7275 0x2A46C
+0x7276 0x2A470
+0x7277 0x2A46E
+0x7278 0x2A468
+0x7279 0x2A46D
+0x727A 0x2A477
+0x727B 0x2A46A
+0x727C 0x2A4CE
+0x727D 0x2A4EC
+0x727E 0x2A569
+0x7321 0x2A568
+0x7322 0x2A5A6
+0x7323 0x2A5A9
+0x7324 0x2A5AA
+0x7325 0x2A600
+0x7326 0x2A60D
+0x7327 0x2A5F8
+0x7328 0x2A5FC
+0x7329 0x2A60A
+0x732A 0x2A5F7
+0x732B 0x2A601
+0x732C 0x2A6B6
+0x732D 0x2A6BB
+0x732E 0x2A6B7
+0x732F 0x2A6B9
+0x7330 0x2A6CA
+0x7331 0x20469
+0x7332 0x20625
+0x7333 0x21159
+0x7334 0x21507
+0x7335 0x21509
+0x7336 0x21922
+0x7337 0x21B07
+0x7338 0x21B04
+0x7339 0x2330F
+0x733A 0x21CF8
+0x733B 0x21FC7
+0x733C 0x21FD1
+0x733D 0x2217E
+0x733E 0x22308
+0x733F 0x2244A
+0x7340 0x2F898
+0x7341 0x224B9
+0x7342 0x22E88
+0x7343 0x22E91
+0x7344 0x22E84
+0x7345 0x22E73
+0x7346 0x22E89
+0x7347 0x22E85
+0x7348 0x23033
+0x7349 0x23313
+0x734A 0x2381D
+0x734B 0x2381F
+0x734C 0x2381C
+0x734D 0x23820
+0x734E 0x2381A
+0x734F 0x2381B
+0x7350 0x23939
+0x7351 0x239AF
+0x7352 0x23AE5
+0x7353 0x23C3C
+0x7354 0x24137
+0x7355 0x2413A
+0x7356 0x244BB
+0x7358 0x24710
+0x7359 0x2470D
+0x735A 0x24BAF
+0x735B 0x24C11
+0x735D 0x24F0D
+0x735E 0x24F0C
+0x735F 0x24F0B
+0x7360 0x250D4
+0x7361 0x2533D
+0x7362 0x2533E
+0x7363 0x2533B
+0x7364 0x25343
+0x7365 0x25340
+0x7366 0x25346
+0x7367 0x25411
+0x7368 0x255DD
+0x7369 0x255DF
+0x736A 0x255EA
+0x736B 0x2574A
+0x736C 0x25906
+0x736D 0x25DC1
+0x736E 0x25DB9
+0x736F 0x25DC6
+0x7370 0x25DB8
+0x7371 0x25DBB
+0x7372 0x25DC8
+0x7373 0x25DC5
+0x7374 0x25DBF
+0x7375 0x25DC7
+0x7376 0x25DC4
+0x7377 0x25F65
+0x7378 0x25F67
+0x7379 0x261D7
+0x737A 0x261DB
+0x737B 0x261D4
+0x737C 0x261D6
+0x737D 0x263E8
+0x737E 0x2660A
+0x7421 0x26ABD
+0x7422 0x26ABE
+0x7423 0x2711A
+0x7424 0x2710D
+0x7425 0x2710F
+0x7426 0x2711B
+0x7427 0x27110
+0x7428 0x27111
+0x7429 0x27113
+0x742A 0x27218
+0x742B 0x27520
+0x742C 0x2751F
+0x742D 0x27523
+0x742E 0x2751D
+0x742F 0x27537
+0x7430 0x27525
+0x7431 0x27524
+0x7432 0x2752A
+0x7433 0x27527
+0x7434 0x27533
+0x7435 0x27528
+0x7436 0x27534
+0x7437 0x277BA
+0x7439 0x2789D
+0x743A 0x2794C
+0x743B 0x27B5C
+0x743C 0x27B6A
+0x743D 0x27B5D
+0x743E 0x27B65
+0x743F 0x27B63
+0x7440 0x27B5E
+0x7441 0x27C19
+0x7442 0x27C97
+0x7443 0x27E3F
+0x7444 0x27E33
+0x7445 0x27E32
+0x7446 0x27FA1
+0x7447 0x27FA5
+0x7448 0x27FA4
+0x7449 0x27FA2
+0x744A 0x281C1
+0x744C 0x281C7
+0x744D 0x281C4
+0x744E 0x281C6
+0x744F 0x281C5
+0x7450 0x281D4
+0x7451 0x281CA
+0x7452 0x28653
+0x7453 0x288F1
+0x7454 0x28921
+0x7456 0x28BB7
+0x7457 0x28B92
+0x7458 0x28DD4
+0x7459 0x28F44
+0x745A 0x29198
+0x745B 0x2919B
+0x745C 0x29191
+0x745D 0x29195
+0x745E 0x2919A
+0x745F 0x29192
+0x7460 0x29353
+0x7461 0x29357
+0x7463 0x2935C
+0x7464 0x2935D
+0x7465 0x29364
+0x7466 0x293EA
+0x7467 0x293ED
+0x7468 0x29442
+0x7469 0x29443
+0x746A 0x29564
+0x746B 0x29561
+0x746C 0x29560
+0x746D 0x2967D
+0x746E 0x297D4
+0x746F 0x297D5
+0x7470 0x297D9
+0x7471 0x29987
+0x7472 0x29999
+0x7473 0x2998C
+0x7474 0x2998A
+0x7475 0x2998F
+0x7477 0x2998B
+0x7478 0x29982
+0x7479 0x2999B
+0x747B 0x29BC8
+0x747C 0x29BC4
+0x747D 0x29BCC
+0x747E 0x29BC7
+0x7521 0x29BC3
+0x7522 0x29BC6
+0x7523 0x29BCB
+0x7524 0x29BCA
+0x7525 0x29BC9
+0x7526 0x29BCD
+0x7527 0x29C53
+0x7528 0x29D21
+0x7529 0x29D29
+0x752A 0x29D1D
+0x752B 0x29D24
+0x752C 0x29D28
+0x752E 0x29EB1
+0x752F 0x29EB2
+0x7530 0x29EB5
+0x7531 0x29ED6
+0x7532 0x29EAF
+0x7533 0x29ECA
+0x7534 0x29EB8
+0x7535 0x2FA12
+0x7536 0x2FA11
+0x7537 0x2A145
+0x7538 0x2A147
+0x7539 0x2A134
+0x753A 0x2A16E
+0x753B 0x2A142
+0x753C 0x2A131
+0x753D 0x2A12E
+0x753E 0x2A156
+0x753F 0x2A138
+0x7540 0x2A137
+0x7541 0x2A14B
+0x7542 0x2A12D
+0x7543 0x2A133
+0x7544 0x2A136
+0x7546 0x2A148
+0x7547 0x2A2DC
+0x7549 0x2A366
+0x754A 0x2A36D
+0x754B 0x2A363
+0x754C 0x2A364
+0x754E 0x2A367
+0x754F 0x2A3D9
+0x7550 0x2A40B
+0x7551 0x2A47E
+0x7552 0x2A48B
+0x7553 0x2A526
+0x7554 0x2A52C
+0x7555 0x2A529
+0x7556 0x2A56F
+0x7557 0x2A56B
+0x7558 0x2A56D
+0x7559 0x2A56E
+0x755A 0x2A61C
+0x755B 0x2A611
+0x755C 0x2A610
+0x755D 0x2A624
+0x755E 0x2A612
+0x755F 0x2A615
+0x7560 0x2A617
+0x7562 0x2046F
+0x7563 0x205AB
+0x7564 0x2082E
+0x7565 0x208C9
+0x7566 0x20B96
+0x7567 0x21185
+0x7568 0x216A0
+0x7569 0x2192B
+0x756A 0x2230D
+0x756B 0x23036
+0x756F 0x233B1
+0x7570 0x2384A
+0x7571 0x23837
+0x7572 0x2383C
+0x7573 0x23838
+0x7574 0x2383A
+0x7575 0x2383E
+0x7576 0x23849
+0x7579 0x23A80
+0x757A 0x23A7F
+0x757B 0x23AE3
+0x757C 0x23C3F
+0x757D 0x24152
+0x757E 0x2414E
+0x7621 0x2414A
+0x7622 0x2414B
+0x7623 0x244D5
+0x7624 0x24AD8
+0x7625 0x24B20
+0x7626 0x24BB3
+0x7627 0x24BB1
+0x7628 0x24BB0
+0x7629 0x24F17
+0x762A 0x250D9
+0x762B 0x25349
+0x762C 0x25413
+0x762D 0x255ED
+0x762E 0x255EB
+0x762F 0x255EE
+0x7630 0x2590A
+0x7631 0x2590B
+0x7632 0x25A4A
+0x7633 0x25DD5
+0x7634 0x25DD7
+0x7635 0x25DDE
+0x7636 0x25DDC
+0x7637 0x25DEE
+0x7638 0x25F70
+0x763A 0x261D9
+0x763B 0x263D7
+0x763C 0x268CB
+0x763D 0x268C7
+0x763E 0x269FC
+0x763F 0x2713B
+0x7640 0x27139
+0x7641 0x2714B
+0x7642 0x27143
+0x7643 0x27140
+0x7644 0x27146
+0x7645 0x2754D
+0x7646 0x27543
+0x7647 0x27547
+0x7648 0x2754B
+0x7649 0x27555
+0x764A 0x27552
+0x764B 0x27B5F
+0x764D 0x27B7C
+0x764E 0x27B7B
+0x764F 0x27FA8
+0x7650 0x27FA9
+0x7651 0x281DE
+0x7652 0x281D7
+0x7653 0x281DD
+0x7654 0x281D6
+0x7655 0x281D8
+0x7656 0x2829B
+0x7657 0x283E0
+0x7658 0x283E8
+0x7659 0x283E6
+0x765A 0x288F8
+0x765B 0x288FB
+0x765C 0x28BBB
+0x765E 0x28BB8
+0x7660 0x28CC1
+0x7661 0x28CC0
+0x7662 0x291A4
+0x7663 0x291AB
+0x7664 0x2924D
+0x7665 0x29365
+0x7666 0x29367
+0x7667 0x2936A
+0x7668 0x29366
+0x7669 0x29369
+0x766A 0x29573
+0x766B 0x29580
+0x766C 0x2956F
+0x766D 0x29571
+0x766E 0x297E4
+0x766F 0x297E6
+0x7670 0x297E7
+0x7671 0x299A0
+0x7672 0x299A4
+0x7673 0x29AA2
+0x7674 0x29AA7
+0x7675 0x29AA4
+0x7676 0x29BDE
+0x7677 0x29BDB
+0x7678 0x29C58
+0x7679 0x29C5C
+0x767A 0x29D2F
+0x767B 0x29D2E
+0x767C 0x29EDD
+0x767D 0x29EE4
+0x767E 0x29ED8
+0x7721 0x29EE7
+0x7722 0x29EDA
+0x7723 0x29E75
+0x7725 0x2A179
+0x7726 0x2A180
+0x7727 0x2A17F
+0x7728 0x2A17C
+0x7729 0x2A175
+0x772A 0x2A17B
+0x772B 0x2A182
+0x772D 0x2A189
+0x772E 0x2A174
+0x772F 0x2A17D
+0x7730 0x2A17A
+0x7731 0x2A186
+0x7732 0x2A1A8
+0x7733 0x2A172
+0x7735 0x2A18B
+0x7736 0x2A191
+0x7737 0x2A1B3
+0x7738 0x2A181
+0x7739 0x2A282
+0x773A 0x2A2E1
+0x773B 0x2A2E3
+0x773C 0x2A2E2
+0x773D 0x2A376
+0x773E 0x2A374
+0x773F 0x2A372
+0x7740 0x2A375
+0x7741 0x2A40E
+0x7742 0x2A40D
+0x7743 0x2A494
+0x7744 0x2A492
+0x7745 0x2A493
+0x7746 0x2A491
+0x7747 0x2A48F
+0x7748 0x2A495
+0x7749 0x2A4D0
+0x774A 0x2A4F7
+0x774B 0x2A576
+0x774C 0x2A5AF
+0x774E 0x2A626
+0x774F 0x2A625
+0x7750 0x2A62D
+0x7751 0x2A6A0
+0x7752 0x2A6C3
+0x7753 0x204D7
+0x7754 0x20ACC
+0x7755 0x21179
+0x7756 0x2117A
+0x7757 0x21515
+0x7758 0x21FDB
+0x7759 0x22185
+0x775A 0x22970
+0x775B 0x2297B
+0x775C 0x22EA5
+0x775D 0x22E9F
+0x775E 0x23317
+0x775F 0x233B2
+0x7760 0x23839
+0x7761 0x23840
+0x7762 0x2384E
+0x7763 0x2393E
+0x7764 0x23AE8
+0x7765 0x23AE7
+0x7766 0x24166
+0x7767 0x24161
+0x7768 0x244DA
+0x7769 0x24714
+0x776A 0x248DF
+0x776B 0x24F18
+0x776C 0x25039
+0x776D 0x2503A
+0x776E 0x25730
+0x776F 0x25732
+0x7770 0x2590E
+0x7771 0x25A4C
+0x7772 0x25DE8
+0x7773 0x25DF1
+0x7774 0x25DEB
+0x7775 0x25DEC
+0x7776 0x25F74
+0x7777 0x25F73
+0x7778 0x261F1
+0x7779 0x26342
+0x777A 0x2633E
+0x777B 0x26341
+0x777C 0x2652C
+0x777D 0x268D2
+0x777E 0x269BB
+0x7821 0x27158
+0x7822 0x27157
+0x7823 0x27156
+0x7824 0x2715A
+0x7826 0x27561
+0x7827 0x27568
+0x7828 0x27565
+0x7829 0x2755F
+0x782A 0x27564
+0x782B 0x2755E
+0x782C 0x2755B
+0x782D 0x27567
+0x782E 0x277C3
+0x782F 0x278A2
+0x7830 0x27953
+0x7831 0x27B7D
+0x7832 0x27C20
+0x7833 0x27FAE
+0x7834 0x27FAF
+0x7835 0x27FB0
+0x7836 0x281E7
+0x7837 0x281E6
+0x7838 0x281E9
+0x7839 0x283F1
+0x783A 0x283EB
+0x783B 0x283EA
+0x783C 0x283E9
+0x783D 0x28663
+0x783E 0x28902
+0x783F 0x288FE
+0x7840 0x28BDE
+0x7841 0x28CC2
+0x7842 0x28DE6
+0x7843 0x28F5D
+0x7844 0x291AD
+0x7845 0x29375
+0x7846 0x29372
+0x7847 0x29377
+0x7849 0x29651
+0x784A 0x297E8
+0x784B 0x297ED
+0x784C 0x297EE
+0x784D 0x299B9
+0x784E 0x299A1
+0x784F 0x299B6
+0x7850 0x29AAE
+0x7851 0x29BE8
+0x7853 0x29C1E
+0x7854 0x29D31
+0x7855 0x29D32
+0x7857 0x29F0E
+0x7858 0x29F12
+0x7859 0x29F09
+0x785A 0x29F05
+0x785C 0x29F03
+0x785D 0x29F1F
+0x785E 0x29F0D
+0x785F 0x29F0C
+0x7860 0x29F04
+0x7861 0x29F0A
+0x7862 0x2A1C2
+0x7863 0x2A1BF
+0x7864 0x2A1C9
+0x7865 0x2A1B2
+0x7866 0x2A1C1
+0x7867 0x2A1AF
+0x7868 0x2A1B4
+0x7869 0x2A1B0
+0x786A 0x2A1B6
+0x786B 0x2A1B7
+0x786C 0x2A1BB
+0x786D 0x2A1B1
+0x786E 0x2A2F0
+0x786F 0x2A378
+0x7870 0x2A37A
+0x7871 0x2A379
+0x7872 0x2A3E4
+0x7873 0x2A3E6
+0x7874 0x2A49F
+0x7875 0x2A49D
+0x7876 0x2A498
+0x7877 0x2A499
+0x7878 0x2A4F9
+0x7879 0x2A530
+0x787A 0x2A582
+0x787B 0x2A581
+0x787C 0x2A5B3
+0x787D 0x2A57F
+0x787E 0x2A63A
+0x7921 0x2A63E
+0x7922 0x2A648
+0x7923 0x21186
+0x7924 0x21936
+0x7925 0x21B13
+0x7926 0x21C22
+0x7927 0x21FDD
+0x7928 0x225A7
+0x7929 0x2297D
+0x792B 0x2331C
+0x792C 0x23865
+0x792D 0x23860
+0x792E 0x23867
+0x7930 0x23B1A
+0x7931 0x24AE3
+0x7932 0x25734
+0x7933 0x25918
+0x7934 0x25A52
+0x7935 0x25DFC
+0x7936 0x25F79
+0x7937 0x25F78
+0x7938 0x25F76
+0x7939 0x261FA
+0x793A 0x261F8
+0x793B 0x2652D
+0x793C 0x268D6
+0x793D 0x269BD
+0x793E 0x269BF
+0x793F 0x269BE
+0x7940 0x27144
+0x7941 0x27170
+0x7942 0x27162
+0x7943 0x2716E
+0x7944 0x2756E
+0x7945 0x2757C
+0x7946 0x27574
+0x7947 0x27578
+0x7948 0x27570
+0x7949 0x27579
+0x794A 0x27571
+0x794B 0x277CC
+0x794C 0x278A7
+0x794D 0x278A6
+0x794E 0x27B93
+0x794F 0x27C21
+0x7950 0x27C9C
+0x7951 0x2829D
+0x7952 0x283F4
+0x7953 0x283F3
+0x7954 0x28DF0
+0x7955 0x291B8
+0x7956 0x291B6
+0x7957 0x291BD
+0x7958 0x29373
+0x7959 0x29382
+0x795A 0x29587
+0x795B 0x29656
+0x795C 0x29659
+0x795D 0x297F6
+0x795E 0x299C9
+0x795F 0x299C5
+0x7960 0x299C7
+0x7961 0x299CA
+0x7962 0x299C2
+0x7963 0x299C4
+0x7964 0x29BF2
+0x7965 0x29BF0
+0x7966 0x29D3B
+0x7967 0x29D3A
+0x7968 0x29F26
+0x7969 0x29F28
+0x796A 0x29F34
+0x796B 0x29F2D
+0x796C 0x2A1D7
+0x796D 0x2A1D2
+0x796E 0x2A1D6
+0x796F 0x2A1DC
+0x7970 0x2A1D3
+0x7971 0x2A1D1
+0x7972 0x2A286
+0x7974 0x2A2EF
+0x7975 0x2A2EE
+0x7976 0x2A3E8
+0x7977 0x2A4AC
+0x7978 0x2A4A9
+0x7979 0x2A4AA
+0x797A 0x2A4AB
+0x797B 0x2A4FB
+0x797C 0x2A533
+0x797D 0x2A588
+0x797E 0x2A5B6
+0x7A21 0x2A5B7
+0x7A22 0x2A5D0
+0x7A23 0x2A5CF
+0x7A24 0x2A64F
+0x7A25 0x2A659
+0x7A26 0x2A64C
+0x7A27 0x21B18
+0x7A28 0x21FE0
+0x7A29 0x23869
+0x7A2A 0x24173
+0x7A2B 0x24172
+0x7A2C 0x24AE8
+0x7A2D 0x255FB
+0x7A2E 0x2591C
+0x7A2F 0x25E09
+0x7A30 0x25E0A
+0x7A31 0x25E08
+0x7A32 0x25F7D
+0x7A33 0x25F7F
+0x7A34 0x26267
+0x7A35 0x2717A
+0x7A36 0x2717B
+0x7A37 0x277D1
+0x7A38 0x2F9CB
+0x7A39 0x27B9D
+0x7A3A 0x27C9D
+0x7A3B 0x281FC
+0x7A3C 0x281FB
+0x7A3D 0x281FD
+0x7A3E 0x283F5
+0x7A3F 0x283F6
+0x7A40 0x28C0F
+0x7A41 0x28C1D
+0x7A42 0x291C7
+0x7A43 0x291C1
+0x7A44 0x291BF
+0x7A45 0x29254
+0x7A46 0x2937F
+0x7A47 0x293F5
+0x7A48 0x2958A
+0x7A49 0x2958C
+0x7A4A 0x2965C
+0x7A4B 0x29865
+0x7A4C 0x299CF
+0x7A4D 0x299D0
+0x7A4E 0x29AB8
+0x7A4F 0x29BFA
+0x7A50 0x29C66
+0x7A51 0x29F40
+0x7A52 0x29F41
+0x7A54 0x2A1F7
+0x7A55 0x2A1F3
+0x7A56 0x2A1EF
+0x7A57 0x2A1F4
+0x7A58 0x2A1ED
+0x7A59 0x2A1F2
+0x7A5A 0x2A1F1
+0x7A5B 0x2A1F9
+0x7A5C 0x2A4B4
+0x7A5D 0x2A4FC
+0x7A5E 0x2A5BC
+0x7A5F 0x2A65E
+0x7A60 0x2A65B
+0x7A61 0x2A65F
+0x7A62 0x2A65D
+0x7A63 0x2A6CF
+0x7A64 0x2A6CE
+0x7A65 0x2193A
+0x7A66 0x21FE1
+0x7A67 0x22315
+0x7A68 0x22314
+0x7A69 0x24178
+0x7A6A 0x24179
+0x7A6B 0x244E6
+0x7A6C 0x24BB8
+0x7A6D 0x24F22
+0x7A6E 0x255FE
+0x7A6F 0x268DB
+0x7A70 0x26A06
+0x7A71 0x26AC8
+0x7A72 0x27189
+0x7A73 0x27586
+0x7A74 0x278AD
+0x7A75 0x27B99
+0x7A76 0x27BD8
+0x7A77 0x27C23
+0x7A78 0x27D23
+0x7A79 0x27FB5
+0x7A7A 0x283F9
+0x7A7B 0x28907
+0x7A7C 0x28C1E
+0x7A7D 0x28DFB
+0x7A7E 0x28F72
+0x7B21 0x28F73
+0x7B22 0x29387
+0x7B23 0x29449
+0x7B24 0x2965D
+0x7B25 0x297F8
+0x7B26 0x29C03
+0x7B27 0x29F4E
+0x7B28 0x29F4D
+0x7B29 0x29F50
+0x7B2A 0x29F55
+0x7B2B 0x2A209
+0x7B2C 0x2A207
+0x7B2D 0x2A20C
+0x7B2E 0x2A203
+0x7B2F 0x2A206
+0x7B30 0x2A20B
+0x7B31 0x2A20A
+0x7B32 0x2A289
+0x7B33 0x2A4BB
+0x7B34 0x2A4FF
+0x7B35 0x2A536
+0x7B36 0x2A58B
+0x7B37 0x2A666
+0x7B38 0x2A669
+0x7B39 0x2A667
+0x7B3A 0x2A6C2
+0x7B3B 0x2A6D2
+0x7B3C 0x21FE2
+0x7B3E 0x22988
+0x7B3F 0x2335B
+0x7B40 0x23876
+0x7B41 0x2417D
+0x7B42 0x245A6
+0x7B43 0x2535A
+0x7B44 0x25E17
+0x7B45 0x268DC
+0x7B46 0x2718F
+0x7B47 0x27594
+0x7B48 0x27595
+0x7B49 0x27FB6
+0x7B4A 0x28204
+0x7B4B 0x287EE
+0x7B4C 0x2938A
+0x7B4D 0x293F9
+0x7B4E 0x29C07
+0x7B4F 0x29C1F
+0x7B50 0x29C2A
+0x7B51 0x29D45
+0x7B52 0x29F5C
+0x7B53 0x29F5B
+0x7B54 0x29F61
+0x7B55 0x29F5D
+0x7B56 0x2A218
+0x7B57 0x2A21F
+0x7B58 0x2A383
+0x7B59 0x2A416
+0x7B5A 0x2A414
+0x7B5B 0x2A4BF
+0x7B5C 0x2A4C0
+0x7B5D 0x2A673
+0x7B5E 0x2A6C0
+0x7B5F 0x21517
+0x7B60 0x22989
+0x7B61 0x2591E
+0x7B62 0x2591F
+0x7B63 0x25A54
+0x7B64 0x25E18
+0x7B65 0x26205
+0x7B66 0x27195
+0x7B67 0x27598
+0x7B68 0x2759B
+0x7B69 0x27959
+0x7B6A 0x28208
+0x7B6B 0x28401
+0x7B6C 0x291CE
+0x7B6D 0x293FA
+0x7B6E 0x29ABE
+0x7B6F 0x29D47
+0x7B70 0x29F6A
+0x7B71 0x29F69
+0x7B72 0x29F68
+0x7B73 0x29F67
+0x7B74 0x2A225
+0x7B75 0x2A228
+0x7B76 0x2A4C4
+0x7B77 0x2A537
+0x7B78 0x2A58D
+0x7B79 0x2A58C
+0x7B7B 0x2F920
+0x7B7C 0x25E22
+0x7B7D 0x25F82
+0x7B7E 0x277D9
+0x7C21 0x28C38
+0x7C22 0x293FB
+0x7C23 0x299E1
+0x7C24 0x29C72
+0x7C25 0x29D48
+0x7C26 0x29F6C
+0x7C27 0x29F70
+0x7C28 0x2A231
+0x7C29 0x2A230
+0x7C2A 0x2A679
+0x7C2B 0x25E23
+0x7C2C 0x268F8
+0x7C2D 0x29C74
+0x7C2E 0x29F73
+0x7C2F 0x2A234
+0x7C30 0x2A387
+0x7C31 0x2A3B2
+0x7C32 0x2A5C2
+0x7C33 0x2A67D
+0x7C34 0x21FE5
+0x7C35 0x2938C
+0x7C36 0x29F77
+0x7C37 0x29F75
+0x7C38 0x2A238
+0x7C39 0x2A23A
+0x7C3A 0x2A683
+0x7C3B 0x2A681
+0x7C3C 0x24180
+0x7C3D 0x27199
+0x7C3F 0x2944A
+0x7C40 0x29D4A
+0x7C41 0x2A23C
+0x7C42 0x2A6C8
+0x7C43 0x25604
+0x7C44 0x278AF
+0x7C45 0x2A689
+0x7C46 0x2A2FA
+0x7C47 0x29661
+0x7C48 0x2A23F
+0x7C49 0x27193
+0x7C4A 0x2A4C9
+0x7C4B 0x277DE
+0x7C4C 0x29391
+0x7C4D 0x2A68E
+0x7C4E 0x2A68D
+0x7C4F 0x27198
+0x7C50 0x269C5
+0x7C51 0x2A6A5
diff --git a/test/sun/nio/cs/SurrogateTestEUCTW.plane6.surrogates b/test/sun/nio/cs/SurrogateTestEUCTW.plane6.surrogates
new file mode 100644
index 000000000..f6c9f6716
--- /dev/null
+++ b/test/sun/nio/cs/SurrogateTestEUCTW.plane6.surrogates
@@ -0,0 +1,6158 @@
+0x2121 0x2F802
+0x2122 0x20062
+0x2124 0x20088
+0x2125 0x200D0
+0x2126 0x200CF
+0x2127 0x2011E
+0x2128 0x2011F
+0x2129 0x20120
+0x212A 0x2090E
+0x212B 0x2092C
+0x212C 0x20061
+0x212D 0x20004
+0x212E 0x20005
+0x212F 0x20003
+0x2131 0x2F801
+0x2132 0x2007D
+0x2133 0x2008D
+0x2134 0x201A3
+0x2135 0x201A4
+0x2136 0x204DB
+0x2137 0x20500
+0x2138 0x2F81E
+0x2139 0x206A3
+0x213A 0x20832
+0x213C 0x20AD4
+0x213D 0x20AD5
+0x213E 0x21C23
+0x213F 0x2232C
+0x2140 0x2237A
+0x2141 0x20503
+0x2142 0x20007
+0x2143 0x20008
+0x2144 0x2008F
+0x2145 0x2009C
+0x2146 0x200D5
+0x2147 0x20112
+0x2148 0x20113
+0x2149 0x20114
+0x214A 0x20121
+0x214B 0x201A8
+0x214C 0x201A6
+0x214D 0x20476
+0x214E 0x20501
+0x214F 0x2053D
+0x2150 0x2F814
+0x2151 0x2053E
+0x2152 0x20629
+0x2153 0x20677
+0x2154 0x20678
+0x2155 0x206A6
+0x2156 0x206A9
+0x2157 0x206AC
+0x2158 0x20834
+0x2159 0x20504
+0x215A 0x2097B
+0x215B 0x20A10
+0x215C 0x2062F
+0x215D 0x20AD7
+0x215E 0x20B1C
+0x215F 0x20B1F
+0x2160 0x20B1A
+0x2161 0x2F836
+0x2162 0x20B1E
+0x2163 0x20B9E
+0x2164 0x20B9A
+0x2165 0x211A0
+0x2166 0x211A1
+0x2167 0x215D2
+0x2168 0x215D3
+0x2169 0x219B9
+0x216A 0x21B1D
+0x216B 0x21B55
+0x216C 0x21CFF
+0x216D 0x21FE7
+0x216F 0x22011
+0x2170 0x22013
+0x2171 0x22012
+0x2172 0x221AF
+0x2173 0x221B1
+0x2174 0x2F890
+0x2175 0x2232D
+0x2176 0x2237B
+0x2177 0x2239D
+0x2178 0x2239A
+0x217A 0x2239F
+0x217B 0x223A0
+0x217C 0x2239C
+0x217D 0x224BD
+0x2221 0x225AA
+0x2222 0x2306C
+0x2223 0x23091
+0x2224 0x23C74
+0x2225 0x2456A
+0x2226 0x2F929
+0x2227 0x25605
+0x2228 0x2626B
+0x2229 0x2626A
+0x222A 0x200E0
+0x222B 0x20012
+0x222D 0x2007F
+0x222E 0x200A0
+0x222F 0x20099
+0x2230 0x20095
+0x2231 0x2009E
+0x2232 0x200DF
+0x2233 0x200DE
+0x2234 0x201AF
+0x2235 0x201AD
+0x2236 0x201B0
+0x2237 0x204DF
+0x2238 0x20543
+0x2239 0x20541
+0x223A 0x20548
+0x223B 0x20575
+0x223C 0x2F81A
+0x223D 0x20632
+0x223E 0x2067B
+0x223F 0x20679
+0x2240 0x206B3
+0x2242 0x20BA7
+0x2243 0x206B2
+0x2244 0x206B0
+0x2245 0x206B4
+0x2246 0x2F829
+0x2247 0x208CD
+0x2248 0x208CE
+0x2249 0x2F82B
+0x224A 0x20910
+0x224B 0x20980
+0x224C 0x209D3
+0x224D 0x20A30
+0x224E 0x20098
+0x224F 0x20A2F
+0x2250 0x20A31
+0x2251 0x20ADA
+0x2252 0x20AD9
+0x2253 0x20B27
+0x2254 0x20B28
+0x2255 0x20B21
+0x2256 0x20B25
+0x2257 0x20BA6
+0x2258 0x20BA2
+0x2259 0x20BA1
+0x225A 0x20BA4
+0x225B 0x2F839
+0x225C 0x20BAA
+0x225D 0x20BA5
+0x225E 0x20BA3
+0x225F 0x20064
+0x2260 0x2123F
+0x2261 0x21244
+0x2262 0x2151B
+0x2263 0x21553
+0x2264 0x21584
+0x2265 0x21586
+0x2266 0x215D5
+0x2267 0x2F860
+0x2268 0x2193E
+0x2269 0x21940
+0x226A 0x21BCA
+0x226B 0x21BC9
+0x226C 0x21C26
+0x226D 0x21D00
+0x226E 0x21D31
+0x226F 0x21D3C
+0x2270 0x21D30
+0x2271 0x21D33
+0x2272 0x21D32
+0x2273 0x21D38
+0x2274 0x22034
+0x2275 0x22053
+0x2276 0x22054
+0x2277 0x221B4
+0x2278 0x221B2
+0x2279 0x2232F
+0x227A 0x223A5
+0x227B 0x223A7
+0x227C 0x223A4
+0x227D 0x223A8
+0x227E 0x223A9
+0x2321 0x223A2
+0x2322 0x223A3
+0x2323 0x223A6
+0x2324 0x22481
+0x2325 0x22480
+0x2326 0x225AD
+0x2327 0x22A24
+0x2328 0x22A65
+0x2329 0x22A68
+0x232A 0x22A69
+0x232B 0x2313C
+0x232C 0x2313B
+0x232D 0x2335D
+0x232E 0x23944
+0x232F 0x24182
+0x2330 0x244F1
+0x2331 0x2456B
+0x2332 0x2471B
+0x2333 0x248EB
+0x2334 0x24BBA
+0x2335 0x24BD3
+0x2336 0x24D13
+0x2337 0x25922
+0x2338 0x26AF4
+0x2339 0x2820F
+0x233A 0x28210
+0x233B 0x20507
+0x233C 0x29C0B
+0x233D 0x29C0A
+0x233E 0x20019
+0x233F 0x2001A
+0x2340 0x20018
+0x2341 0x20066
+0x2342 0x20082
+0x2343 0x200A8
+0x2344 0x200E5
+0x2345 0x200E7
+0x2346 0x200E4
+0x2347 0x20115
+0x2348 0x20123
+0x2349 0x20124
+0x234A 0x20143
+0x234B 0x201C3
+0x234C 0x201BC
+0x234D 0x201BB
+0x234F 0x201B7
+0x2350 0x201B9
+0x2351 0x201CF
+0x2352 0x2F80D
+0x2353 0x2047A
+0x2354 0x2047B
+0x2355 0x204E1
+0x2356 0x204E0
+0x2357 0x20509
+0x2358 0x2054D
+0x2359 0x2F816
+0x235A 0x2054B
+0x235B 0x20579
+0x235C 0x205B1
+0x235D 0x20636
+0x235E 0x20635
+0x235F 0x20637
+0x2360 0x20638
+0x2361 0x2067F
+0x2362 0x20680
+0x2363 0x20681
+0x2364 0x26953
+0x2365 0x2067E
+0x2366 0x206CD
+0x2367 0x206BF
+0x2368 0x206BE
+0x2369 0x206C2
+0x236A 0x206B8
+0x236B 0x206C1
+0x236D 0x20931
+0x236E 0x2092F
+0x236F 0x2096F
+0x2370 0x20982
+0x2372 0x20987
+0x2373 0x20986
+0x2374 0x2098D
+0x2375 0x20994
+0x2376 0x209D7
+0x2377 0x209D4
+0x2378 0x209D8
+0x2379 0x20A16
+0x237A 0x20A14
+0x237B 0x20A2E
+0x237C 0x20A36
+0x237D 0x20A37
+0x237E 0x21FEE
+0x2421 0x20AE0
+0x2422 0x20AE5
+0x2423 0x20ADF
+0x2424 0x20B2B
+0x2425 0x20B29
+0x2426 0x20B2D
+0x2427 0x20B2F
+0x2428 0x20BB7
+0x2429 0x20BC9
+0x242A 0x20BC1
+0x242B 0x20BCA
+0x242C 0x20BB2
+0x242D 0x20BAC
+0x242E 0x20BAE
+0x242F 0x211B2
+0x2430 0x211A8
+0x2431 0x211B0
+0x2432 0x211A7
+0x2433 0x2F851
+0x2434 0x21252
+0x2435 0x2124A
+0x2436 0x21556
+0x2437 0x21555
+0x2438 0x2155F
+0x2439 0x2155E
+0x243A 0x21588
+0x243B 0x2F85D
+0x243C 0x215DD
+0x243D 0x215E2
+0x243E 0x215E1
+0x243F 0x215DF
+0x2440 0x215E0
+0x2441 0x216AF
+0x2442 0x216B1
+0x2443 0x216BA
+0x2444 0x21945
+0x2445 0x21943
+0x2446 0x219BD
+0x2447 0x219C8
+0x2448 0x2F86C
+0x2449 0x219BE
+0x244A 0x219BF
+0x244B 0x2F874
+0x244C 0x21B59
+0x244D 0x21C29
+0x244E 0x21C2C
+0x244F 0x21C2F
+0x2450 0x21C2D
+0x2451 0x21C2E
+0x2452 0x21D04
+0x2453 0x21D02
+0x2454 0x21D01
+0x2455 0x21D40
+0x2456 0x21D4A
+0x2457 0x21D3F
+0x2458 0x21D4F
+0x2459 0x21D41
+0x245A 0x21D4E
+0x245B 0x21FEB
+0x245C 0x21FEC
+0x245D 0x200AC
+0x245E 0x2205B
+0x245F 0x22063
+0x2460 0x2205A
+0x2461 0x22059
+0x2462 0x221DC
+0x2463 0x221DB
+0x2464 0x221D9
+0x2465 0x221E0
+0x2466 0x221DD
+0x2467 0x20020
+0x2468 0x223B0
+0x2469 0x223B1
+0x246A 0x223B2
+0x246B 0x223B6
+0x246C 0x22451
+0x246D 0x22452
+0x246E 0x22450
+0x246F 0x22484
+0x2471 0x22483
+0x2472 0x225C3
+0x2473 0x225B8
+0x2474 0x225B9
+0x2475 0x225B2
+0x2476 0x22990
+0x2477 0x22A26
+0x2478 0x22A29
+0x2479 0x22A6E
+0x247A 0x23140
+0x247B 0x2313E
+0x247C 0x23141
+0x247D 0x2335E
+0x247E 0x233BB
+0x2521 0x233BC
+0x2522 0x233B9
+0x2523 0x2F8EF
+0x2524 0x23880
+0x2526 0x23945
+0x2527 0x239BA
+0x2528 0x239BD
+0x2529 0x23C56
+0x252A 0x23C55
+0x252B 0x23C75
+0x252C 0x23C77
+0x252D 0x23C81
+0x252E 0x2F8FA
+0x252F 0x23C83
+0x2530 0x23C8B
+0x2531 0x23C84
+0x2532 0x24186
+0x2533 0x24183
+0x2534 0x2418B
+0x2535 0x2456D
+0x2536 0x24616
+0x2537 0x24728
+0x2538 0x248EA
+0x2539 0x24BD4
+0x253A 0x24C03
+0x253B 0x24D15
+0x253C 0x24F3D
+0x253D 0x24F3E
+0x253E 0x25416
+0x253F 0x2F94C
+0x2540 0x25606
+0x2541 0x2574D
+0x2542 0x26222
+0x2543 0x26273
+0x2544 0x2626D
+0x2545 0x2626E
+0x2546 0x264B1
+0x2547 0x2054E
+0x2548 0x2662D
+0x254A 0x268F9
+0x254B 0x26952
+0x254C 0x26B00
+0x254D 0x26AFC
+0x254E 0x26AFA
+0x2550 0x26AF7
+0x2551 0x26AF8
+0x2552 0x2F990
+0x2553 0x2F9C4
+0x2554 0x27C27
+0x2555 0x28211
+0x2556 0x200AE
+0x2557 0x28450
+0x2558 0x2844F
+0x2559 0x2844D
+0x255A 0x28671
+0x255B 0x2F9E2
+0x255C 0x28672
+0x255D 0x28E18
+0x255E 0x20A44
+0x255F 0x20021
+0x2560 0x20067
+0x2561 0x200AF
+0x2562 0x200B0
+0x2563 0x20029
+0x2564 0x20117
+0x2565 0x20122
+0x2566 0x2F803
+0x2567 0x20025
+0x2568 0x20128
+0x2569 0x201FF
+0x256A 0x201D9
+0x256B 0x201DB
+0x256C 0x201DE
+0x256D 0x201F2
+0x256E 0x201FE
+0x256F 0x201F4
+0x2570 0x201DD
+0x2572 0x2F804
+0x2573 0x20201
+0x2574 0x201DC
+0x2575 0x2047D
+0x2576 0x20481
+0x2577 0x2047E
+0x2578 0x2047F
+0x2579 0x204E5
+0x257A 0x2050F
+0x257C 0x2050A
+0x257E 0x2050B
+0x2621 0x20551
+0x2622 0x20552
+0x2623 0x20550
+0x2624 0x205B8
+0x2625 0x2063D
+0x2626 0x2063E
+0x2627 0x2063C
+0x2628 0x20687
+0x2629 0x206D7
+0x262A 0x206DB
+0x262B 0x206CF
+0x262C 0x206E0
+0x262D 0x2084C
+0x262E 0x20842
+0x262F 0x208D4
+0x2630 0x20911
+0x2631 0x20914
+0x2632 0x20915
+0x2633 0x20912
+0x2634 0x20933
+0x2635 0x20935
+0x2637 0x20971
+0x2639 0x20991
+0x263A 0x20993
+0x263B 0x20995
+0x263C 0x209DC
+0x263D 0x20A42
+0x263E 0x20A40
+0x263F 0x253A6
+0x2640 0x20AE6
+0x2641 0x2128F
+0x2642 0x20B32
+0x2643 0x2F837
+0x2644 0x20B31
+0x2645 0x20BF5
+0x2646 0x20BCD
+0x2647 0x20BDE
+0x2648 0x20BD5
+0x2649 0x20BDA
+0x264A 0x20BEE
+0x264B 0x20BEC
+0x264C 0x20BCF
+0x264D 0x20BCE
+0x264E 0x2F83D
+0x264F 0x20BCC
+0x2650 0x20BF3
+0x2651 0x211C1
+0x2652 0x211C4
+0x2653 0x211C6
+0x2654 0x211B4
+0x2655 0x211C3
+0x2656 0x211B8
+0x2657 0x211BB
+0x2658 0x211B7
+0x2659 0x211BC
+0x265A 0x211BF
+0x265B 0x211C7
+0x265C 0x211BE
+0x265D 0x21260
+0x265E 0x2125D
+0x265F 0x21276
+0x2660 0x2126C
+0x2661 0x21275
+0x2662 0x2125B
+0x2663 0x21271
+0x2664 0x21273
+0x2665 0x21261
+0x2666 0x2125A
+0x2667 0x21262
+0x2668 0x21272
+0x2669 0x2125F
+0x266A 0x21258
+0x266B 0x2151E
+0x266C 0x21558
+0x266D 0x2158B
+0x266E 0x2158A
+0x266F 0x215F4
+0x2670 0x215F0
+0x2671 0x216D2
+0x2672 0x216CD
+0x2673 0x216CE
+0x2674 0x216BC
+0x2675 0x216D0
+0x2676 0x21946
+0x2677 0x21947
+0x267B 0x219CE
+0x267C 0x219CF
+0x267D 0x219CC
+0x267E 0x219CB
+0x2721 0x2F872
+0x2722 0x21B60
+0x2723 0x21B5F
+0x2724 0x21B5D
+0x2725 0x21BD4
+0x2726 0x21C3A
+0x2727 0x21C38
+0x2728 0x21C3C
+0x2729 0x21C36
+0x272A 0x21D08
+0x272B 0x21D7E
+0x272C 0x21D5E
+0x272D 0x21D6E
+0x272E 0x21D53
+0x272F 0x21D70
+0x2730 0x21D57
+0x2731 0x21D5D
+0x2732 0x21D63
+0x2733 0x21D7A
+0x2734 0x21D79
+0x2735 0x21D93
+0x2736 0x2F881
+0x2737 0x2201D
+0x2738 0x22068
+0x2739 0x22073
+0x273A 0x22074
+0x273B 0x22066
+0x273C 0x2206F
+0x273D 0x22075
+0x273E 0x2207A
+0x273F 0x22070
+0x2740 0x2206D
+0x2741 0x22065
+0x2742 0x2218A
+0x2743 0x221ED
+0x2744 0x221E9
+0x2745 0x221E3
+0x2746 0x221EF
+0x2748 0x221EA
+0x2749 0x22331
+0x274A 0x2F891
+0x274B 0x22338
+0x274C 0x26B20
+0x274D 0x22335
+0x274E 0x2233A
+0x274F 0x22381
+0x2750 0x22380
+0x2751 0x223B8
+0x2752 0x223C1
+0x2753 0x223BA
+0x2754 0x22488
+0x2755 0x224CF
+0x2756 0x224CA
+0x2757 0x224C7
+0x2758 0x224C5
+0x2759 0x224C8
+0x275A 0x224D0
+0x275B 0x224C9
+0x275C 0x225BB
+0x275D 0x225B6
+0x275E 0x225BD
+0x275F 0x2F89D
+0x2760 0x225B4
+0x2761 0x225C1
+0x2762 0x225D1
+0x2763 0x225D2
+0x2764 0x225CC
+0x2765 0x225D4
+0x2766 0x225CB
+0x2767 0x225CE
+0x2768 0x225D5
+0x2769 0x225D8
+0x276A 0x22995
+0x276B 0x22993
+0x276C 0x22999
+0x276D 0x22996
+0x276F 0x22A89
+0x2770 0x22A94
+0x2771 0x22A91
+0x2772 0x22A8F
+0x2773 0x22A84
+0x2774 0x22A97
+0x2775 0x22A86
+0x2776 0x22A85
+0x2777 0x22A8C
+0x2778 0x22EF2
+0x2779 0x22EED
+0x277A 0x22EEF
+0x277B 0x230D9
+0x277C 0x23146
+0x277D 0x23147
+0x277E 0x2314B
+0x2821 0x23150
+0x2822 0x2314A
+0x2823 0x2314E
+0x2824 0x2314C
+0x2825 0x23148
+0x2826 0x23363
+0x2827 0x23361
+0x2828 0x23362
+0x2829 0x23360
+0x282A 0x233C3
+0x282B 0x233C5
+0x282C 0x233C1
+0x282D 0x233D0
+0x282E 0x2F8DC
+0x282F 0x23882
+0x2831 0x23886
+0x2832 0x23884
+0x2833 0x2394C
+0x2834 0x23948
+0x2835 0x239B8
+0x2836 0x239BF
+0x2837 0x239C1
+0x2838 0x239C6
+0x2839 0x239C5
+0x283A 0x239C7
+0x283B 0x239C0
+0x283C 0x239C3
+0x283D 0x23AED
+0x283E 0x23B03
+0x283F 0x23B22
+0x2840 0x23B21
+0x2841 0x23C9F
+0x2842 0x23C90
+0x2843 0x23C9E
+0x2845 0x23CA0
+0x2846 0x23C94
+0x2847 0x23C95
+0x2848 0x23CA1
+0x284B 0x2419A
+0x284C 0x24190
+0x284D 0x244F2
+0x284E 0x244F3
+0x284F 0x2456E
+0x2850 0x245AB
+0x2851 0x245A9
+0x2852 0x2461A
+0x2853 0x24618
+0x2854 0x2461B
+0x2855 0x24760
+0x2856 0x2474C
+0x2857 0x24742
+0x2858 0x24733
+0x2859 0x2473F
+0x285A 0x2473E
+0x285B 0x24738
+0x285C 0x24743
+0x285D 0x24746
+0x285E 0x24736
+0x285F 0x248EE
+0x2860 0x248F5
+0x2861 0x248F4
+0x2863 0x24C1B
+0x2865 0x24D2B
+0x2866 0x24D29
+0x2867 0x24D2A
+0x2868 0x24D2E
+0x2869 0x2503F
+0x286A 0x250E6
+0x286B 0x253A7
+0x286C 0x253A8
+0x286D 0x25418
+0x286E 0x25608
+0x286F 0x25750
+0x2870 0x25753
+0x2871 0x25A56
+0x2872 0x25A55
+0x2873 0x2626F
+0x2874 0x2627F
+0x2875 0x264B3
+0x2876 0x2663A
+0x2877 0x26638
+0x2878 0x26637
+0x2879 0x26636
+0x287A 0x20554
+0x287B 0x2F980
+0x287C 0x268DD
+0x287D 0x268FC
+0x287E 0x268FA
+0x2921 0x26933
+0x2922 0x26B04
+0x2923 0x26B07
+0x2924 0x26B08
+0x2925 0x26B06
+0x2926 0x26B09
+0x2927 0x2F991
+0x2928 0x2F993
+0x2929 0x2721E
+0x292A 0x2F9D2
+0x292B 0x2840B
+0x292C 0x28443
+0x292D 0x28452
+0x292E 0x28458
+0x292F 0x2845E
+0x2930 0x28668
+0x2931 0x2868D
+0x2932 0x28682
+0x2933 0x2867B
+0x2934 0x28C58
+0x2936 0x2F800
+0x2937 0x2002C
+0x2938 0x2002E
+0x2939 0x2160B
+0x293A 0x2002D
+0x293B 0x20069
+0x293C 0x200B2
+0x293D 0x200B6
+0x293E 0x200A9
+0x293F 0x200ED
+0x2940 0x20119
+0x2941 0x2014F
+0x2942 0x20216
+0x2943 0x20203
+0x2944 0x2020E
+0x2945 0x20204
+0x2946 0x20207
+0x2947 0x20210
+0x2948 0x20227
+0x2949 0x20228
+0x294A 0x2020D
+0x294B 0x20229
+0x294C 0x2020F
+0x294D 0x20222
+0x294E 0x20211
+0x294F 0x20485
+0x2950 0x20484
+0x2951 0x20483
+0x2952 0x2048A
+0x2953 0x20486
+0x2954 0x20510
+0x2955 0x20558
+0x2956 0x2055A
+0x2957 0x2070C
+0x2958 0x205C4
+0x2959 0x205C5
+0x295A 0x20647
+0x295B 0x20649
+0x295C 0x2064A
+0x295D 0x2064B
+0x295E 0x221BB
+0x295F 0x2068D
+0x2960 0x2068B
+0x2961 0x20707
+0x2962 0x20706
+0x2963 0x2F820
+0x2964 0x206EF
+0x2965 0x206F0
+0x2966 0x206ED
+0x2967 0x206F9
+0x2968 0x20702
+0x2969 0x206E7
+0x296A 0x206F4
+0x296B 0x206F7
+0x296C 0x206F1
+0x296D 0x20853
+0x296E 0x20855
+0x2970 0x208DA
+0x2971 0x208D9
+0x2973 0x20938
+0x2974 0x20999
+0x2975 0x209A2
+0x2976 0x2099C
+0x2977 0x2099A
+0x2978 0x2099B
+0x2979 0x209E5
+0x297A 0x209E3
+0x297B 0x209E1
+0x297C 0x209E0
+0x297D 0x209E2
+0x297E 0x209E4
+0x2A22 0x209E8
+0x2A23 0x2F82F
+0x2A24 0x20A13
+0x2A25 0x20A56
+0x2A26 0x20A4B
+0x2A27 0x20A4A
+0x2A28 0x20A4D
+0x2A29 0x20A4C
+0x2A2B 0x20AEA
+0x2A2C 0x20AE9
+0x2A2D 0x20AEB
+0x2A2E 0x20AEC
+0x2A2F 0x20B3A
+0x2A30 0x20B3C
+0x2A31 0x20B39
+0x2A32 0x20B3B
+0x2A33 0x20C14
+0x2A34 0x20C0E
+0x2A35 0x20C35
+0x2A36 0x20C0A
+0x2A37 0x20C3F
+0x2A38 0x20C38
+0x2A3A 0x20C4E
+0x2A3B 0x20C17
+0x2A3C 0x2F83F
+0x2A3D 0x20C1E
+0x2A3E 0x211B6
+0x2A3F 0x211CE
+0x2A40 0x211CA
+0x2A41 0x211CB
+0x2A42 0x211CC
+0x2A43 0x211C9
+0x2A44 0x212B4
+0x2A45 0x212AC
+0x2A46 0x21288
+0x2A47 0x21286
+0x2A48 0x2128C
+0x2A49 0x21293
+0x2A4A 0x2128A
+0x2A4B 0x212A4
+0x2A4C 0x21287
+0x2A4D 0x212A5
+0x2A4E 0x212A6
+0x2A4F 0x21285
+0x2A50 0x212A3
+0x2A51 0x2128E
+0x2A52 0x2151F
+0x2A53 0x21563
+0x2A54 0x2158D
+0x2A55 0x215FA
+0x2A56 0x215FB
+0x2A57 0x21609
+0x2A58 0x215FE
+0x2A59 0x215FF
+0x2A5A 0x21602
+0x2A5B 0x21604
+0x2A5C 0x215FD
+0x2A5D 0x21605
+0x2A5E 0x216F9
+0x2A5F 0x216F7
+0x2A60 0x216DB
+0x2A61 0x216DA
+0x2A62 0x21951
+0x2A63 0x21950
+0x2A64 0x21957
+0x2A65 0x219E2
+0x2A66 0x219D8
+0x2A67 0x219DA
+0x2A68 0x219DC
+0x2A69 0x21B20
+0x2A6A 0x21B1F
+0x2A6B 0x21B69
+0x2A6C 0x21BDD
+0x2A6D 0x21C40
+0x2A6E 0x21C41
+0x2A6F 0x21C43
+0x2A70 0x21D0D
+0x2A71 0x21D0C
+0x2A72 0x21D87
+0x2A73 0x21DA9
+0x2A74 0x21D92
+0x2A75 0x21D85
+0x2A77 0x21D8C
+0x2A78 0x21DA2
+0x2A79 0x21D8F
+0x2A7A 0x21D8A
+0x2A7C 0x21D8D
+0x2A7D 0x21FF1
+0x2A7E 0x22037
+0x2B21 0x2208B
+0x2B22 0x22087
+0x2B23 0x22082
+0x2B24 0x2218E
+0x2B25 0x221BC
+0x2B26 0x221F8
+0x2B27 0x221FA
+0x2B28 0x221EB
+0x2B29 0x221F9
+0x2B2A 0x221FC
+0x2B2B 0x22205
+0x2B2C 0x2231B
+0x2B2D 0x2231D
+0x2B2E 0x2231E
+0x2B2F 0x2F892
+0x2B30 0x2233C
+0x2B31 0x2233E
+0x2B32 0x22384
+0x2B33 0x223C8
+0x2B34 0x223C9
+0x2B35 0x223D3
+0x2B36 0x223C7
+0x2B37 0x223D2
+0x2B38 0x22455
+0x2B39 0x2F896
+0x2B3A 0x2248C
+0x2B3B 0x2248A
+0x2B3C 0x224D5
+0x2B3D 0x224D3
+0x2B3F 0x224D8
+0x2B40 0x225D0
+0x2B41 0x225EE
+0x2B42 0x225F1
+0x2B43 0x225FB
+0x2B44 0x225D3
+0x2B45 0x225EC
+0x2B46 0x225CD
+0x2B47 0x22615
+0x2B48 0x22626
+0x2B49 0x2260E
+0x2B4A 0x22627
+0x2B4B 0x2262A
+0x2B4C 0x22600
+0x2B4D 0x22604
+0x2B4E 0x22628
+0x2B4F 0x22608
+0x2B50 0x22614
+0x2B51 0x2299B
+0x2B53 0x229A1
+0x2B54 0x2299D
+0x2B55 0x229A0
+0x2B56 0x2299E
+0x2B57 0x229A2
+0x2B58 0x2299C
+0x2B59 0x22A32
+0x2B5A 0x22A34
+0x2B5B 0x22A93
+0x2B5C 0x22A96
+0x2B5D 0x22A90
+0x2B5E 0x22AB4
+0x2B5F 0x22AB5
+0x2B60 0x2F8B6
+0x2B61 0x22AB6
+0x2B62 0x22AC2
+0x2B63 0x2F8B5
+0x2B64 0x22ABA
+0x2B65 0x22A92
+0x2B66 0x22EFB
+0x2B67 0x22F05
+0x2B68 0x22EF3
+0x2B69 0x22EFE
+0x2B6A 0x22EFD
+0x2B6B 0x2455D
+0x2B6C 0x22EFA
+0x2B6D 0x23043
+0x2B6E 0x23095
+0x2B6F 0x23094
+0x2B71 0x2316F
+0x2B72 0x23173
+0x2B73 0x2315C
+0x2B74 0x2315B
+0x2B75 0x23166
+0x2B76 0x23174
+0x2B77 0x23163
+0x2B78 0x23167
+0x2B79 0x23160
+0x2B7A 0x23162
+0x2B7B 0x23171
+0x2B7C 0x23172
+0x2B7D 0x2315E
+0x2B7E 0x23323
+0x2C21 0x23326
+0x2C22 0x23364
+0x2C23 0x2F8D6
+0x2C24 0x233F2
+0x2C25 0x23401
+0x2C26 0x233DD
+0x2C27 0x233DC
+0x2C28 0x233DB
+0x2C29 0x233F3
+0x2C2A 0x233FD
+0x2C2B 0x233D8
+0x2C2C 0x233F8
+0x2C2D 0x233FB
+0x2C2E 0x23883
+0x2C2F 0x2388C
+0x2C30 0x2388E
+0x2C31 0x23949
+0x2C32 0x23954
+0x2C33 0x23952
+0x2C34 0x2394E
+0x2C35 0x23958
+0x2C36 0x23951
+0x2C37 0x23955
+0x2C38 0x23953
+0x2C39 0x23957
+0x2C3A 0x23950
+0x2C3B 0x2394F
+0x2C3C 0x2394D
+0x2C3D 0x239D2
+0x2C3E 0x239D3
+0x2C3F 0x239C9
+0x2C40 0x239D4
+0x2C41 0x23AEF
+0x2C42 0x2F8F8
+0x2C43 0x200B1
+0x2C44 0x23B05
+0x2C45 0x23B04
+0x2C46 0x23B2E
+0x2C47 0x23B2D
+0x2C48 0x23C45
+0x2C49 0x23C5B
+0x2C4A 0x23C5A
+0x2C4B 0x23C59
+0x2C4C 0x23C9D
+0x2C4D 0x23C8E
+0x2C4E 0x23CBC
+0x2C4F 0x23CDD
+0x2C50 0x23CBA
+0x2C51 0x2F8FD
+0x2C52 0x23CD8
+0x2C53 0x23CCB
+0x2C54 0x23CD9
+0x2C55 0x23CDA
+0x2C56 0x23CC4
+0x2C57 0x23CB8
+0x2C58 0x23CBF
+0x2C59 0x23CDB
+0x2C5A 0x23CC1
+0x2C5B 0x2F8FC
+0x2C5C 0x23CC5
+0x2C5D 0x2F919
+0x2C5E 0x241B1
+0x2C5F 0x241AF
+0x2C60 0x2F918
+0x2C61 0x244F7
+0x2C62 0x244F6
+0x2C63 0x244F8
+0x2C64 0x24550
+0x2C65 0x24551
+0x2C66 0x24571
+0x2C67 0x24570
+0x2C68 0x245B0
+0x2C69 0x245AF
+0x2C6A 0x245AE
+0x2C6B 0x245AD
+0x2C6C 0x24625
+0x2C6D 0x2462C
+0x2C6E 0x24622
+0x2C6F 0x24633
+0x2C70 0x24634
+0x2C72 0x2473A
+0x2C73 0x24740
+0x2C74 0x24768
+0x2C76 0x24764
+0x2C77 0x2475C
+0x2C78 0x24757
+0x2C79 0x24753
+0x2C7A 0x2474F
+0x2C7B 0x24751
+0x2C7C 0x24754
+0x2C7D 0x24766
+0x2D22 0x2490D
+0x2D23 0x24908
+0x2D24 0x2F92B
+0x2D25 0x248FA
+0x2D26 0x24AEA
+0x2D27 0x24B2A
+0x2D28 0x24BBB
+0x2D29 0x24BD5
+0x2D2A 0x24BD7
+0x2D2B 0x21DA4
+0x2D2C 0x200F0
+0x2D2D 0x200B5
+0x2D2E 0x24C06
+0x2D2F 0x24C28
+0x2D30 0x24C22
+0x2D31 0x24C21
+0x2D32 0x22456
+0x2D33 0x24C23
+0x2D34 0x211CD
+0x2D35 0x24D30
+0x2D36 0x24D34
+0x2D37 0x24FC9
+0x2D38 0x24FCA
+0x2D39 0x24FC8
+0x2D3A 0x2F93D
+0x2D3B 0x25044
+0x2D3C 0x250F3
+0x2D3D 0x2F941
+0x2D3E 0x250F8
+0x2D3F 0x250FC
+0x2D40 0x250F6
+0x2D41 0x250FB
+0x2D42 0x250F7
+0x2D43 0x25100
+0x2D44 0x25102
+0x2D45 0x2F940
+0x2D46 0x2F94D
+0x2D47 0x25424
+0x2D48 0x2560D
+0x2D4A 0x25762
+0x2D4B 0x25930
+0x2D4C 0x2592B
+0x2D4D 0x2592A
+0x2D4F 0x2592D
+0x2D50 0x25ADA
+0x2D51 0x25E28
+0x2D52 0x25F86
+0x2D53 0x26277
+0x2D54 0x2627C
+0x2D55 0x26350
+0x2D56 0x2634E
+0x2D57 0x263F2
+0x2D58 0x264B2
+0x2D59 0x264CE
+0x2D5A 0x264CF
+0x2D5B 0x264E5
+0x2D5C 0x23407
+0x2D5D 0x26535
+0x2D5E 0x26531
+0x2D5F 0x26613
+0x2D60 0x2662B
+0x2D61 0x2662C
+0x2D62 0x26645
+0x2D63 0x26660
+0x2D64 0x26641
+0x2D65 0x26658
+0x2D66 0x26647
+0x2D67 0x2665B
+0x2D68 0x26650
+0x2D69 0x2F982
+0x2D6A 0x2665F
+0x2D6B 0x2664A
+0x2D6C 0x26656
+0x2D6D 0x26643
+0x2D6E 0x26644
+0x2D6F 0x26651
+0x2D70 0x268FD
+0x2D71 0x26934
+0x2D72 0x26935
+0x2D73 0x26954
+0x2D74 0x26955
+0x2D75 0x26A0C
+0x2D76 0x26A0B
+0x2D77 0x26A0A
+0x2D78 0x26AF9
+0x2D79 0x26B35
+0x2D7A 0x26B24
+0x2D7B 0x26B13
+0x2D7C 0x26B1C
+0x2D7D 0x26B69
+0x2D7E 0x26B25
+0x2E21 0x26B21
+0x2E22 0x2F995
+0x2E23 0x2F996
+0x2E24 0x2F998
+0x2E25 0x27220
+0x2E26 0x275A9
+0x2E27 0x275A8
+0x2E28 0x275DE
+0x2E29 0x27609
+0x2E2A 0x2760A
+0x2E2B 0x2760B
+0x2E2C 0x277E3
+0x2E2D 0x27807
+0x2E2E 0x278B2
+0x2E2F 0x278B3
+0x2E30 0x2795D
+0x2E31 0x27E58
+0x2E32 0x27E86
+0x2E33 0x27E87
+0x2E34 0x27FB9
+0x2E35 0x27FB8
+0x2E36 0x2840C
+0x2E37 0x28444
+0x2E38 0x28466
+0x2E39 0x28480
+0x2E3A 0x28475
+0x2E3B 0x2846D
+0x2E3C 0x2847E
+0x2E3D 0x28467
+0x2E3E 0x28481
+0x2E3F 0x28477
+0x2E40 0x286A8
+0x2E41 0x286A2
+0x2E42 0x286A5
+0x2E43 0x2869B
+0x2E44 0x28C57
+0x2E45 0x28E0F
+0x2E46 0x28E32
+0x2E47 0x28E2C
+0x2E48 0x28E33
+0x2E49 0x291E7
+0x2E4A 0x2006E
+0x2E4B 0x200B7
+0x2E4C 0x200F6
+0x2E4D 0x200F2
+0x2E4E 0x200F3
+0x2E4F 0x20517
+0x2E50 0x20130
+0x2E51 0x20154
+0x2E52 0x20153
+0x2E53 0x20252
+0x2E54 0x2023D
+0x2E55 0x2023C
+0x2E56 0x20234
+0x2E57 0x20233
+0x2E58 0x20254
+0x2E59 0x2022F
+0x2E5B 0x20255
+0x2E5C 0x2023F
+0x2E5D 0x20237
+0x2E5E 0x20256
+0x2E5F 0x20261
+0x2E60 0x20258
+0x2E61 0x2F806
+0x2E62 0x2023B
+0x2E63 0x20232
+0x2E64 0x2022E
+0x2E65 0x2023E
+0x2E66 0x2003B
+0x2E67 0x2048C
+0x2E68 0x2048D
+0x2E69 0x20513
+0x2E6A 0x20516
+0x2E6B 0x20512
+0x2E6C 0x2055B
+0x2E6D 0x2058A
+0x2E6E 0x205D7
+0x2E6F 0x205CE
+0x2E70 0x20650
+0x2E71 0x20651
+0x2E72 0x2064F
+0x2E73 0x2068E
+0x2E74 0x2068F
+0x2E75 0x206F2
+0x2E76 0x2F821
+0x2E77 0x20728
+0x2E78 0x2071A
+0x2E79 0x20725
+0x2E7A 0x2071D
+0x2E7B 0x20714
+0x2E7C 0x20720
+0x2E7D 0x2071F
+0x2E7E 0x2071B
+0x2F21 0x20717
+0x2F22 0x20715
+0x2F23 0x2071C
+0x2F24 0x20713
+0x2F25 0x2F825
+0x2F26 0x20860
+0x2F28 0x20866
+0x2F29 0x208E3
+0x2F2A 0x208DE
+0x2F2B 0x208E0
+0x2F2C 0x208E1
+0x2F2D 0x2091A
+0x2F2E 0x2091B
+0x2F2F 0x20918
+0x2F30 0x2091C
+0x2F31 0x20919
+0x2F32 0x20942
+0x2F33 0x20940
+0x2F34 0x2093E
+0x2F35 0x20944
+0x2F36 0x20974
+0x2F37 0x20943
+0x2F38 0x2F82D
+0x2F39 0x209F2
+0x2F3A 0x20A1B
+0x2F3B 0x20A19
+0x2F3C 0x20A1E
+0x2F3D 0x2F830
+0x2F3E 0x20A5E
+0x2F3F 0x20A66
+0x2F40 0x20A5D
+0x2F41 0x20A5A
+0x2F42 0x20A5F
+0x2F43 0x20A60
+0x2F44 0x20A5B
+0x2F45 0x20A5C
+0x2F46 0x20A59
+0x2F47 0x20AF0
+0x2F48 0x20AF1
+0x2F49 0x20B43
+0x2F4A 0x20B40
+0x2F4B 0x20B42
+0x2F4C 0x20B41
+0x2F4D 0x20B3F
+0x2F4E 0x20C57
+0x2F4F 0x20C69
+0x2F50 0x20C6F
+0x2F51 0x20CAB
+0x2F52 0x20C71
+0x2F53 0x20C93
+0x2F54 0x20C56
+0x2F55 0x20C90
+0x2F56 0x20C6D
+0x2F57 0x20C6C
+0x2F58 0x20C70
+0x2F59 0x20C66
+0x2F5A 0x20C67
+0x2F5B 0x211D7
+0x2F5C 0x211B5
+0x2F5D 0x211DB
+0x2F5E 0x211D8
+0x2F5F 0x211D5
+0x2F60 0x211D4
+0x2F61 0x212BA
+0x2F62 0x212B7
+0x2F63 0x212BE
+0x2F64 0x212B9
+0x2F66 0x212E0
+0x2F67 0x212DD
+0x2F68 0x212DE
+0x2F69 0x24918
+0x2F6A 0x212D8
+0x2F6B 0x212BD
+0x2F6C 0x212DB
+0x2F6D 0x2151D
+0x2F6E 0x21525
+0x2F6F 0x21721
+0x2F70 0x2170C
+0x2F71 0x21729
+0x2F72 0x2172D
+0x2F73 0x2171B
+0x2F74 0x2170E
+0x2F75 0x2171F
+0x2F76 0x21704
+0x2F77 0x2171C
+0x2F78 0x21705
+0x2F79 0x21706
+0x2F7A 0x21720
+0x2F7B 0x2170D
+0x2F7C 0x2172A
+0x2F7D 0x21723
+0x2F7E 0x21711
+0x3021 0x2195C
+0x3022 0x21966
+0x3023 0x2195B
+0x3024 0x2194F
+0x3025 0x2195E
+0x3026 0x2195D
+0x3027 0x219F1
+0x3028 0x219EA
+0x3029 0x219F4
+0x302A 0x219EB
+0x302B 0x219F0
+0x302C 0x219FA
+0x302D 0x219FB
+0x302E 0x21B28
+0x302F 0x21B2C
+0x3030 0x21B6B
+0x3031 0x21B2A
+0x3032 0x21B6A
+0x3033 0x21B6F
+0x3034 0x21BDB
+0x3035 0x21BE0
+0x3036 0x24FD1
+0x3037 0x21BE3
+0x3038 0x21BE5
+0x3039 0x21BE7
+0x303A 0x21C4D
+0x303B 0x21C55
+0x303C 0x21C54
+0x303D 0x21C53
+0x303E 0x21C52
+0x303F 0x21C4E
+0x3040 0x21C60
+0x3041 0x221C0
+0x3042 0x21D0F
+0x3043 0x21D11
+0x3044 0x21D13
+0x3045 0x21DC6
+0x3046 0x21DB3
+0x3047 0x21DC7
+0x3048 0x21DD2
+0x3049 0x21DB8
+0x304A 0x21DAC
+0x304B 0x21DAE
+0x304C 0x21DCF
+0x304D 0x21DC5
+0x304E 0x2F87B
+0x304F 0x21DCC
+0x3050 0x21DAB
+0x3051 0x21DC9
+0x3052 0x21DB9
+0x3053 0x21FFB
+0x3054 0x21FF8
+0x3055 0x21FF7
+0x3056 0x21FF9
+0x3057 0x22020
+0x3058 0x2203B
+0x3059 0x22039
+0x305A 0x2209E
+0x305B 0x2209A
+0x305C 0x220AA
+0x305D 0x220AB
+0x305E 0x220AF
+0x305F 0x22096
+0x3060 0x220A9
+0x3061 0x220A6
+0x3062 0x22091
+0x3064 0x220AE
+0x3065 0x2209F
+0x3066 0x220AC
+0x3067 0x220A0
+0x3068 0x22192
+0x3069 0x22191
+0x306A 0x221BF
+0x306B 0x22217
+0x306C 0x2220A
+0x306D 0x2220C
+0x306E 0x2234A
+0x306F 0x22346
+0x3070 0x22334
+0x3071 0x22345
+0x3072 0x22343
+0x3073 0x22344
+0x3074 0x2F893
+0x3075 0x22387
+0x3076 0x22386
+0x3077 0x2238A
+0x3078 0x223DA
+0x3079 0x223D8
+0x307B 0x20518
+0x307C 0x20134
+0x307D 0x223D6
+0x307E 0x223D4
+0x3121 0x22454
+0x3122 0x22459
+0x3123 0x2245A
+0x3124 0x22457
+0x3126 0x224DD
+0x3127 0x224E9
+0x3128 0x224E0
+0x3129 0x22605
+0x312A 0x22612
+0x312B 0x22613
+0x312C 0x22607
+0x312D 0x22616
+0x312E 0x22623
+0x312F 0x22602
+0x3130 0x2F8A1
+0x3131 0x2264A
+0x3132 0x22636
+0x3133 0x22640
+0x3134 0x22656
+0x3135 0x22643
+0x3136 0x2F8A0
+0x3137 0x2264B
+0x3138 0x22646
+0x3139 0x2263E
+0x313A 0x22649
+0x313B 0x229A7
+0x313C 0x229B6
+0x313D 0x229A6
+0x313E 0x229A8
+0x313F 0x229AC
+0x3140 0x229A9
+0x3141 0x229AB
+0x3142 0x22A38
+0x3143 0x22A37
+0x3144 0x22A39
+0x3145 0x22A41
+0x3146 0x22A3E
+0x3147 0x22AC0
+0x3148 0x22ABB
+0x3149 0x22ABF
+0x314A 0x22ABD
+0x314B 0x22AFE
+0x314C 0x22B1E
+0x314D 0x22AEE
+0x314E 0x22AFC
+0x314F 0x2F8B7
+0x3150 0x22AF9
+0x3151 0x22B06
+0x3152 0x22AE4
+0x3153 0x22AE9
+0x3154 0x22AE5
+0x3155 0x22B03
+0x3156 0x22AFD
+0x3157 0x22B49
+0x3158 0x22EBE
+0x3159 0x22F0A
+0x315A 0x25626
+0x315B 0x22F18
+0x315C 0x22F0D
+0x315D 0x22F0F
+0x315E 0x22F0E
+0x315F 0x22F20
+0x3160 0x23071
+0x3161 0x23099
+0x3162 0x230E2
+0x3163 0x230DF
+0x3164 0x230DE
+0x3165 0x23178
+0x3166 0x23179
+0x3168 0x2317C
+0x3169 0x2317D
+0x316A 0x23184
+0x316B 0x2318B
+0x316C 0x2318A
+0x316D 0x2F8D2
+0x316E 0x23189
+0x316F 0x2332C
+0x3170 0x23329
+0x3171 0x2336C
+0x3173 0x23409
+0x3174 0x23408
+0x3175 0x2340C
+0x3176 0x2340D
+0x3177 0x23410
+0x3179 0x2389F
+0x317A 0x23898
+0x317B 0x238A2
+0x317C 0x2389A
+0x317D 0x239D5
+0x317E 0x239E2
+0x3221 0x239F0
+0x3222 0x239EA
+0x3223 0x239EB
+0x3224 0x239ED
+0x3225 0x239E8
+0x3226 0x239E0
+0x3227 0x23A85
+0x3228 0x23A86
+0x3229 0x23AF0
+0x322A 0x21E46
+0x322B 0x23B45
+0x322C 0x23B38
+0x322D 0x23B3E
+0x322E 0x23B42
+0x322F 0x23B40
+0x3230 0x23C47
+0x3231 0x23C5C
+0x3232 0x23C5E
+0x3233 0x23CB4
+0x3234 0x23CC2
+0x3235 0x23D14
+0x3236 0x23CE5
+0x3237 0x23D15
+0x3238 0x23D11
+0x3239 0x2F8FF
+0x323A 0x23CEE
+0x323B 0x23CE7
+0x323C 0x23CF5
+0x323D 0x23CF4
+0x323E 0x23CE8
+0x323F 0x23D01
+0x3240 0x23CEF
+0x3241 0x23CF1
+0x3242 0x2F900
+0x3243 0x241DB
+0x3244 0x241BF
+0x3245 0x241DA
+0x3246 0x241C7
+0x3247 0x241DD
+0x3248 0x2F91A
+0x3249 0x241EB
+0x324A 0x241E1
+0x324B 0x241C1
+0x324C 0x241BD
+0x324D 0x24507
+0x324E 0x244FD
+0x324F 0x24501
+0x3250 0x2450A
+0x3251 0x24503
+0x3252 0x24572
+0x3253 0x24574
+0x3254 0x24575
+0x3255 0x245B2
+0x3256 0x245B1
+0x3257 0x245B4
+0x3258 0x2464C
+0x3259 0x24642
+0x325A 0x24640
+0x325B 0x24649
+0x325C 0x2463C
+0x325D 0x2464D
+0x325E 0x2464A
+0x325F 0x2463B
+0x3260 0x24761
+0x3261 0x24774
+0x3262 0x2F926
+0x3263 0x2477F
+0x3264 0x2477A
+0x3265 0x24788
+0x3266 0x2477C
+0x3268 0x24770
+0x3269 0x2490F
+0x326A 0x24928
+0x326B 0x24913
+0x326C 0x2492A
+0x326D 0x24AED
+0x326E 0x24AEF
+0x326F 0x24B2E
+0x3270 0x24BC1
+0x3271 0x24BDD
+0x3272 0x20B47
+0x3273 0x24C2D
+0x3274 0x24C2B
+0x3275 0x24C35
+0x3276 0x24C2F
+0x3277 0x24C31
+0x3278 0x24C34
+0x3279 0x2F935
+0x327A 0x24C30
+0x327B 0x24D3A
+0x327C 0x24D39
+0x327D 0x24D37
+0x327E 0x24D4B
+0x3321 0x24D54
+0x3322 0x24D4D
+0x3323 0x24D51
+0x3324 0x24D47
+0x3325 0x24F27
+0x3326 0x24F50
+0x3327 0x24F4D
+0x3328 0x24F4E
+0x3329 0x24F54
+0x332A 0x24FD2
+0x332B 0x24FCE
+0x332C 0x2504B
+0x332D 0x25049
+0x332E 0x25105
+0x332F 0x2510F
+0x3330 0x25119
+0x3331 0x2F943
+0x3332 0x25106
+0x3333 0x2510C
+0x3334 0x25129
+0x3335 0x25104
+0x3336 0x25108
+0x3337 0x25125
+0x3339 0x25103
+0x333A 0x25127
+0x333B 0x25110
+0x333C 0x2510A
+0x333D 0x2F942
+0x333E 0x26B5D
+0x333F 0x253AA
+0x3340 0x253AB
+0x3341 0x253A9
+0x3342 0x25441
+0x3343 0x2543A
+0x3344 0x2543C
+0x3345 0x2542B
+0x3346 0x25449
+0x3347 0x25615
+0x3349 0x25616
+0x334A 0x2F953
+0x334B 0x25631
+0x334C 0x23C4A
+0x334D 0x2573C
+0x334E 0x2577C
+0x334F 0x2576D
+0x3350 0x2576A
+0x3351 0x25763
+0x3352 0x2576B
+0x3353 0x2577B
+0x3354 0x25764
+0x3355 0x2577A
+0x3356 0x25769
+0x3357 0x2576F
+0x3358 0x25937
+0x3359 0x25935
+0x335A 0x2593C
+0x335B 0x25936
+0x335C 0x2593D
+0x335D 0x2593E
+0x335E 0x25AE1
+0x335F 0x25AE0
+0x3360 0x25E2D
+0x3361 0x25E2B
+0x3362 0x25F8D
+0x3363 0x25F92
+0x3365 0x25F8E
+0x3366 0x2F96B
+0x3367 0x25F91
+0x3368 0x25F96
+0x3369 0x2627B
+0x336A 0x26278
+0x336B 0x26281
+0x336C 0x26296
+0x336D 0x262A3
+0x336E 0x26295
+0x336F 0x26297
+0x3370 0x26354
+0x3371 0x26352
+0x3372 0x263F5
+0x3373 0x26400
+0x3374 0x263FB
+0x3375 0x263F4
+0x3376 0x263F6
+0x3377 0x264E8
+0x3378 0x264EA
+0x3379 0x2663E
+0x337A 0x2663D
+0x337B 0x2663B
+0x337C 0x26680
+0x337E 0x26688
+0x3421 0x26681
+0x3422 0x26682
+0x3423 0x266CE
+0x3424 0x26683
+0x3425 0x26677
+0x3426 0x26679
+0x3427 0x26673
+0x3428 0x2666D
+0x3429 0x26670
+0x342A 0x2668D
+0x342B 0x26675
+0x342C 0x2668C
+0x342D 0x2666A
+0x342E 0x26691
+0x342F 0x26689
+0x3430 0x2668E
+0x3431 0x212DC
+0x3432 0x268FF
+0x3433 0x26959
+0x3434 0x269C7
+0x3435 0x26A12
+0x3436 0x26A14
+0x3437 0x26A13
+0x3438 0x26ACB
+0x3439 0x26B42
+0x343B 0x26B3D
+0x343D 0x26B40
+0x343E 0x26B44
+0x343F 0x26B62
+0x3440 0x26B43
+0x3441 0x26B3F
+0x3442 0x26B45
+0x3443 0x26B3C
+0x3444 0x2F997
+0x3445 0x26B46
+0x3446 0x26B47
+0x3447 0x2F9B3
+0x3448 0x2719E
+0x3449 0x2719D
+0x344A 0x2722C
+0x344B 0x27229
+0x344C 0x2722F
+0x344D 0x2722E
+0x344E 0x27230
+0x344F 0x275E1
+0x3450 0x275E2
+0x3451 0x2760E
+0x3452 0x27619
+0x3453 0x27612
+0x3454 0x278B4
+0x3455 0x27BDA
+0x3456 0x27D26
+0x3457 0x27E59
+0x3458 0x27E5A
+0x3459 0x27E88
+0x345A 0x27FC0
+0x345B 0x27FBA
+0x345C 0x282A0
+0x345D 0x2F9DD
+0x345E 0x282A2
+0x345F 0x28486
+0x3461 0x2849D
+0x3462 0x28488
+0x3463 0x2848F
+0x3464 0x2848E
+0x3465 0x2849B
+0x3466 0x286C1
+0x3467 0x286C3
+0x3468 0x286C4
+0x3469 0x28696
+0x346A 0x286C7
+0x346B 0x286C6
+0x346C 0x286BF
+0x346E 0x2890F
+0x346F 0x28E55
+0x3470 0x28E42
+0x3471 0x28E46
+0x3472 0x28E4B
+0x3473 0x28E43
+0x3474 0x28E53
+0x3475 0x28E48
+0x3476 0x28E49
+0x3477 0x28E4A
+0x3478 0x28E4E
+0x3479 0x24BDE
+0x347A 0x20691
+0x347B 0x2944B
+0x347C 0x29680
+0x347D 0x29681
+0x347E 0x29683
+0x3521 0x2028A
+0x3522 0x29682
+0x3523 0x22342
+0x3524 0x20922
+0x3525 0x20070
+0x3526 0x20071
+0x3527 0x200BC
+0x3528 0x21D18
+0x3529 0x200BE
+0x352A 0x200BA
+0x352B 0x200F8
+0x352C 0x20137
+0x352D 0x20135
+0x352E 0x20AFC
+0x352F 0x20156
+0x3530 0x20159
+0x3531 0x2015E
+0x3532 0x2026D
+0x3533 0x20291
+0x3534 0x20292
+0x3535 0x20268
+0x3536 0x20266
+0x3537 0x20273
+0x3539 0x20296
+0x353A 0x2028B
+0x353B 0x2028C
+0x353C 0x20496
+0x353D 0x204EE
+0x353E 0x2051C
+0x353F 0x2051A
+0x3540 0x20519
+0x3541 0x2051B
+0x3542 0x2055D
+0x3543 0x2055E
+0x3544 0x2F818
+0x3545 0x205DC
+0x3546 0x205E2
+0x3547 0x20652
+0x3548 0x20692
+0x3549 0x20730
+0x354A 0x20752
+0x354B 0x20742
+0x354C 0x20741
+0x354D 0x20745
+0x354E 0x20737
+0x354F 0x20740
+0x3550 0x2073F
+0x3551 0x2073D
+0x3552 0x20738
+0x3553 0x2073A
+0x3554 0x20749
+0x3555 0x2086B
+0x3556 0x20878
+0x3557 0x20879
+0x3558 0x2F826
+0x3559 0x2086C
+0x355A 0x208E9
+0x355B 0x208E6
+0x355C 0x208E5
+0x355D 0x208EA
+0x355E 0x208E7
+0x355F 0x208E8
+0x3560 0x2091F
+0x3561 0x2094B
+0x3562 0x2094A
+0x3563 0x20953
+0x3564 0x20976
+0x3565 0x209A3
+0x3566 0x209A4
+0x3567 0x209F6
+0x3568 0x209F3
+0x3569 0x209F9
+0x356A 0x209F7
+0x356B 0x209FC
+0x356C 0x20A1D
+0x356D 0x20A6D
+0x356E 0x20A71
+0x356F 0x20A6C
+0x3570 0x20A6E
+0x3571 0x20A70
+0x3572 0x20A6F
+0x3573 0x20A67
+0x3574 0x20A68
+0x3575 0x20AFA
+0x3576 0x20AF9
+0x3577 0x20B4E
+0x3579 0x20B4D
+0x357A 0x20B4F
+0x357B 0x20B4A
+0x357C 0x20B4C
+0x357E 0x2F842
+0x3621 0x20CEE
+0x3622 0x20CB2
+0x3623 0x20CC0
+0x3624 0x20CC1
+0x3625 0x20CF4
+0x3626 0x20CC8
+0x3627 0x20CC5
+0x3628 0x20CC6
+0x3629 0x20CAD
+0x362A 0x211E2
+0x362B 0x211EA
+0x362C 0x211E3
+0x362D 0x211E1
+0x362E 0x212F7
+0x362F 0x21301
+0x3630 0x21312
+0x3631 0x212F6
+0x3632 0x212F1
+0x3633 0x2131F
+0x3634 0x212EE
+0x3635 0x2F852
+0x3636 0x212F3
+0x3637 0x21315
+0x3638 0x21316
+0x3639 0x21317
+0x363A 0x212F8
+0x363B 0x21319
+0x363C 0x212F2
+0x363D 0x212F4
+0x363E 0x212F5
+0x363F 0x21313
+0x3640 0x21306
+0x3641 0x21526
+0x3642 0x21524
+0x3643 0x2155A
+0x3644 0x22EC8
+0x3645 0x21597
+0x3646 0x21595
+0x3647 0x2159A
+0x3648 0x2161F
+0x3649 0x20AFB
+0x364A 0x21629
+0x364B 0x21620
+0x364C 0x2F862
+0x364D 0x2F863
+0x364E 0x2174C
+0x364F 0x21730
+0x3650 0x21738
+0x3651 0x2173D
+0x3652 0x21751
+0x3653 0x2174F
+0x3654 0x2174A
+0x3655 0x21734
+0x3656 0x21736
+0x3658 0x2196A
+0x3659 0x21968
+0x365A 0x21A1C
+0x365B 0x21A0E
+0x365C 0x21A1E
+0x365E 0x21A09
+0x365F 0x21A08
+0x3660 0x21A13
+0x3661 0x21A01
+0x3662 0x21A0F
+0x3663 0x21A14
+0x3664 0x21A06
+0x3665 0x21A07
+0x3667 0x2F873
+0x3669 0x21B79
+0x366A 0x21BEA
+0x366B 0x21BED
+0x366C 0x21BE9
+0x366D 0x21BEE
+0x366E 0x21C68
+0x366F 0x21C64
+0x3670 0x21C67
+0x3671 0x21C72
+0x3672 0x21C62
+0x3673 0x21C74
+0x3674 0x21C79
+0x3675 0x21D19
+0x3676 0x21D17
+0x3677 0x21D15
+0x3678 0x21D16
+0x3679 0x21DE6
+0x367A 0x262A4
+0x367B 0x21DEE
+0x367D 0x21DDF
+0x367E 0x21DE4
+0x3721 0x21DDA
+0x3722 0x21DEA
+0x3723 0x21DED
+0x3724 0x21DE3
+0x3725 0x21DE9
+0x3726 0x21FFD
+0x3727 0x20657
+0x3728 0x22021
+0x3729 0x220C6
+0x372A 0x220B8
+0x372B 0x220CB
+0x372C 0x2F885
+0x372D 0x220BD
+0x372E 0x220B5
+0x372F 0x220BB
+0x3730 0x220BF
+0x3731 0x220BE
+0x3732 0x220B2
+0x3733 0x220C1
+0x3734 0x220C2
+0x3735 0x22199
+0x3736 0x221C6
+0x3737 0x2222C
+0x3738 0x2222D
+0x3739 0x22225
+0x373A 0x2221E
+0x373B 0x2221F
+0x373C 0x22223
+0x373D 0x22350
+0x373E 0x2234E
+0x373F 0x2234D
+0x3740 0x22352
+0x3741 0x223E9
+0x3742 0x223EC
+0x3743 0x223E8
+0x3744 0x22458
+0x3745 0x2245C
+0x3746 0x2245B
+0x3747 0x2248F
+0x3748 0x23972
+0x3749 0x224F6
+0x374A 0x22500
+0x374B 0x224FC
+0x374C 0x224F8
+0x374D 0x224EA
+0x374E 0x224FE
+0x374F 0x224F7
+0x3750 0x224FD
+0x3751 0x22670
+0x3752 0x22662
+0x3753 0x22644
+0x3755 0x2264D
+0x3756 0x2264C
+0x3757 0x2263F
+0x3758 0x22666
+0x3759 0x22635
+0x375B 0x22634
+0x375C 0x2268D
+0x375D 0x22684
+0x375F 0x22686
+0x3760 0x22689
+0x3761 0x22687
+0x3762 0x22683
+0x3763 0x22675
+0x3764 0x22679
+0x3765 0x226AF
+0x3766 0x226B0
+0x3767 0x229B7
+0x3768 0x229BB
+0x3769 0x229B9
+0x376A 0x22A46
+0x376B 0x22A47
+0x376C 0x22A45
+0x376D 0x22AEA
+0x376E 0x22AF6
+0x376F 0x22B68
+0x3770 0x22B39
+0x3771 0x2F8B9
+0x3772 0x22B3D
+0x3773 0x22B3B
+0x3774 0x22B4D
+0x3775 0x22B30
+0x3776 0x22B4A
+0x3777 0x22B3E
+0x3778 0x22B40
+0x3779 0x22B4C
+0x377A 0x22B47
+0x377B 0x22B38
+0x377C 0x22B52
+0x377D 0x22B3A
+0x377E 0x22B53
+0x3821 0x22EC4
+0x3822 0x22EC1
+0x3823 0x22F1C
+0x3824 0x22F1D
+0x3825 0x22F2A
+0x3826 0x22F1E
+0x3827 0x22F2F
+0x3828 0x22F22
+0x3829 0x22F2E
+0x382A 0x22F25
+0x382D 0x2304A
+0x382E 0x2304B
+0x382F 0x23076
+0x3831 0x230E8
+0x3832 0x230EF
+0x3833 0x230E9
+0x3835 0x230EA
+0x3836 0x2F8CC
+0x3838 0x2319B
+0x3839 0x2319E
+0x383A 0x23193
+0x383B 0x231A7
+0x383C 0x2319C
+0x383D 0x231A0
+0x383E 0x2319A
+0x383F 0x231AB
+0x3840 0x231BE
+0x3841 0x231A9
+0x3842 0x2332D
+0x3843 0x2336E
+0x3844 0x23444
+0x3845 0x2343D
+0x3846 0x2343A
+0x3847 0x23468
+0x3848 0x2343C
+0x3849 0x2346A
+0x384A 0x2F8E0
+0x384B 0x23438
+0x384C 0x23465
+0x384D 0x23439
+0x384E 0x2346D
+0x384F 0x23436
+0x3850 0x2F8E3
+0x3851 0x2343E
+0x3852 0x2347E
+0x3853 0x23437
+0x3854 0x23899
+0x3855 0x238A9
+0x3856 0x238AD
+0x3857 0x238A7
+0x3858 0x238A8
+0x3859 0x23966
+0x385A 0x23969
+0x385B 0x2396D
+0x385C 0x23967
+0x385D 0x2396B
+0x385E 0x2396A
+0x385F 0x239EE
+0x3860 0x23A01
+0x3861 0x23A03
+0x3862 0x239F4
+0x3863 0x239FB
+0x3865 0x239F6
+0x3866 0x239FC
+0x3867 0x23AF4
+0x3868 0x23B08
+0x3869 0x23B0A
+0x386A 0x23B09
+0x386B 0x23B6D
+0x386C 0x23B62
+0x386D 0x23B41
+0x386E 0x23B5E
+0x386F 0x23B5C
+0x3870 0x23CF3
+0x3871 0x23D26
+0x3873 0x23D39
+0x3874 0x2F904
+0x3875 0x23D6C
+0x3876 0x23D2B
+0x3877 0x23D2E
+0x3878 0x23D3B
+0x3879 0x23D5E
+0x387A 0x23DFB
+0x387B 0x23D27
+0x387C 0x23D24
+0x387D 0x23D69
+0x387E 0x23D30
+0x3921 0x2F905
+0x3922 0x23D62
+0x3923 0x23D38
+0x3924 0x23D35
+0x3925 0x23D2A
+0x3926 0x23D2C
+0x3927 0x23D68
+0x3928 0x23D31
+0x3929 0x23D2F
+0x392A 0x23D2D
+0x392B 0x23D3A
+0x392C 0x23D36
+0x392D 0x2F903
+0x392E 0x23D21
+0x392F 0x23D3C
+0x3930 0x23D20
+0x3931 0x23D64
+0x3932 0x23D3E
+0x3934 0x241F7
+0x3935 0x24212
+0x3936 0x241F1
+0x3937 0x241F5
+0x3938 0x24222
+0x3939 0x241F2
+0x393A 0x241DF
+0x393B 0x24215
+0x393C 0x24216
+0x393D 0x2457A
+0x393E 0x24576
+0x393F 0x245BE
+0x3941 0x245BD
+0x3942 0x24609
+0x3943 0x24608
+0x3944 0x24657
+0x3945 0x247A3
+0x3946 0x247BF
+0x3947 0x247B8
+0x3948 0x247AF
+0x3949 0x2479C
+0x394A 0x247A5
+0x394B 0x24772
+0x394C 0x24775
+0x394D 0x2479D
+0x394E 0x24799
+0x394F 0x247B9
+0x3950 0x2494E
+0x3951 0x24939
+0x3952 0x2493B
+0x3953 0x24935
+0x3954 0x2493C
+0x3955 0x24955
+0x3956 0x24AF0
+0x3957 0x24AF3
+0x3958 0x24AF4
+0x3959 0x24B3B
+0x395A 0x24B3C
+0x395B 0x24B3A
+0x395C 0x24B36
+0x395D 0x24C07
+0x395E 0x20CEB
+0x395F 0x24C55
+0x3960 0x24C50
+0x3961 0x24C4F
+0x3962 0x24C52
+0x3963 0x24C56
+0x3964 0x200BD
+0x3965 0x24C32
+0x3966 0x24D63
+0x3967 0x24D6B
+0x3968 0x24D66
+0x3969 0x24D57
+0x396A 0x24D5D
+0x396C 0x24D6D
+0x396D 0x24D61
+0x396E 0x24D69
+0x396F 0x24D5A
+0x3970 0x24D5C
+0x3971 0x24D62
+0x3972 0x24F2A
+0x3973 0x24F29
+0x3974 0x24F58
+0x3975 0x24F5A
+0x3976 0x24FD7
+0x3977 0x24FDB
+0x3978 0x24FDC
+0x3979 0x24FDD
+0x397A 0x24FD8
+0x397B 0x25054
+0x397C 0x2505B
+0x397D 0x2505C
+0x397E 0x25053
+0x3A21 0x2504F
+0x3A22 0x25056
+0x3A23 0x25050
+0x3A24 0x2505A
+0x3A25 0x2506B
+0x3A26 0x25136
+0x3A27 0x25153
+0x3A28 0x2513A
+0x3A29 0x2513C
+0x3A2A 0x2513E
+0x3A2B 0x25149
+0x3A2C 0x25140
+0x3A2D 0x2F946
+0x3A2E 0x2F947
+0x3A2F 0x25364
+0x3A30 0x25365
+0x3A31 0x253B5
+0x3A32 0x253B6
+0x3A33 0x253B2
+0x3A34 0x25448
+0x3A35 0x2544A
+0x3A36 0x25472
+0x3A37 0x25469
+0x3A38 0x2545A
+0x3A39 0x2544C
+0x3A3A 0x2562C
+0x3A3B 0x25630
+0x3A3C 0x2564B
+0x3A3D 0x25649
+0x3A3E 0x25642
+0x3A3F 0x25644
+0x3A40 0x2564A
+0x3A41 0x2564F
+0x3A42 0x25792
+0x3A43 0x2F957
+0x3A44 0x25797
+0x3A45 0x25780
+0x3A46 0x25782
+0x3A47 0x25786
+0x3A48 0x25953
+0x3A49 0x2595E
+0x3A4A 0x25952
+0x3A4B 0x2595B
+0x3A4C 0x2594E
+0x3A4D 0x25A6D
+0x3A4E 0x25A6E
+0x3A4F 0x25AFA
+0x3A50 0x25AF6
+0x3A51 0x25AFB
+0x3A52 0x25E33
+0x3A53 0x25E3D
+0x3A54 0x25E37
+0x3A55 0x25E3E
+0x3A56 0x25E35
+0x3A57 0x25F9A
+0x3A58 0x25FAB
+0x3A59 0x25FA6
+0x3A5A 0x25FB0
+0x3A5B 0x25F99
+0x3A5C 0x25FA0
+0x3A5D 0x25F9E
+0x3A5E 0x25FA8
+0x3A5F 0x25FA1
+0x3A60 0x25FAA
+0x3A61 0x25FAD
+0x3A62 0x25FBB
+0x3A63 0x25F9C
+0x3A64 0x25FA5
+0x3A65 0x200B3
+0x3A66 0x26227
+0x3A67 0x2628D
+0x3A68 0x2628E
+0x3A69 0x2628F
+0x3A6A 0x26292
+0x3A6C 0x26291
+0x3A6D 0x262AD
+0x3A6E 0x26357
+0x3A6F 0x26358
+0x3A70 0x2635E
+0x3A71 0x2635D
+0x3A72 0x2635C
+0x3A73 0x2635B
+0x3A75 0x2640A
+0x3A76 0x26403
+0x3A77 0x2640E
+0x3A78 0x264B8
+0x3A79 0x2654D
+0x3A7A 0x2653F
+0x3A7B 0x26547
+0x3A7C 0x2654B
+0x3A7D 0x2654A
+0x3A7E 0x2653D
+0x3B22 0x26541
+0x3B23 0x2654C
+0x3B25 0x26662
+0x3B26 0x26669
+0x3B27 0x26661
+0x3B29 0x266AA
+0x3B2A 0x266A6
+0x3B2B 0x266AC
+0x3B2C 0x266BD
+0x3B2D 0x266BB
+0x3B2E 0x266A4
+0x3B2F 0x266BA
+0x3B30 0x2669A
+0x3B32 0x266A1
+0x3B33 0x266C1
+0x3B34 0x268E0
+0x3B35 0x2690A
+0x3B36 0x26903
+0x3B37 0x26906
+0x3B38 0x26939
+0x3B39 0x2693A
+0x3B3A 0x26936
+0x3B3B 0x2695B
+0x3B3C 0x2695F
+0x3B3D 0x2695E
+0x3B3E 0x26967
+0x3B3F 0x26961
+0x3B40 0x26962
+0x3B41 0x2695D
+0x3B42 0x269CA
+0x3B43 0x269CC
+0x3B44 0x269CE
+0x3B45 0x26A18
+0x3B46 0x26A1D
+0x3B47 0x26A1F
+0x3B48 0x26A20
+0x3B49 0x26A17
+0x3B4A 0x26A15
+0x3B4B 0x26B1F
+0x3B4C 0x26B27
+0x3B4D 0x26B26
+0x3B4E 0x21E10
+0x3B4F 0x26B8B
+0x3B50 0x26BAE
+0x3B51 0x26B8A
+0x3B52 0x2F999
+0x3B53 0x26B92
+0x3B54 0x26B89
+0x3B55 0x26B87
+0x3B57 0x26B8F
+0x3B58 0x26B84
+0x3B59 0x26B83
+0x3B5A 0x26B8C
+0x3B5B 0x26B93
+0x3B5C 0x26B8D
+0x3B5D 0x26B98
+0x3B5E 0x26B7D
+0x3B5F 0x26B7E
+0x3B60 0x26BD2
+0x3B61 0x26B80
+0x3B62 0x26B99
+0x3B63 0x271AC
+0x3B64 0x27250
+0x3B65 0x27255
+0x3B66 0x27242
+0x3B67 0x2723F
+0x3B68 0x2723C
+0x3B6A 0x2724C
+0x3B6B 0x27249
+0x3B6C 0x27257
+0x3B6D 0x27258
+0x3B6E 0x2724F
+0x3B6F 0x2725C
+0x3B70 0x27247
+0x3B71 0x2F9B7
+0x3B72 0x275AB
+0x3B74 0x275AF
+0x3B75 0x275AD
+0x3B76 0x275E8
+0x3B77 0x275E7
+0x3B78 0x27630
+0x3B79 0x27626
+0x3B7A 0x2762F
+0x3B7B 0x27628
+0x3B7C 0x2762B
+0x3B7D 0x2761D
+0x3B7E 0x2762D
+0x3C21 0x27620
+0x3C22 0x2762A
+0x3C23 0x2762C
+0x3C24 0x27635
+0x3C25 0x27621
+0x3C26 0x27623
+0x3C27 0x27624
+0x3C28 0x27636
+0x3C29 0x27637
+0x3C2A 0x277E9
+0x3C2B 0x278BA
+0x3C2C 0x278B8
+0x3C2D 0x2F9CC
+0x3C2E 0x2796D
+0x3C2F 0x2796A
+0x3C30 0x27968
+0x3C31 0x27969
+0x3C32 0x2796B
+0x3C33 0x27961
+0x3C34 0x27BDC
+0x3C35 0x27BDB
+0x3C36 0x27C2D
+0x3C37 0x27C2C
+0x3C38 0x27CA2
+0x3C39 0x27D2B
+0x3C3A 0x27D32
+0x3C3B 0x2F9D7
+0x3C3C 0x27E94
+0x3C3D 0x27E92
+0x3C3E 0x27E90
+0x3C3F 0x27FC9
+0x3C40 0x27FC4
+0x3C41 0x27FC1
+0x3C42 0x27FC3
+0x3C43 0x27FCD
+0x3C44 0x28214
+0x3C45 0x282A7
+0x3C46 0x282AF
+0x3C47 0x282AA
+0x3C48 0x2840D
+0x3C49 0x28454
+0x3C4A 0x2845B
+0x3C4B 0x28461
+0x3C4C 0x284AE
+0x3C4D 0x284B3
+0x3C4E 0x284C0
+0x3C4F 0x284C4
+0x3C50 0x284BF
+0x3C51 0x284CB
+0x3C52 0x284AD
+0x3C53 0x284A7
+0x3C54 0x284A4
+0x3C55 0x284BD
+0x3C56 0x284AF
+0x3C57 0x284B2
+0x3C58 0x284A5
+0x3C59 0x286E7
+0x3C5A 0x286E0
+0x3C5B 0x286CE
+0x3C5C 0x286DE
+0x3C5D 0x286D5
+0x3C5E 0x286DF
+0x3C5F 0x286D9
+0x3C60 0x287F2
+0x3C61 0x28923
+0x3C62 0x28940
+0x3C64 0x2893E
+0x3C66 0x28CCF
+0x3C67 0x20B54
+0x3C68 0x28E5B
+0x3C69 0x28E58
+0x3C6A 0x28E62
+0x3C6B 0x28E5F
+0x3C6C 0x28E67
+0x3C6D 0x28E63
+0x3C6E 0x28E5E
+0x3C6F 0x28E60
+0x3C70 0x28F85
+0x3C71 0x28F86
+0x3C72 0x28F87
+0x3C73 0x291E8
+0x3C74 0x291E6
+0x3C75 0x29671
+0x3C76 0x29685
+0x3C77 0x2FA02
+0x3C78 0x29686
+0x3C79 0x29810
+0x3C7A 0x209F8
+0x3C7B 0x200BF
+0x3C7C 0x20B61
+0x3C7D 0x200FE
+0x3C7E 0x200FC
+0x3D21 0x20139
+0x3D22 0x20161
+0x3D23 0x20160
+0x3D24 0x202E2
+0x3D25 0x202EA
+0x3D26 0x202E3
+0x3D27 0x202B4
+0x3D28 0x202AE
+0x3D29 0x202BE
+0x3D2A 0x202B8
+0x3D2B 0x202A8
+0x3D2C 0x202AA
+0x3D2D 0x202A9
+0x3D2E 0x202B3
+0x3D2F 0x202D5
+0x3D30 0x202AD
+0x3D31 0x202B9
+0x3D32 0x202BB
+0x3D33 0x202B1
+0x3D34 0x202C2
+0x3D35 0x2F808
+0x3D36 0x202EB
+0x3D37 0x202BA
+0x3D38 0x202D2
+0x3D39 0x202D4
+0x3D3A 0x204F1
+0x3D3B 0x2051D
+0x3D3C 0x2F812
+0x3D3D 0x20562
+0x3D3E 0x2058C
+0x3D3F 0x205E6
+0x3D40 0x205E7
+0x3D41 0x2065A
+0x3D42 0x20658
+0x3D43 0x20659
+0x3D44 0x20696
+0x3D45 0x20697
+0x3D46 0x20761
+0x3D47 0x20767
+0x3D48 0x20771
+0x3D49 0x20765
+0x3D4A 0x2077D
+0x3D4B 0x2077E
+0x3D4C 0x2087D
+0x3D4D 0x20884
+0x3D4E 0x2087C
+0x3D4F 0x2087E
+0x3D50 0x2087F
+0x3D51 0x20880
+0x3D52 0x208EF
+0x3D53 0x208F4
+0x3D54 0x2091E
+0x3D55 0x2094E
+0x3D56 0x209FB
+0x3D57 0x209FA
+0x3D58 0x209FD
+0x3D59 0x2F831
+0x3D5A 0x2F832
+0x3D5B 0x20A79
+0x3D5C 0x20A7C
+0x3D5D 0x20A7D
+0x3D5E 0x20A84
+0x3D5F 0x20A7B
+0x3D60 0x20A78
+0x3D62 0x20B5E
+0x3D63 0x20B5A
+0x3D64 0x20B5C
+0x3D65 0x20B59
+0x3D66 0x20B55
+0x3D67 0x20B63
+0x3D68 0x20B56
+0x3D69 0x20B5F
+0x3D6A 0x20B60
+0x3D6B 0x20B5B
+0x3D6C 0x20D4A
+0x3D6D 0x20D65
+0x3D6E 0x20DB3
+0x3D6F 0x20D2C
+0x3D70 0x20D77
+0x3D71 0x20D3D
+0x3D72 0x20D52
+0x3D73 0x20D61
+0x3D74 0x20D2A
+0x3D75 0x20D3E
+0x3D76 0x20D34
+0x3D77 0x20D29
+0x3D78 0x20DB2
+0x3D79 0x20DAD
+0x3D7A 0x20D40
+0x3D7B 0x20D53
+0x3D7C 0x2F844
+0x3D7D 0x20D3F
+0x3D7E 0x20D41
+0x3E21 0x20D72
+0x3E22 0x211F6
+0x3E23 0x211F5
+0x3E24 0x211F4
+0x3E25 0x211F2
+0x3E26 0x211F9
+0x3E27 0x21327
+0x3E28 0x21354
+0x3E29 0x21355
+0x3E2A 0x2132E
+0x3E2B 0x2F854
+0x3E2C 0x2F853
+0x3E2D 0x2132C
+0x3E2E 0x21338
+0x3E2F 0x21339
+0x3E30 0x21331
+0x3E31 0x2134F
+0x3E32 0x21373
+0x3E33 0x21330
+0x3E34 0x2132B
+0x3E35 0x21351
+0x3E36 0x2152C
+0x3E37 0x2155B
+0x3E38 0x2155C
+0x3E39 0x21568
+0x3E3A 0x2156C
+0x3E3B 0x2156B
+0x3E3C 0x21569
+0x3E3D 0x2159F
+0x3E3E 0x21638
+0x3E3F 0x2163C
+0x3E40 0x2163A
+0x3E41 0x21635
+0x3E43 0x21639
+0x3E44 0x21636
+0x3E45 0x2163B
+0x3E46 0x21760
+0x3E47 0x21761
+0x3E48 0x21763
+0x3E49 0x21764
+0x3E4A 0x21794
+0x3E4B 0x21793
+0x3E4C 0x2175E
+0x3E4D 0x21768
+0x3E4E 0x2176A
+0x3E4F 0x21765
+0x3E50 0x2F866
+0x3E51 0x21790
+0x3E52 0x2175F
+0x3E53 0x21772
+0x3E54 0x2F865
+0x3E55 0x21A3C
+0x3E56 0x21A27
+0x3E57 0x21A24
+0x3E58 0x21A26
+0x3E59 0x21A25
+0x3E5B 0x21A28
+0x3E5C 0x21A36
+0x3E5D 0x21B31
+0x3E5E 0x21B30
+0x3E5F 0x21B34
+0x3E60 0x21B81
+0x3E61 0x21B7D
+0x3E62 0x21B82
+0x3E63 0x21B80
+0x3E65 0x202D3
+0x3E66 0x21BF2
+0x3E67 0x21C66
+0x3E68 0x21C8C
+0x3E69 0x21C7B
+0x3E6A 0x21C83
+0x3E6C 0x21C8E
+0x3E6D 0x21C7A
+0x3E6E 0x21C92
+0x3E6F 0x21C91
+0x3E70 0x21C82
+0x3E71 0x21D1B
+0x3E72 0x21D1C
+0x3E73 0x21E27
+0x3E74 0x21E21
+0x3E77 0x21E43
+0x3E79 0x21E18
+0x3E7A 0x21E7B
+0x3E7B 0x21E1A
+0x3E7C 0x21E4B
+0x3E7D 0x21E4A
+0x3E7E 0x21E4D
+0x3F21 0x21E4F
+0x3F22 0x21E19
+0x3F23 0x21E35
+0x3F24 0x21E13
+0x3F25 0x21E52
+0x3F26 0x21E14
+0x3F27 0x21E1E
+0x3F28 0x21E2C
+0x3F29 0x21E20
+0x3F2A 0x21E22
+0x3F2B 0x21E12
+0x3F2C 0x21E1F
+0x3F2D 0x22000
+0x3F2E 0x22023
+0x3F2F 0x22040
+0x3F30 0x22043
+0x3F31 0x220E4
+0x3F32 0x220DB
+0x3F33 0x220EA
+0x3F34 0x220DD
+0x3F35 0x220CC
+0x3F36 0x220D9
+0x3F37 0x220E8
+0x3F38 0x220F6
+0x3F39 0x220E3
+0x3F3A 0x220D3
+0x3F3B 0x220DA
+0x3F3C 0x220D6
+0x3F3D 0x220E7
+0x3F3E 0x2223A
+0x3F3F 0x2223F
+0x3F40 0x22240
+0x3F41 0x22248
+0x3F42 0x22259
+0x3F43 0x22237
+0x3F44 0x22244
+0x3F45 0x2F88C
+0x3F46 0x2F88B
+0x3F47 0x22255
+0x3F48 0x22239
+0x3F49 0x22354
+0x3F4A 0x22355
+0x3F4B 0x22356
+0x3F4C 0x22357
+0x3F4D 0x22358
+0x3F4E 0x22359
+0x3F4F 0x2238D
+0x3F50 0x223F2
+0x3F51 0x223F8
+0x3F52 0x223F5
+0x3F53 0x223F6
+0x3F54 0x223FC
+0x3F55 0x223FE
+0x3F56 0x223F1
+0x3F57 0x223FD
+0x3F58 0x2245E
+0x3F59 0x22496
+0x3F5A 0x22497
+0x3F5B 0x2249C
+0x3F5C 0x2249B
+0x3F5D 0x22495
+0x3F5E 0x2F89A
+0x3F5F 0x2251A
+0x3F60 0x22509
+0x3F61 0x22504
+0x3F62 0x2250E
+0x3F63 0x2251C
+0x3F64 0x22518
+0x3F65 0x2250D
+0x3F66 0x22510
+0x3F67 0x2250C
+0x3F68 0x22503
+0x3F69 0x2267B
+0x3F6A 0x226A6
+0x3F6B 0x22677
+0x3F6C 0x22688
+0x3F6D 0x22674
+0x3F6E 0x226DA
+0x3F6F 0x22676
+0x3F70 0x22678
+0x3F71 0x2268A
+0x3F72 0x2268F
+0x3F73 0x2267D
+0x3F74 0x22690
+0x3F75 0x226ED
+0x3F76 0x226D9
+0x3F77 0x226D0
+0x3F78 0x2271A
+0x3F79 0x226D7
+0x3F7A 0x226E2
+0x3F7B 0x226E1
+0x3F7C 0x226C5
+0x3F7D 0x226E0
+0x3F7E 0x226CA
+0x4021 0x22725
+0x4022 0x226CC
+0x4023 0x2F8B3
+0x4024 0x229C6
+0x4025 0x229C1
+0x4026 0x22A4D
+0x4027 0x22B4B
+0x4028 0x22B64
+0x4029 0x22B95
+0x402A 0x22B99
+0x402B 0x2F8BC
+0x402C 0x22B94
+0x402D 0x22BA2
+0x402E 0x22BAE
+0x402F 0x22B9E
+0x4030 0x22BA7
+0x4031 0x22B86
+0x4033 0x22BA4
+0x4034 0x22B91
+0x4035 0x22B93
+0x4036 0x2F8BB
+0x4037 0x22B88
+0x4038 0x22ECD
+0x4039 0x22ECA
+0x403A 0x22F3F
+0x403B 0x22F40
+0x403C 0x22F46
+0x403D 0x22F41
+0x403E 0x22F45
+0x403F 0x22F58
+0x4040 0x22F3B
+0x4041 0x22F48
+0x4042 0x2304E
+0x4043 0x23052
+0x4044 0x2304F
+0x4045 0x2307B
+0x4046 0x2307A
+0x4047 0x230A0
+0x4048 0x2309F
+0x4049 0x230FB
+0x404A 0x230F7
+0x404B 0x231B8
+0x404C 0x231B9
+0x404D 0x231BB
+0x404E 0x231B7
+0x4050 0x231BA
+0x4052 0x231DA
+0x4053 0x231B5
+0x4054 0x231BF
+0x4055 0x231BC
+0x4056 0x231C0
+0x4057 0x2F8D3
+0x4058 0x2F8D9
+0x4059 0x23375
+0x405A 0x23379
+0x405B 0x23376
+0x405C 0x23435
+0x405D 0x23440
+0x405E 0x234C0
+0x405F 0x23481
+0x4060 0x234AD
+0x4061 0x234AF
+0x4062 0x234AC
+0x4063 0x2348F
+0x4064 0x234A8
+0x4065 0x234AA
+0x4066 0x234A9
+0x4067 0x23488
+0x4068 0x2347F
+0x4069 0x23480
+0x406A 0x234BC
+0x406B 0x238AE
+0x406C 0x238BB
+0x406D 0x238BD
+0x406F 0x23978
+0x4070 0x23974
+0x4071 0x23A0C
+0x4072 0x23A11
+0x4073 0x23A08
+0x4074 0x23A06
+0x4075 0x23A10
+0x4076 0x23A8F
+0x4077 0x23A90
+0x4078 0x23A8D
+0x4079 0x23A8E
+0x407A 0x23A96
+0x407B 0x23A95
+0x407C 0x23B0B
+0x407D 0x23B0C
+0x407E 0x23B7C
+0x4121 0x23B73
+0x4122 0x23B75
+0x4123 0x23B76
+0x4124 0x23B7D
+0x4125 0x23B78
+0x4126 0x23B71
+0x4127 0x23C4B
+0x4128 0x23C4E
+0x4129 0x23D33
+0x412A 0x23D32
+0x412C 0x23D91
+0x412D 0x23DE7
+0x412E 0x23DE9
+0x412F 0x23DA2
+0x4130 0x23D94
+0x4131 0x23D87
+0x4132 0x23DA3
+0x4133 0x23DDD
+0x4134 0x23D7B
+0x4135 0x23D83
+0x4136 0x23D81
+0x4137 0x23DDF
+0x4138 0x23D7C
+0x4139 0x23DE4
+0x413A 0x23DE2
+0x413B 0x23D93
+0x413C 0x23D7D
+0x413D 0x23DBF
+0x413E 0x23D9B
+0x413F 0x23D8E
+0x4140 0x23D9F
+0x4142 0x23D8C
+0x4143 0x23D7F
+0x4144 0x23D9C
+0x4145 0x23D84
+0x4146 0x23D42
+0x4147 0x23DE6
+0x4148 0x24251
+0x4149 0x2424A
+0x414A 0x24264
+0x414B 0x24225
+0x414C 0x2422F
+0x414D 0x2422E
+0x414E 0x2422B
+0x414F 0x24228
+0x4150 0x24232
+0x4151 0x2422D
+0x4152 0x24231
+0x4153 0x24239
+0x4154 0x2422C
+0x4155 0x24261
+0x4156 0x24511
+0x4157 0x24510
+0x4158 0x24512
+0x4159 0x24553
+0x415A 0x24555
+0x415B 0x2457B
+0x415C 0x24581
+0x415D 0x2457D
+0x415E 0x2457C
+0x415F 0x245C2
+0x4160 0x245C5
+0x4161 0x2F922
+0x4162 0x245C4
+0x4163 0x2F923
+0x4164 0x2466B
+0x4165 0x24668
+0x4167 0x2465C
+0x4168 0x2465D
+0x4169 0x2466A
+0x416A 0x2F924
+0x416B 0x24C76
+0x416C 0x24776
+0x416E 0x247C4
+0x416F 0x247CB
+0x4170 0x247C8
+0x4171 0x247D4
+0x4172 0x247D5
+0x4173 0x247C9
+0x4174 0x247D7
+0x4176 0x24978
+0x4177 0x2495A
+0x4178 0x2495B
+0x4179 0x2495C
+0x417A 0x24956
+0x417B 0x24958
+0x417C 0x24971
+0x417D 0x269D4
+0x417E 0x24B40
+0x4221 0x2F933
+0x4222 0x24B3F
+0x4223 0x24B43
+0x4224 0x24B41
+0x4225 0x24BE2
+0x4226 0x24BE0
+0x4227 0x24BE3
+0x4228 0x24C66
+0x4229 0x24C73
+0x422A 0x24C6C
+0x422B 0x24C71
+0x422C 0x24C6A
+0x422D 0x24C6D
+0x422E 0x24C6E
+0x422F 0x24C6B
+0x4230 0x24D8C
+0x4231 0x24D77
+0x4232 0x2F93A
+0x4233 0x24D7F
+0x4234 0x24D89
+0x4235 0x24D7A
+0x4236 0x24D85
+0x4237 0x24D78
+0x4238 0x24D8A
+0x4239 0x24D86
+0x423A 0x24F2C
+0x423B 0x24F67
+0x423C 0x24F5B
+0x423D 0x24FE5
+0x423E 0x24FE1
+0x423F 0x25061
+0x4240 0x25069
+0x4241 0x2506A
+0x4242 0x25165
+0x4243 0x2516D
+0x4244 0x25163
+0x4245 0x25186
+0x4246 0x2515C
+0x4247 0x25162
+0x4248 0x2F948
+0x4249 0x25179
+0x424A 0x25169
+0x424B 0x25170
+0x424C 0x25176
+0x424D 0x2515D
+0x424E 0x25187
+0x424F 0x2516E
+0x4250 0x25171
+0x4251 0x2517C
+0x4252 0x25173
+0x4253 0x2515B
+0x4254 0x2516B
+0x4255 0x253BF
+0x4256 0x253C1
+0x4257 0x253BD
+0x4258 0x253C9
+0x4259 0x253BC
+0x425A 0x253C2
+0x425B 0x253C0
+0x425C 0x25492
+0x425D 0x254A9
+0x425E 0x2548F
+0x425F 0x25476
+0x4260 0x2547B
+0x4261 0x25475
+0x4262 0x254A4
+0x4263 0x25664
+0x4264 0x2573D
+0x4265 0x257AF
+0x4268 0x2579D
+0x4269 0x25799
+0x426A 0x257B1
+0x426B 0x25963
+0x426C 0x25962
+0x426D 0x25964
+0x426E 0x25969
+0x4270 0x25A75
+0x4271 0x25A73
+0x4272 0x25A71
+0x4273 0x25A74
+0x4274 0x25B0C
+0x4275 0x25B16
+0x4277 0x25B11
+0x4278 0x25B1F
+0x4279 0x25B1A
+0x427A 0x25B0D
+0x427B 0x25B1B
+0x427C 0x25B13
+0x427D 0x25E4E
+0x427E 0x25E55
+0x4321 0x25E50
+0x4323 0x25FD2
+0x4324 0x25FD3
+0x4325 0x25FD1
+0x4326 0x25FF1
+0x4327 0x25FDC
+0x4328 0x25FC8
+0x4329 0x25FCC
+0x432A 0x25FD0
+0x432B 0x25FCF
+0x432C 0x25FDF
+0x432D 0x2622B
+0x432E 0x2622E
+0x432F 0x2622D
+0x4330 0x2629D
+0x4331 0x2629E
+0x4332 0x2629F
+0x4333 0x262A9
+0x4334 0x262A0
+0x4335 0x26298
+0x4336 0x262A1
+0x4337 0x262AB
+0x4338 0x262AF
+0x4339 0x2636E
+0x433A 0x2635F
+0x433B 0x2635A
+0x433D 0x26365
+0x433E 0x26368
+0x433F 0x26372
+0x4340 0x26417
+0x4341 0x26416
+0x4342 0x26418
+0x4343 0x26419
+0x4344 0x2641A
+0x4345 0x26422
+0x4346 0x2641B
+0x4347 0x2641C
+0x4348 0x264BE
+0x4349 0x264EE
+0x434A 0x2655A
+0x434B 0x26550
+0x434C 0x26558
+0x434D 0x26554
+0x434E 0x26557
+0x434F 0x26556
+0x4350 0x26615
+0x4351 0x2669B
+0x4352 0x26693
+0x4353 0x26692
+0x4354 0x26672
+0x4355 0x26698
+0x4356 0x26699
+0x4357 0x266DF
+0x4359 0x266D5
+0x435B 0x266D4
+0x435C 0x266F3
+0x435D 0x266F4
+0x435E 0x266E7
+0x435F 0x266E1
+0x4360 0x266E6
+0x4361 0x266EB
+0x4362 0x266EC
+0x4363 0x202DB
+0x4365 0x2690D
+0x4366 0x2690C
+0x4367 0x21B2F
+0x4368 0x26968
+0x4369 0x26965
+0x436A 0x2696B
+0x436B 0x26969
+0x436C 0x269D1
+0x436D 0x269D3
+0x436E 0x26A27
+0x436F 0x26A28
+0x4372 0x26A24
+0x4373 0x26AD7
+0x4374 0x26BCA
+0x4375 0x26BC7
+0x4376 0x2F99E
+0x4377 0x26BD8
+0x4378 0x26BE1
+0x4379 0x26BC6
+0x437A 0x26BF8
+0x437B 0x26BC3
+0x437C 0x26BF4
+0x437D 0x26C17
+0x437E 0x26BEA
+0x4421 0x26BCB
+0x4422 0x26B86
+0x4423 0x26BC4
+0x4424 0x26BD9
+0x4425 0x26C19
+0x4426 0x26BC2
+0x4427 0x26BE2
+0x4429 0x26BDE
+0x442A 0x26BED
+0x442B 0x2F99C
+0x442D 0x26C1D
+0x442E 0x26BDD
+0x442F 0x26BDB
+0x4430 0x26BE8
+0x4431 0x26BE9
+0x4432 0x26BBF
+0x4433 0x26BE0
+0x4434 0x26BD1
+0x4435 0x26BDC
+0x4436 0x26BCE
+0x4437 0x26C1E
+0x4438 0x26BCC
+0x4439 0x26BF2
+0x443A 0x26BF3
+0x443B 0x2F99F
+0x443C 0x2F9A2
+0x443D 0x2F9A3
+0x443E 0x2F9A1
+0x443F 0x271AB
+0x4440 0x271AA
+0x4441 0x271A7
+0x4442 0x271A9
+0x4443 0x27288
+0x4444 0x27275
+0x4445 0x27260
+0x4446 0x2726C
+0x4447 0x27273
+0x4449 0x2726E
+0x444A 0x27274
+0x444B 0x27276
+0x444C 0x27268
+0x444D 0x27277
+0x444E 0x27286
+0x444F 0x275EA
+0x4450 0x27651
+0x4451 0x27650
+0x4452 0x27658
+0x4453 0x2764D
+0x4454 0x2764F
+0x4455 0x2764E
+0x4456 0x2765C
+0x4457 0x27652
+0x4458 0x27644
+0x4459 0x2764A
+0x445A 0x2764B
+0x445B 0x277EA
+0x445C 0x27810
+0x445D 0x27811
+0x445E 0x278CD
+0x445F 0x278BF
+0x4460 0x278C4
+0x4461 0x278D0
+0x4462 0x278CE
+0x4463 0x278C0
+0x4464 0x278C2
+0x4465 0x278CF
+0x4466 0x278C9
+0x4467 0x278BB
+0x4468 0x27997
+0x4469 0x27992
+0x446A 0x2796F
+0x446B 0x2797E
+0x446C 0x2799A
+0x446E 0x27986
+0x446F 0x27973
+0x4471 0x27977
+0x4472 0x2798F
+0x4473 0x27970
+0x4474 0x27981
+0x4475 0x27982
+0x4476 0x27999
+0x4477 0x2797D
+0x4478 0x2797F
+0x4479 0x2797B
+0x447A 0x27987
+0x447B 0x27BB2
+0x447C 0x27C2F
+0x447D 0x27C34
+0x447E 0x27C2E
+0x4521 0x27C32
+0x4523 0x27CAA
+0x4525 0x27CA9
+0x4526 0x27D38
+0x4527 0x27D36
+0x4528 0x27D37
+0x4529 0x27D47
+0x452A 0x27D33
+0x452B 0x27D39
+0x452C 0x27D35
+0x452D 0x27D44
+0x452E 0x27EA5
+0x452F 0x27EA6
+0x4530 0x27E9E
+0x4531 0x27FE3
+0x4532 0x27FDF
+0x4533 0x27FD3
+0x4534 0x27FF1
+0x4535 0x27FE4
+0x4536 0x27FE0
+0x4537 0x27FD6
+0x4539 0x27FE6
+0x453A 0x27FD8
+0x453B 0x27FDE
+0x453C 0x27FDB
+0x453D 0x27FDC
+0x453E 0x2821B
+0x453F 0x2821F
+0x4540 0x2821D
+0x4541 0x2821C
+0x4542 0x2821E
+0x4543 0x28220
+0x4544 0x28221
+0x4546 0x282B6
+0x4547 0x282BC
+0x4548 0x282C6
+0x4549 0x282C7
+0x454A 0x282BA
+0x454B 0x282BE
+0x454C 0x282BD
+0x454D 0x282B5
+0x454E 0x282B4
+0x454F 0x2840F
+0x4550 0x28462
+0x4551 0x284EB
+0x4552 0x284D9
+0x4553 0x284E4
+0x4554 0x284D7
+0x4555 0x284D8
+0x4556 0x284D6
+0x4557 0x284CE
+0x4558 0x284DD
+0x4559 0x284E7
+0x455A 0x284D2
+0x455B 0x284C5
+0x455C 0x284C9
+0x455D 0x284DB
+0x455E 0x28692
+0x455F 0x2868A
+0x4560 0x2868B
+0x4561 0x28689
+0x4562 0x28708
+0x4563 0x28703
+0x4564 0x28706
+0x4565 0x28705
+0x4566 0x286F5
+0x4567 0x2870B
+0x4568 0x286FB
+0x4569 0x287FC
+0x456A 0x28801
+0x456B 0x28802
+0x456C 0x287FA
+0x456D 0x28808
+0x456E 0x287F7
+0x456F 0x28800
+0x4570 0x287FF
+0x4571 0x28806
+0x4572 0x287F6
+0x4573 0x287FB
+0x4574 0x2880A
+0x4575 0x28925
+0x4576 0x28943
+0x4577 0x28944
+0x4578 0x28C64
+0x4579 0x28C62
+0x457A 0x28C5E
+0x457B 0x28C5B
+0x457C 0x28CD6
+0x457D 0x20072
+0x457E 0x200C2
+0x4621 0x28E77
+0x4622 0x28E82
+0x4623 0x28E7C
+0x4624 0x28E7D
+0x4625 0x28E86
+0x4626 0x28E81
+0x4627 0x28E84
+0x4628 0x28E76
+0x4629 0x28E83
+0x462A 0x28E7F
+0x462B 0x28E7E
+0x462C 0x28F88
+0x462D 0x28F8D
+0x462E 0x28F8B
+0x462F 0x28F91
+0x4630 0x28F8F
+0x4631 0x2907C
+0x4632 0x29079
+0x4633 0x2907A
+0x4634 0x291EA
+0x4635 0x2944C
+0x4636 0x29599
+0x4637 0x202D1
+0x4638 0x2968B
+0x4639 0x2968D
+0x463A 0x2968A
+0x463B 0x2968E
+0x463C 0x29811
+0x463D 0x22256
+0x463E 0x2FA15
+0x463F 0x20074
+0x4640 0x200C3
+0x4641 0x200C4
+0x4642 0x2011B
+0x4643 0x2015F
+0x4644 0x2016A
+0x4645 0x20169
+0x4646 0x2016B
+0x4647 0x2030C
+0x4648 0x202F6
+0x4649 0x202ED
+0x464A 0x20329
+0x464B 0x202FE
+0x464C 0x202F1
+0x464D 0x20317
+0x464E 0x202FF
+0x464F 0x202EE
+0x4650 0x202FD
+0x4651 0x2031C
+0x4652 0x202FC
+0x4653 0x20300
+0x4654 0x20320
+0x4656 0x202F9
+0x4657 0x20367
+0x4658 0x20308
+0x4659 0x2049E
+0x465A 0x204F3
+0x465B 0x20525
+0x465C 0x20527
+0x465D 0x2051F
+0x465E 0x20565
+0x465F 0x20563
+0x4660 0x20594
+0x4661 0x20597
+0x4662 0x205F1
+0x4663 0x2065F
+0x4664 0x20662
+0x4666 0x20660
+0x4667 0x2F822
+0x4668 0x2078C
+0x4669 0x20782
+0x466A 0x20790
+0x466B 0x2078B
+0x466C 0x2078D
+0x466D 0x20781
+0x466E 0x2079D
+0x466F 0x2088E
+0x4670 0x2088F
+0x4671 0x20892
+0x4672 0x20923
+0x4673 0x20952
+0x4674 0x2F82E
+0x4675 0x20A00
+0x4676 0x20A01
+0x4677 0x20A02
+0x4678 0x20A1F
+0x4679 0x20A8C
+0x467A 0x20A89
+0x467B 0x20A8B
+0x467C 0x20A88
+0x467D 0x20A8D
+0x467E 0x20A8F
+0x4721 0x26385
+0x4722 0x20B00
+0x4723 0x20B05
+0x4724 0x20B01
+0x4725 0x20B68
+0x4726 0x20B6E
+0x4727 0x20B67
+0x4728 0x20B75
+0x472A 0x2F845
+0x472B 0x20DD7
+0x472C 0x2F846
+0x472D 0x20048
+0x472E 0x20DD4
+0x472F 0x20DD8
+0x4730 0x2F847
+0x4731 0x2F848
+0x4732 0x20DBA
+0x4733 0x2F849
+0x4734 0x20DDB
+0x4735 0x20DBF
+0x4736 0x20E35
+0x4737 0x20DBC
+0x4738 0x20DD9
+0x473A 0x20DDD
+0x473B 0x20E00
+0x473C 0x20DD5
+0x473D 0x20E30
+0x473E 0x20DBD
+0x473F 0x20DDC
+0x4740 0x211FD
+0x4741 0x211FE
+0x4742 0x21207
+0x4743 0x24517
+0x4744 0x2136F
+0x4745 0x21369
+0x4746 0x21370
+0x4747 0x21367
+0x4748 0x213A9
+0x4749 0x21395
+0x474A 0x21390
+0x474B 0x2136C
+0x474C 0x21397
+0x474D 0x21371
+0x474F 0x21374
+0x4750 0x2136D
+0x4751 0x2138E
+0x4752 0x2152F
+0x4753 0x2A31B
+0x4754 0x215A9
+0x4755 0x2164E
+0x4756 0x2F85F
+0x4757 0x2165A
+0x4758 0x21648
+0x4759 0x21655
+0x475A 0x2164C
+0x475B 0x21649
+0x475C 0x2164F
+0x475D 0x2164A
+0x475E 0x217D6
+0x475F 0x217A0
+0x4760 0x217A9
+0x4761 0x2F867
+0x4762 0x2179D
+0x4763 0x217D4
+0x4764 0x217A4
+0x4765 0x217A8
+0x4766 0x217A6
+0x4767 0x217E6
+0x4768 0x2197D
+0x4769 0x21977
+0x476A 0x2197A
+0x476B 0x21A41
+0x476C 0x21A49
+0x476D 0x21A59
+0x476E 0x21A45
+0x476F 0x21A48
+0x4770 0x21A40
+0x4771 0x21B8E
+0x4772 0x21B95
+0x4773 0x21B90
+0x4774 0x21BF7
+0x4775 0x21BF8
+0x4776 0x21BF6
+0x4777 0x21BFB
+0x4778 0x21C9E
+0x4779 0x21C9D
+0x477A 0x21C99
+0x477B 0x2F877
+0x477C 0x21CA3
+0x477D 0x21CA9
+0x477E 0x21C98
+0x4821 0x21CA0
+0x4822 0x21C96
+0x4823 0x21C94
+0x4824 0x21C95
+0x4825 0x21C9F
+0x4826 0x21CA1
+0x4827 0x21D21
+0x4828 0x21D1D
+0x4829 0x21D1F
+0x482A 0x21E6D
+0x482B 0x2F87C
+0x482C 0x21E9A
+0x482D 0x21E92
+0x482E 0x21E7A
+0x482F 0x21E7D
+0x4830 0x21EA1
+0x4831 0x21E9D
+0x4832 0x21E99
+0x4833 0x21E6B
+0x4834 0x21E6E
+0x4835 0x2F87D
+0x4836 0x22045
+0x4837 0x2F884
+0x4838 0x220FB
+0x4839 0x220EB
+0x483A 0x220F2
+0x483B 0x220F9
+0x483C 0x2F886
+0x483D 0x220F8
+0x483E 0x220ED
+0x483F 0x22101
+0x4840 0x220F7
+0x4841 0x22106
+0x4842 0x2219B
+0x4843 0x221CA
+0x4846 0x2226B
+0x4847 0x2226C
+0x4848 0x22274
+0x4849 0x22267
+0x484A 0x2225B
+0x484B 0x22260
+0x484C 0x22276
+0x484D 0x22263
+0x484E 0x22261
+0x484F 0x22328
+0x4850 0x2235B
+0x4851 0x2235E
+0x4852 0x22360
+0x4853 0x2235D
+0x4854 0x2235C
+0x4855 0x223F4
+0x4856 0x22400
+0x4857 0x22408
+0x4858 0x22407
+0x4859 0x22401
+0x485A 0x22405
+0x485B 0x22464
+0x485C 0x22463
+0x485D 0x2249E
+0x485E 0x224A0
+0x485F 0x224A1
+0x4860 0x2249F
+0x4861 0x22526
+0x4862 0x2252D
+0x4863 0x22528
+0x4864 0x2251D
+0x4865 0x226EC
+0x4866 0x226E3
+0x4867 0x226EB
+0x4868 0x22716
+0x4869 0x226C8
+0x486A 0x2661B
+0x486B 0x226E9
+0x486C 0x226E4
+0x486D 0x22724
+0x486E 0x226D1
+0x4870 0x226DD
+0x4871 0x226C2
+0x4872 0x226CB
+0x4873 0x226C7
+0x4874 0x226E7
+0x4876 0x226EA
+0x4877 0x2274B
+0x4878 0x2F8A5
+0x4879 0x22760
+0x487A 0x2277D
+0x487B 0x2273E
+0x487C 0x2F8A4
+0x487D 0x22752
+0x487E 0x2274E
+0x4921 0x2273C
+0x4922 0x22732
+0x4923 0x22730
+0x4924 0x22723
+0x4925 0x229CA
+0x4926 0x229CB
+0x4927 0x229C9
+0x4928 0x229C8
+0x4929 0x229CD
+0x492A 0x22B98
+0x492B 0x22BA0
+0x492C 0x22B9F
+0x492D 0x22B9C
+0x492E 0x22BA3
+0x492F 0x22B97
+0x4930 0x2F8BE
+0x4931 0x22BF1
+0x4932 0x22C09
+0x4933 0x22C03
+0x4934 0x22BEA
+0x4935 0x22C45
+0x4936 0x22BED
+0x4937 0x22C05
+0x4938 0x22C1A
+0x4939 0x22C15
+0x493A 0x22C01
+0x493B 0x22BEC
+0x493C 0x22C0E
+0x493D 0x22C17
+0x493E 0x22C42
+0x493F 0x22C12
+0x4940 0x22C10
+0x4941 0x22BEF
+0x4942 0x22BFF
+0x4943 0x22C00
+0x4944 0x22C0C
+0x4945 0x22C0F
+0x4946 0x22C04
+0x4947 0x22C08
+0x4948 0x22C14
+0x4949 0x22C43
+0x494A 0x2F8BD
+0x494B 0x22C1B
+0x494C 0x22C11
+0x494D 0x22C13
+0x494E 0x22ECF
+0x494F 0x22ECE
+0x4950 0x22F6F
+0x4951 0x22F6E
+0x4952 0x22F7A
+0x4953 0x22F70
+0x4954 0x22F64
+0x4955 0x22F5E
+0x4956 0x22F6C
+0x4957 0x2F8C9
+0x4958 0x22F5B
+0x4959 0x22F61
+0x495A 0x22F65
+0x495B 0x2307F
+0x495C 0x23080
+0x495D 0x2307C
+0x495E 0x230A7
+0x495F 0x230A6
+0x4960 0x230A1
+0x4962 0x230A8
+0x4963 0x230A3
+0x4964 0x230A2
+0x4965 0x230AD
+0x4966 0x230A5
+0x4967 0x23101
+0x4968 0x230FF
+0x4969 0x230FC
+0x496A 0x23100
+0x496B 0x23135
+0x496C 0x231EE
+0x496D 0x231EF
+0x496E 0x231F6
+0x496F 0x231E8
+0x4970 0x231EA
+0x4971 0x231E3
+0x4972 0x2321F
+0x4974 0x231E4
+0x4975 0x231FA
+0x4976 0x231F1
+0x4977 0x231FB
+0x4978 0x2F8D4
+0x4979 0x2333D
+0x497A 0x2333C
+0x497C 0x23378
+0x497D 0x23377
+0x4A21 0x234D1
+0x4A22 0x234C7
+0x4A23 0x234DF
+0x4A24 0x234D0
+0x4A25 0x234E0
+0x4A26 0x234D6
+0x4A27 0x234D8
+0x4A28 0x23516
+0x4A29 0x2350E
+0x4A2A 0x234D9
+0x4A2B 0x2350F
+0x4A2C 0x23511
+0x4A2D 0x234CD
+0x4A2E 0x23489
+0x4A2F 0x234CE
+0x4A30 0x23514
+0x4A31 0x234DA
+0x4A32 0x23512
+0x4A33 0x234D3
+0x4A34 0x234C2
+0x4A35 0x234E1
+0x4A36 0x234E9
+0x4A37 0x234EA
+0x4A38 0x234DE
+0x4A39 0x23515
+0x4A3A 0x238D9
+0x4A3B 0x238D6
+0x4A3C 0x238CD
+0x4A3D 0x238D0
+0x4A3E 0x238D3
+0x4A3F 0x2F8F0
+0x4A40 0x23982
+0x4A41 0x23985
+0x4A42 0x2397F
+0x4A43 0x2397D
+0x4A44 0x23981
+0x4A45 0x23983
+0x4A46 0x23984
+0x4A47 0x284A0
+0x4A48 0x23A28
+0x4A49 0x23A0F
+0x4A4A 0x23A17
+0x4A4B 0x23A1A
+0x4A4C 0x23A25
+0x4A4D 0x2F8F7
+0x4A4E 0x23A9B
+0x4A4F 0x23A99
+0x4A50 0x23B92
+0x4A51 0x23B8C
+0x4A52 0x23B95
+0x4A53 0x23B8D
+0x4A54 0x23BA3
+0x4A55 0x23B93
+0x4A56 0x23B91
+0x4A57 0x23DDB
+0x4A58 0x23D99
+0x4A59 0x23D9A
+0x4A5A 0x23E08
+0x4A5B 0x23E4C
+0x4A5C 0x23E0D
+0x4A5D 0x23E01
+0x4A5E 0x23E4E
+0x4A5F 0x23E02
+0x4A60 0x23E4D
+0x4A61 0x23E21
+0x4A62 0x23DFC
+0x4A63 0x2F909
+0x4A64 0x23D8A
+0x4A65 0x2F908
+0x4A66 0x23D95
+0x4A67 0x23E11
+0x4A68 0x23E12
+0x4A69 0x23E46
+0x4A6A 0x23E1C
+0x4A6B 0x23E49
+0x4A6C 0x23E0C
+0x4A6E 0x23E13
+0x4A6F 0x23E16
+0x4A70 0x23DFD
+0x4A71 0x23E0F
+0x4A72 0x23E1F
+0x4A73 0x24230
+0x4A74 0x2426E
+0x4A75 0x2426B
+0x4A76 0x2429B
+0x4A77 0x2427B
+0x4A78 0x24263
+0x4A79 0x24297
+0x4A7A 0x2426D
+0x4A7B 0x2429C
+0x4A7C 0x24298
+0x4A7D 0x2426F
+0x4A7E 0x24267
+0x4B21 0x24269
+0x4B22 0x24515
+0x4B23 0x24563
+0x4B24 0x24586
+0x4B25 0x2458A
+0x4B26 0x24587
+0x4B27 0x24588
+0x4B28 0x24585
+0x4B29 0x24589
+0x4B2A 0x245CA
+0x4B2B 0x245C7
+0x4B2C 0x245CB
+0x4B2D 0x245CC
+0x4B2E 0x245C9
+0x4B2F 0x2460D
+0x4B30 0x24683
+0x4B31 0x24684
+0x4B32 0x24678
+0x4B33 0x24682
+0x4B34 0x24673
+0x4B35 0x24679
+0x4B36 0x2468C
+0x4B37 0x247D0
+0x4B38 0x247CF
+0x4B39 0x247D2
+0x4B3A 0x247D9
+0x4B3B 0x247CC
+0x4B3C 0x247EB
+0x4B3D 0x247FD
+0x4B3E 0x247EC
+0x4B3F 0x247E8
+0x4B40 0x247F8
+0x4B41 0x247FA
+0x4B42 0x2F927
+0x4B44 0x247E1
+0x4B45 0x247FB
+0x4B46 0x248E7
+0x4B47 0x2F92E
+0x4B48 0x249A5
+0x4B49 0x24991
+0x4B4A 0x249A6
+0x4B4B 0x2497C
+0x4B4C 0x24992
+0x4B4D 0x249A2
+0x4B4E 0x249A0
+0x4B4F 0x24AFC
+0x4B50 0x24AFE
+0x4B51 0x24B57
+0x4B52 0x24B53
+0x4B53 0x24B58
+0x4B54 0x24BE7
+0x4B55 0x24C8E
+0x4B56 0x2F938
+0x4B57 0x24C83
+0x4B58 0x24C8B
+0x4B59 0x24C84
+0x4B5B 0x24DA2
+0x4B5C 0x24DB7
+0x4B5D 0x24DA9
+0x4B5E 0x24DA5
+0x4B5F 0x24D9F
+0x4B60 0x24DAA
+0x4B61 0x24D97
+0x4B62 0x24DA1
+0x4B63 0x24D9E
+0x4B64 0x24DAB
+0x4B65 0x24D99
+0x4B66 0x24DA3
+0x4B67 0x24F30
+0x4B68 0x24F32
+0x4B69 0x24F2F
+0x4B6A 0x24F70
+0x4B6B 0x24F6C
+0x4B6C 0x24F6F
+0x4B6D 0x24FE8
+0x4B6E 0x24FEE
+0x4B6F 0x24FEA
+0x4B70 0x2506D
+0x4B71 0x25076
+0x4B72 0x25070
+0x4B73 0x25071
+0x4B74 0x2506C
+0x4B75 0x251EB
+0x4B76 0x251B5
+0x4B77 0x25196
+0x4B78 0x25190
+0x4B79 0x2518D
+0x4B7A 0x2F949
+0x4B7B 0x251A2
+0x4B7C 0x251B0
+0x4B7D 0x25192
+0x4B7E 0x251A0
+0x4C21 0x25193
+0x4C22 0x251C3
+0x4C23 0x2518E
+0x4C24 0x251B6
+0x4C25 0x2519D
+0x4C26 0x25195
+0x4C27 0x251B3
+0x4C28 0x251A4
+0x4C29 0x25370
+0x4C2A 0x253D4
+0x4C2C 0x253CF
+0x4C2D 0x20170
+0x4C2E 0x25494
+0x4C30 0x254C0
+0x4C31 0x254B4
+0x4C32 0x254C1
+0x4C34 0x254BD
+0x4C35 0x254AF
+0x4C36 0x25677
+0x4C37 0x25678
+0x4C38 0x2566B
+0x4C39 0x2566D
+0x4C3A 0x2566E
+0x4C3B 0x25672
+0x4C3C 0x2566F
+0x4C3D 0x25671
+0x4C3E 0x230AB
+0x4C3F 0x2568C
+0x4C40 0x2573F
+0x4C41 0x257B6
+0x4C42 0x257B7
+0x4C44 0x257BB
+0x4C45 0x257B8
+0x4C46 0x2079C
+0x4C47 0x257B9
+0x4C49 0x2598B
+0x4C4A 0x2597A
+0x4C4B 0x25984
+0x4C4C 0x25988
+0x4C4D 0x25991
+0x4C4E 0x25979
+0x4C4F 0x2598E
+0x4C50 0x25980
+0x4C51 0x25982
+0x4C52 0x2597C
+0x4C54 0x25A84
+0x4C55 0x25A7F
+0x4C57 0x25B3B
+0x4C58 0x25B71
+0x4C59 0x25B3D
+0x4C5A 0x25B30
+0x4C5C 0x25B3E
+0x4C5D 0x25B38
+0x4C5E 0x25E5E
+0x4C5F 0x25E64
+0x4C61 0x25E5D
+0x4C62 0x25E6D
+0x4C63 0x25E4F
+0x4C64 0x25E62
+0x4C65 0x25E5F
+0x4C66 0x25FEC
+0x4C67 0x25FF2
+0x4C68 0x25FF4
+0x4C69 0x25FF7
+0x4C6A 0x25FF6
+0x4C6B 0x26007
+0x4C6C 0x25FED
+0x4C6D 0x25FEA
+0x4C6E 0x25FF0
+0x4C6F 0x25FF8
+0x4C70 0x25FF3
+0x4C72 0x2F972
+0x4C73 0x26231
+0x4C74 0x2622F
+0x4C75 0x262B6
+0x4C76 0x262AE
+0x4C77 0x262AA
+0x4C78 0x262BF
+0x4C79 0x262CC
+0x4C7A 0x262C7
+0x4C7B 0x26C83
+0x4C7C 0x26380
+0x4C7D 0x2637B
+0x4C7E 0x2637F
+0x4D21 0x2637D
+0x4D22 0x26383
+0x4D23 0x2F978
+0x4D24 0x26446
+0x4D25 0x2642D
+0x4D26 0x26425
+0x4D27 0x26426
+0x4D28 0x2642C
+0x4D29 0x26437
+0x4D2A 0x26431
+0x4D2B 0x26433
+0x4D2C 0x26432
+0x4D2D 0x26427
+0x4D2E 0x2642A
+0x4D2F 0x2642E
+0x4D30 0x2642F
+0x4D31 0x264C0
+0x4D32 0x26571
+0x4D33 0x26561
+0x4D34 0x26562
+0x4D35 0x26566
+0x4D36 0x26618
+0x4D37 0x266C5
+0x4D38 0x266C3
+0x4D39 0x266C4
+0x4D3A 0x266C2
+0x4D3B 0x266AE
+0x4D3C 0x26710
+0x4D3D 0x26708
+0x4D3E 0x2671F
+0x4D3F 0x2673A
+0x4D40 0x2673B
+0x4D41 0x26736
+0x4D42 0x2670C
+0x4D43 0x26706
+0x4D44 0x2672A
+0x4D45 0x26757
+0x4D46 0x26750
+0x4D47 0x26720
+0x4D48 0x2F985
+0x4D49 0x2672C
+0x4D4A 0x26721
+0x4D4B 0x2670B
+0x4D4C 0x26719
+0x4D4D 0x26735
+0x4D4E 0x26718
+0x4D4F 0x2670F
+0x4D50 0x26713
+0x4D51 0x26755
+0x4D52 0x26739
+0x4D53 0x2671A
+0x4D55 0x26717
+0x4D56 0x268E4
+0x4D57 0x268E9
+0x4D58 0x2458B
+0x4D59 0x26910
+0x4D5A 0x26912
+0x4D5B 0x2693F
+0x4D5C 0x2696E
+0x4D5D 0x24518
+0x4D5E 0x2F98C
+0x4D5F 0x269D6
+0x4D60 0x269D5
+0x4D61 0x269D7
+0x4D62 0x20B02
+0x4D64 0x26A31
+0x4D65 0x26A30
+0x4D66 0x26A3A
+0x4D67 0x26B85
+0x4D68 0x26B6B
+0x4D69 0x26C48
+0x4D6A 0x26C4B
+0x4D6B 0x26C37
+0x4D6C 0x26C7B
+0x4D6D 0x26C6C
+0x4D6E 0x26C85
+0x4D6F 0x26C65
+0x4D70 0x26C36
+0x4D71 0x26C86
+0x4D72 0x26C34
+0x4D73 0x26C68
+0x4D74 0x26C5A
+0x4D75 0x26C58
+0x4D76 0x26C72
+0x4D77 0x26C6A
+0x4D78 0x26BD3
+0x4D79 0x26C3C
+0x4D7A 0x26C33
+0x4D7B 0x26C3B
+0x4D7C 0x26C4D
+0x4D7D 0x26C4F
+0x4D7E 0x26C7C
+0x4E21 0x26CB0
+0x4E22 0x26C5B
+0x4E23 0x26C55
+0x4E24 0x26C64
+0x4E25 0x26C6B
+0x4E26 0x26C53
+0x4E28 0x26C57
+0x4E29 0x26C5E
+0x4E2A 0x26C6D
+0x4E2B 0x26C35
+0x4E2C 0x26C69
+0x4E2D 0x26C59
+0x4E2E 0x26C66
+0x4E2F 0x26C50
+0x4E30 0x26C51
+0x4E31 0x26C5C
+0x4E32 0x26D5D
+0x4E33 0x26C87
+0x4E34 0x26C78
+0x4E35 0x26C49
+0x4E36 0x26C4E
+0x4E37 0x26BF1
+0x4E38 0x26C73
+0x4E39 0x26C88
+0x4E3A 0x26BCF
+0x4E3B 0x2F9A4
+0x4E3C 0x271B1
+0x4E3D 0x271B3
+0x4E3E 0x2729C
+0x4E3F 0x272A4
+0x4E40 0x27290
+0x4E41 0x272B8
+0x4E42 0x272A0
+0x4E43 0x2729D
+0x4E44 0x272A8
+0x4E45 0x272A9
+0x4E46 0x2F9B9
+0x4E47 0x272B1
+0x4E48 0x27293
+0x4E49 0x2729B
+0x4E4A 0x272A2
+0x4E4B 0x272A1
+0x4E4C 0x272B0
+0x4E4D 0x272A7
+0x4E4E 0x275B3
+0x4E50 0x275B4
+0x4E51 0x275F1
+0x4E52 0x275ED
+0x4E53 0x275EC
+0x4E54 0x27668
+0x4E55 0x27675
+0x4E56 0x2766A
+0x4E57 0x27662
+0x4E58 0x27667
+0x4E59 0x27660
+0x4E5A 0x27677
+0x4E5B 0x2765F
+0x4E5C 0x27679
+0x4E5D 0x27823
+0x4E5E 0x27821
+0x4E5F 0x2781C
+0x4E61 0x2781F
+0x4E62 0x2781E
+0x4E63 0x278D6
+0x4E64 0x278D3
+0x4E65 0x278D9
+0x4E66 0x278D7
+0x4E67 0x278D4
+0x4E68 0x278DC
+0x4E69 0x278D8
+0x4E6A 0x279A3
+0x4E6C 0x279BE
+0x4E6D 0x279A9
+0x4E6E 0x279A1
+0x4E6F 0x279A0
+0x4E70 0x279AB
+0x4E71 0x279A2
+0x4E72 0x279BA
+0x4E73 0x279C2
+0x4E74 0x2799C
+0x4E75 0x279BB
+0x4E76 0x279AA
+0x4E77 0x279AC
+0x4E78 0x279A5
+0x4E79 0x279C1
+0x4E7B 0x27BE2
+0x4E7C 0x27C36
+0x4E7D 0x27C3D
+0x4E7E 0x27C3A
+0x4F21 0x22461
+0x4F22 0x27C48
+0x4F23 0x27C3C
+0x4F24 0x27CB7
+0x4F25 0x27CAC
+0x4F26 0x27CB3
+0x4F27 0x27CB6
+0x4F28 0x27CB2
+0x4F2A 0x27D5D
+0x4F2B 0x27D49
+0x4F2C 0x27D4E
+0x4F2D 0x27D4F
+0x4F2E 0x27D4D
+0x4F2F 0x27D5C
+0x4F30 0x27E5D
+0x4F31 0x27EBB
+0x4F32 0x27ECE
+0x4F33 0x27EBF
+0x4F34 0x27EBA
+0x4F35 0x27EC3
+0x4F37 0x28006
+0x4F38 0x27FF8
+0x4F39 0x27FFE
+0x4F3A 0x28013
+0x4F3B 0x27FF6
+0x4F3D 0x28234
+0x4F3E 0x2822D
+0x4F3F 0x2822A
+0x4F40 0x28235
+0x4F41 0x2822C
+0x4F42 0x282D4
+0x4F43 0x282DA
+0x4F44 0x282D3
+0x4F45 0x282D2
+0x4F46 0x282CE
+0x4F47 0x282CF
+0x4F49 0x284FD
+0x4F4A 0x2850B
+0x4F4B 0x284FE
+0x4F4C 0x284F8
+0x4F4D 0x284F7
+0x4F4E 0x28517
+0x4F4F 0x284FA
+0x4F50 0x284F9
+0x4F51 0x28500
+0x4F52 0x284F5
+0x4F53 0x284F1
+0x4F54 0x28503
+0x4F55 0x28505
+0x4F56 0x2851C
+0x4F57 0x286AC
+0x4F58 0x2869A
+0x4F59 0x286AD
+0x4F5A 0x286A0
+0x4F5B 0x2871B
+0x4F5C 0x28725
+0x4F5D 0x28724
+0x4F5E 0x28726
+0x4F5F 0x28727
+0x4F60 0x28728
+0x4F61 0x2872A
+0x4F62 0x2871A
+0x4F63 0x2872E
+0x4F64 0x28715
+0x4F65 0x28815
+0x4F66 0x28814
+0x4F67 0x28817
+0x4F68 0x28818
+0x4F69 0x2880F
+0x4F6A 0x28813
+0x4F6B 0x2880B
+0x4F6C 0x28822
+0x4F6D 0x2137A
+0x4F6E 0x28926
+0x4F70 0x28951
+0x4F71 0x2894D
+0x4F72 0x2894E
+0x4F73 0x2894A
+0x4F74 0x2894B
+0x4F75 0x2894C
+0x4F76 0x28950
+0x4F77 0x28962
+0x4F78 0x2894F
+0x4F79 0x28952
+0x4F7A 0x28C68
+0x4F7B 0x28C69
+0x4F7C 0x28CE5
+0x4F7D 0x28CF0
+0x4F7E 0x28CE1
+0x5021 0x28CE2
+0x5022 0x2F9F2
+0x5023 0x28EA5
+0x5024 0x28EA9
+0x5025 0x28EA4
+0x5026 0x28EAF
+0x5027 0x28EAC
+0x5028 0x28EAE
+0x5029 0x28EAA
+0x502A 0x28F95
+0x502B 0x28F99
+0x502C 0x28F93
+0x502D 0x28F9D
+0x502E 0x28F98
+0x502F 0x28F9C
+0x5030 0x28F97
+0x5032 0x29089
+0x5033 0x29087
+0x5034 0x291D7
+0x5035 0x291ED
+0x5036 0x291F1
+0x5037 0x291F0
+0x5038 0x29205
+0x5039 0x29203
+0x503A 0x29204
+0x503B 0x2925F
+0x503C 0x29457
+0x503D 0x2959C
+0x503E 0x295A1
+0x503F 0x2959A
+0x5040 0x2968F
+0x5041 0x29693
+0x5042 0x2969E
+0x5043 0x296A3
+0x5044 0x29698
+0x5045 0x29699
+0x5046 0x29695
+0x5047 0x2986E
+0x5048 0x2986A
+0x5049 0x29AF4
+0x504A 0x29AF7
+0x504B 0x29C79
+0x504C 0x29F8F
+0x504D 0x29F91
+0x504E 0x2A00B
+0x504F 0x2A502
+0x5050 0x20084
+0x5051 0x20104
+0x5052 0x20180
+0x5053 0x2032F
+0x5054 0x2033F
+0x5055 0x2033B
+0x5056 0x20362
+0x5057 0x20344
+0x5058 0x20333
+0x5059 0x2035F
+0x505A 0x2032B
+0x505B 0x2F809
+0x505C 0x20339
+0x505D 0x20336
+0x505E 0x20348
+0x505F 0x20335
+0x5060 0x2036C
+0x5061 0x20358
+0x5062 0x2033A
+0x5063 0x204A8
+0x5064 0x204F4
+0x5065 0x20529
+0x5066 0x2059A
+0x5067 0x20600
+0x5068 0x207BB
+0x5069 0x207BD
+0x506A 0x207B7
+0x506B 0x207B2
+0x506D 0x207A8
+0x506E 0x207AB
+0x506F 0x207A6
+0x5070 0x207BC
+0x5071 0x20897
+0x5072 0x20896
+0x5073 0x208F8
+0x5075 0x20951
+0x5077 0x209B5
+0x5078 0x209B4
+0x5079 0x209B6
+0x507B 0x209B7
+0x507C 0x20A05
+0x507D 0x20A23
+0x507E 0x20A95
+0x5121 0x20A98
+0x5123 0x20A94
+0x5124 0x20A93
+0x5125 0x20B07
+0x5126 0x20B73
+0x5127 0x20B71
+0x5128 0x20B72
+0x5129 0x20B78
+0x512A 0x20E5F
+0x512B 0x20E6A
+0x512C 0x20E67
+0x512D 0x20E6B
+0x512E 0x20E69
+0x512F 0x20E8E
+0x5130 0x20E49
+0x5131 0x20E80
+0x5133 0x20E44
+0x5134 0x20E8F
+0x5135 0x20E45
+0x5136 0x2F84C
+0x5137 0x20E4F
+0x5138 0x20E63
+0x5139 0x20E36
+0x513A 0x20E48
+0x513B 0x20E5C
+0x513C 0x20E93
+0x513D 0x20E61
+0x513E 0x20E60
+0x513F 0x20E4E
+0x5140 0x20E5E
+0x5141 0x20E3F
+0x5142 0x20EA4
+0x5144 0x20E68
+0x5145 0x2120B
+0x5146 0x21211
+0x5147 0x2120D
+0x5148 0x2120E
+0x5149 0x213C2
+0x514A 0x2F857
+0x514B 0x213B0
+0x514C 0x213C3
+0x514D 0x213C8
+0x514E 0x21365
+0x514F 0x213D7
+0x5150 0x213BD
+0x5151 0x213B8
+0x5152 0x213B6
+0x5153 0x213C7
+0x5154 0x213BC
+0x5155 0x213B1
+0x5156 0x213AF
+0x5157 0x2F85B
+0x5158 0x21535
+0x5159 0x21530
+0x515A 0x2155D
+0x515B 0x20B76
+0x515C 0x2156F
+0x515D 0x215B0
+0x515E 0x2F85E
+0x515F 0x215B4
+0x5160 0x2165C
+0x5161 0x2165D
+0x5162 0x21808
+0x5163 0x217EE
+0x5164 0x2180B
+0x5165 0x217F2
+0x5166 0x217FD
+0x5167 0x217F1
+0x5168 0x21810
+0x5169 0x2F868
+0x516A 0x21814
+0x516B 0x2198B
+0x516C 0x2198C
+0x516D 0x21985
+0x516E 0x21A7A
+0x516F 0x21A6C
+0x5170 0x21A60
+0x5171 0x21A67
+0x5172 0x21A66
+0x5173 0x21A6A
+0x5174 0x21A5F
+0x5175 0x21A6D
+0x5176 0x21A68
+0x5177 0x21A64
+0x5178 0x21B3A
+0x5179 0x21B3B
+0x517A 0x21B39
+0x517B 0x21C02
+0x517C 0x21C04
+0x517D 0x21C03
+0x517E 0x21CB4
+0x5221 0x21CB3
+0x5222 0x21CBB
+0x5223 0x21CAC
+0x5224 0x21CB6
+0x5225 0x21CB1
+0x5226 0x21CAF
+0x5227 0x21CB5
+0x5228 0x21CBE
+0x5229 0x21CB2
+0x522A 0x21D24
+0x522B 0x21EB6
+0x522C 0x21EB9
+0x522D 0x21EAC
+0x522E 0x21EB0
+0x522F 0x21ED7
+0x5230 0x21EBB
+0x5231 0x21EFE
+0x5232 0x21ECB
+0x5233 0x2F87F
+0x5235 0x21EB3
+0x5236 0x21EBE
+0x5237 0x21ECD
+0x5238 0x21EBC
+0x5239 0x21EBA
+0x523A 0x21EC7
+0x523B 0x22116
+0x523C 0x2211B
+0x523D 0x22117
+0x523E 0x22115
+0x523F 0x2219F
+0x5240 0x2F88E
+0x5241 0x22282
+0x5242 0x22283
+0x5243 0x2228E
+0x5244 0x2226A
+0x5245 0x22289
+0x5246 0x22294
+0x5247 0x22286
+0x5248 0x22290
+0x5249 0x22362
+0x524A 0x22390
+0x524B 0x2240C
+0x524C 0x2240F
+0x524E 0x224A5
+0x524F 0x224A7
+0x5250 0x224A6
+0x5251 0x224A4
+0x5252 0x22535
+0x5253 0x22538
+0x5254 0x22536
+0x5255 0x22543
+0x5256 0x22547
+0x5257 0x22537
+0x5258 0x22743
+0x5259 0x227A2
+0x525A 0x22751
+0x525B 0x22772
+0x525C 0x2276D
+0x525D 0x2272F
+0x525E 0x22754
+0x525F 0x2276E
+0x5260 0x22755
+0x5261 0x22737
+0x5262 0x2274F
+0x5263 0x22750
+0x5265 0x2279E
+0x5266 0x2F8A8
+0x5267 0x227B3
+0x5268 0x227A7
+0x526A 0x227F9
+0x526B 0x22791
+0x526C 0x2F8A7
+0x526D 0x227B6
+0x526E 0x227DD
+0x526F 0x22799
+0x5270 0x229DF
+0x5271 0x229D5
+0x5272 0x247F5
+0x5273 0x22C28
+0x5274 0x22C40
+0x5275 0x22C71
+0x5276 0x22C98
+0x5277 0x22C95
+0x5278 0x22C65
+0x5279 0x22C78
+0x527A 0x22C7F
+0x527B 0x22C60
+0x527C 0x22C7C
+0x527D 0x22C96
+0x527E 0x22C6A
+0x5321 0x22C79
+0x5322 0x22C73
+0x5323 0x22C72
+0x5324 0x22C7B
+0x5325 0x22C70
+0x5326 0x22ED5
+0x5327 0x22ED7
+0x5328 0x22F8F
+0x5329 0x22F89
+0x532A 0x22F9E
+0x532B 0x22F87
+0x532C 0x22FA0
+0x532D 0x22F8D
+0x532E 0x22F88
+0x532F 0x22F7F
+0x5330 0x22F8C
+0x5331 0x22F93
+0x5332 0x23059
+0x5333 0x295B0
+0x5334 0x230B1
+0x5335 0x251F4
+0x5336 0x230AF
+0x5337 0x230B2
+0x5338 0x23108
+0x5339 0x2310A
+0x533A 0x23136
+0x533B 0x23137
+0x533C 0x2F8CF
+0x533E 0x23236
+0x533F 0x23229
+0x5340 0x2324A
+0x5341 0x23226
+0x5342 0x23228
+0x5343 0x23224
+0x5344 0x2322A
+0x5345 0x23248
+0x5346 0x23344
+0x5347 0x23384
+0x5348 0x2338C
+0x5349 0x234C4
+0x534A 0x234DC
+0x534B 0x23587
+0x534C 0x23553
+0x534D 0x2357F
+0x534E 0x23531
+0x534F 0x23551
+0x5350 0x2354B
+0x5351 0x23552
+0x5352 0x23580
+0x5353 0x235A5
+0x5354 0x23581
+0x5355 0x23543
+0x5356 0x23534
+0x5357 0x23536
+0x5358 0x23532
+0x5359 0x23548
+0x535A 0x23549
+0x535B 0x2353C
+0x535C 0x2354D
+0x535D 0x2354A
+0x535E 0x2F8E6
+0x535F 0x2358A
+0x5360 0x23546
+0x5361 0x2353E
+0x5362 0x23583
+0x5363 0x23550
+0x5364 0x235B4
+0x5365 0x238F0
+0x5366 0x238E4
+0x5367 0x238E3
+0x5368 0x238E5
+0x5369 0x238E6
+0x536A 0x238E7
+0x536B 0x238E1
+0x536C 0x238EF
+0x536D 0x238E8
+0x536E 0x238DD
+0x536F 0x23903
+0x5370 0x23988
+0x5371 0x23A26
+0x5372 0x23A16
+0x5373 0x23A3B
+0x5374 0x23A2F
+0x5375 0x23A39
+0x5376 0x23A34
+0x5377 0x2F8F4
+0x5378 0x23A35
+0x5379 0x23A31
+0x537A 0x23A38
+0x537B 0x20B81
+0x537C 0x23AAA
+0x537D 0x23AA3
+0x537E 0x23AA4
+0x5421 0x23AA0
+0x5422 0x23AA1
+0x5423 0x23AA9
+0x5424 0x23AA5
+0x5425 0x23BAF
+0x5426 0x23BB1
+0x5427 0x23BAB
+0x5428 0x23BAE
+0x5429 0x23BB0
+0x542A 0x23BB3
+0x542B 0x23BAC
+0x542C 0x23BA9
+0x542D 0x23BB2
+0x542E 0x23BA8
+0x542F 0x23BB4
+0x5430 0x23BC2
+0x5431 0x23C4F
+0x5432 0x23C66
+0x5433 0x23E1E
+0x5434 0x23E15
+0x5435 0x23E10
+0x5436 0x23E7F
+0x5437 0x23E7E
+0x5438 0x23E60
+0x5439 0x23ECC
+0x543A 0x23EB2
+0x543B 0x23E62
+0x543C 0x23E8D
+0x543D 0x23E8E
+0x543E 0x23E77
+0x543F 0x23E7C
+0x5440 0x23E8F
+0x5441 0x23E5D
+0x5442 0x23E6D
+0x5443 0x23E63
+0x5444 0x23EAF
+0x5445 0x23E90
+0x5446 0x23E7D
+0x5447 0x23E7A
+0x5448 0x23E06
+0x5449 0x2F90B
+0x544A 0x23E68
+0x544B 0x23EB4
+0x544C 0x23E78
+0x544D 0x23EB1
+0x544F 0x2F90C
+0x5451 0x242E8
+0x5452 0x242E9
+0x5453 0x242C0
+0x5455 0x242EA
+0x5456 0x242B7
+0x5457 0x242BA
+0x5458 0x242B5
+0x5459 0x2F91D
+0x545A 0x242B4
+0x545B 0x242BC
+0x545C 0x242C6
+0x545D 0x242B8
+0x545E 0x242BD
+0x545F 0x242C2
+0x5460 0x2434D
+0x5461 0x242F0
+0x5462 0x242C7
+0x5463 0x242C1
+0x5464 0x242C3
+0x5465 0x242F1
+0x5466 0x242EC
+0x5468 0x2451C
+0x5469 0x24520
+0x546A 0x24558
+0x546B 0x24565
+0x546C 0x24564
+0x546D 0x2458C
+0x546E 0x2458D
+0x546F 0x245D9
+0x5470 0x245E0
+0x5471 0x24610
+0x5472 0x24694
+0x5473 0x24692
+0x5474 0x24696
+0x5475 0x24695
+0x5476 0x246BF
+0x5477 0x246A0
+0x5479 0x247F4
+0x547A 0x247F6
+0x547B 0x247DC
+0x547D 0x24816
+0x547E 0x24815
+0x5521 0x2481C
+0x5522 0x2480F
+0x5523 0x2482C
+0x5524 0x24814
+0x5525 0x24825
+0x5526 0x24817
+0x5527 0x24812
+0x5528 0x2481E
+0x5529 0x24980
+0x552A 0x249A8
+0x552B 0x249AF
+0x552C 0x249D6
+0x552D 0x249E2
+0x552E 0x249B4
+0x552F 0x249B3
+0x5530 0x249B0
+0x5531 0x249B2
+0x5532 0x249A1
+0x5533 0x24B60
+0x5534 0x24B66
+0x5535 0x24B61
+0x5536 0x24B4E
+0x5537 0x24B5D
+0x5538 0x24B63
+0x5539 0x24BE6
+0x553A 0x24BEF
+0x553B 0x24BEC
+0x553C 0x24C98
+0x553D 0x24CA7
+0x553E 0x24C94
+0x553F 0x24C95
+0x5540 0x24C91
+0x5541 0x24C9D
+0x5542 0x24C99
+0x5543 0x24C9B
+0x5544 0x24C9C
+0x5545 0x24D1D
+0x5546 0x24D1C
+0x5547 0x24DD0
+0x5548 0x24DE0
+0x5549 0x24DCB
+0x554A 0x24DDB
+0x554B 0x24DDA
+0x554C 0x24DC2
+0x554D 0x24DD3
+0x554E 0x24DE5
+0x554F 0x24F7D
+0x5550 0x24F7B
+0x5551 0x24FFF
+0x5553 0x24FF9
+0x5554 0x25077
+0x5555 0x2507C
+0x5556 0x25078
+0x5557 0x2507B
+0x5558 0x2507A
+0x5559 0x251D2
+0x555A 0x251CB
+0x555B 0x251C9
+0x555C 0x251CE
+0x555D 0x251E4
+0x555E 0x251CA
+0x555F 0x251D0
+0x5560 0x22FA5
+0x5562 0x251D9
+0x5563 0x251EE
+0x5564 0x251DD
+0x5565 0x25200
+0x5566 0x251E1
+0x5567 0x253DE
+0x5568 0x253E2
+0x5569 0x253DA
+0x556A 0x254CE
+0x556B 0x2F94F
+0x556C 0x254CF
+0x556D 0x254DA
+0x556E 0x254D1
+0x556F 0x254D4
+0x5570 0x254ED
+0x5571 0x254CB
+0x5572 0x254D5
+0x5573 0x254F1
+0x5574 0x2569C
+0x5575 0x25688
+0x5576 0x25741
+0x5577 0x257D0
+0x5578 0x257F7
+0x5579 0x257CF
+0x557A 0x257D1
+0x557B 0x257DB
+0x557C 0x257DE
+0x557D 0x257F8
+0x557E 0x257DC
+0x5621 0x257D9
+0x5622 0x259A0
+0x5623 0x259B2
+0x5624 0x259A1
+0x5625 0x259AA
+0x5626 0x259A9
+0x5628 0x259A6
+0x5629 0x2599C
+0x562A 0x259B5
+0x562B 0x259A7
+0x562C 0x25A8E
+0x562D 0x25A90
+0x562E 0x25A91
+0x562F 0x25B85
+0x5630 0x25B5B
+0x5631 0x25B70
+0x5632 0x25B64
+0x5633 0x25B67
+0x5634 0x25B63
+0x5635 0x25B77
+0x5636 0x25B68
+0x5637 0x25B65
+0x5638 0x25B6A
+0x5639 0x25B78
+0x563A 0x25B66
+0x563B 0x25E88
+0x563C 0x25E9E
+0x563D 0x25E74
+0x563E 0x25E7A
+0x563F 0x25E79
+0x5640 0x25E8B
+0x5641 0x25E7F
+0x5642 0x26013
+0x5643 0x2601E
+0x5644 0x26017
+0x5645 0x2601A
+0x5646 0x26022
+0x5647 0x26043
+0x5648 0x26019
+0x5649 0x2601F
+0x564A 0x26027
+0x564B 0x26012
+0x564C 0x26024
+0x564D 0x26025
+0x564E 0x2035E
+0x564F 0x26235
+0x5650 0x26234
+0x5651 0x262D1
+0x5652 0x262C4
+0x5653 0x262CA
+0x5654 0x262C6
+0x5655 0x262CB
+0x5656 0x262CD
+0x5657 0x262E2
+0x5658 0x26389
+0x5659 0x2638B
+0x565A 0x26386
+0x565B 0x26388
+0x565C 0x2638D
+0x565D 0x2643B
+0x565E 0x2643C
+0x565F 0x2643D
+0x5660 0x264F5
+0x5661 0x26579
+0x5662 0x26575
+0x5663 0x26582
+0x5664 0x2657F
+0x5665 0x26585
+0x5666 0x26576
+0x5667 0x2657C
+0x5668 0x2657E
+0x5669 0x2657B
+0x566A 0x26580
+0x566B 0x2657A
+0x566C 0x22548
+0x566E 0x2661D
+0x566F 0x266F6
+0x5670 0x266F7
+0x5671 0x266F9
+0x5672 0x26763
+0x5673 0x2676C
+0x5674 0x2676E
+0x5675 0x26714
+0x5677 0x26767
+0x5678 0x2676F
+0x5679 0x26769
+0x567A 0x26776
+0x567B 0x26795
+0x567C 0x26771
+0x567D 0x26761
+0x567E 0x26778
+0x5721 0x2676B
+0x5722 0x26785
+0x5723 0x26784
+0x5724 0x26914
+0x5725 0x26976
+0x5726 0x259B6
+0x5727 0x26975
+0x5728 0x26974
+0x5729 0x269E2
+0x572A 0x26A3F
+0x572B 0x26A44
+0x572C 0x26A3D
+0x572D 0x26A47
+0x572E 0x26A48
+0x572F 0x26ADB
+0x5730 0x26ADC
+0x5731 0x26ADD
+0x5732 0x26BE5
+0x5733 0x26BE6
+0x5734 0x26CC2
+0x5735 0x26D2E
+0x5736 0x26D1D
+0x5737 0x26CF8
+0x5738 0x26CF0
+0x5739 0x26CF6
+0x573A 0x26CC5
+0x573B 0x26CC6
+0x573C 0x26CFC
+0x573D 0x26D52
+0x573E 0x26D2F
+0x573F 0x26D10
+0x5740 0x26CF3
+0x5741 0x26CD2
+0x5742 0x26CEA
+0x5743 0x26CDC
+0x5744 0x26D1B
+0x5745 0x26CFB
+0x5746 0x26CC3
+0x5747 0x26D16
+0x5748 0x26D07
+0x5749 0x26CC9
+0x574A 0x26CD8
+0x574B 0x26D30
+0x574C 0x26D13
+0x574D 0x26D31
+0x574E 0x26CFA
+0x574F 0x26CF2
+0x5750 0x26DE3
+0x5751 0x26CD5
+0x5752 0x26D01
+0x5753 0x26CF1
+0x5754 0x26D1C
+0x5755 0x26CD6
+0x5756 0x26D08
+0x5757 0x26D0B
+0x5758 0x26D17
+0x5759 0x26D20
+0x575A 0x26CCA
+0x575B 0x26D32
+0x575C 0x26D05
+0x575D 0x26CE4
+0x575E 0x26CCE
+0x575F 0x26D33
+0x5760 0x26D02
+0x5761 0x26D19
+0x5762 0x26D1E
+0x5763 0x26CD3
+0x5764 0x26CF7
+0x5765 0x26CE8
+0x5766 0x26D1F
+0x5767 0x26CF4
+0x5768 0x26DD8
+0x5769 0x271BF
+0x576A 0x271BE
+0x576B 0x271BD
+0x576C 0x272DC
+0x576D 0x272DD
+0x576E 0x272AB
+0x576F 0x272C9
+0x5770 0x272C8
+0x5771 0x272DF
+0x5772 0x272D9
+0x5773 0x272DB
+0x5774 0x272CC
+0x5775 0x272E0
+0x5776 0x272EF
+0x5777 0x272F3
+0x5778 0x272AE
+0x5779 0x27301
+0x577A 0x275B7
+0x577B 0x275B9
+0x577C 0x275B6
+0x577D 0x275B8
+0x577E 0x275F6
+0x5821 0x275F3
+0x5822 0x275F5
+0x5823 0x275F2
+0x5824 0x27691
+0x5825 0x2769D
+0x5826 0x2769B
+0x5827 0x27692
+0x5828 0x2768D
+0x5829 0x2769E
+0x582A 0x2768C
+0x582C 0x2F9C7
+0x582D 0x27695
+0x582E 0x2F9C6
+0x582F 0x2768A
+0x5830 0x2768E
+0x5831 0x2769C
+0x5832 0x277EF
+0x5833 0x2782D
+0x5834 0x27852
+0x5835 0x27835
+0x5836 0x27828
+0x5837 0x2782E
+0x5838 0x278E5
+0x5839 0x279EA
+0x583A 0x279F1
+0x583B 0x279EB
+0x583C 0x279D8
+0x583D 0x279D0
+0x583E 0x279F3
+0x583F 0x279DB
+0x5840 0x279CE
+0x5842 0x279DA
+0x5843 0x279D7
+0x5844 0x279E1
+0x5845 0x279F2
+0x5846 0x279C8
+0x5847 0x279D9
+0x5848 0x279DE
+0x5849 0x279D1
+0x584A 0x279E7
+0x584B 0x279CF
+0x584C 0x27BB7
+0x584D 0x27C47
+0x584E 0x27C42
+0x584F 0x27C43
+0x5850 0x2F9D3
+0x5851 0x27CC3
+0x5852 0x27CC1
+0x5853 0x27CC7
+0x5854 0x27D64
+0x5855 0x27D6A
+0x5856 0x27D66
+0x5857 0x27D50
+0x5858 0x27D6E
+0x5859 0x27D65
+0x585A 0x238EC
+0x585B 0x27D7F
+0x585C 0x2F9D5
+0x585D 0x27D9A
+0x585E 0x27D69
+0x585F 0x27D72
+0x5860 0x27D6F
+0x5861 0x27D7D
+0x5862 0x27D70
+0x5863 0x27E60
+0x5864 0x27EC2
+0x5865 0x27EE7
+0x5866 0x27ED1
+0x5867 0x27EEB
+0x5868 0x27ED4
+0x5869 0x27EDC
+0x586A 0x27EDB
+0x586B 0x28037
+0x586C 0x28025
+0x586D 0x2801F
+0x586E 0x2801E
+0x586F 0x28021
+0x5870 0x2801B
+0x5871 0x28017
+0x5872 0x28022
+0x5873 0x2802A
+0x5874 0x2801A
+0x5875 0x2802D
+0x5876 0x28023
+0x5877 0x28026
+0x5878 0x28036
+0x5879 0x27FFF
+0x587A 0x2823A
+0x587B 0x28240
+0x587C 0x28242
+0x587D 0x28238
+0x587E 0x2823B
+0x5921 0x2823C
+0x5922 0x28243
+0x5923 0x282E8
+0x5925 0x282F9
+0x5926 0x282EB
+0x5927 0x282F1
+0x5928 0x282E9
+0x5929 0x282EC
+0x592A 0x28415
+0x592B 0x28447
+0x592C 0x28446
+0x592D 0x28445
+0x592E 0x28524
+0x592F 0x28556
+0x5930 0x28521
+0x5931 0x28527
+0x5932 0x2854D
+0x5933 0x28531
+0x5934 0x2851E
+0x5935 0x2852C
+0x5936 0x2854F
+0x5937 0x2852B
+0x5938 0x28553
+0x5939 0x28551
+0x593A 0x28554
+0x593B 0x28529
+0x593C 0x28550
+0x593D 0x2851F
+0x593E 0x28532
+0x593F 0x2852A
+0x5940 0x2851D
+0x5941 0x28528
+0x5942 0x2852E
+0x5943 0x2852D
+0x5944 0x286BC
+0x5945 0x286BB
+0x5946 0x286BD
+0x5947 0x2F9E4
+0x5948 0x28747
+0x5949 0x28741
+0x594A 0x2F9E5
+0x594B 0x28749
+0x594D 0x2882E
+0x594E 0x28827
+0x594F 0x2896A
+0x5950 0x2897B
+0x5951 0x28973
+0x5952 0x28975
+0x5953 0x28969
+0x5954 0x28979
+0x5955 0x28972
+0x5956 0x28C76
+0x5957 0x28C77
+0x5958 0x28C74
+0x5959 0x28C73
+0x595A 0x28D02
+0x595B 0x28CFE
+0x595C 0x28D01
+0x595D 0x28CF9
+0x595E 0x28CF4
+0x595F 0x28ED3
+0x5960 0x28ED5
+0x5961 0x28ED8
+0x5962 0x28EC3
+0x5963 0x28ECA
+0x5964 0x28ED0
+0x5965 0x28ECB
+0x5966 0x28ECE
+0x5967 0x28EC5
+0x5968 0x28EE6
+0x5969 0x28EC4
+0x596A 0x28EC0
+0x596B 0x28ED4
+0x596C 0x28EE8
+0x596D 0x28F76
+0x596E 0x28FA2
+0x596F 0x28FAE
+0x5970 0x28FA8
+0x5971 0x28FA3
+0x5972 0x28FA7
+0x5973 0x28F96
+0x5974 0x28FA9
+0x5975 0x28FA5
+0x5976 0x28FAF
+0x5977 0x28FA4
+0x5978 0x28FAB
+0x5979 0x28FAA
+0x597A 0x28FA6
+0x597B 0x28FA0
+0x597C 0x29098
+0x597D 0x291DB
+0x597E 0x291F6
+0x5A21 0x291F5
+0x5A22 0x2920C
+0x5A23 0x2920A
+0x5A25 0x29268
+0x5A26 0x29263
+0x5A27 0x29266
+0x5A29 0x29264
+0x5A2A 0x2926A
+0x5A2B 0x29269
+0x5A2C 0x29395
+0x5A2D 0x29402
+0x5A2E 0x2946A
+0x5A2F 0x2945E
+0x5A30 0x29468
+0x5A31 0x29469
+0x5A32 0x29465
+0x5A33 0x2F9FE
+0x5A34 0x295A7
+0x5A35 0x295AE
+0x5A36 0x295A8
+0x5A37 0x295B3
+0x5A38 0x2969C
+0x5A39 0x296A9
+0x5A3A 0x296B6
+0x5A3B 0x296B3
+0x5A3C 0x296B2
+0x5A3D 0x2FA03
+0x5A3E 0x296B8
+0x5A3F 0x296C0
+0x5A40 0x296BF
+0x5A41 0x296BA
+0x5A42 0x296A8
+0x5A43 0x2983C
+0x5A44 0x29872
+0x5A45 0x29871
+0x5A46 0x29875
+0x5A47 0x29873
+0x5A48 0x29A17
+0x5A49 0x29A15
+0x5A4A 0x29A16
+0x5A4B 0x29A1B
+0x5A4C 0x29AFA
+0x5A4D 0x29AF9
+0x5A4E 0x29C2C
+0x5A4F 0x29C85
+0x5A50 0x29C82
+0x5A51 0x29C7F
+0x5A52 0x29C7D
+0x5A53 0x29C88
+0x5A54 0x242F3
+0x5A55 0x29D4E
+0x5A56 0x29D50
+0x5A57 0x29F93
+0x5A58 0x29F97
+0x5A59 0x29F98
+0x5A5A 0x29F9B
+0x5A5B 0x29F9C
+0x5A5C 0x29F96
+0x5A5D 0x2A28B
+0x5A5E 0x2A2FD
+0x5A5F 0x2A2FC
+0x5A60 0x2FA17
+0x5A61 0x2398B
+0x5A62 0x20108
+0x5A63 0x20107
+0x5A64 0x20373
+0x5A65 0x203A2
+0x5A66 0x203AF
+0x5A67 0x20382
+0x5A68 0x2037B
+0x5A69 0x20374
+0x5A6A 0x203B0
+0x5A6B 0x20376
+0x5A6C 0x203B9
+0x5A6D 0x2039E
+0x5A6E 0x203B1
+0x5A6F 0x203A1
+0x5A70 0x203B2
+0x5A71 0x2036E
+0x5A72 0x2F80B
+0x5A74 0x20378
+0x5A75 0x2037A
+0x5A76 0x20383
+0x5A77 0x2039A
+0x5A78 0x204F8
+0x5A79 0x20531
+0x5A7A 0x20569
+0x5A7B 0x20568
+0x5A7C 0x2059C
+0x5A7D 0x20604
+0x5A7E 0x20699
+0x5B21 0x207C7
+0x5B22 0x207C6
+0x5B23 0x207DC
+0x5B24 0x207C4
+0x5B25 0x207D8
+0x5B26 0x207D4
+0x5B27 0x207DF
+0x5B28 0x207D1
+0x5B29 0x207D0
+0x5B2A 0x207D6
+0x5B2B 0x207CF
+0x5B2C 0x208AD
+0x5B2D 0x208AF
+0x5B2E 0x208A7
+0x5B2F 0x208FD
+0x5B30 0x2095B
+0x5B31 0x2095A
+0x5B32 0x20A07
+0x5B33 0x20A9D
+0x5B34 0x20A9B
+0x5B35 0x20AAB
+0x5B36 0x20AA4
+0x5B37 0x20A9C
+0x5B38 0x20A9E
+0x5B39 0x20AA5
+0x5B3A 0x20AAA
+0x5B3B 0x20AA6
+0x5B3C 0x20B0E
+0x5B3D 0x20B7E
+0x5B3E 0x20B7C
+0x5B3F 0x20EEE
+0x5B40 0x20ED5
+0x5B41 0x20EE9
+0x5B42 0x20E42
+0x5B43 0x20EE2
+0x5B44 0x20F23
+0x5B45 0x20ED9
+0x5B46 0x20ED4
+0x5B47 0x20EE3
+0x5B48 0x20F15
+0x5B49 0x20EEF
+0x5B4A 0x20EF0
+0x5B4B 0x20ED6
+0x5B4C 0x20EDD
+0x5B4D 0x20EF6
+0x5B4E 0x20F1C
+0x5B4F 0x20ED8
+0x5B50 0x20EDB
+0x5B51 0x20EDA
+0x5B52 0x20EED
+0x5B53 0x21411
+0x5B54 0x21215
+0x5B55 0x21218
+0x5B56 0x2121A
+0x5B57 0x2121F
+0x5B58 0x21216
+0x5B59 0x2F84D
+0x5B5A 0x21219
+0x5B5B 0x2F84B
+0x5B5C 0x213F0
+0x5B5D 0x21409
+0x5B5E 0x2141B
+0x5B5F 0x27BE7
+0x5B60 0x213F6
+0x5B61 0x213F4
+0x5B62 0x213B5
+0x5B63 0x21410
+0x5B64 0x213F2
+0x5B65 0x21415
+0x5B66 0x213F3
+0x5B67 0x213F8
+0x5B68 0x21539
+0x5B69 0x2153B
+0x5B6A 0x21536
+0x5B6B 0x2140E
+0x5B6C 0x21572
+0x5B6D 0x21574
+0x5B6E 0x215B9
+0x5B6F 0x215B7
+0x5B70 0x215B8
+0x5B71 0x21672
+0x5B72 0x2166B
+0x5B73 0x2181D
+0x5B74 0x21837
+0x5B75 0x21822
+0x5B76 0x21843
+0x5B77 0x2184D
+0x5B78 0x21838
+0x5B79 0x2185B
+0x5B7A 0x21879
+0x5B7B 0x2181B
+0x5B7C 0x217F3
+0x5B7D 0x21991
+0x5B7E 0x21A7B
+0x5C21 0x21A94
+0x5C22 0x2F86F
+0x5C23 0x21A96
+0x5C24 0x21A7F
+0x5C25 0x21A8F
+0x5C26 0x21A84
+0x5C27 0x21A7C
+0x5C28 0x21A8E
+0x5C29 0x21A90
+0x5C2A 0x21A98
+0x5C2B 0x21A83
+0x5C2C 0x21A80
+0x5C2D 0x21A93
+0x5C2E 0x21A82
+0x5C30 0x21B3D
+0x5C31 0x21B41
+0x5C32 0x21BA1
+0x5C33 0x21B9F
+0x5C34 0x21C0A
+0x5C35 0x21C0D
+0x5C36 0x21CC8
+0x5C37 0x21CC9
+0x5C38 0x21CC7
+0x5C39 0x21CCD
+0x5C3A 0x21D25
+0x5C3B 0x21EB1
+0x5C3C 0x21EDC
+0x5C3D 0x2F880
+0x5C3E 0x21EE5
+0x5C3F 0x21EF4
+0x5C40 0x21EBF
+0x5C41 0x21EDB
+0x5C42 0x21EEA
+0x5C43 0x21EF2
+0x5C45 0x21EF1
+0x5C46 0x21EED
+0x5C47 0x21EE6
+0x5C48 0x22002
+0x5C49 0x2F882
+0x5C4A 0x22125
+0x5C4B 0x22118
+0x5C4C 0x2211F
+0x5C4D 0x22120
+0x5C4E 0x221CF
+0x5C4F 0x2229D
+0x5C50 0x22299
+0x5C51 0x222A8
+0x5C52 0x22368
+0x5C53 0x22366
+0x5C54 0x22367
+0x5C55 0x22391
+0x5C56 0x22413
+0x5C57 0x22415
+0x5C58 0x2241D
+0x5C59 0x22416
+0x5C5A 0x22419
+0x5C5B 0x2246B
+0x5C5C 0x22468
+0x5C5D 0x2246A
+0x5C5E 0x2246D
+0x5C5F 0x22469
+0x5C60 0x224AA
+0x5C61 0x22557
+0x5C62 0x22552
+0x5C63 0x22550
+0x5C64 0x2255F
+0x5C65 0x22567
+0x5C66 0x2254F
+0x5C68 0x2255B
+0x5C69 0x2255C
+0x5C6A 0x2255D
+0x5C6B 0x2281F
+0x5C6C 0x2279D
+0x5C6D 0x227B1
+0x5C6E 0x227B0
+0x5C6F 0x22794
+0x5C70 0x227C3
+0x5C71 0x227AF
+0x5C72 0x227A8
+0x5C73 0x227DC
+0x5C74 0x22798
+0x5C75 0x227C4
+0x5C76 0x227A4
+0x5C77 0x227AB
+0x5C78 0x227AA
+0x5C79 0x227A5
+0x5C7A 0x22821
+0x5C7B 0x227EB
+0x5C7C 0x227E6
+0x5C7D 0x227F7
+0x5C7E 0x227F8
+0x5D21 0x227FC
+0x5D22 0x227FA
+0x5D23 0x227E0
+0x5D24 0x2F8AA
+0x5D25 0x227F6
+0x5D26 0x2F8A9
+0x5D27 0x227E1
+0x5D28 0x229EC
+0x5D29 0x229E2
+0x5D2A 0x229E4
+0x5D2B 0x229F9
+0x5D2C 0x22C6F
+0x5D2D 0x23A4C
+0x5D2E 0x22CBB
+0x5D2F 0x22CE1
+0x5D30 0x22D00
+0x5D31 0x22CD8
+0x5D33 0x22CD6
+0x5D34 0x22CE2
+0x5D35 0x22CC3
+0x5D36 0x22CB3
+0x5D37 0x22CD2
+0x5D38 0x2F8C1
+0x5D39 0x22CCE
+0x5D3A 0x22CD0
+0x5D3B 0x22CD5
+0x5D3C 0x22CB9
+0x5D3D 0x22CBA
+0x5D3E 0x22CCF
+0x5D3F 0x22CBD
+0x5D40 0x22EDB
+0x5D41 0x22FAA
+0x5D42 0x22FAD
+0x5D43 0x22FB8
+0x5D44 0x22FB6
+0x5D45 0x22FB5
+0x5D46 0x22FAF
+0x5D47 0x22FB4
+0x5D48 0x22FB7
+0x5D49 0x22FA8
+0x5D4A 0x22FB9
+0x5D4B 0x22FBE
+0x5D4C 0x23082
+0x5D4D 0x230BC
+0x5D4E 0x230B8
+0x5D4F 0x230B6
+0x5D50 0x230B9
+0x5D52 0x23110
+0x5D53 0x23227
+0x5D54 0x23269
+0x5D55 0x23270
+0x5D56 0x23256
+0x5D57 0x2326B
+0x5D58 0x2327A
+0x5D59 0x2326C
+0x5D5A 0x2326D
+0x5D5B 0x2F8D5
+0x5D5C 0x267C1
+0x5D5D 0x2338D
+0x5D5E 0x23390
+0x5D5F 0x235B6
+0x5D60 0x23610
+0x5D61 0x23612
+0x5D62 0x235BA
+0x5D63 0x235BD
+0x5D64 0x23605
+0x5D65 0x235C2
+0x5D66 0x23607
+0x5D67 0x235F5
+0x5D68 0x2F8E9
+0x5D69 0x235AF
+0x5D6A 0x235F4
+0x5D6B 0x235F7
+0x5D6C 0x235F8
+0x5D6D 0x23611
+0x5D6E 0x238F6
+0x5D6F 0x238F5
+0x5D70 0x238FB
+0x5D71 0x23901
+0x5D72 0x23900
+0x5D73 0x23902
+0x5D74 0x238FE
+0x5D75 0x238FA
+0x5D76 0x238FD
+0x5D78 0x23A37
+0x5D79 0x23A49
+0x5D7A 0x23A4B
+0x5D7B 0x23A46
+0x5D7C 0x23A47
+0x5D7D 0x23AB3
+0x5D7E 0x23AB2
+0x5E21 0x23AB0
+0x5E22 0x23AB7
+0x5E23 0x23B11
+0x5E24 0x23BCC
+0x5E25 0x23BDF
+0x5E26 0x23BD3
+0x5E27 0x23BD5
+0x5E28 0x23BDB
+0x5E29 0x23BC5
+0x5E2A 0x23BC8
+0x5E2B 0x23BC9
+0x5E2C 0x23BE2
+0x5E2D 0x23BCA
+0x5E2E 0x23BD1
+0x5E2F 0x23BD2
+0x5E30 0x23BDD
+0x5E31 0x23E6C
+0x5E32 0x23E73
+0x5E33 0x23F21
+0x5E34 0x23EF0
+0x5E35 0x23F1F
+0x5E36 0x23F3B
+0x5E37 0x23F22
+0x5E38 0x23F23
+0x5E39 0x23EE8
+0x5E3A 0x23EDD
+0x5E3C 0x23F1B
+0x5E3D 0x23EED
+0x5E3E 0x2F90E
+0x5E3F 0x23EF2
+0x5E41 0x23EDC
+0x5E42 0x23EE9
+0x5E43 0x23F1D
+0x5E44 0x23EDA
+0x5E45 0x23EE6
+0x5E46 0x24313
+0x5E47 0x24315
+0x5E48 0x24316
+0x5E49 0x2433C
+0x5E4A 0x2430B
+0x5E4B 0x2431C
+0x5E4C 0x2433A
+0x5E4D 0x2433D
+0x5E4E 0x2439A
+0x5E4F 0x2431D
+0x5E50 0x24309
+0x5E51 0x24308
+0x5E52 0x2433B
+0x5E53 0x24522
+0x5E54 0x24526
+0x5E55 0x24525
+0x5E56 0x24524
+0x5E57 0x2039B
+0x5E58 0x2458F
+0x5E59 0x24590
+0x5E5A 0x245E6
+0x5E5B 0x245E3
+0x5E5C 0x245E5
+0x5E5D 0x24611
+0x5E5E 0x2F925
+0x5E5F 0x246AE
+0x5E60 0x246BE
+0x5E61 0x246B4
+0x5E62 0x246B3
+0x5E63 0x246AF
+0x5E64 0x24691
+0x5E65 0x246C2
+0x5E66 0x246B6
+0x5E67 0x246B2
+0x5E68 0x24857
+0x5E69 0x2483B
+0x5E6A 0x24858
+0x5E6B 0x24851
+0x5E6C 0x24841
+0x5E6D 0x24839
+0x5E6F 0x24859
+0x5E70 0x24845
+0x5E71 0x24861
+0x5E72 0x248E8
+0x5E73 0x249FA
+0x5E74 0x249EA
+0x5E75 0x249EF
+0x5E76 0x249F2
+0x5E77 0x249F0
+0x5E78 0x24B08
+0x5E79 0x24B70
+0x5E7A 0x24B6A
+0x5E7B 0x24B73
+0x5E7C 0x24B68
+0x5E7D 0x24BC8
+0x5E7E 0x24BF2
+0x5F21 0x20B7B
+0x5F22 0x24CAE
+0x5F23 0x24CAB
+0x5F24 0x24CB5
+0x5F25 0x24CAF
+0x5F26 0x24CB2
+0x5F27 0x24CB6
+0x5F28 0x24CB0
+0x5F29 0x24D1E
+0x5F2A 0x24E03
+0x5F2B 0x24E06
+0x5F2C 0x24E1F
+0x5F2E 0x24E0F
+0x5F2F 0x24E02
+0x5F30 0x24E19
+0x5F31 0x24E18
+0x5F32 0x24E22
+0x5F33 0x24E15
+0x5F34 0x24E07
+0x5F35 0x24E0D
+0x5F36 0x24E24
+0x5F37 0x24E0C
+0x5F38 0x24E1E
+0x5F39 0x24F89
+0x5F3A 0x24F8A
+0x5F3B 0x2500A
+0x5F3C 0x2500B
+0x5F3D 0x25007
+0x5F3E 0x25004
+0x5F3F 0x25009
+0x5F40 0x25084
+0x5F41 0x25083
+0x5F42 0x25218
+0x5F43 0x25214
+0x5F44 0x25205
+0x5F45 0x25216
+0x5F46 0x2520E
+0x5F47 0x25211
+0x5F48 0x25208
+0x5F49 0x2520B
+0x5F4A 0x25215
+0x5F4B 0x25085
+0x5F4C 0x25237
+0x5F4D 0x2522A
+0x5F4E 0x2520D
+0x5F4F 0x2520F
+0x5F50 0x2537E
+0x5F51 0x25376
+0x5F52 0x25377
+0x5F53 0x253EC
+0x5F54 0x254FC
+0x5F55 0x25508
+0x5F56 0x254FF
+0x5F57 0x25503
+0x5F58 0x25510
+0x5F59 0x25505
+0x5F5A 0x25506
+0x5F5B 0x254FA
+0x5F5C 0x256C7
+0x5F5D 0x256C0
+0x5F5E 0x256C3
+0x5F5F 0x256A7
+0x5F60 0x256A8
+0x5F61 0x256AB
+0x5F62 0x256C1
+0x5F63 0x256AA
+0x5F64 0x256C8
+0x5F65 0x25743
+0x5F66 0x25802
+0x5F67 0x2580E
+0x5F68 0x25801
+0x5F69 0x257FE
+0x5F6A 0x25803
+0x5F6C 0x25822
+0x5F6D 0x25821
+0x5F6E 0x25807
+0x5F6F 0x25808
+0x5F70 0x2580C
+0x5F71 0x259CA
+0x5F72 0x259BC
+0x5F73 0x259BE
+0x5F74 0x259BD
+0x5F75 0x2F95C
+0x5F76 0x259BB
+0x5F77 0x259B9
+0x5F79 0x259C5
+0x5F7A 0x25A99
+0x5F7B 0x25B6B
+0x5F7C 0x25B93
+0x5F7D 0x25B94
+0x5F7E 0x25BA9
+0x6021 0x25BA0
+0x6022 0x25BA6
+0x6023 0x2F961
+0x6024 0x25BAB
+0x6025 0x25B9E
+0x6026 0x25B9B
+0x6027 0x25B91
+0x6028 0x25B99
+0x6029 0x25EB6
+0x602A 0x25EB8
+0x602B 0x25E9A
+0x602D 0x25E98
+0x602E 0x25E9B
+0x602F 0x25EB3
+0x6030 0x25EA2
+0x6031 0x222AA
+0x6032 0x25EA0
+0x6033 0x25E9F
+0x6034 0x2605B
+0x6035 0x26070
+0x6036 0x26054
+0x6037 0x26071
+0x6038 0x26065
+0x6039 0x26051
+0x603A 0x2609D
+0x603B 0x26061
+0x603C 0x2605A
+0x603D 0x26074
+0x603E 0x2604C
+0x603F 0x2604B
+0x6040 0x2605E
+0x6041 0x26058
+0x6042 0x26053
+0x6043 0x26052
+0x6044 0x2623B
+0x6045 0x26239
+0x6046 0x262D6
+0x6047 0x262E7
+0x6048 0x262D7
+0x6049 0x262D8
+0x604A 0x262D9
+0x604B 0x262DA
+0x604C 0x262DB
+0x604D 0x262DC
+0x604E 0x262E0
+0x604F 0x262E4
+0x6050 0x262DD
+0x6051 0x262F5
+0x6052 0x262F1
+0x6053 0x26398
+0x6054 0x2639D
+0x6055 0x26399
+0x6056 0x26450
+0x6057 0x26449
+0x6059 0x26462
+0x605A 0x264D7
+0x605B 0x26501
+0x605C 0x264F7
+0x605D 0x2F97D
+0x605E 0x2658C
+0x605F 0x2659C
+0x6061 0x2661F
+0x6062 0x2661E
+0x6063 0x2673D
+0x6064 0x2673F
+0x6065 0x26711
+0x6066 0x26759
+0x6067 0x2673E
+0x6068 0x26758
+0x6069 0x26800
+0x606A 0x2679E
+0x606B 0x267B6
+0x606C 0x267AA
+0x606D 0x267AF
+0x606E 0x267AC
+0x6070 0x267C0
+0x6071 0x267A9
+0x6072 0x20B10
+0x6073 0x268EE
+0x6074 0x26977
+0x6075 0x26979
+0x6076 0x2697A
+0x6077 0x2697D
+0x6078 0x2697F
+0x6079 0x26983
+0x607A 0x26978
+0x607B 0x2697E
+0x607C 0x269E4
+0x607D 0x269E6
+0x607E 0x269E5
+0x6122 0x26A4E
+0x6123 0x26A59
+0x6125 0x2F98E
+0x6126 0x26A4F
+0x6127 0x26A4A
+0x6128 0x26AE3
+0x6129 0x26ADE
+0x612A 0x26AE2
+0x612B 0x26C74
+0x612C 0x26CAC
+0x612D 0x26C61
+0x612E 0x26C62
+0x612F 0x26C76
+0x6130 0x26C7A
+0x6131 0x26C79
+0x6132 0x26C60
+0x6133 0x26D64
+0x6134 0x26E81
+0x6135 0x26DDF
+0x6136 0x26D84
+0x6137 0x26D8A
+0x6138 0x26D92
+0x6139 0x26D79
+0x613A 0x26DDE
+0x613B 0x26D98
+0x613C 0x26D6C
+0x613D 0x26DE1
+0x613E 0x2F9A5
+0x613F 0x26D7C
+0x6140 0x26D72
+0x6141 0x26D81
+0x6142 0x26DE0
+0x6143 0x26D65
+0x6145 0x26D6A
+0x6146 0x26D97
+0x6147 0x26DAA
+0x6148 0x26DD3
+0x6149 0x26DAB
+0x614A 0x26D6E
+0x614B 0x26DAC
+0x614C 0x26D76
+0x614D 0x26D7B
+0x614E 0x26DAD
+0x614F 0x2F9A6
+0x6150 0x26D94
+0x6151 0x26DD7
+0x6152 0x26D70
+0x6153 0x26DD5
+0x6154 0x26DF1
+0x6155 0x26D7A
+0x6156 0x26D68
+0x6157 0x26D96
+0x6159 0x26D73
+0x615A 0x26DAE
+0x615B 0x26DDD
+0x615C 0x26DDA
+0x615D 0x26DAF
+0x615E 0x26DB0
+0x615F 0x26DDB
+0x6160 0x26D62
+0x6161 0x26DF8
+0x6162 0x271C2
+0x6163 0x271C7
+0x6164 0x271C8
+0x6165 0x271C5
+0x6166 0x271C3
+0x6167 0x271C6
+0x6168 0x272DE
+0x616A 0x27311
+0x616B 0x27315
+0x616C 0x27328
+0x616D 0x27321
+0x616E 0x2732D
+0x616F 0x27351
+0x6170 0x2732B
+0x6171 0x27316
+0x6172 0x27324
+0x6173 0x27335
+0x6174 0x2731F
+0x6175 0x27312
+0x6176 0x27310
+0x6177 0x27380
+0x6178 0x2733B
+0x6179 0x27329
+0x617A 0x2732A
+0x617B 0x2731B
+0x617C 0x27318
+0x617D 0x27320
+0x617E 0x2733F
+0x6221 0x2731C
+0x6222 0x27326
+0x6223 0x2730B
+0x6224 0x275BE
+0x6225 0x275C4
+0x6226 0x275BD
+0x6227 0x275FA
+0x6228 0x275FB
+0x6229 0x276B1
+0x622A 0x276B2
+0x622B 0x276B0
+0x622C 0x276B9
+0x622D 0x276A6
+0x622E 0x276BD
+0x622F 0x276B6
+0x6230 0x276B8
+0x6231 0x276B4
+0x6232 0x276B3
+0x6233 0x276A7
+0x6234 0x276AE
+0x6235 0x276BC
+0x6236 0x277F2
+0x6237 0x277F3
+0x6238 0x277F4
+0x6239 0x2783B
+0x623A 0x27840
+0x623B 0x27846
+0x623C 0x278F0
+0x623D 0x278EE
+0x623E 0x278E8
+0x623F 0x278F1
+0x6240 0x278EB
+0x6241 0x278EF
+0x6242 0x279FC
+0x6243 0x27A20
+0x6244 0x27A09
+0x6245 0x27A06
+0x6246 0x27A03
+0x6247 0x2F9CF
+0x6248 0x27A19
+0x6249 0x27A24
+0x624A 0x27A1B
+0x624B 0x27A1D
+0x624C 0x279FD
+0x624D 0x27A1E
+0x624E 0x279F4
+0x624F 0x27A01
+0x6250 0x27A08
+0x6251 0x27A05
+0x6252 0x27A23
+0x6253 0x279FF
+0x6254 0x27BEA
+0x6255 0x27C4D
+0x6256 0x27C4E
+0x6257 0x27C56
+0x6258 0x27C57
+0x6259 0x27C51
+0x625A 0x27C55
+0x625B 0x27C54
+0x625C 0x27CCB
+0x625D 0x27CD4
+0x625E 0x27CD1
+0x625F 0x27CCF
+0x6260 0x27CD2
+0x6261 0x27CCA
+0x6262 0x27CD6
+0x6263 0x27D8B
+0x6264 0x27D88
+0x6265 0x27D85
+0x6266 0x27D89
+0x6267 0x21A9B
+0x6268 0x27DBB
+0x6269 0x27D8C
+0x626B 0x27D99
+0x626C 0x27D8A
+0x626D 0x27EEC
+0x626E 0x27EEF
+0x626F 0x27EF9
+0x6270 0x27F09
+0x6271 0x27EF8
+0x6272 0x27EF3
+0x6273 0x27F00
+0x6274 0x27F1D
+0x6276 0x27EFD
+0x6277 0x28048
+0x6278 0x2805C
+0x6279 0x28055
+0x627A 0x2805E
+0x627B 0x28049
+0x627C 0x28063
+0x627D 0x28060
+0x627E 0x28053
+0x6321 0x28062
+0x6322 0x28040
+0x6323 0x28249
+0x6324 0x2824A
+0x6325 0x2824C
+0x6326 0x2824D
+0x6327 0x2830A
+0x6328 0x28306
+0x6329 0x2832F
+0x632A 0x28321
+0x632B 0x28307
+0x632C 0x28309
+0x632D 0x28302
+0x632E 0x28316
+0x632F 0x28303
+0x6330 0x2830B
+0x6331 0x2830F
+0x6332 0x28560
+0x6333 0x28568
+0x6334 0x2855E
+0x6335 0x2855D
+0x6336 0x28563
+0x6337 0x2855F
+0x6338 0x28564
+0x6339 0x28578
+0x633A 0x28561
+0x633B 0x28569
+0x633C 0x28565
+0x633D 0x286DA
+0x633E 0x286E6
+0x633F 0x286DB
+0x6340 0x286DC
+0x6341 0x28739
+0x6342 0x28757
+0x6343 0x28755
+0x6344 0x28765
+0x6345 0x28761
+0x6346 0x28754
+0x6347 0x28845
+0x6348 0x28841
+0x6349 0x2883E
+0x634A 0x28837
+0x634B 0x28912
+0x634C 0x28913
+0x634D 0x2892C
+0x634E 0x28996
+0x634F 0x2F9E9
+0x6350 0x2899C
+0x6351 0x2899D
+0x6352 0x28985
+0x6353 0x2F9E8
+0x6354 0x2899F
+0x6355 0x289A3
+0x6356 0x28C82
+0x6357 0x28C83
+0x6358 0x2F9EE
+0x6359 0x28D1D
+0x635A 0x28D14
+0x635B 0x28D1F
+0x635C 0x28D20
+0x635D 0x28E47
+0x635E 0x28E80
+0x635F 0x28EC9
+0x6360 0x28EF9
+0x6361 0x28F06
+0x6362 0x28EF0
+0x6363 0x28EF8
+0x6364 0x28EEF
+0x6365 0x28EFD
+0x6366 0x28EF1
+0x6367 0x28EFE
+0x6368 0x28FB8
+0x6369 0x28FC0
+0x636A 0x28FC3
+0x636B 0x28FB5
+0x636C 0x28FB6
+0x636D 0x28FC9
+0x636E 0x2F9F3
+0x636F 0x28FBD
+0x6370 0x28FBA
+0x6371 0x28FBF
+0x6372 0x28FB3
+0x6373 0x28FC6
+0x6374 0x28FB2
+0x6375 0x28FBC
+0x6376 0x28FB7
+0x6377 0x28FB9
+0x6378 0x28FC8
+0x6379 0x290B5
+0x637A 0x290B3
+0x637C 0x290AC
+0x637D 0x290A9
+0x637E 0x290AD
+0x6421 0x29211
+0x6422 0x2920D
+0x6423 0x29216
+0x6424 0x29289
+0x6425 0x2927C
+0x6426 0x2928B
+0x6427 0x2927B
+0x6428 0x29288
+0x6429 0x29284
+0x642A 0x2939D
+0x642B 0x29398
+0x642C 0x29488
+0x642D 0x29486
+0x642E 0x29482
+0x642F 0x2948B
+0x6430 0x2F9FF
+0x6431 0x29471
+0x6432 0x29472
+0x6433 0x29481
+0x6434 0x2948C
+0x6435 0x29480
+0x6436 0x29489
+0x6437 0x295BB
+0x6438 0x295C1
+0x6439 0x295BE
+0x643A 0x2FA01
+0x643B 0x295BD
+0x643C 0x296C1
+0x643D 0x296B4
+0x643E 0x296B7
+0x643F 0x296C8
+0x6441 0x296D3
+0x6442 0x296D0
+0x6443 0x296B0
+0x6444 0x296CA
+0x6445 0x296CD
+0x6446 0x29815
+0x6447 0x29819
+0x6448 0x29817
+0x6449 0x2983F
+0x644A 0x29840
+0x644B 0x29844
+0x644C 0x2987C
+0x644D 0x29878
+0x644E 0x29879
+0x644F 0x29888
+0x6450 0x2FA06
+0x6451 0x29889
+0x6452 0x2987D
+0x6453 0x29A23
+0x6454 0x29A24
+0x6455 0x29A26
+0x6456 0x29A22
+0x6457 0x29A27
+0x6458 0x29A1F
+0x6459 0x29AC9
+0x645A 0x29AC3
+0x645B 0x29B0A
+0x645C 0x29B0B
+0x645D 0x29B04
+0x645F 0x29B03
+0x6460 0x29B01
+0x6461 0x29B09
+0x6462 0x29C0F
+0x6463 0x29C2E
+0x6464 0x29C2D
+0x6465 0x29C91
+0x6466 0x29C99
+0x6467 0x29C9E
+0x6468 0x29C90
+0x6469 0x29C94
+0x646A 0x29C9D
+0x646B 0x29C98
+0x646C 0x29C9B
+0x646D 0x29C9C
+0x646E 0x29C9A
+0x646F 0x29D54
+0x6470 0x29F9D
+0x6471 0x29F9F
+0x6472 0x29FA3
+0x6473 0x29FA4
+0x6474 0x29FA5
+0x6475 0x2A302
+0x6476 0x2A417
+0x6477 0x2A41B
+0x6478 0x2A419
+0x6479 0x2A4D1
+0x647A 0x21537
diff --git a/test/sun/nio/cs/SurrogateTestEUCTW.plane7.surrogates b/test/sun/nio/cs/SurrogateTestEUCTW.plane7.surrogates
new file mode 100644
index 000000000..1ce4ff48d
--- /dev/null
+++ b/test/sun/nio/cs/SurrogateTestEUCTW.plane7.surrogates
@@ -0,0 +1,6388 @@
+0x2121 0x20055
+0x2122 0x20182
+0x2123 0x20189
+0x2124 0x20187
+0x2125 0x203BE
+0x2126 0x203BD
+0x2127 0x203CA
+0x2128 0x203D4
+0x2129 0x203BC
+0x212A 0x203C4
+0x212B 0x203C1
+0x212C 0x203C2
+0x212D 0x203D7
+0x212E 0x20370
+0x212F 0x203BA
+0x2130 0x203E3
+0x2131 0x203BB
+0x2132 0x204B1
+0x2133 0x204B6
+0x2134 0x204B0
+0x2135 0x2056C
+0x2136 0x2060D
+0x2137 0x20607
+0x2138 0x207F1
+0x2139 0x207F5
+0x213A 0x207ED
+0x213B 0x207EF
+0x213C 0x207EB
+0x213D 0x207EC
+0x213E 0x207EE
+0x213F 0x20807
+0x2140 0x209C4
+0x2141 0x20A08
+0x2142 0x20AB3
+0x2143 0x20AAD
+0x2144 0x20AB0
+0x2145 0x20B11
+0x2146 0x2018A
+0x2147 0x20F83
+0x2148 0x20F7A
+0x2149 0x20F82
+0x214A 0x20F68
+0x214B 0x20F71
+0x214C 0x20FB0
+0x214D 0x20FAF
+0x214F 0x20F6C
+0x2150 0x20F6F
+0x2151 0x20F62
+0x2152 0x20F65
+0x2153 0x20F81
+0x2154 0x20F7F
+0x2155 0x20F64
+0x2156 0x20F73
+0x2157 0x20F6E
+0x2158 0x20F67
+0x2159 0x20F74
+0x215A 0x20F7D
+0x215B 0x20F78
+0x215C 0x20F85
+0x215D 0x20FAA
+0x215E 0x20F88
+0x215F 0x20FA6
+0x2160 0x2F84E
+0x2161 0x20F8A
+0x2162 0x20F84
+0x2164 0x21224
+0x2165 0x21222
+0x2166 0x21223
+0x2167 0x21432
+0x2168 0x2145B
+0x2169 0x2144F
+0x216B 0x21426
+0x216C 0x2143E
+0x216D 0x21442
+0x216E 0x21447
+0x216F 0x21422
+0x2170 0x2069B
+0x2171 0x2144A
+0x2172 0x2141F
+0x2173 0x21449
+0x2174 0x2142B
+0x2175 0x21433
+0x2176 0x2F858
+0x2177 0x2142A
+0x2178 0x21428
+0x2179 0x2153D
+0x217A 0x2153C
+0x217B 0x215BF
+0x217C 0x21679
+0x217D 0x21680
+0x217E 0x2167C
+0x2221 0x2167A
+0x2222 0x21678
+0x2223 0x21882
+0x2224 0x2185C
+0x2225 0x2185A
+0x2226 0x2184B
+0x2227 0x2187C
+0x2228 0x2187F
+0x2229 0x2181F
+0x222A 0x21889
+0x222B 0x2188B
+0x222C 0x21857
+0x222D 0x2187E
+0x222E 0x2187D
+0x222F 0x21853
+0x2230 0x21A9F
+0x2231 0x21ABC
+0x2232 0x21AA5
+0x2233 0x21A86
+0x2234 0x21ADC
+0x2235 0x21AA4
+0x2236 0x21AB6
+0x2237 0x21AA2
+0x2238 0x21AB4
+0x2239 0x21B48
+0x223A 0x21B46
+0x223B 0x21BA7
+0x223C 0x21C14
+0x223D 0x21C12
+0x223E 0x21C11
+0x223F 0x21CE1
+0x2240 0x21CD0
+0x2241 0x21D26
+0x2242 0x21D28
+0x2243 0x21D29
+0x2244 0x21F2F
+0x2245 0x21F0D
+0x2246 0x21F25
+0x2247 0x21F14
+0x2248 0x21F3C
+0x2249 0x21F0B
+0x224A 0x21F11
+0x224B 0x21F30
+0x224C 0x21F18
+0x224D 0x21F19
+0x224E 0x21F36
+0x224F 0x21F17
+0x2250 0x21F10
+0x2251 0x21F15
+0x2252 0x22003
+0x2253 0x22029
+0x2254 0x2204C
+0x2255 0x2213F
+0x2256 0x2213E
+0x2257 0x22134
+0x2258 0x22142
+0x2259 0x22135
+0x225A 0x207F3
+0x225B 0x221CD
+0x225C 0x221D1
+0x225D 0x221D2
+0x225E 0x222AD
+0x225F 0x222BA
+0x2260 0x222C1
+0x2261 0x222BB
+0x2262 0x222B4
+0x2263 0x222BC
+0x2264 0x2236C
+0x2265 0x22392
+0x2266 0x22421
+0x2267 0x22424
+0x2268 0x23F19
+0x2269 0x224AD
+0x226A 0x224AE
+0x226B 0x224AB
+0x226C 0x224AC
+0x226D 0x22570
+0x226E 0x22576
+0x226F 0x22571
+0x2270 0x22577
+0x2272 0x227EC
+0x2273 0x2281C
+0x2274 0x227FB
+0x2275 0x227EE
+0x2276 0x228E2
+0x2277 0x227FD
+0x2278 0x2281E
+0x2279 0x2283B
+0x227A 0x2284A
+0x227B 0x2F8AE
+0x227D 0x2287D
+0x227E 0x22856
+0x2321 0x22844
+0x2322 0x2284B
+0x2323 0x229FA
+0x2324 0x229E8
+0x2325 0x229F8
+0x2326 0x229FF
+0x2327 0x229F7
+0x2328 0x229F6
+0x2329 0x229FE
+0x232A 0x22A07
+0x232B 0x22A5D
+0x232C 0x22CD4
+0x232D 0x2F8C3
+0x232E 0x22CC8
+0x232F 0x22CC5
+0x2330 0x2F8C0
+0x2331 0x22CC9
+0x2332 0x22D4D
+0x2333 0x22D20
+0x2334 0x22D36
+0x2335 0x22D35
+0x2336 0x22D88
+0x2337 0x22D25
+0x2338 0x22D21
+0x2339 0x22D26
+0x233B 0x22D3F
+0x233C 0x22D3B
+0x233D 0x22D24
+0x233E 0x22D43
+0x233F 0x22D4E
+0x2340 0x22D4F
+0x2341 0x22D44
+0x2342 0x22D40
+0x2343 0x22D41
+0x2344 0x22D39
+0x2345 0x22D2B
+0x2346 0x22EDD
+0x2347 0x22EDE
+0x2348 0x22FCD
+0x2349 0x22FCB
+0x234A 0x22FDB
+0x234B 0x22FD8
+0x234C 0x22FD9
+0x234D 0x22FD2
+0x234E 0x22FCA
+0x234F 0x22FD1
+0x2350 0x22FD4
+0x2351 0x22FF9
+0x2352 0x22FD0
+0x2353 0x2305E
+0x2354 0x2305D
+0x2355 0x2308A
+0x2356 0x23114
+0x2357 0x23283
+0x2358 0x23284
+0x2359 0x2329B
+0x235A 0x23282
+0x235B 0x2327D
+0x235C 0x2327C
+0x235D 0x23299
+0x235E 0x2327E
+0x235F 0x2329A
+0x2360 0x23295
+0x2361 0x2327B
+0x2362 0x23286
+0x2363 0x23348
+0x2364 0x23392
+0x2365 0x235B2
+0x2366 0x23642
+0x2367 0x23672
+0x2368 0x23615
+0x2369 0x23630
+0x236A 0x23643
+0x236B 0x2365B
+0x236C 0x2361D
+0x236D 0x23673
+0x236E 0x2362D
+0x2370 0x23621
+0x2371 0x2361C
+0x2372 0x2F8EA
+0x2373 0x23629
+0x2374 0x2361E
+0x2375 0x23633
+0x2376 0x23910
+0x2377 0x2390E
+0x2378 0x2F8F1
+0x2379 0x2390D
+0x237A 0x23911
+0x237B 0x23912
+0x237C 0x23917
+0x237D 0x23909
+0x237E 0x2390F
+0x2421 0x23998
+0x2422 0x23994
+0x2423 0x23996
+0x2424 0x23999
+0x2425 0x23995
+0x2426 0x23997
+0x2427 0x23A50
+0x2428 0x23A52
+0x2429 0x23A4D
+0x242A 0x23A57
+0x242B 0x23A53
+0x242C 0x23A56
+0x242D 0x23AB8
+0x242E 0x23B12
+0x242F 0x23BF1
+0x2430 0x23BF0
+0x2431 0x23BEE
+0x2432 0x23BEF
+0x2433 0x23BE5
+0x2434 0x23BEB
+0x2435 0x23BE7
+0x2436 0x23BF2
+0x2437 0x23BE6
+0x2438 0x23BF7
+0x2439 0x23C09
+0x243A 0x23C6B
+0x243B 0x23C6A
+0x243C 0x23E79
+0x243D 0x23ECD
+0x243E 0x23EEF
+0x243F 0x23EE4
+0x2440 0x23EE3
+0x2441 0x23F6C
+0x2442 0x23F67
+0x2443 0x23F62
+0x2444 0x23F58
+0x2445 0x23F69
+0x2446 0x23FAB
+0x2447 0x23F57
+0x2448 0x23FAD
+0x2449 0x23F54
+0x244A 0x23FAE
+0x244B 0x23F76
+0x244C 0x23F49
+0x244D 0x23F45
+0x244E 0x23F4F
+0x244F 0x2F90F
+0x2450 0x23F50
+0x2451 0x23F7D
+0x2452 0x23F44
+0x2453 0x23F66
+0x2454 0x23F48
+0x2455 0x23FA3
+0x2456 0x23F51
+0x2457 0x23F53
+0x2458 0x2F910
+0x2459 0x23F60
+0x245A 0x23F47
+0x245B 0x23F5E
+0x245C 0x23F85
+0x245D 0x23FAC
+0x245E 0x23F6D
+0x245F 0x23F75
+0x2460 0x23FA8
+0x2462 0x23F43
+0x2463 0x23F4E
+0x2464 0x23F5C
+0x2465 0x23F56
+0x2466 0x23F6E
+0x2467 0x23F63
+0x2468 0x23F6A
+0x2469 0x24356
+0x246A 0x24312
+0x246B 0x2435C
+0x246C 0x24358
+0x246D 0x24355
+0x246E 0x2437E
+0x246F 0x243A8
+0x2470 0x24311
+0x2471 0x24359
+0x2472 0x2435A
+0x2473 0x24367
+0x2474 0x24354
+0x2475 0x2435B
+0x2476 0x243F0
+0x2477 0x24529
+0x2478 0x2452C
+0x2479 0x2452A
+0x247A 0x24527
+0x247B 0x24567
+0x247C 0x24568
+0x247D 0x24593
+0x247E 0x24595
+0x2521 0x2459A
+0x2522 0x245EE
+0x2523 0x245F1
+0x2524 0x245ED
+0x2525 0x245E9
+0x2526 0x246CB
+0x2527 0x246DF
+0x2528 0x246DB
+0x2529 0x2483C
+0x252A 0x2484E
+0x252B 0x2486C
+0x252C 0x2487B
+0x252D 0x2487C
+0x252E 0x24883
+0x252F 0x2486B
+0x2530 0x24866
+0x2531 0x24863
+0x2532 0x248A0
+0x2533 0x24885
+0x2534 0x24868
+0x2535 0x248A2
+0x2536 0x249EC
+0x2538 0x249E7
+0x2539 0x24A10
+0x253A 0x24A18
+0x253B 0x24A3A
+0x253C 0x24A1A
+0x253D 0x24A38
+0x253E 0x24A41
+0x253F 0x24A1B
+0x2540 0x24A14
+0x2541 0x24A1C
+0x2542 0x24A1D
+0x2543 0x24B12
+0x2544 0x24B0D
+0x2545 0x24B07
+0x2546 0x24B7E
+0x2547 0x24B7F
+0x2548 0x20AB9
+0x2549 0x24B80
+0x254A 0x24B7A
+0x254B 0x24BF3
+0x254C 0x24CB9
+0x254D 0x24CBB
+0x254E 0x24CBA
+0x254F 0x24CBD
+0x2550 0x24CB7
+0x2551 0x24CBF
+0x2552 0x24D21
+0x2553 0x24E3A
+0x2554 0x24E3D
+0x2555 0x24E36
+0x2556 0x24E49
+0x2557 0x24E81
+0x2559 0x24E3F
+0x255A 0x24E4D
+0x255B 0x24E3E
+0x255D 0x24E30
+0x255E 0x24E4F
+0x255F 0x24F37
+0x2560 0x24F98
+0x2561 0x24F99
+0x2562 0x25011
+0x2563 0x2500D
+0x2564 0x25088
+0x2565 0x2508A
+0x2566 0x2521C
+0x2567 0x25255
+0x2568 0x25256
+0x2569 0x25262
+0x256A 0x25257
+0x256B 0x25242
+0x256C 0x25210
+0x256D 0x2524D
+0x256E 0x2525A
+0x256F 0x25266
+0x2570 0x25246
+0x2571 0x2287E
+0x2572 0x2524F
+0x2573 0x262F9
+0x2574 0x25387
+0x2575 0x25384
+0x2576 0x253F4
+0x2577 0x253F5
+0x2578 0x253F2
+0x2579 0x253F7
+0x257A 0x25545
+0x257B 0x2F950
+0x257C 0x25549
+0x257D 0x25535
+0x257E 0x254FD
+0x2621 0x25530
+0x2622 0x25543
+0x2623 0x25546
+0x2625 0x25533
+0x2626 0x256C6
+0x2627 0x2F956
+0x2628 0x256D4
+0x2629 0x271D8
+0x262A 0x256E0
+0x262B 0x20FA7
+0x262C 0x25744
+0x262D 0x20398
+0x262E 0x25854
+0x262F 0x2583E
+0x2630 0x25835
+0x2631 0x2583A
+0x2633 0x25834
+0x2634 0x25839
+0x2635 0x25846
+0x2636 0x2585A
+0x2637 0x2585B
+0x2638 0x2583C
+0x2639 0x259DC
+0x263A 0x259D6
+0x263B 0x259D0
+0x263C 0x2F95E
+0x263D 0x25AAC
+0x263E 0x2F95D
+0x263F 0x25AA5
+0x2640 0x25BF4
+0x2641 0x25C24
+0x2642 0x25BE0
+0x2643 0x25BFD
+0x2644 0x25BF2
+0x2645 0x25BFC
+0x2646 0x25C02
+0x2647 0x25BF1
+0x2648 0x25BFF
+0x2649 0x25BD2
+0x264A 0x25BD8
+0x264B 0x25BD3
+0x264C 0x25BF9
+0x264D 0x2F963
+0x264E 0x25BED
+0x264F 0x25BF7
+0x2650 0x25BF0
+0x2651 0x25BD7
+0x2652 0x25C09
+0x2653 0x25BF5
+0x2654 0x25EC2
+0x2655 0x25EC5
+0x2656 0x25ECF
+0x2658 0x25EC1
+0x2659 0x25EC6
+0x265A 0x25ED4
+0x265B 0x25ECE
+0x265C 0x2609B
+0x265D 0x26099
+0x265E 0x2608F
+0x265F 0x260B7
+0x2660 0x26082
+0x2661 0x26093
+0x2662 0x260B4
+0x2663 0x260C1
+0x2664 0x26090
+0x2665 0x2609A
+0x2666 0x26094
+0x2667 0x2609C
+0x2668 0x260B5
+0x2669 0x2F96F
+0x266A 0x2F96E
+0x266B 0x2609F
+0x266C 0x2608E
+0x266D 0x2609E
+0x266E 0x2623C
+0x266F 0x26247
+0x2670 0x26241
+0x2671 0x262EB
+0x2672 0x262EC
+0x2673 0x262ED
+0x2674 0x262EE
+0x2675 0x262DF
+0x2676 0x262F2
+0x2677 0x2630D
+0x2678 0x2630E
+0x2679 0x20186
+0x267A 0x263A9
+0x267B 0x263A4
+0x267C 0x263A5
+0x267D 0x2645F
+0x267E 0x2645A
+0x2721 0x26466
+0x2722 0x26468
+0x2723 0x2646A
+0x2724 0x26464
+0x2725 0x26465
+0x2726 0x264C1
+0x2727 0x264D8
+0x2728 0x2F97B
+0x2729 0x264D9
+0x272A 0x26509
+0x272B 0x265AA
+0x272C 0x265A3
+0x272D 0x265B9
+0x272E 0x259E2
+0x272F 0x265A5
+0x2730 0x265AB
+0x2731 0x26620
+0x2732 0x26789
+0x2733 0x2678B
+0x2734 0x267DB
+0x2735 0x267E4
+0x2736 0x267EF
+0x2737 0x267E2
+0x2738 0x267E9
+0x2739 0x267F0
+0x273A 0x267F3
+0x273B 0x267DD
+0x273C 0x2681E
+0x273D 0x2691D
+0x273E 0x26946
+0x273F 0x2697C
+0x2740 0x26980
+0x2741 0x26981
+0x2742 0x26982
+0x2743 0x26987
+0x2744 0x26988
+0x2745 0x2698A
+0x2746 0x2698C
+0x2747 0x269E7
+0x2748 0x269EB
+0x2749 0x269EA
+0x274A 0x26A68
+0x274B 0x26A6B
+0x274C 0x26A69
+0x274D 0x26A66
+0x274E 0x26A6A
+0x274F 0x26A65
+0x2750 0x26AE5
+0x2751 0x26AE4
+0x2752 0x26AE6
+0x2753 0x26D18
+0x2754 0x26E24
+0x2755 0x26E48
+0x2756 0x26E2F
+0x2757 0x26E7E
+0x2758 0x26D89
+0x2759 0x26E1E
+0x275A 0x26E49
+0x275B 0x26E26
+0x275C 0x26E09
+0x275D 0x26E34
+0x275E 0x26E2D
+0x275F 0x26E4A
+0x2760 0x26E15
+0x2761 0x2F9A9
+0x2762 0x26E33
+0x2763 0x26E28
+0x2764 0x26E27
+0x2765 0x26E20
+0x2766 0x26E2B
+0x2767 0x26E29
+0x2768 0x26E6A
+0x2769 0x26E0B
+0x276A 0x26E0E
+0x276B 0x26E1C
+0x276C 0x26DFF
+0x276D 0x2F9AA
+0x276E 0x26E35
+0x276F 0x26E11
+0x2770 0x26E4B
+0x2771 0x26E4C
+0x2772 0x26E1F
+0x2773 0x26E0F
+0x2774 0x26E39
+0x2775 0x26E68
+0x2776 0x26E1D
+0x2777 0x26E08
+0x2778 0x26E0C
+0x2779 0x26E0D
+0x277A 0x26E62
+0x277B 0x26EAF
+0x277C 0x26E32
+0x277D 0x26E2C
+0x277E 0x26E64
+0x2821 0x26E04
+0x2822 0x26E16
+0x2823 0x26E4D
+0x2824 0x26E07
+0x2825 0x26EAE
+0x2826 0x271D4
+0x2827 0x271D1
+0x2828 0x271D5
+0x2829 0x271D0
+0x282A 0x27371
+0x282B 0x2735D
+0x282C 0x2735B
+0x282D 0x2737A
+0x282E 0x2F9BD
+0x282F 0x2737F
+0x2830 0x27379
+0x2831 0x27367
+0x2832 0x2739E
+0x2833 0x27394
+0x2834 0x27364
+0x2835 0x2735E
+0x2836 0x27381
+0x2837 0x2735A
+0x2838 0x27357
+0x2839 0x2737C
+0x283A 0x27398
+0x283B 0x27366
+0x283C 0x2737E
+0x283D 0x27382
+0x283E 0x27368
+0x283F 0x2735F
+0x2840 0x27363
+0x2841 0x27397
+0x2843 0x27353
+0x2844 0x2737B
+0x2845 0x2737D
+0x2846 0x27378
+0x2847 0x27406
+0x2848 0x275C0
+0x2849 0x275C2
+0x284A 0x275C3
+0x284B 0x276DC
+0x284C 0x276E6
+0x284D 0x276EC
+0x284E 0x276F2
+0x284F 0x276E8
+0x2850 0x276EB
+0x2851 0x276EA
+0x2852 0x276E5
+0x2853 0x276E0
+0x2854 0x276D0
+0x2855 0x276D8
+0x2856 0x276D5
+0x2857 0x276D3
+0x2858 0x276E4
+0x2859 0x276F3
+0x285A 0x276DB
+0x285B 0x2772F
+0x285C 0x277F9
+0x285D 0x2785D
+0x285E 0x2785B
+0x285F 0x2784C
+0x2860 0x27858
+0x2861 0x27860
+0x2862 0x27853
+0x2863 0x27850
+0x2864 0x27907
+0x2865 0x27908
+0x2866 0x278F4
+0x2867 0x278F6
+0x2868 0x27904
+0x2869 0x278FD
+0x286A 0x27905
+0x286B 0x27A28
+0x286C 0x27A56
+0x286D 0x27A42
+0x286E 0x27A5C
+0x286F 0x27A3D
+0x2870 0x27A2F
+0x2871 0x27A2B
+0x2872 0x27A58
+0x2873 0x27A61
+0x2874 0x27A2C
+0x2875 0x27A51
+0x2876 0x27A50
+0x2877 0x27A3C
+0x2878 0x27A36
+0x287A 0x27A60
+0x287B 0x27A5B
+0x287C 0x27A2E
+0x287D 0x27A40
+0x287E 0x27A5F
+0x2921 0x27A26
+0x2922 0x27A2D
+0x2923 0x27A5E
+0x2924 0x27A3B
+0x2925 0x27BEF
+0x2926 0x27BF3
+0x2927 0x27BEE
+0x2928 0x27BED
+0x2929 0x27C5A
+0x292A 0x27C62
+0x292B 0x27C5B
+0x292C 0x27C5F
+0x292D 0x27C5E
+0x292E 0x27C64
+0x292F 0x27CE0
+0x2930 0x27CE1
+0x2931 0x27CE5
+0x2932 0x27DA5
+0x2933 0x27D9B
+0x2934 0x27D9F
+0x2935 0x27D9C
+0x2937 0x27DAA
+0x2938 0x27DA4
+0x2939 0x27DA3
+0x293A 0x27E67
+0x293B 0x27F26
+0x293C 0x27F1A
+0x293E 0x27F1C
+0x293F 0x27F15
+0x2940 0x27F1B
+0x2941 0x27F18
+0x2942 0x27F1E
+0x2943 0x27F25
+0x2944 0x2F9DC
+0x2945 0x2807B
+0x2946 0x28075
+0x2947 0x28093
+0x2948 0x2808F
+0x2949 0x2807C
+0x294A 0x2809B
+0x294B 0x28088
+0x294C 0x28091
+0x294D 0x2807E
+0x294F 0x28086
+0x2950 0x2825B
+0x2951 0x28254
+0x2952 0x28335
+0x2953 0x28340
+0x2954 0x28337
+0x2955 0x28329
+0x2956 0x28326
+0x2957 0x28323
+0x2958 0x28330
+0x2959 0x28320
+0x295A 0x28328
+0x295B 0x28332
+0x295C 0x2832A
+0x295D 0x28331
+0x295E 0x28324
+0x295F 0x28341
+0x2960 0x28342
+0x2961 0x28343
+0x2962 0x28325
+0x2963 0x28338
+0x2964 0x2841C
+0x2965 0x2841D
+0x2966 0x2841E
+0x2967 0x284F6
+0x2968 0x285A5
+0x2969 0x28589
+0x296A 0x2859D
+0x296B 0x2858A
+0x296C 0x28587
+0x296D 0x285AB
+0x296E 0x28586
+0x296F 0x2859E
+0x2970 0x28593
+0x2971 0x285A1
+0x2972 0x28588
+0x2973 0x285A3
+0x2974 0x2859F
+0x2975 0x285A0
+0x2976 0x286FF
+0x2977 0x28700
+0x2978 0x28702
+0x2979 0x286F8
+0x297A 0x286F7
+0x297B 0x28701
+0x297C 0x28787
+0x297D 0x28789
+0x297E 0x28776
+0x2A21 0x2876E
+0x2A22 0x28777
+0x2A23 0x28782
+0x2A24 0x28785
+0x2A25 0x28783
+0x2A26 0x28784
+0x2A27 0x28857
+0x2A28 0x2884B
+0x2A29 0x28856
+0x2A2A 0x2885D
+0x2A2B 0x28860
+0x2A2C 0x2884D
+0x2A2D 0x28855
+0x2A2E 0x28854
+0x2A2F 0x28853
+0x2A30 0x28850
+0x2A31 0x28863
+0x2A32 0x28862
+0x2A33 0x28917
+0x2A34 0x28916
+0x2A35 0x2892D
+0x2A36 0x289D9
+0x2A37 0x289BF
+0x2A39 0x289B2
+0x2A3A 0x289AC
+0x2A3B 0x289B0
+0x2A3C 0x289CF
+0x2A3D 0x289B8
+0x2A3F 0x289D3
+0x2A40 0x289B1
+0x2A41 0x289AF
+0x2A42 0x289CE
+0x2A43 0x289B4
+0x2A44 0x289B7
+0x2A45 0x289D5
+0x2A47 0x28D38
+0x2A48 0x28D28
+0x2A49 0x28D3F
+0x2A4A 0x28D40
+0x2A4B 0x28D41
+0x2A4C 0x28D33
+0x2A4D 0x28D2B
+0x2A4E 0x28D2E
+0x2A4F 0x28F11
+0x2A50 0x28F18
+0x2A51 0x28F17
+0x2A52 0x28F19
+0x2A53 0x28F16
+0x2A55 0x28F0D
+0x2A56 0x28F26
+0x2A57 0x28F79
+0x2A58 0x28FD8
+0x2A59 0x28FF3
+0x2A5A 0x28FD7
+0x2A5B 0x28FCC
+0x2A5C 0x28FCF
+0x2A5D 0x28FCB
+0x2A5E 0x28FD1
+0x2A5F 0x28FCE
+0x2A60 0x28FD4
+0x2A61 0x28FD5
+0x2A62 0x28FD3
+0x2A63 0x28FD6
+0x2A64 0x28FCD
+0x2A65 0x28FDA
+0x2A66 0x28FD2
+0x2A67 0x28FDE
+0x2A68 0x290CC
+0x2A69 0x290B8
+0x2A6A 0x290B7
+0x2A6B 0x290C2
+0x2A6C 0x290C3
+0x2A6D 0x291FA
+0x2A6E 0x291F9
+0x2A6F 0x2921F
+0x2A70 0x2921D
+0x2A71 0x24382
+0x2A72 0x292A6
+0x2A73 0x29290
+0x2A74 0x2929E
+0x2A75 0x29298
+0x2A76 0x29293
+0x2A77 0x29292
+0x2A78 0x292A5
+0x2A79 0x29295
+0x2A7A 0x293A9
+0x2A7B 0x293A8
+0x2A7C 0x293AA
+0x2A7D 0x293AB
+0x2A7E 0x293AC
+0x2B21 0x2941F
+0x2B22 0x29422
+0x2B23 0x294AA
+0x2B24 0x29496
+0x2B25 0x29491
+0x2B26 0x294AB
+0x2B27 0x294A2
+0x2B28 0x294A4
+0x2B29 0x2949D
+0x2B2A 0x29497
+0x2B2B 0x2947D
+0x2B2C 0x2949F
+0x2B2D 0x2949C
+0x2B2E 0x29499
+0x2B2F 0x294A6
+0x2B30 0x29492
+0x2B31 0x294A7
+0x2B32 0x295C9
+0x2B33 0x295C8
+0x2B34 0x295C7
+0x2B35 0x295CB
+0x2B36 0x29674
+0x2B37 0x296C9
+0x2B39 0x296D2
+0x2B3A 0x296DB
+0x2B3B 0x296EB
+0x2B3C 0x296E9
+0x2B3D 0x296EF
+0x2B3E 0x296EE
+0x2B3F 0x296F9
+0x2B40 0x296DE
+0x2B41 0x29816
+0x2B42 0x29845
+0x2B43 0x2987F
+0x2B44 0x29898
+0x2B45 0x2989F
+0x2B46 0x29886
+0x2B47 0x29890
+0x2B48 0x2989A
+0x2B49 0x2989D
+0x2B4A 0x2988D
+0x2B4B 0x2989C
+0x2B4C 0x298A0
+0x2B4D 0x298A7
+0x2B4E 0x2988F
+0x2B4F 0x29A41
+0x2B50 0x29A35
+0x2B51 0x29A37
+0x2B52 0x29A30
+0x2B53 0x29A3A
+0x2B54 0x29A36
+0x2B55 0x2FA08
+0x2B56 0x29ACA
+0x2B57 0x29B12
+0x2B58 0x29B15
+0x2B59 0x29B22
+0x2B5A 0x29B13
+0x2B5B 0x29B18
+0x2B5C 0x29B21
+0x2B5D 0x29C10
+0x2B5E 0x29C20
+0x2B5F 0x29C2F
+0x2B60 0x29CA5
+0x2B61 0x29CA3
+0x2B62 0x29CB6
+0x2B63 0x29CAB
+0x2B64 0x29D68
+0x2B65 0x29D67
+0x2B66 0x29D6F
+0x2B67 0x29D77
+0x2B68 0x29D64
+0x2B69 0x29D78
+0x2B6B 0x29D76
+0x2B6C 0x29D6E
+0x2B6E 0x29FD0
+0x2B6F 0x29FB3
+0x2B70 0x29FCB
+0x2B71 0x29FD6
+0x2B72 0x29FB1
+0x2B73 0x29FB4
+0x2B74 0x29FD7
+0x2B75 0x29FC6
+0x2B76 0x29FBA
+0x2B77 0x29FD1
+0x2B78 0x29FD2
+0x2B79 0x29FB5
+0x2B7A 0x29FC4
+0x2B7B 0x29FCC
+0x2B7C 0x29FBB
+0x2B7D 0x29FB2
+0x2B7E 0x2A25B
+0x2C21 0x2A25A
+0x2C22 0x2A259
+0x2C23 0x2A299
+0x2C24 0x2A294
+0x2C25 0x2A296
+0x2C26 0x2A293
+0x2C27 0x2A291
+0x2C28 0x2A28F
+0x2C29 0x2A298
+0x2C2A 0x2A30C
+0x2C2B 0x2A30A
+0x2C2C 0x2A30E
+0x2C2D 0x2A312
+0x2C2E 0x2A311
+0x2C2F 0x2A30B
+0x2C30 0x2A39A
+0x2C32 0x2A3B4
+0x2C34 0x2A41C
+0x2C35 0x2A420
+0x2C36 0x2A421
+0x2C37 0x2A4D3
+0x2C38 0x2A4D2
+0x2C39 0x2A538
+0x2C3B 0x24CCF
+0x2C3C 0x2011D
+0x2C3D 0x20192
+0x2C3E 0x2018F
+0x2C3F 0x2018C
+0x2C40 0x203EA
+0x2C41 0x204B9
+0x2C42 0x2056E
+0x2C43 0x205A0
+0x2C44 0x291DD
+0x2C45 0x20612
+0x2C46 0x20617
+0x2C47 0x2066D
+0x2C48 0x20805
+0x2C49 0x207FB
+0x2C4A 0x207FD
+0x2C4B 0x20806
+0x2C4C 0x20800
+0x2C4D 0x207FF
+0x2C4E 0x207FE
+0x2C4F 0x208B6
+0x2C50 0x20905
+0x2C51 0x20907
+0x2C52 0x20ABC
+0x2C53 0x20ABB
+0x2C54 0x20B8B
+0x2C55 0x20B87
+0x2C56 0x27BFB
+0x2C57 0x20FE7
+0x2C58 0x20FE6
+0x2C59 0x20FE2
+0x2C5A 0x285D3
+0x2C5B 0x20FD9
+0x2C5C 0x20FCA
+0x2C5D 0x21012
+0x2C5E 0x21010
+0x2C5F 0x20FDC
+0x2C60 0x20FD0
+0x2C61 0x20F8B
+0x2C62 0x21013
+0x2C63 0x22A10
+0x2C64 0x20FDA
+0x2C65 0x2F84F
+0x2C66 0x20FFD
+0x2C67 0x20FE5
+0x2C68 0x20FCC
+0x2C69 0x21039
+0x2C6A 0x20FC7
+0x2C6B 0x20FD8
+0x2C6C 0x21460
+0x2C6D 0x21464
+0x2C6E 0x21486
+0x2C6F 0x2145E
+0x2C70 0x21466
+0x2C71 0x2145F
+0x2C72 0x21477
+0x2C73 0x21482
+0x2C74 0x21496
+0x2C75 0x2153E
+0x2C76 0x21579
+0x2C77 0x2157A
+0x2C78 0x21688
+0x2C79 0x21689
+0x2C7A 0x2168C
+0x2C7B 0x243E0
+0x2C7C 0x2167B
+0x2C7D 0x21686
+0x2C7E 0x21894
+0x2D21 0x21897
+0x2D22 0x218B7
+0x2D23 0x218B5
+0x2D24 0x218B8
+0x2D25 0x21893
+0x2D26 0x218B2
+0x2D27 0x218B4
+0x2D28 0x21899
+0x2D29 0x218C3
+0x2D2A 0x2189D
+0x2D2B 0x2189B
+0x2D2C 0x218A3
+0x2D2E 0x2199F
+0x2D2F 0x2199E
+0x2D30 0x219A3
+0x2D31 0x219A0
+0x2D32 0x219A1
+0x2D33 0x21AC5
+0x2D34 0x21AC6
+0x2D35 0x21ABE
+0x2D36 0x21AC4
+0x2D37 0x21ABF
+0x2D38 0x21B4C
+0x2D39 0x21B4A
+0x2D3A 0x21BB1
+0x2D3B 0x21C15
+0x2D3C 0x21C17
+0x2D3D 0x21C10
+0x2D3E 0x21C18
+0x2D3F 0x21CE0
+0x2D40 0x21CDF
+0x2D41 0x21D27
+0x2D42 0x21F43
+0x2D43 0x21F48
+0x2D44 0x21F1D
+0x2D45 0x21F50
+0x2D46 0x21F58
+0x2D47 0x21F47
+0x2D48 0x21F54
+0x2D49 0x21F53
+0x2D4A 0x21F40
+0x2D4B 0x21F55
+0x2D4D 0x21F5A
+0x2D4E 0x22470
+0x2D4F 0x2215B
+0x2D50 0x2214D
+0x2D51 0x22156
+0x2D52 0x2214F
+0x2D53 0x2F887
+0x2D54 0x22159
+0x2D55 0x2F888
+0x2D56 0x22154
+0x2D57 0x22153
+0x2D58 0x22150
+0x2D59 0x222B3
+0x2D5A 0x2236E
+0x2D5C 0x2236F
+0x2D5D 0x22393
+0x2D5E 0x22429
+0x2D5F 0x22425
+0x2D60 0x22428
+0x2D61 0x2246F
+0x2D62 0x232B8
+0x2D63 0x2F897
+0x2D64 0x224B3
+0x2D65 0x22579
+0x2D66 0x2257E
+0x2D67 0x2257C
+0x2D68 0x22583
+0x2D69 0x2F8AC
+0x2D6A 0x22800
+0x2D6B 0x22834
+0x2D6C 0x22865
+0x2D6D 0x22836
+0x2D6E 0x228A7
+0x2D6F 0x22859
+0x2D70 0x22858
+0x2D71 0x22831
+0x2D72 0x22862
+0x2D73 0x22838
+0x2D74 0x22873
+0x2D75 0x2283E
+0x2D76 0x22855
+0x2D77 0x22854
+0x2D78 0x22895
+0x2D79 0x2F8AD
+0x2D7A 0x228A5
+0x2D7B 0x22894
+0x2D7C 0x2289A
+0x2D7D 0x2289B
+0x2D7E 0x22899
+0x2E21 0x2289F
+0x2E22 0x22853
+0x2E23 0x22A12
+0x2E24 0x22A0A
+0x2E25 0x22A09
+0x2E26 0x22A0C
+0x2E27 0x22A0B
+0x2E28 0x22A0E
+0x2E29 0x22A0D
+0x2E2A 0x22A08
+0x2E2B 0x22D38
+0x2E2C 0x22D3A
+0x2E2D 0x22D37
+0x2E2E 0x22D3D
+0x2E2F 0x22D2D
+0x2E30 0x22D82
+0x2E31 0x22D95
+0x2E32 0x22D87
+0x2E33 0x22D9D
+0x2E34 0x22DB5
+0x2E35 0x22D81
+0x2E36 0x22DC7
+0x2E37 0x22D9B
+0x2E38 0x22D98
+0x2E39 0x22D94
+0x2E3A 0x22D86
+0x2E3B 0x22D90
+0x2E3C 0x22D34
+0x2E3D 0x22D8E
+0x2E3E 0x22D85
+0x2E3F 0x22DA6
+0x2E40 0x22D96
+0x2E41 0x22FEA
+0x2E42 0x22FDF
+0x2E43 0x232BD
+0x2E44 0x22FF7
+0x2E45 0x22FEB
+0x2E46 0x22FE0
+0x2E47 0x22FE8
+0x2E48 0x22FE1
+0x2E49 0x22FE9
+0x2E4A 0x22FEE
+0x2E4B 0x22FE5
+0x2E4C 0x22FEC
+0x2E4D 0x23063
+0x2E4E 0x230C6
+0x2E4F 0x230C2
+0x2E50 0x230C1
+0x2E51 0x230C0
+0x2E52 0x230C3
+0x2E53 0x23118
+0x2E54 0x232AE
+0x2E55 0x232A3
+0x2E56 0x232C5
+0x2E57 0x232A0
+0x2E58 0x232B4
+0x2E59 0x232A5
+0x2E5B 0x232A4
+0x2E5C 0x232A8
+0x2E5D 0x232A6
+0x2E5E 0x236A8
+0x2E5F 0x2368D
+0x2E60 0x23682
+0x2E61 0x2369E
+0x2E62 0x23689
+0x2E63 0x23683
+0x2E64 0x23691
+0x2E65 0x236A6
+0x2E66 0x2369A
+0x2E67 0x23690
+0x2E68 0x23685
+0x2E69 0x2367D
+0x2E6A 0x2F8EC
+0x2E6B 0x2369B
+0x2E6C 0x236A5
+0x2E6D 0x236F0
+0x2E6E 0x23696
+0x2E6F 0x23688
+0x2E70 0x236D6
+0x2E71 0x236D8
+0x2E72 0x23686
+0x2E73 0x236A4
+0x2E74 0x23697
+0x2E75 0x2391C
+0x2E76 0x23919
+0x2E77 0x2399E
+0x2E78 0x2399F
+0x2E79 0x2399D
+0x2E7A 0x2399C
+0x2E7B 0x23A5D
+0x2E7C 0x23A5E
+0x2E7D 0x23A73
+0x2E7E 0x23A63
+0x2F21 0x23ABE
+0x2F22 0x23AC1
+0x2F23 0x23ABC
+0x2F24 0x23ABF
+0x2F25 0x23ABB
+0x2F26 0x23ABD
+0x2F27 0x23B13
+0x2F28 0x23B14
+0x2F29 0x23BF8
+0x2F2A 0x23BFA
+0x2F2B 0x23C06
+0x2F2C 0x23BFE
+0x2F2D 0x23C51
+0x2F2E 0x2400B
+0x2F2F 0x23FF1
+0x2F30 0x23FA9
+0x2F31 0x23FD5
+0x2F32 0x23FDC
+0x2F33 0x23FCB
+0x2F34 0x23FF2
+0x2F35 0x2405F
+0x2F36 0x23FDB
+0x2F37 0x23FD6
+0x2F38 0x23FD9
+0x2F39 0x23FD1
+0x2F3A 0x23FCF
+0x2F3B 0x23FD8
+0x2F3C 0x23FE0
+0x2F3D 0x23FD4
+0x2F3E 0x23FF3
+0x2F3F 0x24005
+0x2F40 0x23FCE
+0x2F41 0x23FF4
+0x2F42 0x2F912
+0x2F43 0x23FDA
+0x2F44 0x2400E
+0x2F45 0x24006
+0x2F46 0x23FD7
+0x2F47 0x23FCD
+0x2F48 0x24007
+0x2F49 0x23FE1
+0x2F4A 0x24008
+0x2F4B 0x243BE
+0x2F4C 0x243EF
+0x2F4D 0x243D9
+0x2F4E 0x243DA
+0x2F50 0x243A0
+0x2F51 0x243DF
+0x2F52 0x2439E
+0x2F53 0x243BF
+0x2F54 0x243AF
+0x2F55 0x243A7
+0x2F56 0x243AA
+0x2F57 0x243F4
+0x2F58 0x243AE
+0x2F59 0x243B5
+0x2F5A 0x243B8
+0x2F5B 0x243DB
+0x2F5C 0x243C0
+0x2F5D 0x243B7
+0x2F5E 0x243A2
+0x2F5F 0x243DD
+0x2F60 0x243A1
+0x2F61 0x243A5
+0x2F62 0x243B4
+0x2F63 0x243A6
+0x2F64 0x243AB
+0x2F65 0x243AC
+0x2F66 0x2439F
+0x2F67 0x243B1
+0x2F68 0x243FC
+0x2F69 0x2452E
+0x2F6A 0x24530
+0x2F6B 0x24599
+0x2F6C 0x245F8
+0x2F6D 0x245F6
+0x2F6E 0x246F4
+0x2F6F 0x246EB
+0x2F70 0x246E1
+0x2F71 0x246E4
+0x2F72 0x24875
+0x2F73 0x24869
+0x2F75 0x24899
+0x2F76 0x2489E
+0x2F77 0x24894
+0x2F78 0x24893
+0x2F79 0x24891
+0x2F7A 0x24A19
+0x2F7B 0x24A17
+0x2F7C 0x24A49
+0x2F7D 0x24A47
+0x2F7E 0x24A48
+0x3021 0x24A52
+0x3022 0x24A40
+0x3023 0x24A63
+0x3024 0x24A46
+0x3025 0x24A5F
+0x3026 0x24B0E
+0x3027 0x24B85
+0x3028 0x24B87
+0x3029 0x24BCB
+0x302A 0x24BCC
+0x302B 0x24BC9
+0x302C 0x24CCB
+0x302D 0x21CE7
+0x302E 0x24D20
+0x302F 0x24E5F
+0x3030 0x24E60
+0x3031 0x24E6A
+0x3032 0x24E76
+0x3033 0x24E73
+0x3034 0x24E71
+0x3035 0x24E66
+0x3037 0x24E6B
+0x3038 0x24E79
+0x3039 0x24E7B
+0x303A 0x24F3C
+0x303B 0x24F9E
+0x303C 0x24F9C
+0x303D 0x2501C
+0x303E 0x2501E
+0x303F 0x25021
+0x3040 0x25096
+0x3041 0x250A1
+0x3042 0x250B6
+0x3043 0x250A0
+0x3044 0x25094
+0x3045 0x25097
+0x3046 0x25281
+0x3047 0x25286
+0x3048 0x252C0
+0x3049 0x2528A
+0x304A 0x2F94B
+0x304B 0x25285
+0x304C 0x25295
+0x304D 0x25249
+0x304E 0x25282
+0x304F 0x25284
+0x3050 0x22878
+0x3051 0x25290
+0x3052 0x252B1
+0x3053 0x253FE
+0x3054 0x253FB
+0x3055 0x25550
+0x3056 0x25556
+0x3057 0x2555A
+0x3058 0x2554C
+0x305A 0x25557
+0x305B 0x256E1
+0x305C 0x256D9
+0x305D 0x256DB
+0x305E 0x256F4
+0x305F 0x25745
+0x3060 0x25747
+0x3061 0x25874
+0x3062 0x2586B
+0x3063 0x25868
+0x3064 0x25869
+0x3065 0x25879
+0x3066 0x2F95B
+0x3067 0x25880
+0x3068 0x25881
+0x3069 0x25861
+0x306A 0x25870
+0x306B 0x2586F
+0x306C 0x25873
+0x306D 0x2585D
+0x306E 0x259FA
+0x3070 0x259F3
+0x3071 0x25A0A
+0x3072 0x25A17
+0x3073 0x2F95F
+0x3074 0x25AB0
+0x3075 0x25C3E
+0x3076 0x25C46
+0x3077 0x25C4F
+0x3078 0x25C44
+0x3079 0x25C69
+0x307A 0x25C33
+0x307B 0x25C2F
+0x307C 0x25C4E
+0x307D 0x25C3A
+0x307E 0x25C2B
+0x3121 0x25CA9
+0x3122 0x25C50
+0x3123 0x25C45
+0x3124 0x25C37
+0x3125 0x25C25
+0x3126 0x25C2C
+0x3127 0x25C3F
+0x3128 0x25C34
+0x3129 0x25C29
+0x312A 0x25C1E
+0x312B 0x25C3D
+0x312C 0x25EED
+0x312D 0x2F966
+0x312E 0x25EF3
+0x312F 0x25EEA
+0x3130 0x25EEB
+0x3131 0x260CC
+0x3132 0x260CE
+0x3133 0x260D0
+0x3134 0x260E3
+0x3135 0x260E0
+0x3136 0x260D1
+0x3137 0x260DC
+0x3138 0x260DD
+0x3139 0x260F0
+0x313A 0x260DB
+0x313B 0x260E5
+0x313C 0x260F1
+0x313D 0x260C9
+0x313E 0x260E8
+0x313F 0x260E7
+0x3140 0x260C8
+0x3141 0x260DE
+0x3142 0x260CD
+0x3143 0x260C5
+0x3144 0x260C6
+0x3145 0x260E4
+0x3146 0x260C3
+0x3147 0x262FB
+0x3148 0x262FC
+0x3149 0x262FE
+0x314A 0x26303
+0x314B 0x26300
+0x314C 0x262FD
+0x314D 0x26305
+0x314E 0x26313
+0x314F 0x263A7
+0x3150 0x263B4
+0x3151 0x26470
+0x3152 0x26474
+0x3153 0x26471
+0x3154 0x26475
+0x3155 0x2647D
+0x3156 0x26473
+0x3157 0x264C4
+0x3158 0x264C3
+0x3159 0x264DE
+0x315A 0x264DD
+0x315B 0x26511
+0x315C 0x2650F
+0x315D 0x26510
+0x315E 0x265C3
+0x315F 0x265C2
+0x3160 0x265CA
+0x3161 0x265C1
+0x3162 0x26623
+0x3163 0x267B1
+0x3164 0x26824
+0x3165 0x26811
+0x3166 0x26825
+0x3167 0x2680A
+0x3168 0x2681F
+0x3169 0x26820
+0x316A 0x26814
+0x316B 0x26828
+0x316C 0x26803
+0x316D 0x26812
+0x316E 0x2680B
+0x316F 0x26817
+0x3170 0x22A11
+0x3171 0x26949
+0x3172 0x26989
+0x3173 0x26990
+0x3174 0x2698F
+0x3175 0x26996
+0x3176 0x26995
+0x3177 0x26993
+0x3178 0x269ED
+0x3179 0x269F0
+0x317A 0x243DE
+0x317B 0x26A85
+0x317C 0x26A77
+0x317D 0x26A7A
+0x317E 0x26A84
+0x3221 0x26A79
+0x3222 0x26A7D
+0x3223 0x26A7B
+0x3224 0x26AED
+0x3225 0x26AEC
+0x3226 0x26DF6
+0x3227 0x26D9B
+0x3228 0x26E9D
+0x3229 0x26F11
+0x322A 0x26EC4
+0x322B 0x26EC8
+0x322C 0x26EDF
+0x322D 0x26EBF
+0x322E 0x26EB3
+0x322F 0x26EBA
+0x3230 0x26F10
+0x3231 0x26F06
+0x3232 0x26E88
+0x3233 0x26E9A
+0x3234 0x26EE0
+0x3235 0x26ECC
+0x3236 0x26EB5
+0x3237 0x26EE1
+0x3238 0x26EBC
+0x3239 0x26EC6
+0x323A 0x26F0B
+0x323B 0x26EA4
+0x323C 0x26E95
+0x323D 0x26EA3
+0x323E 0x26EE2
+0x323F 0x26ECD
+0x3240 0x26EE3
+0x3241 0x26EAB
+0x3242 0x26ECB
+0x3243 0x26E8F
+0x3244 0x2F9AB
+0x3245 0x26EA9
+0x3246 0x26F24
+0x3247 0x26EE4
+0x3248 0x26F12
+0x3249 0x26EE5
+0x324A 0x26F67
+0x324B 0x26EAA
+0x324C 0x26EA0
+0x324D 0x26EE6
+0x324E 0x26EC1
+0x324F 0x26EE7
+0x3250 0x26F0D
+0x3251 0x26E86
+0x3252 0x26EB0
+0x3253 0x26E8B
+0x3254 0x26EE8
+0x3255 0x26EC9
+0x3256 0x26F19
+0x3257 0x26EC0
+0x3258 0x26F0C
+0x3259 0x26EE9
+0x325A 0x26EEA
+0x325B 0x271ED
+0x325C 0x271E3
+0x325D 0x271E4
+0x325E 0x271E8
+0x325F 0x271D2
+0x3260 0x271E2
+0x3262 0x273CF
+0x3263 0x273D1
+0x3264 0x273C3
+0x3265 0x273C9
+0x3266 0x273EA
+0x3267 0x273B4
+0x3268 0x273DC
+0x3269 0x273BD
+0x326A 0x273E6
+0x326B 0x273C8
+0x326C 0x273EC
+0x326D 0x273B2
+0x326E 0x273A9
+0x326F 0x273D3
+0x3270 0x273C0
+0x3271 0x273E9
+0x3272 0x273D5
+0x3274 0x273C5
+0x3276 0x273CB
+0x3277 0x273D0
+0x3278 0x273D2
+0x3279 0x273E4
+0x327A 0x273E8
+0x327B 0x273CD
+0x327C 0x273B6
+0x327D 0x273AA
+0x327E 0x273D4
+0x3321 0x28449
+0x3322 0x273C1
+0x3323 0x273DD
+0x3324 0x273CE
+0x3325 0x275C9
+0x3326 0x275CA
+0x3327 0x276FD
+0x3328 0x276D9
+0x3329 0x276FF
+0x332A 0x27704
+0x332B 0x276FA
+0x332C 0x27706
+0x332D 0x27715
+0x332E 0x27711
+0x332F 0x27707
+0x3330 0x2770B
+0x3331 0x277FC
+0x3332 0x277FD
+0x3333 0x2786D
+0x3334 0x27865
+0x3335 0x27914
+0x3336 0x27913
+0x3337 0x2790C
+0x3338 0x2790B
+0x3339 0x27918
+0x333A 0x27922
+0x333B 0x27A7D
+0x333C 0x27A6F
+0x333D 0x27A75
+0x333E 0x27A7B
+0x333F 0x27A80
+0x3340 0x27A7F
+0x3341 0x27A96
+0x3342 0x27A6D
+0x3343 0x27A6B
+0x3344 0x27A86
+0x3345 0x27A73
+0x3346 0x27A62
+0x3347 0x27A77
+0x3348 0x27A81
+0x3349 0x27A69
+0x334A 0x27A82
+0x334B 0x27A97
+0x334C 0x27A84
+0x334E 0x27A78
+0x334F 0x2F9D0
+0x3350 0x27A7A
+0x3351 0x27A6A
+0x3352 0x27A65
+0x3353 0x27A7E
+0x3354 0x27A94
+0x3355 0x27BC2
+0x3356 0x27BC1
+0x3357 0x27BF9
+0x3358 0x27C71
+0x3359 0x27C6B
+0x335A 0x27C6D
+0x335B 0x27C6F
+0x335C 0x27C6E
+0x335D 0x27CF2
+0x335E 0x27CE8
+0x335F 0x27CEF
+0x3360 0x27CE9
+0x3361 0x27CEA
+0x3362 0x27CED
+0x3363 0x27CF3
+0x3364 0x27CE6
+0x3365 0x27DC9
+0x3366 0x27DB4
+0x3367 0x27DB3
+0x3368 0x27DB9
+0x3369 0x27DCA
+0x336A 0x27DB1
+0x336B 0x27DB6
+0x336C 0x27DC7
+0x336D 0x27DC4
+0x336E 0x27DB7
+0x336F 0x27E6F
+0x3370 0x27F33
+0x3371 0x27F32
+0x3372 0x27F1F
+0x3373 0x2F9D9
+0x3374 0x27F2B
+0x3375 0x27F30
+0x3376 0x27F36
+0x3377 0x27F42
+0x3378 0x27F41
+0x3379 0x2F9D8
+0x337A 0x280A5
+0x337B 0x280AB
+0x337C 0x280A9
+0x337D 0x280B3
+0x337E 0x280A7
+0x3421 0x280A0
+0x3422 0x280D2
+0x3423 0x280A8
+0x3424 0x280B6
+0x3425 0x280AC
+0x3426 0x280AE
+0x3427 0x280E6
+0x3428 0x28265
+0x3429 0x28347
+0x342A 0x28363
+0x342B 0x2834D
+0x342C 0x2835F
+0x342D 0x2834B
+0x342E 0x28360
+0x342F 0x28349
+0x3430 0x28353
+0x3431 0x2F9DF
+0x3433 0x28357
+0x3434 0x2834E
+0x3435 0x28352
+0x3436 0x28354
+0x3437 0x28420
+0x3438 0x28422
+0x3439 0x285C1
+0x343A 0x285D7
+0x343B 0x285D5
+0x343C 0x285C4
+0x343D 0x285D0
+0x343E 0x285BB
+0x343F 0x285E2
+0x3440 0x285CB
+0x3441 0x285B8
+0x3442 0x285BF
+0x3443 0x285D8
+0x3444 0x285C0
+0x3445 0x285BA
+0x3446 0x285B4
+0x3447 0x285BC
+0x3448 0x285D4
+0x3449 0x285ED
+0x344A 0x285C2
+0x344B 0x285D9
+0x344C 0x285CC
+0x344D 0x2872F
+0x344E 0x28723
+0x344F 0x28796
+0x3450 0x2878D
+0x3451 0x2879E
+0x3452 0x28799
+0x3453 0x28883
+0x3455 0x2886A
+0x3456 0x28869
+0x3457 0x28875
+0x3458 0x2886C
+0x3459 0x28880
+0x345A 0x2886E
+0x345B 0x28881
+0x345C 0x28877
+0x345D 0x28876
+0x345E 0x28873
+0x345F 0x28870
+0x3460 0x28884
+0x3461 0x28919
+0x3462 0x289F2
+0x3464 0x289EC
+0x3465 0x289EB
+0x3466 0x289F6
+0x3467 0x289EF
+0x3468 0x289F4
+0x3469 0x289EE
+0x346A 0x289F3
+0x346B 0x289ED
+0x346C 0x28C9B
+0x346D 0x28C98
+0x346E 0x28C94
+0x346F 0x2147A
+0x3470 0x28C9A
+0x3471 0x2F9F0
+0x3472 0x28D4C
+0x3474 0x28D57
+0x3475 0x28D51
+0x3476 0x28D62
+0x3477 0x28D52
+0x3478 0x28D5C
+0x3479 0x28D53
+0x347A 0x2F9EF
+0x347B 0x28E85
+0x347C 0x28F2D
+0x347D 0x28F3E
+0x347E 0x28F30
+0x3521 0x28F7D
+0x3522 0x28FE6
+0x3523 0x28FF6
+0x3524 0x28FE4
+0x3525 0x28FE9
+0x3526 0x28FEC
+0x3527 0x28FF2
+0x3528 0x28FE8
+0x3529 0x28FE3
+0x352A 0x28FEB
+0x352B 0x28FF0
+0x352C 0x28FEA
+0x352D 0x28FE7
+0x352E 0x28FFD
+0x352F 0x28FE5
+0x3530 0x28FEE
+0x3531 0x28FF5
+0x3532 0x28FF9
+0x3533 0x28FF1
+0x3534 0x28FF4
+0x3535 0x2F9F4
+0x3536 0x29011
+0x3537 0x290DE
+0x3538 0x290D8
+0x3539 0x290DD
+0x353A 0x290DB
+0x353B 0x290D3
+0x353C 0x290E1
+0x353D 0x291DE
+0x353E 0x291FC
+0x353F 0x29228
+0x3540 0x292B7
+0x3541 0x292B8
+0x3542 0x292C7
+0x3543 0x292B2
+0x3544 0x292A9
+0x3545 0x292B9
+0x3546 0x292BC
+0x3547 0x292B3
+0x3548 0x292D1
+0x3549 0x293B0
+0x354A 0x293B1
+0x354B 0x293B6
+0x354C 0x29404
+0x354D 0x2942C
+0x354E 0x294C1
+0x354F 0x2949E
+0x3550 0x294BA
+0x3552 0x294D1
+0x3553 0x294D3
+0x3554 0x294D4
+0x3555 0x294D5
+0x3556 0x294C5
+0x3557 0x294B6
+0x3558 0x294B2
+0x3559 0x294B5
+0x355A 0x294C3
+0x355B 0x294B9
+0x355C 0x294C6
+0x355D 0x295D6
+0x355E 0x295E0
+0x355F 0x295DB
+0x3560 0x295D7
+0x3561 0x295DD
+0x3562 0x29715
+0x3563 0x2970C
+0x3564 0x2970F
+0x3565 0x2970E
+0x3566 0x296FE
+0x3567 0x29704
+0x3568 0x2970B
+0x3569 0x29702
+0x356A 0x296FF
+0x356B 0x29708
+0x356C 0x29710
+0x356D 0x29717
+0x356E 0x29713
+0x356F 0x29706
+0x3570 0x29709
+0x3571 0x29824
+0x3572 0x29826
+0x3573 0x29825
+0x3574 0x29848
+0x3575 0x298B5
+0x3576 0x298D2
+0x3577 0x298D5
+0x3578 0x298C4
+0x3579 0x298AF
+0x357A 0x298AD
+0x357B 0x298C1
+0x357C 0x298C0
+0x357D 0x298CC
+0x357E 0x298CD
+0x3621 0x298C3
+0x3622 0x298C8
+0x3623 0x298C5
+0x3624 0x298BA
+0x3625 0x298D0
+0x3626 0x298C2
+0x3627 0x298CE
+0x3629 0x29A43
+0x362A 0x29A42
+0x362B 0x29A40
+0x362C 0x29A31
+0x362D 0x29ACF
+0x362E 0x29ACE
+0x362F 0x29B30
+0x3630 0x29B34
+0x3631 0x29B32
+0x3632 0x29B43
+0x3633 0x29B3C
+0x3634 0x29C11
+0x3635 0x29C35
+0x3636 0x29C34
+0x3637 0x29C37
+0x3638 0x29C31
+0x3639 0x29CBF
+0x363A 0x29CBC
+0x363B 0x29CC2
+0x363C 0x29CC9
+0x363D 0x29D83
+0x363E 0x29D8B
+0x363F 0x29DA0
+0x3640 0x29D8D
+0x3641 0x29D8C
+0x3642 0x29D9A
+0x3643 0x29D8A
+0x3644 0x29D91
+0x3645 0x29FF1
+0x3646 0x2A00F
+0x3647 0x2A001
+0x3648 0x2A007
+0x3649 0x2A00C
+0x364B 0x29FDC
+0x364C 0x29FEE
+0x364D 0x29FF7
+0x364E 0x29FF2
+0x364F 0x29FF8
+0x3650 0x29FEB
+0x3652 0x29FE6
+0x3653 0x29FED
+0x3654 0x29FE9
+0x3655 0x2A008
+0x3656 0x2A000
+0x3657 0x29FE5
+0x3658 0x29FFC
+0x3659 0x2A261
+0x365A 0x2A25E
+0x365B 0x2A25F
+0x365D 0x2A29B
+0x365E 0x2A316
+0x365F 0x2A315
+0x3660 0x2A320
+0x3661 0x2A314
+0x3662 0x2A31A
+0x3663 0x2A317
+0x3664 0x2A39C
+0x3666 0x2A3F1
+0x3668 0x2A3F0
+0x3669 0x2A428
+0x366A 0x2A424
+0x366B 0x2A42A
+0x366C 0x2A42B
+0x366D 0x2A4D5
+0x366E 0x2A504
+0x366F 0x2A505
+0x3670 0x2A591
+0x3671 0x2A592
+0x3672 0x2A6A6
+0x3673 0x20109
+0x3674 0x20422
+0x3675 0x2041A
+0x3676 0x2040E
+0x3677 0x2041B
+0x3678 0x20408
+0x3679 0x250B3
+0x367A 0x2F81C
+0x367B 0x2069D
+0x367C 0x20812
+0x367D 0x2081E
+0x367E 0x208BB
+0x3721 0x208BF
+0x3722 0x208BC
+0x3723 0x20908
+0x3724 0x20909
+0x3725 0x20963
+0x3726 0x209C8
+0x3727 0x23728
+0x3728 0x20B8E
+0x3729 0x20B8D
+0x372A 0x21043
+0x372B 0x2104D
+0x372C 0x2106D
+0x372D 0x21042
+0x372E 0x21052
+0x372F 0x21051
+0x3730 0x21069
+0x3731 0x21050
+0x3732 0x21056
+0x3733 0x2106C
+0x3734 0x21044
+0x3735 0x21045
+0x3736 0x2106B
+0x3738 0x21068
+0x3739 0x21057
+0x373A 0x2122E
+0x373B 0x21231
+0x373C 0x2122D
+0x373D 0x2148B
+0x373E 0x214B2
+0x373F 0x2148D
+0x3740 0x214A3
+0x3741 0x214A4
+0x3742 0x21490
+0x3743 0x21489
+0x3744 0x2148E
+0x3745 0x21492
+0x3746 0x2157B
+0x3747 0x21690
+0x3748 0x2168F
+0x3749 0x218E9
+0x374A 0x218CD
+0x374B 0x218C5
+0x374C 0x218D0
+0x374D 0x218C9
+0x374E 0x218D1
+0x374F 0x218C7
+0x3750 0x218D2
+0x3751 0x2185F
+0x3752 0x218E1
+0x3753 0x218CC
+0x3754 0x218C6
+0x3755 0x218E4
+0x3756 0x219A9
+0x3757 0x21AD3
+0x3758 0x21ADA
+0x3759 0x21AD2
+0x375A 0x21ADB
+0x375B 0x21B4D
+0x375C 0x21B4E
+0x375D 0x21C1C
+0x375E 0x21CE8
+0x375F 0x21F6C
+0x3760 0x21F5F
+0x3761 0x21F66
+0x3762 0x21F64
+0x3763 0x21F78
+0x3764 0x21F65
+0x3765 0x21F6D
+0x3766 0x21F61
+0x3767 0x21F7A
+0x3768 0x22007
+0x3769 0x22166
+0x376A 0x22168
+0x376B 0x22162
+0x376C 0x222D3
+0x376D 0x222D4
+0x376E 0x222D1
+0x376F 0x222DC
+0x3770 0x22373
+0x3771 0x22372
+0x3772 0x2242D
+0x3773 0x2242C
+0x3774 0x2242F
+0x3775 0x22472
+0x3776 0x224B4
+0x3777 0x22589
+0x3778 0x228CD
+0x3779 0x228A6
+0x377A 0x228A2
+0x377B 0x228A0
+0x377C 0x22846
+0x377D 0x228A1
+0x377E 0x26857
+0x3821 0x228A3
+0x3822 0x228B1
+0x3823 0x228DB
+0x3824 0x228F6
+0x3825 0x228DC
+0x3826 0x228D6
+0x3827 0x22A13
+0x3828 0x22D9C
+0x3829 0x22D97
+0x382A 0x22DD8
+0x382B 0x22DE4
+0x382C 0x22DD4
+0x382D 0x22DE5
+0x382E 0x22DDB
+0x382F 0x22DD0
+0x3830 0x22DDA
+0x3831 0x22DCC
+0x3832 0x22DDC
+0x3833 0x22DED
+0x3834 0x22DD3
+0x3835 0x22DD1
+0x3836 0x22DCE
+0x3837 0x22DD9
+0x3838 0x22DDD
+0x3839 0x2F8C6
+0x383A 0x22EE6
+0x383B 0x22EE5
+0x383C 0x22EE9
+0x383D 0x22FFF
+0x383E 0x22FFE
+0x383F 0x2300E
+0x3840 0x2308C
+0x3841 0x230CA
+0x3842 0x230CB
+0x3843 0x2311A
+0x3844 0x232D7
+0x3845 0x232CF
+0x3846 0x232D0
+0x3847 0x232C9
+0x3848 0x232CC
+0x3849 0x232D3
+0x384A 0x233A4
+0x384B 0x233A3
+0x384C 0x23681
+0x384D 0x23726
+0x384E 0x236F3
+0x384F 0x23727
+0x3850 0x236F2
+0x3851 0x236FF
+0x3852 0x236F5
+0x3853 0x236FC
+0x3854 0x2370E
+0x3856 0x236F6
+0x3857 0x23700
+0x3858 0x23723
+0x3859 0x23705
+0x385A 0x23725
+0x385B 0x23708
+0x385C 0x23750
+0x385D 0x23925
+0x385E 0x23920
+0x385F 0x23923
+0x3860 0x23921
+0x3861 0x239A1
+0x3862 0x23A69
+0x3863 0x23A6C
+0x3864 0x23A68
+0x3865 0x23A6B
+0x3866 0x23ACC
+0x3867 0x23ACD
+0x3868 0x23C10
+0x3869 0x23C0D
+0x386A 0x23C0A
+0x386B 0x23C16
+0x386C 0x23C14
+0x386D 0x23C52
+0x386E 0x24028
+0x386F 0x2402E
+0x3870 0x2402C
+0x3871 0x2404D
+0x3872 0x24049
+0x3873 0x24031
+0x3874 0x24030
+0x3875 0x24033
+0x3876 0x2402D
+0x3877 0x24036
+0x3878 0x2403E
+0x3879 0x2402F
+0x387A 0x24027
+0x387B 0x24034
+0x387C 0x2404C
+0x387D 0x243FE
+0x387E 0x24412
+0x3921 0x2441F
+0x3922 0x24417
+0x3923 0x243F5
+0x3924 0x24415
+0x3925 0x243F7
+0x3927 0x21F7D
+0x3928 0x243FA
+0x3929 0x243F9
+0x392A 0x2444B
+0x392B 0x2459C
+0x392C 0x2459D
+0x392E 0x246F0
+0x392F 0x246F6
+0x3930 0x246EF
+0x3931 0x2489D
+0x3932 0x2489A
+0x3933 0x248A7
+0x3934 0x248AF
+0x3935 0x248AA
+0x3936 0x24A64
+0x3937 0x24A86
+0x3938 0x24A75
+0x3939 0x24A70
+0x393A 0x24A84
+0x393B 0x24A6B
+0x393C 0x24A85
+0x393D 0x24A6C
+0x393E 0x24B17
+0x393F 0x24B94
+0x3940 0x24B93
+0x3941 0x24CD2
+0x3942 0x24CD7
+0x3943 0x24CD4
+0x3944 0x24EA6
+0x3945 0x24EA7
+0x3946 0x24E9C
+0x3947 0x24E8B
+0x3948 0x24E8D
+0x3949 0x24E98
+0x394A 0x24EB9
+0x394B 0x24E9B
+0x394C 0x24E9D
+0x394D 0x24E99
+0x394E 0x24EA8
+0x394F 0x24E91
+0x3950 0x24E87
+0x3951 0x24E9A
+0x3952 0x24FA6
+0x3953 0x2501F
+0x3954 0x250A7
+0x3955 0x250B1
+0x3956 0x250B2
+0x3957 0x250B7
+0x3958 0x252D0
+0x3959 0x252B3
+0x395A 0x252B5
+0x395B 0x252C4
+0x395C 0x252C3
+0x395D 0x252BC
+0x395E 0x252B2
+0x395F 0x252BA
+0x3960 0x252BB
+0x3961 0x252C2
+0x3962 0x252CD
+0x3963 0x252BE
+0x3964 0x252B7
+0x3965 0x2538F
+0x3966 0x25403
+0x3967 0x25404
+0x3968 0x25571
+0x3969 0x25577
+0x396A 0x25574
+0x396B 0x2558B
+0x396C 0x2557A
+0x396D 0x2F951
+0x396E 0x2558C
+0x396F 0x25573
+0x3970 0x256FF
+0x3971 0x256FB
+0x3972 0x256FD
+0x3973 0x256F0
+0x3974 0x256F3
+0x3975 0x256FC
+0x3976 0x256F2
+0x3977 0x25892
+0x3978 0x2589E
+0x3979 0x258AE
+0x397A 0x25896
+0x397B 0x25A14
+0x397C 0x25A12
+0x397D 0x25A13
+0x397E 0x25A16
+0x3A21 0x25A0F
+0x3A22 0x25AB6
+0x3A23 0x25ABD
+0x3A24 0x25C8C
+0x3A25 0x25CAE
+0x3A26 0x25CAC
+0x3A27 0x25CAB
+0x3A28 0x25C99
+0x3A29 0x25C92
+0x3A2A 0x25CBB
+0x3A2B 0x25C9E
+0x3A2C 0x25C7E
+0x3A2D 0x25CAF
+0x3A2E 0x25CBC
+0x3A2F 0x25C98
+0x3A30 0x25F01
+0x3A31 0x25F09
+0x3A32 0x25F06
+0x3A33 0x2F967
+0x3A34 0x25F07
+0x3A35 0x25F08
+0x3A36 0x260CF
+0x3A37 0x2610E
+0x3A38 0x26132
+0x3A3A 0x26112
+0x3A3B 0x26116
+0x3A3C 0x26117
+0x3A3D 0x2611B
+0x3A3E 0x26115
+0x3A3F 0x26131
+0x3A40 0x26118
+0x3A41 0x2611A
+0x3A42 0x26110
+0x3A43 0x2610A
+0x3A44 0x26109
+0x3A45 0x2624F
+0x3A46 0x2F973
+0x3A47 0x2630F
+0x3A48 0x26310
+0x3A49 0x2F975
+0x3A4A 0x26328
+0x3A4B 0x26311
+0x3A4C 0x26316
+0x3A4D 0x26317
+0x3A4E 0x26302
+0x3A4F 0x263BB
+0x3A50 0x263BA
+0x3A51 0x263C3
+0x3A52 0x263BC
+0x3A53 0x2648A
+0x3A54 0x26484
+0x3A55 0x26486
+0x3A56 0x264E0
+0x3A57 0x26517
+0x3A58 0x26518
+0x3A59 0x2651E
+0x3A5A 0x26515
+0x3A5B 0x265D3
+0x3A5C 0x265DA
+0x3A5D 0x265D9
+0x3A5E 0x267E6
+0x3A5F 0x267F4
+0x3A60 0x267E1
+0x3A61 0x26869
+0x3A62 0x26840
+0x3A63 0x26858
+0x3A64 0x2686C
+0x3A65 0x2684D
+0x3A66 0x26921
+0x3A67 0x26999
+0x3A68 0x269F1
+0x3A69 0x23F68
+0x3A6A 0x26A86
+0x3A6B 0x26F5B
+0x3A6C 0x26F5C
+0x3A6D 0x26F77
+0x3A6E 0x26F2C
+0x3A6F 0x2F9AD
+0x3A70 0x26F58
+0x3A71 0x26F64
+0x3A72 0x26F61
+0x3A73 0x26F48
+0x3A74 0x26F97
+0x3A75 0x26F59
+0x3A76 0x26F29
+0x3A77 0x26F62
+0x3A78 0x26F2E
+0x3A79 0x26F68
+0x3A7A 0x26F90
+0x3A7B 0x26F3A
+0x3A7C 0x26F3D
+0x3A7D 0x26F5E
+0x3A7E 0x26F46
+0x3B21 0x26F69
+0x3B22 0x26F65
+0x3B23 0x26F3E
+0x3B24 0x26F49
+0x3B25 0x26F56
+0x3B26 0x26FE1
+0x3B27 0x26F78
+0x3B28 0x26F79
+0x3B29 0x26F66
+0x3B2A 0x26F4A
+0x3B2B 0x26F35
+0x3B2C 0x26F7A
+0x3B2D 0x26F92
+0x3B2E 0x26F60
+0x3B2F 0x26F36
+0x3B30 0x26F51
+0x3B31 0x26F42
+0x3B33 0x26F3F
+0x3B34 0x26F7B
+0x3B35 0x26F5D
+0x3B36 0x26F94
+0x3B37 0x26F6A
+0x3B38 0x2F9B5
+0x3B39 0x271F2
+0x3B3A 0x273BB
+0x3B3B 0x2741B
+0x3B3C 0x2741A
+0x3B3D 0x27433
+0x3B3E 0x27417
+0x3B3F 0x2740A
+0x3B40 0x27415
+0x3B41 0x27412
+0x3B42 0x27401
+0x3B43 0x2742D
+0x3B44 0x273FD
+0x3B45 0x27423
+0x3B46 0x27405
+0x3B47 0x27411
+0x3B48 0x27400
+0x3B49 0x2741C
+0x3B4A 0x27435
+0x3B4B 0x2742E
+0x3B4C 0x27436
+0x3B4D 0x20ABF
+0x3B4E 0x2742F
+0x3B4F 0x2740C
+0x3B50 0x27409
+0x3B51 0x27431
+0x3B52 0x273FC
+0x3B53 0x2740F
+0x3B54 0x27418
+0x3B55 0x27402
+0x3B56 0x27600
+0x3B57 0x2771F
+0x3B58 0x27737
+0x3B5A 0x27738
+0x3B5B 0x2772B
+0x3B5C 0x2772E
+0x3B5D 0x27721
+0x3B5E 0x27730
+0x3B5F 0x27729
+0x3B60 0x27731
+0x3B61 0x2F9C9
+0x3B62 0x27701
+0x3B63 0x2772C
+0x3B64 0x27722
+0x3B65 0x277FF
+0x3B66 0x27877
+0x3B67 0x27867
+0x3B68 0x2787F
+0x3B69 0x2787D
+0x3B6A 0x2787B
+0x3B6B 0x2787E
+0x3B6C 0x2791E
+0x3B6D 0x2791C
+0x3B6E 0x27921
+0x3B6F 0x27926
+0x3B70 0x27927
+0x3B71 0x27929
+0x3B72 0x2792C
+0x3B73 0x2791D
+0x3B74 0x2792B
+0x3B75 0x27ABF
+0x3B76 0x27AA4
+0x3B77 0x27AAA
+0x3B78 0x27AAE
+0x3B79 0x27A9F
+0x3B7A 0x27AD0
+0x3B7B 0x27AB1
+0x3B7C 0x27AAD
+0x3B7D 0x27A9B
+0x3B7E 0x27AB2
+0x3C21 0x27AA9
+0x3C22 0x27AB3
+0x3C23 0x27AB4
+0x3C24 0x27ABA
+0x3C25 0x27AA5
+0x3C26 0x27AB7
+0x3C27 0x27AAC
+0x3C28 0x27ACB
+0x3C29 0x27ACF
+0x3C2A 0x27BC6
+0x3C2B 0x27C01
+0x3C2C 0x27BFF
+0x3C2D 0x27BFD
+0x3C2E 0x27C77
+0x3C2F 0x27C78
+0x3C30 0x27C76
+0x3C31 0x27CF7
+0x3C32 0x27DCC
+0x3C34 0x27DD4
+0x3C35 0x27DD7
+0x3C36 0x27DD5
+0x3C37 0x27DD6
+0x3C38 0x27DD3
+0x3C39 0x27F5D
+0x3C3A 0x27F55
+0x3C3B 0x280E0
+0x3C3C 0x28148
+0x3C3D 0x280EE
+0x3C3E 0x280DB
+0x3C3F 0x280E7
+0x3C40 0x280D6
+0x3C41 0x280E5
+0x3C42 0x280E1
+0x3C43 0x280DD
+0x3C44 0x280E2
+0x3C45 0x28270
+0x3C46 0x28266
+0x3C47 0x2826F
+0x3C48 0x2826E
+0x3C49 0x28381
+0x3C4A 0x28369
+0x3C4B 0x2836E
+0x3C4C 0x2836D
+0x3C4D 0x2836C
+0x3C4E 0x28384
+0x3C4F 0x28385
+0x3C50 0x28371
+0x3C51 0x28373
+0x3C52 0x2836A
+0x3C53 0x2836F
+0x3C54 0x2837B
+0x3C55 0x2856A
+0x3C56 0x2857C
+0x3C57 0x2857D
+0x3C58 0x28581
+0x3C59 0x285FA
+0x3C5A 0x28605
+0x3C5B 0x285EB
+0x3C5C 0x285FB
+0x3C5D 0x285E9
+0x3C5E 0x285EF
+0x3C5F 0x285FC
+0x3C60 0x285E7
+0x3C61 0x2F9E1
+0x3C62 0x285EE
+0x3C63 0x285FD
+0x3C64 0x28732
+0x3C65 0x287A7
+0x3C66 0x287B5
+0x3C67 0x287B1
+0x3C68 0x287B9
+0x3C69 0x287A8
+0x3C6A 0x287B3
+0x3C6B 0x2F9E6
+0x3C6C 0x2888A
+0x3C6D 0x28891
+0x3C6E 0x2888D
+0x3C6F 0x28899
+0x3C71 0x2889A
+0x3C72 0x2889B
+0x3C73 0x28892
+0x3C74 0x2888F
+0x3C75 0x288AB
+0x3C76 0x24CDB
+0x3C78 0x28A75
+0x3C79 0x28A31
+0x3C7A 0x28A38
+0x3C7C 0x28A35
+0x3C7D 0x28A69
+0x3C7E 0x28A3B
+0x3D21 0x28A3D
+0x3D22 0x28A6C
+0x3D23 0x28A79
+0x3D24 0x28A3C
+0x3D25 0x28A3E
+0x3D26 0x28C97
+0x3D27 0x28CA5
+0x3D28 0x28CA2
+0x3D29 0x28C9D
+0x3D2A 0x28CA1
+0x3D2B 0x28D68
+0x3D2C 0x28D6F
+0x3D2D 0x28D6D
+0x3D2E 0x28D72
+0x3D2F 0x28D75
+0x3D30 0x28D77
+0x3D31 0x28D79
+0x3D32 0x28EB5
+0x3D33 0x28EEA
+0x3D34 0x28EAB
+0x3D35 0x28F43
+0x3D36 0x28F41
+0x3D37 0x28F42
+0x3D38 0x29009
+0x3D39 0x29008
+0x3D3A 0x29006
+0x3D3B 0x29001
+0x3D3C 0x29003
+0x3D3D 0x29000
+0x3D3E 0x29004
+0x3D3F 0x2900A
+0x3D40 0x2900E
+0x3D41 0x2900D
+0x3D42 0x29007
+0x3D43 0x2900F
+0x3D44 0x29014
+0x3D45 0x29002
+0x3D46 0x29015
+0x3D47 0x2900C
+0x3D48 0x29010
+0x3D49 0x29005
+0x3D4A 0x290FD
+0x3D4B 0x290FF
+0x3D4C 0x29104
+0x3D4D 0x29100
+0x3D4E 0x29109
+0x3D4F 0x2922B
+0x3D50 0x2F9F7
+0x3D51 0x29231
+0x3D52 0x292DB
+0x3D53 0x292C5
+0x3D54 0x292D3
+0x3D55 0x292CE
+0x3D57 0x292C9
+0x3D58 0x292BF
+0x3D59 0x292CB
+0x3D5A 0x292C0
+0x3D5B 0x292D0
+0x3D5C 0x292D4
+0x3D5D 0x293C1
+0x3D5E 0x293B9
+0x3D5F 0x293BB
+0x3D60 0x293C3
+0x3D61 0x293C9
+0x3D62 0x29407
+0x3D63 0x2942D
+0x3D64 0x294F8
+0x3D65 0x294E1
+0x3D66 0x294FA
+0x3D67 0x294EF
+0x3D68 0x294FD
+0x3D6A 0x294EB
+0x3D6B 0x294F1
+0x3D6C 0x294ED
+0x3D6D 0x294FE
+0x3D6E 0x295F8
+0x3D6F 0x29603
+0x3D70 0x295EE
+0x3D71 0x295E8
+0x3D72 0x29601
+0x3D73 0x296EC
+0x3D74 0x29722
+0x3D75 0x29714
+0x3D76 0x29734
+0x3D77 0x2972F
+0x3D78 0x29739
+0x3D79 0x29741
+0x3D7A 0x2973C
+0x3D7B 0x29749
+0x3D7C 0x29758
+0x3D7D 0x2973A
+0x3D7E 0x29742
+0x3E21 0x2973F
+0x3E22 0x29822
+0x3E23 0x29823
+0x3E24 0x2984A
+0x3E25 0x298DC
+0x3E26 0x298D9
+0x3E27 0x298DB
+0x3E28 0x298E2
+0x3E29 0x2FA07
+0x3E2A 0x298DF
+0x3E2B 0x298E0
+0x3E2C 0x298D7
+0x3E2D 0x29A4F
+0x3E2E 0x29A46
+0x3E2F 0x29A53
+0x3E30 0x29A55
+0x3E31 0x29A4E
+0x3E32 0x29A4A
+0x3E33 0x29A4C
+0x3E34 0x29A63
+0x3E35 0x29B51
+0x3E36 0x29B53
+0x3E37 0x29B58
+0x3E38 0x29B4D
+0x3E39 0x29B5A
+0x3E3A 0x29B49
+0x3E3B 0x29B5D
+0x3E3C 0x29C12
+0x3E3D 0x29C3C
+0x3E3E 0x29CD1
+0x3E3F 0x29CDF
+0x3E40 0x29CD6
+0x3E41 0x29CD8
+0x3E42 0x29CE0
+0x3E43 0x29CD9
+0x3E44 0x29DB1
+0x3E45 0x29DAC
+0x3E46 0x29DAA
+0x3E47 0x29DEE
+0x3E48 0x29DBD
+0x3E4A 0x29DC3
+0x3E4B 0x29DA8
+0x3E4C 0x29DAE
+0x3E4D 0x29DAB
+0x3E4E 0x2A01D
+0x3E4F 0x2A027
+0x3E50 0x2A038
+0x3E51 0x2A012
+0x3E52 0x2A048
+0x3E53 0x2A02B
+0x3E54 0x2A016
+0x3E55 0x2A019
+0x3E56 0x2A03D
+0x3E57 0x2A023
+0x3E58 0x2A02A
+0x3E59 0x2A264
+0x3E5A 0x2A2AD
+0x3E5B 0x2A2AC
+0x3E5C 0x2FA14
+0x3E5D 0x2A2B1
+0x3E5E 0x2A2AF
+0x3E5F 0x2A32C
+0x3E60 0x2A324
+0x3E61 0x2A325
+0x3E62 0x2A328
+0x3E63 0x2A3F9
+0x3E64 0x2A3F7
+0x3E65 0x2A3FD
+0x3E66 0x2A3FE
+0x3E67 0x2A439
+0x3E68 0x2A433
+0x3E69 0x2A4D7
+0x3E6A 0x2A4D8
+0x3E6B 0x2A4E4
+0x3E6C 0x214A1
+0x3E6D 0x2A50E
+0x3E6E 0x2A53B
+0x3E6F 0x2A544
+0x3E70 0x2A542
+0x3E71 0x2A594
+0x3E72 0x2A593
+0x3E73 0x2A5D5
+0x3E74 0x2A6A7
+0x3E75 0x20431
+0x3E76 0x20423
+0x3E77 0x20428
+0x3E78 0x20427
+0x3E79 0x204C6
+0x3E7A 0x205A3
+0x3E7B 0x20621
+0x3E7C 0x2081B
+0x3E7E 0x208C1
+0x3F21 0x208C3
+0x3F22 0x2092A
+0x3F23 0x20969
+0x3F24 0x20A27
+0x3F25 0x210B6
+0x3F26 0x210A7
+0x3F27 0x210A4
+0x3F28 0x210A6
+0x3F29 0x21090
+0x3F2A 0x2109E
+0x3F2B 0x21094
+0x3F2C 0x210A8
+0x3F2D 0x210A5
+0x3F2E 0x210A2
+0x3F2F 0x21091
+0x3F31 0x214BC
+0x3F32 0x214BD
+0x3F33 0x214B4
+0x3F34 0x214B0
+0x3F35 0x214E4
+0x3F36 0x21545
+0x3F37 0x2154B
+0x3F38 0x2157E
+0x3F39 0x2157F
+0x3F3A 0x2157D
+0x3F3B 0x215C3
+0x3F3C 0x218FC
+0x3F3D 0x218F7
+0x3F3E 0x218F0
+0x3F3F 0x218ED
+0x3F40 0x218F1
+0x3F41 0x218F8
+0x3F42 0x21AE9
+0x3F43 0x21CEB
+0x3F45 0x21F90
+0x3F46 0x21F8D
+0x3F47 0x21F86
+0x3F48 0x21F91
+0x3F49 0x21F8A
+0x3F4A 0x22008
+0x3F4B 0x22050
+0x3F4C 0x222EA
+0x3F4D 0x222E6
+0x3F4E 0x222E2
+0x3F4F 0x222E7
+0x3F50 0x222ED
+0x3F51 0x222E1
+0x3F52 0x22434
+0x3F53 0x22476
+0x3F54 0x22475
+0x3F55 0x22473
+0x3F56 0x224B5
+0x3F57 0x22590
+0x3F58 0x22592
+0x3F59 0x228E1
+0x3F5A 0x228DF
+0x3F5B 0x228D5
+0x3F5C 0x228F2
+0x3F5D 0x228FE
+0x3F5E 0x22913
+0x3F5F 0x2292E
+0x3F60 0x22A19
+0x3F61 0x22E08
+0x3F63 0x22E05
+0x3F64 0x22E09
+0x3F65 0x22E06
+0x3F66 0x22E03
+0x3F67 0x22DFD
+0x3F68 0x22DFC
+0x3F69 0x22E02
+0x3F6A 0x22E42
+0x3F6B 0x2301A
+0x3F6C 0x23011
+0x3F6D 0x23015
+0x3F6E 0x23016
+0x3F6F 0x230CC
+0x3F70 0x230CF
+0x3F71 0x230D0
+0x3F72 0x23122
+0x3F73 0x2311E
+0x3F74 0x23121
+0x3F75 0x232E5
+0x3F77 0x23354
+0x3F78 0x232EF
+0x3F79 0x23353
+0x3F7A 0x23351
+0x3F7B 0x233AD
+0x3F7C 0x23767
+0x3F7D 0x23768
+0x3F7E 0x237A4
+0x4021 0x23777
+0x4022 0x23789
+0x4023 0x23744
+0x4024 0x2378B
+0x4025 0x23779
+0x4026 0x2375B
+0x4027 0x23743
+0x4028 0x23757
+0x4029 0x2374A
+0x402A 0x2377C
+0x402B 0x23746
+0x402C 0x2377B
+0x402D 0x23756
+0x402E 0x239A8
+0x402F 0x23A76
+0x4030 0x23A72
+0x4031 0x23AD6
+0x4032 0x23AD8
+0x4033 0x23AD1
+0x4034 0x23C22
+0x4035 0x23C20
+0x4036 0x23C23
+0x4037 0x23C1E
+0x4038 0x23C6E
+0x4039 0x240A3
+0x403A 0x24077
+0x403B 0x240A6
+0x403C 0x2406D
+0x403D 0x240A2
+0x403E 0x2407C
+0x403F 0x24084
+0x4040 0x24068
+0x4041 0x24074
+0x4042 0x24086
+0x4043 0x240A5
+0x4044 0x2407B
+0x4045 0x2407A
+0x4046 0x24069
+0x4047 0x24072
+0x4048 0x24076
+0x4049 0x2444A
+0x404A 0x24437
+0x404B 0x2442A
+0x404C 0x2442D
+0x404D 0x24446
+0x404E 0x24428
+0x404F 0x24426
+0x4050 0x24442
+0x4051 0x2442C
+0x4052 0x24438
+0x4053 0x2442B
+0x4054 0x24433
+0x4055 0x24445
+0x4056 0x24539
+0x4057 0x246F9
+0x4058 0x246FA
+0x4059 0x248B8
+0x405A 0x248B7
+0x405B 0x248BB
+0x405C 0x248B9
+0x405D 0x248B4
+0x405E 0x24A6F
+0x405F 0x24A87
+0x4060 0x24A8F
+0x4061 0x24AA2
+0x4062 0x24AA3
+0x4063 0x2F931
+0x4064 0x24B9B
+0x4065 0x24B9D
+0x4066 0x24BCE
+0x4068 0x24EBD
+0x4069 0x24EBF
+0x406A 0x24E92
+0x406C 0x24EEF
+0x406D 0x24EC9
+0x406E 0x24FA4
+0x406F 0x24FA8
+0x4070 0x24FAA
+0x4071 0x25028
+0x4072 0x25024
+0x4073 0x25025
+0x4074 0x25026
+0x4075 0x250A9
+0x4076 0x250BA
+0x4077 0x250BE
+0x4078 0x250BC
+0x4079 0x250C0
+0x407A 0x252F0
+0x407B 0x252DF
+0x407C 0x252E0
+0x407D 0x252ED
+0x407E 0x252DB
+0x4121 0x252FB
+0x4122 0x252B9
+0x4123 0x252DA
+0x4124 0x252EB
+0x4125 0x252EC
+0x4126 0x2559A
+0x4127 0x2559F
+0x4128 0x2559B
+0x4129 0x25597
+0x412A 0x255A1
+0x412B 0x2570F
+0x412C 0x25705
+0x412D 0x25748
+0x412F 0x258BC
+0x4130 0x258BA
+0x4131 0x25ABF
+0x4132 0x25D01
+0x4133 0x25CE8
+0x4134 0x25CEF
+0x4135 0x25CE4
+0x4136 0x25CE6
+0x4137 0x25D02
+0x4138 0x25CEB
+0x4139 0x25CE0
+0x413A 0x25CED
+0x413B 0x25CD9
+0x413C 0x2F964
+0x413D 0x25D14
+0x413E 0x25CEE
+0x4140 0x25D13
+0x4141 0x25CF9
+0x4142 0x25CF8
+0x4143 0x25F25
+0x4144 0x2F969
+0x4145 0x25F19
+0x4146 0x25F20
+0x4147 0x25F43
+0x4148 0x25F3F
+0x4149 0x26145
+0x414A 0x2614C
+0x414B 0x26149
+0x414C 0x2614F
+0x414D 0x26141
+0x414E 0x2613E
+0x414F 0x2614D
+0x4150 0x26152
+0x4151 0x2614A
+0x4152 0x2614E
+0x4153 0x26173
+0x4154 0x26142
+0x4155 0x26151
+0x4156 0x26155
+0x4157 0x26150
+0x4158 0x2616C
+0x415A 0x2616A
+0x415B 0x26153
+0x415C 0x26168
+0x415D 0x26255
+0x415E 0x26256
+0x415F 0x2631C
+0x4160 0x2631D
+0x4162 0x2631E
+0x4163 0x26323
+0x4164 0x2631F
+0x4165 0x263E1
+0x4166 0x263CD
+0x4167 0x263CB
+0x4168 0x263CC
+0x4169 0x263C8
+0x416A 0x263C9
+0x416B 0x2649B
+0x416C 0x26494
+0x416D 0x26492
+0x416E 0x26496
+0x416F 0x26493
+0x4170 0x26495
+0x4171 0x2648F
+0x4172 0x2651D
+0x4173 0x26522
+0x4174 0x26521
+0x4175 0x265E9
+0x4176 0x265EF
+0x4177 0x265E0
+0x4178 0x265E6
+0x4179 0x265E4
+0x417A 0x26829
+0x417B 0x2682C
+0x417C 0x26876
+0x417D 0x26883
+0x417E 0x26878
+0x4221 0x2683C
+0x4222 0x24443
+0x4223 0x2687A
+0x4225 0x268F2
+0x4226 0x2699E
+0x4227 0x2699B
+0x4228 0x2699A
+0x4229 0x269F6
+0x422A 0x269F5
+0x422B 0x26AA5
+0x422C 0x26A93
+0x422D 0x26AA4
+0x422E 0x26E82
+0x422F 0x26EC7
+0x4230 0x26FB7
+0x4231 0x2701D
+0x4232 0x26FE2
+0x4233 0x26FD7
+0x4234 0x26FE3
+0x4235 0x26FE4
+0x4236 0x26FBC
+0x4237 0x26FD3
+0x4239 0x26F5A
+0x423A 0x26FD2
+0x423B 0x26F2D
+0x423C 0x2F9AF
+0x423D 0x26FC4
+0x423E 0x26FD0
+0x423F 0x26FE5
+0x4240 0x27005
+0x4241 0x27007
+0x4242 0x26FE6
+0x4243 0x2701B
+0x4244 0x26FE7
+0x4245 0x26FD8
+0x4246 0x26FBE
+0x4247 0x27017
+0x4248 0x26FB4
+0x4249 0x26FD9
+0x424A 0x26FE8
+0x424B 0x26FAD
+0x424C 0x26FAF
+0x424D 0x26FC8
+0x424E 0x26FE9
+0x424F 0x26FEA
+0x4250 0x271FE
+0x4251 0x271FB
+0x4252 0x27200
+0x4253 0x27472
+0x4254 0x27470
+0x4255 0x27446
+0x4256 0x27459
+0x4257 0x2745E
+0x4258 0x27448
+0x4259 0x2744F
+0x425A 0x27471
+0x425B 0x27460
+0x425C 0x2745F
+0x425D 0x2746E
+0x425E 0x27473
+0x425F 0x2F9C0
+0x4260 0x2F9BF
+0x4261 0x27447
+0x4262 0x2746D
+0x4263 0x2746F
+0x4264 0x27481
+0x4265 0x2746C
+0x4266 0x27478
+0x4267 0x27483
+0x4268 0x27449
+0x4269 0x27468
+0x426A 0x27474
+0x426B 0x27463
+0x426C 0x2746A
+0x426D 0x26885
+0x426E 0x27465
+0x426F 0x27462
+0x4270 0x274C8
+0x4271 0x275D0
+0x4272 0x275D4
+0x4273 0x275D1
+0x4274 0x27603
+0x4275 0x27742
+0x4276 0x27763
+0x4277 0x27756
+0x4278 0x2775B
+0x4279 0x27755
+0x427A 0x27750
+0x427B 0x2772D
+0x427C 0x27744
+0x427D 0x27748
+0x427E 0x27745
+0x4321 0x27782
+0x4323 0x27762
+0x4324 0x27885
+0x4325 0x2788D
+0x4326 0x27936
+0x4327 0x2792F
+0x4328 0x27931
+0x4329 0x27937
+0x432A 0x27AA7
+0x432B 0x27AD9
+0x432C 0x27AF0
+0x432D 0x27AF2
+0x432E 0x27AFD
+0x432F 0x27AE8
+0x4330 0x27AEB
+0x4331 0x27AEE
+0x4332 0x27AE0
+0x4333 0x27AE9
+0x4334 0x27AED
+0x4335 0x27AD6
+0x4336 0x27AF8
+0x4337 0x27AD4
+0x4338 0x27ADF
+0x4339 0x27AE7
+0x433A 0x27AD8
+0x433B 0x27AE3
+0x433C 0x27AEF
+0x433D 0x27B0F
+0x433E 0x27BCA
+0x433F 0x21546
+0x4340 0x27C05
+0x4341 0x27C0C
+0x4342 0x27C0D
+0x4343 0x27C7F
+0x4344 0x27C80
+0x4345 0x27C81
+0x4346 0x27D01
+0x4347 0x27D03
+0x4348 0x27DF2
+0x4349 0x27DE2
+0x434A 0x27DE3
+0x434B 0x27DDE
+0x434C 0x27DE9
+0x434D 0x27DE8
+0x434E 0x27DE0
+0x434F 0x27E01
+0x4350 0x27DF5
+0x4351 0x27DE4
+0x4353 0x27E77
+0x4354 0x27F74
+0x4355 0x27F6F
+0x4356 0x27F62
+0x4357 0x27F61
+0x4358 0x27F6D
+0x4359 0x27F73
+0x435A 0x27F6A
+0x435B 0x27F69
+0x435C 0x28112
+0x435D 0x2812D
+0x435E 0x28114
+0x435F 0x2810F
+0x4360 0x28129
+0x4361 0x28116
+0x4362 0x28103
+0x4363 0x28146
+0x4364 0x2815C
+0x4365 0x28111
+0x4366 0x28106
+0x4367 0x280DC
+0x4368 0x2812B
+0x4369 0x2812A
+0x436A 0x2812C
+0x436B 0x28127
+0x436C 0x2827A
+0x436D 0x2839C
+0x436E 0x28399
+0x436F 0x28395
+0x4370 0x2838B
+0x4371 0x28398
+0x4372 0x28396
+0x4373 0x28432
+0x4374 0x285A4
+0x4375 0x285AA
+0x4376 0x2861B
+0x4378 0x2860D
+0x4379 0x2861C
+0x437A 0x2860A
+0x437B 0x28620
+0x437C 0x28608
+0x437D 0x2861A
+0x437E 0x28613
+0x4421 0x28611
+0x4422 0x2875D
+0x4423 0x2875F
+0x4424 0x2875E
+0x4425 0x28760
+0x4426 0x287BB
+0x4427 0x287BC
+0x4428 0x287C1
+0x4429 0x287C0
+0x442A 0x287C8
+0x442B 0x287CE
+0x442C 0x288A7
+0x442D 0x288B2
+0x442E 0x288B6
+0x442F 0x288A5
+0x4430 0x288BA
+0x4431 0x288B5
+0x4432 0x288AD
+0x4433 0x288A4
+0x4434 0x288D3
+0x4435 0x288B0
+0x4436 0x288B1
+0x4437 0x2891D
+0x4438 0x28A8D
+0x443A 0x28A91
+0x443B 0x28AB6
+0x443C 0x28AB7
+0x443D 0x28ABD
+0x443E 0x28ABC
+0x443F 0x28A96
+0x4440 0x28A94
+0x4441 0x28AA0
+0x4442 0x28CA8
+0x4443 0x28CA6
+0x4444 0x28D84
+0x4445 0x28D96
+0x4446 0x28D88
+0x4447 0x28D9A
+0x4448 0x28ED1
+0x4449 0x28ECF
+0x444A 0x28F50
+0x444B 0x28F51
+0x444C 0x28F4E
+0x444D 0x28F80
+0x444E 0x28F81
+0x444F 0x2901B
+0x4450 0x29017
+0x4451 0x29020
+0x4452 0x29019
+0x4453 0x2901A
+0x4454 0x29021
+0x4455 0x2901E
+0x4456 0x29018
+0x4457 0x2901D
+0x4459 0x2912D
+0x445A 0x29124
+0x445B 0x29127
+0x445C 0x2912E
+0x445D 0x29125
+0x445E 0x2911C
+0x445F 0x29119
+0x4461 0x29123
+0x4462 0x2911F
+0x4463 0x2911A
+0x4464 0x2912B
+0x4465 0x2911E
+0x4466 0x291E0
+0x4467 0x29233
+0x4468 0x292E6
+0x4469 0x292FC
+0x446A 0x292E5
+0x446B 0x292F8
+0x446C 0x292F6
+0x446D 0x292EA
+0x446E 0x292F2
+0x446F 0x292ED
+0x4470 0x292EB
+0x4471 0x292F0
+0x4472 0x292F1
+0x4473 0x293C6
+0x4474 0x293C8
+0x4475 0x293CE
+0x4476 0x293C5
+0x4478 0x293CB
+0x4479 0x29513
+0x447A 0x29514
+0x447B 0x29507
+0x447C 0x2950C
+0x447D 0x2961A
+0x4521 0x29617
+0x4522 0x29606
+0x4523 0x29616
+0x4524 0x29607
+0x4525 0x29610
+0x4526 0x29609
+0x4527 0x29619
+0x4528 0x29615
+0x4529 0x2976E
+0x452A 0x2973B
+0x452B 0x2973E
+0x452C 0x2976C
+0x452D 0x29765
+0x452E 0x29764
+0x452F 0x29759
+0x4530 0x2977C
+0x4531 0x29770
+0x4532 0x29779
+0x4533 0x2982C
+0x4534 0x29852
+0x4535 0x29851
+0x4536 0x2984C
+0x4537 0x29900
+0x4538 0x29910
+0x4539 0x29913
+0x453A 0x298FF
+0x453B 0x298FE
+0x453C 0x298ED
+0x453D 0x29A5A
+0x453E 0x29A58
+0x453F 0x29A5C
+0x4540 0x29ADA
+0x4541 0x29B78
+0x4542 0x29B5E
+0x4543 0x29B67
+0x4544 0x29B64
+0x4545 0x29C13
+0x4546 0x29C23
+0x4547 0x29C41
+0x4548 0x29C3F
+0x4549 0x29C40
+0x454A 0x29CED
+0x454B 0x29CE3
+0x454C 0x29CEA
+0x454D 0x29CF0
+0x454E 0x29CE6
+0x454F 0x29CE9
+0x4550 0x29CF1
+0x4551 0x29CEE
+0x4552 0x29DD4
+0x4553 0x29DD1
+0x4554 0x29DDC
+0x4555 0x29DEC
+0x4556 0x2A069
+0x4557 0x2A06D
+0x4558 0x2A057
+0x4559 0x2A066
+0x455A 0x2A0F9
+0x455B 0x2A04A
+0x455C 0x2A060
+0x455D 0x2A056
+0x455E 0x2A059
+0x455F 0x2A04C
+0x4560 0x2A06A
+0x4561 0x2A062
+0x4562 0x2A063
+0x4563 0x2A070
+0x4564 0x2A05F
+0x4565 0x2FA0D
+0x4566 0x2A064
+0x4567 0x2A05D
+0x4568 0x2A068
+0x4569 0x2A09F
+0x456A 0x2A2BA
+0x456B 0x2A2B8
+0x456C 0x2A2BC
+0x456D 0x2A2B9
+0x456E 0x2A2B4
+0x456F 0x2A33B
+0x4570 0x2A32D
+0x4571 0x2A338
+0x4572 0x2A32F
+0x4573 0x2A332
+0x4574 0x2A441
+0x4575 0x2A4CB
+0x4576 0x2A4DE
+0x4577 0x2A4DD
+0x4578 0x2A4DA
+0x4579 0x2A4DC
+0x457A 0x2A510
+0x457B 0x2A54F
+0x457C 0x2A549
+0x457D 0x2A598
+0x457E 0x2A596
+0x4621 0x2A597
+0x4622 0x2A5C7
+0x4623 0x2019C
+0x4624 0x2A5DA
+0x4625 0x2A5D8
+0x4626 0x2A6A8
+0x4627 0x2010A
+0x4628 0x2019D
+0x4629 0x204CB
+0x462A 0x20538
+0x462B 0x20539
+0x462C 0x205A6
+0x462D 0x20823
+0x462E 0x20822
+0x462F 0x20821
+0x4630 0x209CE
+0x4631 0x20B92
+0x4632 0x20B91
+0x4633 0x210EC
+0x4634 0x210E0
+0x4635 0x210ED
+0x4636 0x21108
+0x4637 0x210E5
+0x4638 0x210EE
+0x4639 0x210E4
+0x463A 0x210EB
+0x463B 0x210E3
+0x463C 0x210EA
+0x463D 0x2110A
+0x463E 0x2F859
+0x463F 0x214D1
+0x4640 0x214E3
+0x4641 0x214D4
+0x4642 0x214D0
+0x4643 0x214D9
+0x4646 0x214DA
+0x4647 0x214D3
+0x4648 0x2154C
+0x4649 0x2154D
+0x464A 0x2157C
+0x464B 0x21580
+0x464C 0x215CC
+0x464D 0x218FF
+0x464E 0x21908
+0x464F 0x2A508
+0x4650 0x21901
+0x4651 0x2F86B
+0x4652 0x21900
+0x4653 0x21AED
+0x4654 0x21AF3
+0x4655 0x21AEE
+0x4656 0x21AF1
+0x4657 0x21AF0
+0x4658 0x21ADE
+0x4659 0x21B51
+0x465A 0x21F82
+0x465B 0x21FA9
+0x465C 0x21F98
+0x465D 0x21F9D
+0x465E 0x21F9A
+0x465F 0x21F9E
+0x4660 0x21F9F
+0x4661 0x21FA6
+0x4662 0x21FA7
+0x4663 0x22009
+0x4664 0x2202F
+0x4665 0x22171
+0x4666 0x2216D
+0x4667 0x22172
+0x4668 0x222EF
+0x4669 0x222F0
+0x466A 0x2243B
+0x466B 0x22439
+0x466C 0x2243C
+0x466D 0x22438
+0x466E 0x24BFD
+0x466F 0x2243A
+0x4670 0x22478
+0x4671 0x22479
+0x4672 0x22477
+0x4673 0x22598
+0x4674 0x2259C
+0x4675 0x22599
+0x4676 0x2259A
+0x4677 0x22911
+0x4678 0x2290A
+0x4679 0x228FD
+0x467A 0x2290F
+0x467B 0x22919
+0x467C 0x22903
+0x467D 0x22915
+0x467E 0x2290C
+0x4721 0x22909
+0x4722 0x22912
+0x4723 0x22934
+0x4724 0x2292A
+0x4725 0x22908
+0x4726 0x2292D
+0x4727 0x22928
+0x4728 0x2F8B1
+0x4729 0x2292C
+0x472A 0x22926
+0x472B 0x22933
+0x472D 0x22A1A
+0x472E 0x22A1E
+0x472F 0x22E07
+0x4730 0x22E2C
+0x4731 0x22E32
+0x4732 0x22E28
+0x4733 0x22E31
+0x4734 0x22E29
+0x4735 0x22E30
+0x4736 0x22E2A
+0x4737 0x22E44
+0x4738 0x22E2E
+0x4739 0x230D1
+0x473A 0x23124
+0x473B 0x232F7
+0x473C 0x232F4
+0x473D 0x232F3
+0x473E 0x232F8
+0x473F 0x237B5
+0x4740 0x23796
+0x4741 0x23798
+0x4742 0x23795
+0x4743 0x23791
+0x4744 0x237B2
+0x4745 0x2379E
+0x4746 0x23759
+0x4747 0x237A3
+0x4748 0x2379A
+0x4749 0x2379B
+0x474B 0x26183
+0x474C 0x23ADA
+0x474D 0x23ADF
+0x474E 0x23B16
+0x474F 0x23C1F
+0x4750 0x23C2D
+0x4751 0x23C2E
+0x4752 0x23C2B
+0x4753 0x240B8
+0x4754 0x240BB
+0x4755 0x240BF
+0x4756 0x240BA
+0x4757 0x240D5
+0x4758 0x240E3
+0x4759 0x240C1
+0x475A 0x240BE
+0x475B 0x240BD
+0x475C 0x240B4
+0x475D 0x240C2
+0x475E 0x240A1
+0x475F 0x24087
+0x4760 0x240D7
+0x4761 0x240CA
+0x4762 0x240B5
+0x4763 0x240DA
+0x4764 0x240D9
+0x4765 0x240B3
+0x4766 0x240D8
+0x4767 0x24467
+0x4768 0x24471
+0x4769 0x24462
+0x476A 0x2445C
+0x476B 0x24468
+0x476C 0x24452
+0x476D 0x24456
+0x476E 0x21109
+0x476F 0x20442
+0x4770 0x245A0
+0x4771 0x24700
+0x4772 0x246FE
+0x4773 0x246FF
+0x4774 0x248CB
+0x4775 0x2F928
+0x4776 0x248CA
+0x4777 0x248A9
+0x4778 0x248C8
+0x4779 0x24AB4
+0x477A 0x24AAC
+0x477B 0x24AAA
+0x477C 0x24AA9
+0x477D 0x24C0E
+0x477E 0x24CE9
+0x4821 0x24CED
+0x4822 0x24CF2
+0x4823 0x24CEB
+0x4824 0x24CEE
+0x4825 0x24EE8
+0x4826 0x24EDB
+0x4827 0x24ED7
+0x4828 0x24EE3
+0x4829 0x24EE5
+0x482A 0x24EEE
+0x482B 0x24ED5
+0x482C 0x24FB3
+0x482D 0x2502D
+0x482E 0x250C1
+0x482F 0x250C3
+0x4830 0x2530C
+0x4831 0x2530E
+0x4832 0x25307
+0x4833 0x25317
+0x4834 0x25309
+0x4835 0x25316
+0x4836 0x2539A
+0x4837 0x2539C
+0x4838 0x255B4
+0x4839 0x255B7
+0x483A 0x255B3
+0x483B 0x2154E
+0x483C 0x25713
+0x483D 0x25714
+0x483E 0x258E6
+0x483F 0x258DC
+0x4840 0x258E8
+0x4841 0x258E5
+0x4842 0x25A2E
+0x4843 0x25A2C
+0x4844 0x25A2B
+0x4845 0x25ACD
+0x4846 0x25D3D
+0x4847 0x25D32
+0x4848 0x25D2D
+0x4849 0x25D45
+0x484A 0x25D3E
+0x484B 0x25D50
+0x484C 0x25D25
+0x484D 0x25D53
+0x484E 0x25D23
+0x484F 0x25F37
+0x4850 0x25F38
+0x4851 0x25F47
+0x4852 0x25F3D
+0x4853 0x25F3E
+0x4854 0x25F49
+0x4855 0x25F4A
+0x4856 0x25F1D
+0x4858 0x261A5
+0x4859 0x2618C
+0x485A 0x2618D
+0x485B 0x26189
+0x485C 0x26196
+0x485D 0x26185
+0x485E 0x2618F
+0x485F 0x26177
+0x4860 0x2618E
+0x4861 0x26182
+0x4862 0x2618A
+0x4863 0x26188
+0x4864 0x2617B
+0x4865 0x26197
+0x4866 0x2617D
+0x4867 0x26179
+0x4868 0x26259
+0x4869 0x26324
+0x486A 0x2632D
+0x486B 0x2632E
+0x486C 0x2632B
+0x486D 0x2F976
+0x486E 0x263DA
+0x486F 0x263D8
+0x4870 0x263D6
+0x4871 0x26487
+0x4872 0x264A0
+0x4873 0x26528
+0x4874 0x26525
+0x4875 0x2651F
+0x4876 0x265F3
+0x4877 0x265F7
+0x4878 0x265F6
+0x4879 0x2682B
+0x487A 0x2685B
+0x487B 0x26848
+0x487D 0x2685C
+0x487E 0x2686D
+0x4921 0x2689D
+0x4922 0x26899
+0x4923 0x2688C
+0x4924 0x26891
+0x4925 0x2689B
+0x4926 0x2689A
+0x4927 0x2689C
+0x4928 0x26895
+0x4929 0x2688D
+0x492A 0x26896
+0x492B 0x268A5
+0x492C 0x2692A
+0x492D 0x269A1
+0x492E 0x269A4
+0x492F 0x269AD
+0x4930 0x26AA9
+0x4931 0x26AAE
+0x4932 0x26AB0
+0x4933 0x2700D
+0x4934 0x26F63
+0x4935 0x26F71
+0x4936 0x27051
+0x4937 0x27054
+0x4938 0x2702A
+0x4939 0x27044
+0x493A 0x27055
+0x493B 0x27099
+0x493C 0x27039
+0x493D 0x2703F
+0x493E 0x2703E
+0x493F 0x2704F
+0x4940 0x2704D
+0x4941 0x27035
+0x4942 0x27040
+0x4943 0x27031
+0x4944 0x26FD5
+0x4945 0x2702B
+0x4946 0x27033
+0x4947 0x27041
+0x4948 0x27056
+0x4949 0x2704C
+0x494A 0x27046
+0x494B 0x2703C
+0x494C 0x27045
+0x494D 0x27043
+0x494E 0x2703D
+0x494F 0x27070
+0x4950 0x27057
+0x4951 0x27038
+0x4952 0x27058
+0x4954 0x27037
+0x4955 0x27207
+0x4956 0x27206
+0x4957 0x27209
+0x4958 0x274AB
+0x4959 0x27490
+0x495A 0x27493
+0x495B 0x274BC
+0x495C 0x274A9
+0x495D 0x2749E
+0x495E 0x274BF
+0x495F 0x274AA
+0x4960 0x27491
+0x4961 0x274A4
+0x4962 0x2749A
+0x4963 0x274A7
+0x4964 0x274A1
+0x4965 0x2749C
+0x4966 0x274A2
+0x4967 0x2749B
+0x4968 0x2749F
+0x4969 0x27494
+0x496A 0x2748F
+0x496B 0x272F0
+0x496C 0x27492
+0x496D 0x27495
+0x496E 0x274A5
+0x496F 0x274A6
+0x4970 0x27604
+0x4971 0x2779C
+0x4972 0x27779
+0x4973 0x2777A
+0x4974 0x2777E
+0x4975 0x2777B
+0x4976 0x27771
+0x4977 0x27781
+0x4978 0x2777F
+0x4979 0x2777C
+0x497A 0x2777D
+0x497B 0x27775
+0x497C 0x27776
+0x497D 0x2788E
+0x497E 0x2788F
+0x4A21 0x2793E
+0x4A22 0x2793F
+0x4A23 0x27940
+0x4A24 0x27941
+0x4A26 0x27B0D
+0x4A27 0x27B17
+0x4A28 0x27B10
+0x4A29 0x27B0E
+0x4A2A 0x27AEA
+0x4A2B 0x27B1D
+0x4A2C 0x27B03
+0x4A2D 0x27B22
+0x4A2E 0x27B04
+0x4A2F 0x27B00
+0x4A30 0x27B20
+0x4A31 0x27B21
+0x4A32 0x27B23
+0x4A33 0x27B13
+0x4A34 0x27B09
+0x4A35 0x27B11
+0x4A36 0x27BCB
+0x4A37 0x27BCE
+0x4A38 0x27BD0
+0x4A39 0x27BCC
+0x4A3A 0x27BD4
+0x4A3B 0x214DB
+0x4A3C 0x27C09
+0x4A3D 0x27C0B
+0x4A3E 0x27C85
+0x4A3F 0x27D06
+0x4A40 0x27D0D
+0x4A42 0x27D14
+0x4A43 0x27D0F
+0x4A44 0x27E09
+0x4A45 0x27E14
+0x4A46 0x27E0B
+0x4A47 0x27DFC
+0x4A48 0x27E04
+0x4A49 0x27E0A
+0x4A4A 0x27E00
+0x4A4B 0x27DFD
+0x4A4C 0x27E07
+0x4A4D 0x27E06
+0x4A4E 0x27E11
+0x4A4F 0x27E79
+0x4A50 0x27E78
+0x4A51 0x27F88
+0x4A52 0x27F80
+0x4A53 0x27F8B
+0x4A54 0x28159
+0x4A55 0x28161
+0x4A56 0x28175
+0x4A58 0x28155
+0x4A59 0x2815B
+0x4A5A 0x2815F
+0x4A5B 0x28152
+0x4A5C 0x28162
+0x4A5D 0x28172
+0x4A5E 0x2815D
+0x4A5F 0x28168
+0x4A60 0x28171
+0x4A61 0x28165
+0x4A62 0x28166
+0x4A63 0x28167
+0x4A64 0x28176
+0x4A65 0x2814C
+0x4A66 0x28160
+0x4A67 0x28174
+0x4A68 0x28150
+0x4A69 0x2828A
+0x4A6A 0x28281
+0x4A6B 0x28286
+0x4A6C 0x2827F
+0x4A6D 0x28280
+0x4A6E 0x283A5
+0x4A6F 0x283A7
+0x4A70 0x283A8
+0x4A71 0x283A6
+0x4A72 0x283AF
+0x4A73 0x26195
+0x4A74 0x283B1
+0x4A75 0x28435
+0x4A76 0x28439
+0x4A77 0x285C3
+0x4A78 0x28630
+0x4A79 0x2862A
+0x4A7A 0x2862B
+0x4A7B 0x2862D
+0x4A7C 0x2862E
+0x4A7D 0x2862C
+0x4A7E 0x28623
+0x4B21 0x28621
+0x4B22 0x28622
+0x4B23 0x2876C
+0x4B24 0x28781
+0x4B25 0x2878F
+0x4B26 0x28780
+0x4B27 0x287D0
+0x4B28 0x287CD
+0x4B29 0x287D5
+0x4B2A 0x287D4
+0x4B2B 0x288D1
+0x4B2C 0x288BE
+0x4B2D 0x288CB
+0x4B2E 0x288CE
+0x4B2F 0x288BD
+0x4B30 0x288D0
+0x4B31 0x28B04
+0x4B32 0x28AD5
+0x4B33 0x28AD0
+0x4B34 0x28AD3
+0x4B35 0x28AFB
+0x4B36 0x28AD8
+0x4B37 0x28AD1
+0x4B38 0x28AFD
+0x4B39 0x28AD9
+0x4B3A 0x28AD6
+0x4B3B 0x28AE6
+0x4B3C 0x28AF9
+0x4B3D 0x28DA1
+0x4B3E 0x28D9D
+0x4B3F 0x28D9E
+0x4B41 0x28EFF
+0x4B42 0x28F5F
+0x4B43 0x28F57
+0x4B44 0x28F60
+0x4B45 0x28F59
+0x4B46 0x2902C
+0x4B47 0x29025
+0x4B48 0x29027
+0x4B49 0x29030
+0x4B4A 0x29024
+0x4B4B 0x29026
+0x4B4C 0x2902D
+0x4B4D 0x2902E
+0x4B4E 0x29029
+0x4B4F 0x29031
+0x4B50 0x29145
+0x4B51 0x29147
+0x4B52 0x29152
+0x4B53 0x2914A
+0x4B54 0x29150
+0x4B55 0x29146
+0x4B56 0x2914F
+0x4B57 0x2914E
+0x4B58 0x29153
+0x4B59 0x29321
+0x4B5A 0x29309
+0x4B5B 0x2931A
+0x4B5C 0x2931B
+0x4B5D 0x25315
+0x4B5E 0x29310
+0x4B5F 0x2F9F9
+0x4B60 0x29314
+0x4B61 0x2930E
+0x4B62 0x29312
+0x4B63 0x2930B
+0x4B64 0x293CF
+0x4B65 0x293D2
+0x4B66 0x293D0
+0x4B67 0x293D4
+0x4B68 0x293D3
+0x4B69 0x293D1
+0x4B6A 0x20B18
+0x4B6B 0x2F9FB
+0x4B6C 0x29409
+0x4B6D 0x2951C
+0x4B6E 0x29527
+0x4B6F 0x29525
+0x4B70 0x2951B
+0x4B71 0x29529
+0x4B72 0x2951F
+0x4B73 0x29530
+0x4B74 0x29524
+0x4B75 0x29528
+0x4B76 0x29519
+0x4B77 0x2952F
+0x4B78 0x29624
+0x4B79 0x29621
+0x4B7A 0x29625
+0x4B7B 0x29626
+0x4B7C 0x29627
+0x4B7D 0x29676
+0x4B7E 0x29766
+0x4C21 0x29775
+0x4C22 0x29769
+0x4C23 0x2977E
+0x4C24 0x2978F
+0x4C25 0x29774
+0x4C26 0x27210
+0x4C27 0x297AD
+0x4C28 0x2982B
+0x4C29 0x2982A
+0x4C2A 0x29858
+0x4C2B 0x29922
+0x4C2C 0x2991D
+0x4C2D 0x2992B
+0x4C2E 0x2992C
+0x4C2F 0x2992D
+0x4C30 0x29933
+0x4C31 0x2991B
+0x4C32 0x29927
+0x4C33 0x2992A
+0x4C34 0x29928
+0x4C35 0x2993B
+0x4C36 0x29A7E
+0x4C37 0x29A71
+0x4C38 0x29A79
+0x4C39 0x29A78
+0x4C3A 0x29A70
+0x4C3B 0x29A6D
+0x4C3C 0x29A7D
+0x4C3D 0x29A75
+0x4C3E 0x29A76
+0x4C3F 0x29ADE
+0x4C40 0x29B66
+0x4C41 0x29B83
+0x4C42 0x29B87
+0x4C43 0x29B7B
+0x4C44 0x29B89
+0x4C45 0x29B86
+0x4C46 0x29B82
+0x4C47 0x29B7C
+0x4C48 0x29B81
+0x4C49 0x29C43
+0x4C4A 0x29C45
+0x4C4B 0x29CF7
+0x4C4C 0x29CF9
+0x4C4D 0x29CFA
+0x4C4E 0x29E05
+0x4C4F 0x29DFE
+0x4C50 0x29E0F
+0x4C51 0x29DFF
+0x4C52 0x29DFA
+0x4C53 0x29E09
+0x4C54 0x29E20
+0x4C55 0x29E0C
+0x4C56 0x29E3C
+0x4C57 0x29E22
+0x4C58 0x29DF8
+0x4C59 0x29E0A
+0x4C5A 0x29E08
+0x4C5B 0x29DF7
+0x4C5C 0x2A08E
+0x4C5D 0x2A077
+0x4C5E 0x2A08B
+0x4C5F 0x2A0B4
+0x4C60 0x2A08A
+0x4C61 0x2A09A
+0x4C62 0x2A079
+0x4C63 0x2A083
+0x4C64 0x2A07F
+0x4C65 0x2A0A1
+0x4C66 0x2A08F
+0x4C67 0x2A0A3
+0x4C68 0x2A081
+0x4C69 0x2A094
+0x4C6A 0x2A07E
+0x4C6B 0x2A082
+0x4C6C 0x2A090
+0x4C6D 0x2A0A5
+0x4C6E 0x2A0AD
+0x4C6F 0x2A09D
+0x4C70 0x2A267
+0x4C71 0x2A269
+0x4C72 0x2A2CB
+0x4C73 0x2A2C8
+0x4C74 0x2A2D1
+0x4C75 0x2A340
+0x4C76 0x2A34B
+0x4C77 0x2A349
+0x4C78 0x2A346
+0x4C79 0x2A33E
+0x4C7A 0x2A343
+0x4C7B 0x2A33F
+0x4C7C 0x2A3A5
+0x4C7D 0x2A3A7
+0x4C7E 0x2A44E
+0x4D21 0x2A44D
+0x4D22 0x2259B
+0x4D23 0x2A4E5
+0x4D24 0x2A4E1
+0x4D25 0x2A4E2
+0x4D26 0x2A516
+0x4D27 0x2A514
+0x4D28 0x2FA1B
+0x4D29 0x2A559
+0x4D2A 0x2A551
+0x4D2B 0x2A55F
+0x4D2C 0x2A54A
+0x4D2D 0x2A557
+0x4D2E 0x2A558
+0x4D2F 0x2A5CA
+0x4D30 0x2A5DB
+0x4D31 0x2A5DE
+0x4D32 0x2A5E0
+0x4D33 0x2A5E1
+0x4D34 0x2A5DF
+0x4D35 0x2A5E2
+0x4D36 0x2A5E3
+0x4D37 0x2A692
+0x4D38 0x2A6BF
+0x4D39 0x2A6BE
+0x4D3A 0x2010B
+0x4D3B 0x20452
+0x4D3C 0x2044E
+0x4D3E 0x2F813
+0x4D3F 0x205A7
+0x4D40 0x20826
+0x4D41 0x20827
+0x4D42 0x208C6
+0x4D43 0x2090B
+0x4D44 0x2096A
+0x4D45 0x20978
+0x4D46 0x2111A
+0x4D47 0x21116
+0x4D48 0x21119
+0x4D49 0x21117
+0x4D4A 0x2111B
+0x4D4B 0x21118
+0x4D4C 0x21120
+0x4D4D 0x21237
+0x4D4E 0x214EC
+0x4D4F 0x21581
+0x4D50 0x2923D
+0x4D51 0x2190F
+0x4D52 0x219AD
+0x4D53 0x21AFB
+0x4D54 0x21B52
+0x4D55 0x21FAF
+0x4D56 0x21FB7
+0x4D57 0x21FB2
+0x4D58 0x22178
+0x4D59 0x221AC
+0x4D5A 0x22300
+0x4D5B 0x222FE
+0x4D5C 0x22302
+0x4D5D 0x222FD
+0x4D5E 0x22303
+0x4D5F 0x22440
+0x4D60 0x22443
+0x4D61 0x22442
+0x4D62 0x224B7
+0x4D63 0x225A2
+0x4D64 0x22900
+0x4D65 0x22935
+0x4D66 0x22941
+0x4D67 0x22905
+0x4D68 0x20453
+0x4D69 0x22950
+0x4D6A 0x2294E
+0x4D6B 0x22953
+0x4D6C 0x22E53
+0x4D6D 0x22E50
+0x4D6E 0x22E57
+0x4D6F 0x22E5F
+0x4D70 0x22E55
+0x4D71 0x22EEA
+0x4D72 0x23026
+0x4D73 0x29830
+0x4D74 0x2302A
+0x4D75 0x23028
+0x4D76 0x2302C
+0x4D77 0x2302D
+0x4D78 0x230D4
+0x4D79 0x23307
+0x4D7A 0x23358
+0x4D7B 0x23359
+0x4D7C 0x237C5
+0x4D7D 0x237CD
+0x4D7E 0x237C7
+0x4E21 0x237E8
+0x4E23 0x23932
+0x4E24 0x2A697
+0x4E25 0x23ADE
+0x4E26 0x23C32
+0x4E27 0x20AC8
+0x4E28 0x2F915
+0x4E29 0x240F1
+0x4E2A 0x240F0
+0x4E2B 0x240EC
+0x4E2C 0x24109
+0x4E2D 0x240F9
+0x4E2E 0x240F5
+0x4E2F 0x240FE
+0x4E30 0x24474
+0x4E31 0x24481
+0x4E32 0x2447C
+0x4E33 0x24475
+0x4E34 0x24489
+0x4E35 0x24482
+0x4E36 0x24497
+0x4E37 0x24486
+0x4E38 0x2447D
+0x4E39 0x24493
+0x4E3A 0x2449C
+0x4E3B 0x24476
+0x4E3C 0x24480
+0x4E3D 0x24545
+0x4E3E 0x206A1
+0x4E3F 0x24703
+0x4E40 0x248C9
+0x4E41 0x248CD
+0x4E42 0x248D0
+0x4E43 0x24AAD
+0x4E44 0x24AC5
+0x4E45 0x24BA2
+0x4E46 0x24CEC
+0x4E47 0x24CF6
+0x4E48 0x24CF3
+0x4E49 0x24EF3
+0x4E4A 0x24EFA
+0x4E4B 0x24EF9
+0x4E4C 0x24EF5
+0x4E4D 0x24EF4
+0x4E4E 0x24EF8
+0x4E4F 0x24FB6
+0x4E50 0x24FB4
+0x4E51 0x25032
+0x4E52 0x250CD
+0x4E53 0x250C8
+0x4E54 0x250CE
+0x4E55 0x250CA
+0x4E56 0x2532A
+0x4E57 0x25321
+0x4E58 0x2531D
+0x4E59 0x255BD
+0x4E5A 0x255BE
+0x4E5B 0x255C2
+0x4E5D 0x255C9
+0x4E5E 0x2571F
+0x4E5F 0x258F1
+0x4E60 0x258ED
+0x4E61 0x258F2
+0x4E62 0x258E0
+0x4E63 0x258F7
+0x4E64 0x25A30
+0x4E65 0x25A37
+0x4E66 0x25A31
+0x4E67 0x25A36
+0x4E68 0x25AC8
+0x4E69 0x25D6D
+0x4E6A 0x25D69
+0x4E6B 0x25D7D
+0x4E6C 0x25D61
+0x4E6D 0x25D70
+0x4E6E 0x25D71
+0x4E6F 0x25D73
+0x4E70 0x25D76
+0x4E71 0x25D75
+0x4E72 0x25D78
+0x4E73 0x25D79
+0x4E74 0x25D64
+0x4E75 0x25D6E
+0x4E76 0x25F51
+0x4E77 0x25F4F
+0x4E78 0x25F22
+0x4E79 0x261AF
+0x4E7A 0x261AA
+0x4E7B 0x261A3
+0x4E7C 0x2619D
+0x4E7D 0x2619C
+0x4E7E 0x261A1
+0x4F21 0x261B6
+0x4F22 0x261AC
+0x4F23 0x261A2
+0x4F24 0x261A7
+0x4F25 0x261B0
+0x4F26 0x261A9
+0x4F27 0x261C3
+0x4F28 0x26331
+0x4F29 0x26332
+0x4F2A 0x26333
+0x4F2B 0x26334
+0x4F2C 0x26337
+0x4F2D 0x2633C
+0x4F2E 0x263D9
+0x4F2F 0x263DD
+0x4F30 0x263DE
+0x4F31 0x263DF
+0x4F32 0x263E0
+0x4F33 0x264A5
+0x4F34 0x264AA
+0x4F35 0x264A2
+0x4F36 0x264A3
+0x4F37 0x26604
+0x4F38 0x26603
+0x4F39 0x265FE
+0x4F3A 0x26628
+0x4F3B 0x268AF
+0x4F3C 0x268AD
+0x4F3D 0x268A6
+0x4F3E 0x269AC
+0x4F3F 0x269A5
+0x4F40 0x269B0
+0x4F41 0x269B1
+0x4F42 0x26A01
+0x4F43 0x26AB2
+0x4F44 0x26AD2
+0x4F45 0x26AF1
+0x4F46 0x26FD1
+0x4F47 0x27047
+0x4F48 0x270C9
+0x4F49 0x270A7
+0x4F4A 0x270C8
+0x4F4B 0x27095
+0x4F4C 0x2708E
+0x4F4D 0x27091
+0x4F4E 0x2707D
+0x4F4F 0x270EE
+0x4F50 0x2708D
+0x4F51 0x2708C
+0x4F52 0x270B0
+0x4F53 0x27096
+0x4F54 0x27042
+0x4F55 0x2707C
+0x4F56 0x270B1
+0x4F57 0x270B2
+0x4F58 0x27084
+0x4F59 0x2709D
+0x4F5A 0x270A1
+0x4F5B 0x27098
+0x4F5C 0x270B3
+0x4F5D 0x27022
+0x4F5E 0x2707B
+0x4F5F 0x2708A
+0x4F60 0x270CE
+0x4F61 0x27080
+0x4F62 0x27097
+0x4F63 0x270B4
+0x4F64 0x270B5
+0x4F65 0x2709A
+0x4F66 0x2709F
+0x4F67 0x27093
+0x4F68 0x27212
+0x4F69 0x2720B
+0x4F6A 0x2720E
+0x4F6B 0x274A3
+0x4F6C 0x274CC
+0x4F6D 0x274DC
+0x4F6E 0x274E1
+0x4F6F 0x274DE
+0x4F70 0x274D2
+0x4F71 0x274DB
+0x4F72 0x274D9
+0x4F73 0x274D7
+0x4F74 0x274D4
+0x4F75 0x274C9
+0x4F76 0x274EB
+0x4F77 0x274DA
+0x4F78 0x274D1
+0x4F79 0x27504
+0x4F7A 0x274CA
+0x4F7B 0x274E2
+0x4F7C 0x275D7
+0x4F7D 0x2778C
+0x4F7E 0x27799
+0x5021 0x277A2
+0x5022 0x27796
+0x5023 0x27794
+0x5024 0x2779F
+0x5026 0x2778E
+0x5027 0x27803
+0x5028 0x27894
+0x5029 0x27893
+0x502A 0x27944
+0x502B 0x27B2F
+0x502C 0x27B35
+0x502D 0x27B2B
+0x502E 0x27B32
+0x502F 0x27B2D
+0x5030 0x27B36
+0x5032 0x27B31
+0x5033 0x27B12
+0x5034 0x27B33
+0x5035 0x27B1F
+0x5036 0x27B34
+0x5037 0x27B40
+0x5038 0x27B3F
+0x5039 0x27B41
+0x503A 0x27BD3
+0x503B 0x27C89
+0x503C 0x27D18
+0x503D 0x27D10
+0x503E 0x27E1A
+0x503F 0x27E25
+0x5040 0x27E1E
+0x5041 0x27F92
+0x5042 0x27F95
+0x5043 0x27F93
+0x5044 0x28184
+0x5045 0x2819A
+0x5046 0x28189
+0x5047 0x2818D
+0x5048 0x28188
+0x5049 0x28191
+0x504A 0x2819B
+0x504B 0x2819C
+0x504C 0x29548
+0x504D 0x2828E
+0x504E 0x28292
+0x504F 0x283C5
+0x5050 0x283C1
+0x5051 0x283B8
+0x5052 0x283BE
+0x5053 0x283B5
+0x5054 0x283C7
+0x5055 0x2843C
+0x5057 0x285EC
+0x5058 0x2863F
+0x5059 0x28639
+0x505A 0x28637
+0x505B 0x287A1
+0x505C 0x28794
+0x505D 0x287A0
+0x505E 0x287DE
+0x505F 0x287DB
+0x5060 0x287DF
+0x5061 0x287DC
+0x5062 0x288D6
+0x5063 0x288DC
+0x5064 0x288DD
+0x5065 0x288E0
+0x5066 0x288E3
+0x5067 0x288E1
+0x5068 0x28B18
+0x5069 0x28B19
+0x506A 0x28B53
+0x506B 0x2F9EC
+0x506C 0x28B44
+0x506D 0x28B0E
+0x506E 0x28B0F
+0x506F 0x28B47
+0x5070 0x28B17
+0x5071 0x28B1D
+0x5072 0x28B11
+0x5073 0x28CB4
+0x5074 0x28CB6
+0x5075 0x28DB7
+0x5076 0x28DBE
+0x5077 0x28DC2
+0x5078 0x28DB4
+0x5079 0x28F31
+0x507A 0x28F15
+0x507B 0x28F83
+0x507C 0x2903B
+0x507D 0x29036
+0x507E 0x29042
+0x5121 0x29050
+0x5122 0x29040
+0x5123 0x29034
+0x5124 0x29038
+0x5125 0x2903D
+0x5126 0x2903E
+0x5127 0x29035
+0x5128 0x2903A
+0x5129 0x29046
+0x512A 0x29037
+0x512B 0x29039
+0x512C 0x29045
+0x512D 0x29177
+0x512E 0x2915D
+0x512F 0x2916A
+0x5130 0x29176
+0x5131 0x2916B
+0x5132 0x2916C
+0x5133 0x29165
+0x5134 0x29164
+0x5135 0x29171
+0x5136 0x2915F
+0x5137 0x29172
+0x5138 0x291FE
+0x5139 0x291FF
+0x513A 0x2923E
+0x513B 0x2932B
+0x513C 0x29336
+0x513D 0x2932D
+0x513E 0x29339
+0x513F 0x2933F
+0x5140 0x2933B
+0x5141 0x29333
+0x5142 0x29342
+0x5143 0x2933A
+0x5144 0x293D5
+0x5145 0x293D8
+0x5146 0x293D9
+0x5147 0x2940D
+0x5148 0x2940A
+0x5149 0x29439
+0x514A 0x2943A
+0x514B 0x2953D
+0x514C 0x29545
+0x514D 0x2953A
+0x514E 0x29537
+0x514F 0x2953E
+0x5150 0x29542
+0x5151 0x29787
+0x5152 0x2978C
+0x5153 0x29782
+0x5154 0x2976B
+0x5155 0x297A0
+0x5156 0x2979A
+0x5157 0x29790
+0x5158 0x2978E
+0x5159 0x297A1
+0x515A 0x297BD
+0x515B 0x297B2
+0x515C 0x297B5
+0x515D 0x297B7
+0x515E 0x297AA
+0x515F 0x297A2
+0x5160 0x297A5
+0x5161 0x297AE
+0x5162 0x297AB
+0x5163 0x297BC
+0x5164 0x29832
+0x5165 0x2985A
+0x5166 0x29964
+0x5167 0x2995C
+0x5168 0x2994D
+0x5169 0x2993F
+0x516A 0x2993E
+0x516B 0x29952
+0x516C 0x29958
+0x516D 0x29957
+0x516E 0x2995E
+0x516F 0x29953
+0x5170 0x29954
+0x5171 0x29956
+0x5172 0x28F65
+0x5173 0x29A84
+0x5174 0x29A85
+0x5175 0x29A86
+0x5176 0x29B97
+0x5177 0x29BA1
+0x5178 0x29BA2
+0x517A 0x2FA0A
+0x517B 0x29BA3
+0x517C 0x29BA6
+0x517E 0x29C15
+0x5221 0x29C24
+0x5222 0x29C4A
+0x5223 0x29C49
+0x5224 0x29C48
+0x5225 0x29C4B
+0x5226 0x29D0E
+0x5227 0x29962
+0x5228 0x29D0B
+0x5229 0x29D0A
+0x522A 0x29D08
+0x522B 0x29D06
+0x522C 0x29E43
+0x522D 0x29E47
+0x522E 0x29E3F
+0x522F 0x29E46
+0x5230 0x29E50
+0x5232 0x29E4B
+0x5234 0x29E52
+0x5235 0x2A0D7
+0x5236 0x2A0BF
+0x5237 0x2A0D8
+0x5238 0x2A0E0
+0x5239 0x2A0E7
+0x523A 0x2A0B8
+0x523B 0x2A0D5
+0x523C 0x2A0EF
+0x523D 0x2A0E6
+0x523E 0x2A0E4
+0x523F 0x2A0D4
+0x5240 0x2A0D6
+0x5241 0x2A0EA
+0x5243 0x2A0BB
+0x5244 0x2A0E9
+0x5245 0x2FA10
+0x5246 0x2A26D
+0x5247 0x2A270
+0x5248 0x2A273
+0x5249 0x2A272
+0x524A 0x2A2D4
+0x524B 0x2A2CE
+0x524C 0x2A2D5
+0x524D 0x2A35A
+0x524E 0x2A358
+0x524F 0x2A352
+0x5250 0x2A350
+0x5251 0x2A355
+0x5252 0x2A34E
+0x5253 0x2A34D
+0x5254 0x2A3CB
+0x5255 0x2A3CC
+0x5256 0x2A3CD
+0x5257 0x2A3D1
+0x5258 0x2A458
+0x5259 0x2A463
+0x525A 0x2A45E
+0x525B 0x2A454
+0x525C 0x2A45B
+0x525D 0x2A4E9
+0x525E 0x2A4E7
+0x525F 0x2A4E8
+0x5260 0x2A51D
+0x5261 0x2A567
+0x5262 0x2A55A
+0x5263 0x2A55C
+0x5264 0x2A55B
+0x5265 0x2A561
+0x5266 0x2A5A1
+0x5268 0x2A5A4
+0x5269 0x2A5E9
+0x526A 0x2A5EF
+0x526B 0x2A5E5
+0x526C 0x2A5F5
+0x526D 0x2A5EB
+0x526E 0x2A5ED
+0x526F 0x2A696
+0x5270 0x2A695
+0x5271 0x2A6B3
+0x5272 0x2A6B5
+0x5273 0x2A6B1
+0x5275 0x2044D
+0x5276 0x20624
+0x5277 0x2082B
+0x5278 0x209CF
+0x5279 0x20AC9
+0x527A 0x21136
+0x527B 0x21131
+0x527C 0x21154
+0x527D 0x2113A
+0x527E 0x21138
+0x5321 0x21239
+0x5322 0x21238
+0x5323 0x214F4
+0x5324 0x214F3
+0x5325 0x214F6
+0x5326 0x214FC
+0x5327 0x214F5
+0x5328 0x214F1
+0x5329 0x2169C
+0x532A 0x21918
+0x532B 0x2191A
+0x532C 0x21AFC
+0x532D 0x21AFE
+0x532E 0x21B03
+0x532F 0x21B53
+0x5330 0x21D2B
+0x5331 0x21FC6
+0x5332 0x21FC1
+0x5333 0x2217B
+0x5334 0x22306
+0x5335 0x22449
+0x5336 0x224B8
+0x5337 0x225A3
+0x5338 0x22952
+0x5339 0x2294D
+0x533A 0x2295F
+0x533B 0x2295E
+0x533C 0x22961
+0x533D 0x22A23
+0x533E 0x22E8C
+0x533F 0x22E6F
+0x5340 0x22E75
+0x5341 0x22E74
+0x5342 0x22E71
+0x5343 0x22E70
+0x5344 0x22E6C
+0x5345 0x23126
+0x5346 0x23308
+0x5348 0x237F0
+0x5349 0x237EF
+0x534A 0x237FB
+0x534B 0x23810
+0x534C 0x2380C
+0x534D 0x237F6
+0x534E 0x237FE
+0x534F 0x23A7C
+0x5350 0x23AE1
+0x5351 0x23C38
+0x5352 0x23C6F
+0x5353 0x24118
+0x5354 0x24115
+0x5355 0x2411C
+0x5356 0x24110
+0x5357 0x24135
+0x5358 0x2F917
+0x5359 0x24117
+0x535A 0x2411D
+0x535B 0x24126
+0x535C 0x24128
+0x535D 0x24129
+0x535E 0x2412A
+0x535F 0x2411A
+0x5360 0x2F916
+0x5361 0x22307
+0x5362 0x244AB
+0x5363 0x244AC
+0x5364 0x244A1
+0x5365 0x244AE
+0x5366 0x244A3
+0x5367 0x244A7
+0x5368 0x24548
+0x5369 0x24604
+0x536A 0x246FD
+0x536C 0x24708
+0x536D 0x248D2
+0x536E 0x24AC6
+0x536F 0x24ABE
+0x5370 0x24B1C
+0x5371 0x24BA6
+0x5372 0x24BA7
+0x5373 0x24BAB
+0x5374 0x24C00
+0x5375 0x24CFB
+0x5376 0x24CFC
+0x5377 0x24CF9
+0x5378 0x24D01
+0x5379 0x24F06
+0x537A 0x24F04
+0x537B 0x2F93C
+0x537C 0x25034
+0x537D 0x25336
+0x537E 0x25332
+0x5421 0x25342
+0x5422 0x2532D
+0x5423 0x25335
+0x5424 0x255D8
+0x5425 0x25723
+0x5426 0x25720
+0x5427 0x25901
+0x5428 0x25900
+0x5429 0x25903
+0x542A 0x2A6BC
+0x542B 0x25A3C
+0x542C 0x25A41
+0x542D 0x25A35
+0x542E 0x25AC9
+0x542F 0x25D8E
+0x5430 0x25D9E
+0x5431 0x25D99
+0x5432 0x25DB4
+0x5433 0x25DAA
+0x5434 0x25D9F
+0x5435 0x25D96
+0x5436 0x25D9D
+0x5437 0x25DC3
+0x5438 0x25D74
+0x5439 0x25DAB
+0x543B 0x25F63
+0x543C 0x25F5B
+0x543D 0x25F5A
+0x543E 0x261C5
+0x543F 0x261C4
+0x5440 0x261CF
+0x5441 0x261C8
+0x5442 0x261A4
+0x5443 0x261BD
+0x5444 0x261D3
+0x5445 0x26260
+0x5446 0x2633B
+0x5447 0x263E3
+0x5448 0x263E7
+0x5449 0x264A8
+0x544A 0x264AC
+0x544B 0x264A9
+0x544C 0x2652A
+0x544D 0x26608
+0x544E 0x26609
+0x544F 0x268B9
+0x5450 0x26AC1
+0x5451 0x26AC2
+0x5452 0x26AB8
+0x5453 0x270E1
+0x5454 0x270EB
+0x5455 0x270E5
+0x5456 0x270FA
+0x5457 0x270E4
+0x5458 0x2710B
+0x5459 0x270D7
+0x545A 0x270EF
+0x545B 0x270E0
+0x545C 0x270EC
+0x545D 0x270FB
+0x545E 0x2F9B0
+0x545F 0x270D3
+0x5460 0x270E6
+0x5461 0x270FC
+0x5462 0x270E3
+0x5463 0x270CF
+0x5464 0x270DA
+0x5465 0x270DC
+0x5466 0x270D2
+0x5467 0x270A4
+0x5469 0x27217
+0x546A 0x27216
+0x546B 0x274F2
+0x546C 0x274FC
+0x546D 0x27518
+0x546E 0x274F6
+0x546F 0x274FE
+0x5470 0x274F3
+0x5471 0x274F7
+0x5472 0x27501
+0x5473 0x274F9
+0x5474 0x27506
+0x5475 0x274F5
+0x5476 0x27510
+0x5477 0x274DF
+0x5478 0x27503
+0x5479 0x27508
+0x547A 0x275D8
+0x547B 0x27605
+0x547C 0x27797
+0x547D 0x277B3
+0x547E 0x277AE
+0x5521 0x277AF
+0x5522 0x277A7
+0x5523 0x277B1
+0x5524 0x277A8
+0x5525 0x277AC
+0x5526 0x277AB
+0x5527 0x27804
+0x5528 0x2789A
+0x5529 0x2794A
+0x552A 0x27B42
+0x552B 0x27B58
+0x552C 0x27B4B
+0x552D 0x27B45
+0x552E 0x27B49
+0x552F 0x27B4C
+0x5530 0x27B59
+0x5531 0x27B56
+0x5533 0x27B46
+0x5534 0x27B44
+0x5535 0x27B5B
+0x5536 0x27B69
+0x5537 0x27C8E
+0x5538 0x27C8F
+0x5539 0x27D1E
+0x553A 0x268BC
+0x553B 0x27E2F
+0x553C 0x27F9E
+0x553D 0x27F9D
+0x553E 0x27F9F
+0x553F 0x27F9C
+0x5540 0x281B4
+0x5541 0x281AE
+0x5542 0x281AB
+0x5543 0x281B3
+0x5544 0x281AF
+0x5545 0x281C2
+0x5546 0x28293
+0x5547 0x28295
+0x5548 0x28296
+0x5549 0x28297
+0x554A 0x283CF
+0x554B 0x283CE
+0x554C 0x283CB
+0x554D 0x2844B
+0x554E 0x28646
+0x554F 0x28643
+0x5550 0x28645
+0x5551 0x28651
+0x5552 0x287AE
+0x5553 0x287AF
+0x5554 0x287B0
+0x5555 0x287B8
+0x5556 0x287E2
+0x5557 0x287E3
+0x5558 0x287E6
+0x5559 0x288ED
+0x555A 0x288EA
+0x555B 0x2893A
+0x555C 0x28B59
+0x555D 0x28B84
+0x555E 0x28B5F
+0x555F 0x28B7C
+0x5560 0x28B5C
+0x5561 0x28B58
+0x5562 0x28B55
+0x5563 0x28B5D
+0x5564 0x28B7E
+0x5565 0x28B80
+0x5566 0x28B83
+0x5567 0x28B57
+0x5569 0x28B5E
+0x556A 0x28CBA
+0x556B 0x28DD5
+0x556C 0x28F58
+0x556D 0x28F68
+0x556E 0x28F67
+0x556F 0x2904A
+0x5570 0x2904C
+0x5571 0x29052
+0x5572 0x29049
+0x5573 0x2904E
+0x5574 0x29047
+0x5575 0x2904D
+0x5576 0x2904B
+0x5577 0x2904F
+0x5578 0x2917E
+0x5579 0x29187
+0x557A 0x29183
+0x557B 0x29189
+0x557C 0x24ACA
+0x557D 0x29186
+0x557E 0x29188
+0x5621 0x29247
+0x5622 0x29242
+0x5623 0x29249
+0x5624 0x29248
+0x5628 0x29344
+0x5629 0x29351
+0x562A 0x29346
+0x562B 0x29347
+0x562C 0x293E4
+0x562D 0x2940F
+0x562E 0x2943F
+0x562F 0x2954B
+0x5630 0x29557
+0x5631 0x29552
+0x5633 0x29551
+0x5634 0x29558
+0x5635 0x2955E
+0x5636 0x29553
+0x5637 0x2955D
+0x5638 0x2954D
+0x5639 0x2963C
+0x563A 0x2963F
+0x563B 0x29646
+0x563C 0x2963E
+0x563D 0x29644
+0x563E 0x29645
+0x563F 0x29641
+0x5640 0x29638
+0x5641 0x29642
+0x5642 0x29643
+0x5643 0x2967A
+0x5644 0x297A3
+0x5645 0x297BA
+0x5646 0x297C0
+0x5647 0x297C4
+0x5648 0x297C6
+0x5649 0x297CB
+0x564A 0x29861
+0x564B 0x2997A
+0x564C 0x29973
+0x564D 0x29972
+0x564E 0x29974
+0x564F 0x29980
+0x5650 0x29981
+0x5652 0x29A95
+0x5653 0x29A8F
+0x5654 0x29A90
+0x5655 0x29A92
+0x5656 0x29A94
+0x5657 0x29A8B
+0x5658 0x29AE6
+0x5659 0x29BB2
+0x565A 0x29BB8
+0x565B 0x29BBD
+0x565C 0x29BBE
+0x565D 0x29BCE
+0x565E 0x29BBA
+0x565F 0x29C16
+0x5660 0x29C26
+0x5661 0x29C25
+0x5662 0x29C4C
+0x5663 0x29C50
+0x5664 0x29C4E
+0x5665 0x29C51
+0x5666 0x29C52
+0x5667 0x29D14
+0x5668 0x29D15
+0x5669 0x29D1B
+0x566A 0x29E82
+0x566B 0x29E99
+0x566C 0x29E9A
+0x566D 0x29E7D
+0x566E 0x29E85
+0x566F 0x29E86
+0x5670 0x29E9C
+0x5671 0x29E79
+0x5672 0x29E7B
+0x5673 0x29E80
+0x5674 0x29E83
+0x5675 0x29E81
+0x5676 0x2A11E
+0x5677 0x2A11B
+0x5678 0x2A12A
+0x5679 0x2A0FB
+0x567A 0x2A105
+0x567B 0x2A120
+0x567C 0x2A111
+0x567D 0x2A104
+0x567E 0x2A0FD
+0x5721 0x2A103
+0x5722 0x2A110
+0x5723 0x2A118
+0x5724 0x2A10A
+0x5725 0x2A14E
+0x5726 0x2A109
+0x5727 0x2A107
+0x5728 0x2A11C
+0x572A 0x2A277
+0x572B 0x2A276
+0x572C 0x2A2D8
+0x572D 0x2A2D9
+0x572E 0x2A361
+0x572F 0x2A35C
+0x5730 0x2A35E
+0x5731 0x2A360
+0x5732 0x2A3AA
+0x5733 0x2A3D6
+0x5734 0x2A3D8
+0x5735 0x2A409
+0x5736 0x2A408
+0x5737 0x2A46B
+0x5738 0x2A465
+0x5739 0x2A473
+0x573A 0x2A474
+0x573B 0x2A4ED
+0x573C 0x2A524
+0x573D 0x2A525
+0x573E 0x2A56A
+0x573F 0x2A5A7
+0x5740 0x2A5A8
+0x5741 0x2A60B
+0x5742 0x2A5FA
+0x5743 0x2A5F9
+0x5744 0x2A5FF
+0x5745 0x2A604
+0x5746 0x2A5F6
+0x5747 0x2A605
+0x5748 0x2A699
+0x5749 0x2A6AB
+0x574A 0x2A6BD
+0x574B 0x2A6B8
+0x574D 0x20464
+0x574E 0x2045A
+0x574F 0x20572
+0x5750 0x2097A
+0x5751 0x20B95
+0x5752 0x2115F
+0x5753 0x21161
+0x5754 0x2115E
+0x5755 0x2115A
+0x5756 0x2115C
+0x5757 0x2115D
+0x5758 0x2116E
+0x5759 0x21157
+0x575A 0x21158
+0x575B 0x21502
+0x575C 0x2150B
+0x575D 0x21508
+0x575E 0x21551
+0x575F 0x21925
+0x5760 0x21928
+0x5761 0x21923
+0x5762 0x21921
+0x5763 0x21924
+0x5764 0x21929
+0x5765 0x21B06
+0x5766 0x21B0A
+0x5767 0x21FCA
+0x5768 0x21FCC
+0x5769 0x21FCB
+0x576A 0x21FCF
+0x576B 0x2217F
+0x576C 0x2217C
+0x576D 0x221D6
+0x576E 0x22309
+0x576F 0x2230B
+0x5770 0x22376
+0x5771 0x2247D
+0x5772 0x225A5
+0x5773 0x2295B
+0x5774 0x2295C
+0x5775 0x2295D
+0x5776 0x22965
+0x5777 0x22E6D
+0x5778 0x22E82
+0x5779 0x22E83
+0x577A 0x22E87
+0x577B 0x22E95
+0x577C 0x22E8A
+0x577D 0x230D6
+0x577E 0x23128
+0x5821 0x2330D
+0x5822 0x2382E
+0x5823 0x2F8EE
+0x5824 0x2382D
+0x5825 0x23821
+0x5826 0x23819
+0x5827 0x2393B
+0x5828 0x2393C
+0x5829 0x2393A
+0x582A 0x23A7E
+0x582B 0x23C3B
+0x582C 0x24147
+0x582D 0x24139
+0x582E 0x24134
+0x582F 0x24136
+0x5830 0x24146
+0x5831 0x2413B
+0x5832 0x24141
+0x5833 0x24145
+0x5834 0x244C0
+0x5835 0x244C4
+0x5836 0x244BA
+0x5837 0x244BD
+0x5838 0x244BE
+0x5839 0x245A3
+0x583A 0x2470C
+0x583B 0x248D9
+0x583C 0x24ACD
+0x583D 0x24BAE
+0x583E 0x24CFF
+0x583F 0x24D24
+0x5840 0x24FBB
+0x5841 0x24FBC
+0x5842 0x25036
+0x5843 0x250D5
+0x5844 0x250D3
+0x5845 0x250D6
+0x5846 0x2533C
+0x5847 0x2533F
+0x5848 0x255DE
+0x5849 0x255E3
+0x584A 0x25727
+0x584B 0x25729
+0x584D 0x25905
+0x584E 0x25907
+0x584F 0x2590C
+0x5850 0x25AD0
+0x5851 0x25DBE
+0x5852 0x25DBC
+0x5853 0x25DD0
+0x5854 0x25DC2
+0x5855 0x25DB5
+0x5856 0x25DC9
+0x5857 0x25F66
+0x5859 0x261D5
+0x585A 0x261E2
+0x585B 0x261DC
+0x585C 0x261E3
+0x585D 0x261DA
+0x585E 0x261C2
+0x585F 0x261E8
+0x5860 0x263E9
+0x5861 0x264AF
+0x5862 0x264AD
+0x5863 0x264AE
+0x5864 0x2660B
+0x5865 0x268C1
+0x5866 0x269B6
+0x5867 0x269B9
+0x5868 0x26AC0
+0x5869 0x270A5
+0x586A 0x27128
+0x586B 0x27122
+0x586C 0x27129
+0x586D 0x27118
+0x586E 0x2711F
+0x586F 0x2711C
+0x5870 0x27112
+0x5871 0x2712A
+0x5873 0x27121
+0x5874 0x2712B
+0x5875 0x27117
+0x5876 0x270F0
+0x5877 0x27116
+0x5878 0x27123
+0x5879 0x2752B
+0x587A 0x27526
+0x587B 0x2753D
+0x587C 0x27522
+0x587D 0x2753A
+0x587E 0x27531
+0x5921 0x27532
+0x5922 0x27554
+0x5923 0x27521
+0x5924 0x27535
+0x5926 0x2752E
+0x5927 0x27530
+0x5928 0x2752F
+0x5929 0x27536
+0x592A 0x275DA
+0x592B 0x275D9
+0x592C 0x277BB
+0x592D 0x277BC
+0x592E 0x277B7
+0x592F 0x277C2
+0x5930 0x277BD
+0x5931 0x277B2
+0x5933 0x25344
+0x5934 0x25DD1
+0x5935 0x27B52
+0x5936 0x27B6B
+0x5937 0x27B67
+0x5939 0x27B61
+0x593A 0x27B6C
+0x593B 0x27B51
+0x593C 0x27B74
+0x593D 0x27B77
+0x593E 0x27B6F
+0x593F 0x27B6D
+0x5940 0x27B68
+0x5941 0x2F9D1
+0x5942 0x27B84
+0x5943 0x27C90
+0x5944 0x27C92
+0x5945 0x27C93
+0x5946 0x27D1F
+0x5947 0x27E31
+0x5948 0x27E38
+0x5949 0x27E39
+0x594A 0x27E37
+0x594B 0x27FAB
+0x594C 0x281C3
+0x594D 0x281C8
+0x594E 0x281CB
+0x594F 0x281CF
+0x5950 0x28298
+0x5951 0x283D4
+0x5952 0x283D3
+0x5953 0x283D8
+0x5954 0x283D9
+0x5955 0x283DD
+0x5956 0x283D1
+0x5957 0x283D6
+0x5958 0x2843E
+0x5959 0x28658
+0x595A 0x28657
+0x595B 0x28655
+0x595C 0x287C4
+0x595D 0x287E4
+0x595E 0x288EE
+0x595F 0x288EF
+0x5960 0x288F3
+0x5961 0x288F2
+0x5962 0x288F0
+0x5963 0x28BAB
+0x5964 0x28B9A
+0x5965 0x28BAF
+0x5966 0x28B97
+0x5969 0x28BBF
+0x596A 0x28B94
+0x596B 0x28B93
+0x596C 0x28CBE
+0x596D 0x28CBB
+0x596E 0x28CBC
+0x596F 0x28DD9
+0x5970 0x28F6C
+0x5971 0x29053
+0x5972 0x29054
+0x5973 0x2905B
+0x5974 0x29058
+0x5975 0x29056
+0x5976 0x29057
+0x5977 0x2919F
+0x5978 0x29194
+0x5979 0x29196
+0x597A 0x29197
+0x597B 0x2924A
+0x597C 0x2924B
+0x597D 0x29355
+0x597E 0x2935A
+0x5A21 0x2935E
+0x5A22 0x2935F
+0x5A23 0x29359
+0x5A24 0x2935B
+0x5A25 0x29358
+0x5A26 0x29354
+0x5A27 0x293E8
+0x5A28 0x293EB
+0x5A29 0x293EC
+0x5A2A 0x29413
+0x5A2B 0x29566
+0x5A2C 0x2956B
+0x5A2D 0x29562
+0x5A2E 0x29569
+0x5A2F 0x29563
+0x5A30 0x2955F
+0x5A31 0x2954E
+0x5A32 0x29648
+0x5A33 0x2964A
+0x5A34 0x297E3
+0x5A35 0x297DB
+0x5A36 0x297D8
+0x5A37 0x297D6
+0x5A38 0x29986
+0x5A39 0x29990
+0x5A3A 0x29991
+0x5A3B 0x29988
+0x5A3C 0x29994
+0x5A3D 0x29983
+0x5A3F 0x2999C
+0x5A40 0x2998D
+0x5A41 0x29985
+0x5A42 0x29A98
+0x5A43 0x29A9A
+0x5A44 0x29A9C
+0x5A45 0x29AE7
+0x5A46 0x29BC5
+0x5A47 0x29BD0
+0x5A48 0x29BD1
+0x5A49 0x29C19
+0x5A4A 0x29C27
+0x5A4C 0x29C54
+0x5A4D 0x29D2D
+0x5A4E 0x29D22
+0x5A50 0x29D1F
+0x5A51 0x29EBD
+0x5A52 0x29EAE
+0x5A53 0x29EBB
+0x5A54 0x29EAD
+0x5A55 0x29EBC
+0x5A56 0x29EB9
+0x5A57 0x29EB4
+0x5A58 0x29ECB
+0x5A59 0x29EB7
+0x5A5A 0x29EB3
+0x5A5B 0x29EBA
+0x5A5C 0x29EB6
+0x5A5D 0x29ECD
+0x5A5E 0x29EBE
+0x5A5F 0x29EC9
+0x5A60 0x2FA0B
+0x5A61 0x2A15F
+0x5A62 0x2A13B
+0x5A63 0x2A161
+0x5A64 0x2A15C
+0x5A65 0x2A18A
+0x5A66 0x2A15A
+0x5A67 0x2A14D
+0x5A68 0x2A146
+0x5A69 0x2A144
+0x5A6A 0x2A13D
+0x5A6B 0x2A140
+0x5A6C 0x2A13C
+0x5A6D 0x2A18C
+0x5A6E 0x2A141
+0x5A6F 0x2A14C
+0x5A70 0x2A13E
+0x5A71 0x2A14A
+0x5A72 0x2A27C
+0x5A73 0x2A27A
+0x5A74 0x2A365
+0x5A75 0x2A36E
+0x5A76 0x2A369
+0x5A77 0x2A36A
+0x5A78 0x2A36F
+0x5A79 0x2A36C
+0x5A7A 0x2A370
+0x5A7B 0x2A368
+0x5A7C 0x2A36B
+0x5A7E 0x2A3AC
+0x5B21 0x2A3DE
+0x5B22 0x2A3DD
+0x5B23 0x2A3DC
+0x5B24 0x244C5
+0x5B25 0x2A48C
+0x5B26 0x2A483
+0x5B27 0x2A482
+0x5B28 0x2A488
+0x5B29 0x2A485
+0x5B2A 0x2A481
+0x5B2B 0x2A4F5
+0x5B2C 0x2A4EF
+0x5B2D 0x2A4F4
+0x5B2E 0x2A4F2
+0x5B2F 0x2A4F6
+0x5B30 0x2A4F3
+0x5B31 0x2A4F0
+0x5B32 0x2A4F1
+0x5B33 0x2A52B
+0x5B34 0x2A527
+0x5B35 0x2A528
+0x5B36 0x2A56C
+0x5B37 0x2A5AE
+0x5B38 0x2A60E
+0x5B39 0x2A61B
+0x5B3A 0x2A616
+0x5B3B 0x2A61F
+0x5B3C 0x2A622
+0x5B3D 0x2A620
+0x5B3E 0x2A621
+0x5B3F 0x2A614
+0x5B40 0x2A613
+0x5B41 0x2A69D
+0x5B42 0x2A69C
+0x5B43 0x2A69E
+0x5B44 0x2A69F
+0x5B45 0x2046B
+0x5B46 0x208C8
+0x5B47 0x21178
+0x5B48 0x21176
+0x5B49 0x21170
+0x5B4A 0x21171
+0x5B4B 0x2150A
+0x5B4C 0x2192C
+0x5B4D 0x22311
+0x5B4E 0x2247E
+0x5B4F 0x22957
+0x5B50 0x22966
+0x5B51 0x22969
+0x5B52 0x22967
+0x5B53 0x22968
+0x5B54 0x22971
+0x5B55 0x2296F
+0x5B56 0x2A3AE
+0x5B57 0x22E8B
+0x5B58 0x22E96
+0x5B59 0x23035
+0x5B5A 0x2303A
+0x5B5B 0x2306B
+0x5B5C 0x23316
+0x5B5D 0x23843
+0x5B5E 0x23846
+0x5B5F 0x2383F
+0x5B60 0x2383B
+0x5B61 0x2383D
+0x5B62 0x239B1
+0x5B63 0x239B2
+0x5B64 0x23AE4
+0x5B65 0x23C40
+0x5B66 0x2415D
+0x5B67 0x24151
+0x5B68 0x2414D
+0x5B69 0x2414C
+0x5B6A 0x2415B
+0x5B6B 0x244D4
+0x5B6C 0x244D2
+0x5B6D 0x244CA
+0x5B6E 0x244C8
+0x5B6F 0x244D0
+0x5B70 0x244C9
+0x5B71 0x24549
+0x5B72 0x245A4
+0x5B73 0x24712
+0x5B74 0x2470F
+0x5B75 0x24711
+0x5B76 0x248DB
+0x5B77 0x248DD
+0x5B78 0x248DC
+0x5B79 0x24AD4
+0x5B7A 0x24B21
+0x5B7B 0x24BB2
+0x5B7C 0x24D04
+0x5B7D 0x24D02
+0x5B7E 0x24F11
+0x5C21 0x24F16
+0x5C22 0x24F10
+0x5C23 0x24FBE
+0x5C24 0x2721A
+0x5C25 0x2534C
+0x5C26 0x2534A
+0x5C27 0x255F2
+0x5C28 0x255F1
+0x5C29 0x2572A
+0x5C2A 0x2572C
+0x5C2B 0x2572F
+0x5C2C 0x25731
+0x5C2D 0x25911
+0x5C2E 0x25912
+0x5C2F 0x25A4B
+0x5C30 0x25DDB
+0x5C31 0x25DD6
+0x5C32 0x25DDD
+0x5C33 0x25DE2
+0x5C34 0x25DE4
+0x5C35 0x25DE0
+0x5C36 0x25DDF
+0x5C37 0x25DE3
+0x5C38 0x25F6E
+0x5C39 0x25F71
+0x5C3A 0x261E9
+0x5C3B 0x261EA
+0x5C3C 0x26263
+0x5C3D 0x263EB
+0x5C3E 0x263EA
+0x5C3F 0x268BD
+0x5C40 0x268BB
+0x5C41 0x268C6
+0x5C42 0x268CC
+0x5C43 0x268C8
+0x5C44 0x244CF
+0x5C45 0x268C9
+0x5C46 0x268CA
+0x5C47 0x268CF
+0x5C48 0x268D0
+0x5C49 0x269BA
+0x5C4A 0x269FB
+0x5C4B 0x26A03
+0x5C4C 0x26AC4
+0x5C4D 0x27149
+0x5C4E 0x27153
+0x5C4F 0x27136
+0x5C50 0x2714A
+0x5C51 0x27141
+0x5C52 0x2714E
+0x5C53 0x27119
+0x5C54 0x2714D
+0x5C55 0x27145
+0x5C56 0x2714C
+0x5C57 0x27147
+0x5C58 0x27148
+0x5C59 0x2714F
+0x5C5A 0x27137
+0x5C5B 0x27142
+0x5C5C 0x2754A
+0x5C5D 0x27546
+0x5C5F 0x27549
+0x5C60 0x2754F
+0x5C61 0x27551
+0x5C62 0x2754C
+0x5C64 0x27606
+0x5C65 0x27951
+0x5C66 0x27B7A
+0x5C67 0x27B83
+0x5C68 0x27B7E
+0x5C69 0x27B7F
+0x5C6A 0x27B80
+0x5C6B 0x24BB5
+0x5C6C 0x27C91
+0x5C6D 0x27C94
+0x5C6E 0x27C95
+0x5C6F 0x27D21
+0x5C70 0x27D20
+0x5C71 0x27E3D
+0x5C72 0x27E40
+0x5C73 0x27E46
+0x5C74 0x27E84
+0x5C75 0x27FAC
+0x5C76 0x27FAD
+0x5C78 0x281DA
+0x5C79 0x281D9
+0x5C7A 0x283E2
+0x5C7B 0x283E1
+0x5C7C 0x283E3
+0x5C7D 0x283E4
+0x5C7E 0x283DE
+0x5D21 0x283DF
+0x5D22 0x28641
+0x5D23 0x28659
+0x5D24 0x2865C
+0x5D25 0x2865A
+0x5D26 0x287E8
+0x5D27 0x288F6
+0x5D28 0x288FC
+0x5D29 0x288F7
+0x5D2A 0x288FA
+0x5D2B 0x288F9
+0x5D2C 0x28BC4
+0x5D2D 0x28BBE
+0x5D2E 0x28BD2
+0x5D2F 0x28BBD
+0x5D30 0x28B95
+0x5D31 0x28BD4
+0x5D32 0x28DE4
+0x5D33 0x29061
+0x5D34 0x29062
+0x5D35 0x29063
+0x5D36 0x29064
+0x5D37 0x29060
+0x5D38 0x2905C
+0x5D39 0x2905D
+0x5D3A 0x2905E
+0x5D3B 0x291A5
+0x5D3C 0x291A6
+0x5D3D 0x2924C
+0x5D3E 0x29368
+0x5D3F 0x2936E
+0x5D40 0x29371
+0x5D41 0x2936B
+0x5D42 0x2936F
+0x5D43 0x293EE
+0x5D44 0x293F1
+0x5D45 0x293F0
+0x5D46 0x293EF
+0x5D47 0x29415
+0x5D48 0x29414
+0x5D49 0x28F6E
+0x5D4A 0x29447
+0x5D4B 0x2957C
+0x5D4C 0x2957A
+0x5D4D 0x29574
+0x5D4E 0x29576
+0x5D4F 0x2956E
+0x5D50 0x29578
+0x5D51 0x2956D
+0x5D52 0x2956C
+0x5D53 0x2964E
+0x5D54 0x297D7
+0x5D55 0x297EA
+0x5D56 0x297E5
+0x5D57 0x29864
+0x5D58 0x299B3
+0x5D59 0x299A3
+0x5D5A 0x299A5
+0x5D5B 0x299A7
+0x5D5C 0x299A2
+0x5D5D 0x2999F
+0x5D5E 0x299A6
+0x5D5F 0x2999E
+0x5D60 0x299A8
+0x5D61 0x29AA9
+0x5D62 0x29AA6
+0x5D63 0x29AAA
+0x5D64 0x29AAB
+0x5D65 0x29AA0
+0x5D66 0x29AA1
+0x5D67 0x29AA8
+0x5D68 0x29AE8
+0x5D69 0x29AE9
+0x5D6A 0x29AEA
+0x5D6B 0x29BE4
+0x5D6C 0x29BDF
+0x5D6D 0x29BE0
+0x5D6E 0x29C28
+0x5D6F 0x29C5D
+0x5D70 0x29C5B
+0x5D71 0x29C56
+0x5D72 0x29C57
+0x5D73 0x29C5F
+0x5D74 0x29C62
+0x5D75 0x29EE1
+0x5D76 0x29EE3
+0x5D77 0x29EDE
+0x5D78 0x29ED9
+0x5D79 0x29EE8
+0x5D7A 0x29EF2
+0x5D7B 0x29EF6
+0x5D7C 0x29EE6
+0x5D7D 0x29EF4
+0x5D7E 0x29EF5
+0x5E21 0x29EE5
+0x5E22 0x29EE2
+0x5E24 0x2A196
+0x5E25 0x2A1AA
+0x5E26 0x2A197
+0x5E27 0x2A170
+0x5E28 0x2A1A1
+0x5E29 0x2A19D
+0x5E2A 0x2A1A9
+0x5E2B 0x2A16F
+0x5E2C 0x2A17E
+0x5E2D 0x2A194
+0x5E2E 0x2A19A
+0x5E2F 0x2A173
+0x5E30 0x2A187
+0x5E31 0x2A171
+0x5E32 0x2A177
+0x5E33 0x2A188
+0x5E34 0x2A18D
+0x5E35 0x2A185
+0x5E36 0x2A178
+0x5E37 0x2A1AD
+0x5E38 0x2A280
+0x5E39 0x2A281
+0x5E3A 0x2A2E5
+0x5E3B 0x2A2E7
+0x5E3C 0x2A37C
+0x5E3D 0x2A3AF
+0x5E3E 0x2A3E1
+0x5E3F 0x2A496
+0x5E40 0x2A4A3
+0x5E41 0x2A490
+0x5E42 0x2A4F8
+0x5E43 0x2A52E
+0x5E44 0x2A575
+0x5E45 0x2A57E
+0x5E46 0x2A57D
+0x5E47 0x2A57B
+0x5E48 0x2A578
+0x5E49 0x2A5B0
+0x5E4A 0x2A634
+0x5E4B 0x2A636
+0x5E4C 0x2A630
+0x5E4D 0x2FA1D
+0x5E4E 0x2A62E
+0x5E4F 0x2A637
+0x5E50 0x20ACE
+0x5E51 0x20B97
+0x5E52 0x20B98
+0x5E53 0x2117C
+0x5E54 0x2117E
+0x5E55 0x2117D
+0x5E56 0x2117F
+0x5E57 0x2150F
+0x5E58 0x216A4
+0x5E59 0x21931
+0x5E5A 0x2192E
+0x5E5B 0x2192F
+0x5E5C 0x21932
+0x5E5D 0x21D2C
+0x5E5E 0x21FD4
+0x5E5F 0x21FDC
+0x5E60 0x21FD8
+0x5E61 0x2200E
+0x5E62 0x22183
+0x5E63 0x22184
+0x5E64 0x22312
+0x5E65 0x22972
+0x5E66 0x2297C
+0x5E67 0x2297E
+0x5E68 0x22EA6
+0x5E69 0x22EA0
+0x5E6A 0x22E9E
+0x5E6B 0x22EA2
+0x5E6C 0x2312A
+0x5E6D 0x23318
+0x5E6E 0x2384D
+0x5E6F 0x23858
+0x5E70 0x2385B
+0x5E71 0x25914
+0x5E72 0x2F8F2
+0x5E73 0x23AE6
+0x5E74 0x24164
+0x5E75 0x24168
+0x5E76 0x24160
+0x5E77 0x24162
+0x5E78 0x244D7
+0x5E79 0x2454B
+0x5E7A 0x248E0
+0x5E7B 0x24B22
+0x5E7C 0x24D05
+0x5E7D 0x24F19
+0x5E7E 0x24F1A
+0x5F21 0x24FC3
+0x5F22 0x250D8
+0x5F23 0x250DC
+0x5F24 0x2534F
+0x5F25 0x255F7
+0x5F26 0x255F4
+0x5F27 0x255F8
+0x5F28 0x25913
+0x5F29 0x25A50
+0x5F2A 0x25DF0
+0x5F2B 0x25DE9
+0x5F2C 0x25DEF
+0x5F2D 0x25DED
+0x5F2E 0x25DEA
+0x5F2F 0x25DF8
+0x5F30 0x25E05
+0x5F31 0x25DF2
+0x5F32 0x25F72
+0x5F34 0x261F9
+0x5F35 0x261F3
+0x5F36 0x261F6
+0x5F37 0x261F2
+0x5F38 0x261F7
+0x5F39 0x26266
+0x5F3A 0x26265
+0x5F3B 0x26340
+0x5F3C 0x2F977
+0x5F3D 0x268D1
+0x5F3E 0x268D3
+0x5F3F 0x26A04
+0x5F40 0x27159
+0x5F41 0x27160
+0x5F42 0x2715B
+0x5F43 0x2715D
+0x5F44 0x2715E
+0x5F45 0x27169
+0x5F46 0x2715C
+0x5F47 0x27161
+0x5F48 0x2716A
+0x5F49 0x2715F
+0x5F4A 0x2754E
+0x5F4B 0x2755C
+0x5F4C 0x27560
+0x5F4D 0x27563
+0x5F4E 0x275DB
+0x5F4F 0x277CA
+0x5F50 0x277C9
+0x5F51 0x277C8
+0x5F52 0x278A5
+0x5F53 0x278A3
+0x5F54 0x27B8E
+0x5F55 0x27B87
+0x5F56 0x27B89
+0x5F57 0x27B85
+0x5F58 0x27B86
+0x5F59 0x27B8F
+0x5F5A 0x27B8A
+0x5F5B 0x27B90
+0x5F5C 0x27C98
+0x5F5D 0x27C9B
+0x5F5E 0x27E47
+0x5F5F 0x27E49
+0x5F60 0x27E48
+0x5F61 0x281E5
+0x5F62 0x281EA
+0x5F63 0x281ED
+0x5F64 0x283F0
+0x5F65 0x283EF
+0x5F66 0x283F2
+0x5F67 0x283EC
+0x5F68 0x28440
+0x5F69 0x28660
+0x5F6A 0x2865F
+0x5F6B 0x287EB
+0x5F6C 0x287EC
+0x5F6D 0x28900
+0x5F6E 0x28901
+0x5F6F 0x28BE2
+0x5F70 0x28BDF
+0x5F71 0x28BE0
+0x5F72 0x28BE1
+0x5F73 0x28BE3
+0x5F74 0x28CC3
+0x5F75 0x28DEB
+0x5F76 0x28DEA
+0x5F77 0x28F61
+0x5F78 0x28F71
+0x5F79 0x2906B
+0x5F7A 0x29068
+0x5F7B 0x29069
+0x5F7C 0x29067
+0x5F7D 0x291B0
+0x5F7E 0x291B1
+0x6021 0x291B2
+0x6022 0x29251
+0x6023 0x29374
+0x6024 0x2957F
+0x6025 0x29584
+0x6026 0x29653
+0x6027 0x29654
+0x6028 0x297F0
+0x6029 0x297F4
+0x602A 0x297F1
+0x602B 0x29837
+0x602C 0x299BF
+0x602F 0x299BD
+0x6030 0x299BE
+0x6031 0x299B7
+0x6032 0x299C0
+0x6033 0x299BA
+0x6034 0x299B8
+0x6035 0x299BC
+0x6036 0x299BB
+0x6037 0x29AEB
+0x6038 0x29BE7
+0x6039 0x29C1D
+0x603A 0x29C1C
+0x603B 0x29C63
+0x603C 0x2244B
+0x603D 0x29D38
+0x603E 0x29D36
+0x603F 0x29D34
+0x6040 0x29D37
+0x6041 0x29F06
+0x6042 0x29F1C
+0x6043 0x29F02
+0x6044 0x29F1D
+0x6045 0x29F1E
+0x6046 0x29EE0
+0x6047 0x29F11
+0x6048 0x29F18
+0x6049 0x29F21
+0x604A 0x29F20
+0x604B 0x29F10
+0x604C 0x2A1BD
+0x604D 0x2A1AE
+0x604E 0x2A1B5
+0x604F 0x2A1B8
+0x6050 0x2A1B9
+0x6051 0x2A1BE
+0x6052 0x2A1C4
+0x6053 0x2A1BC
+0x6054 0x2A1BA
+0x6055 0x2A283
+0x6056 0x2A2EA
+0x6057 0x2A2EC
+0x6058 0x2A37E
+0x6059 0x2A37B
+0x605A 0x2A3E5
+0x605B 0x2A4A7
+0x605C 0x2A49E
+0x605D 0x2A49A
+0x605E 0x2A52F
+0x605F 0x2A531
+0x6060 0x2A583
+0x6061 0x2A5B5
+0x6062 0x2A646
+0x6063 0x2A641
+0x6064 0x2A643
+0x6065 0x2A63D
+0x6066 0x2A642
+0x6067 0x2A63B
+0x6068 0x2A647
+0x6069 0x2096B
+0x606A 0x209D0
+0x606B 0x2118E
+0x606C 0x21B11
+0x606D 0x2F871
+0x606E 0x2F889
+0x606F 0x2244C
+0x6070 0x2312B
+0x6071 0x2384F
+0x6072 0x2385E
+0x6073 0x23863
+0x6074 0x2386B
+0x6075 0x2393F
+0x6076 0x23AE9
+0x6077 0x2416D
+0x6078 0x2416B
+0x6079 0x2416A
+0x607A 0x29F2A
+0x607B 0x244E0
+0x607C 0x244DD
+0x607D 0x244E1
+0x607E 0x244DE
+0x6121 0x244DC
+0x6122 0x2454D
+0x6123 0x24716
+0x6124 0x248E3
+0x6125 0x24AE5
+0x6126 0x24AE4
+0x6127 0x24F1D
+0x6128 0x2574B
+0x6129 0x2A6C1
+0x612A 0x25A4E
+0x612B 0x25AD6
+0x612C 0x25DFD
+0x612D 0x25E07
+0x612E 0x25DFE
+0x612F 0x25E03
+0x6130 0x25E0B
+0x6131 0x25DFF
+0x6132 0x25F7A
+0x6133 0x25F77
+0x6134 0x261FB
+0x6135 0x26343
+0x6136 0x263ED
+0x6137 0x269BC
+0x6138 0x244DF
+0x6139 0x26A05
+0x613A 0x26AC6
+0x613B 0x26AC5
+0x613C 0x27174
+0x613D 0x27173
+0x613E 0x27172
+0x613F 0x27178
+0x6140 0x27573
+0x6141 0x2757A
+0x6142 0x24F1C
+0x6143 0x27576
+0x6144 0x27575
+0x6145 0x27577
+0x6146 0x277CF
+0x6147 0x277CE
+0x6148 0x277CD
+0x6149 0x278A8
+0x614A 0x27B98
+0x614B 0x27B92
+0x614C 0x27B94
+0x614D 0x27C9A
+0x614E 0x27FB4
+0x614F 0x281EB
+0x6150 0x281F4
+0x6151 0x281F3
+0x6152 0x281EE
+0x6153 0x281F2
+0x6154 0x281F0
+0x6155 0x28664
+0x6156 0x28C05
+0x6157 0x28BFB
+0x6158 0x28BFC
+0x6159 0x28DF3
+0x615A 0x2906C
+0x615B 0x291BA
+0x615C 0x29379
+0x615D 0x2937E
+0x615E 0x29378
+0x615F 0x293F4
+0x6160 0x29416
+0x6161 0x29657
+0x6162 0x299C8
+0x6163 0x299C3
+0x6164 0x299CE
+0x6165 0x29AB3
+0x6166 0x29AED
+0x6167 0x29AEE
+0x6168 0x29BF1
+0x6169 0x29BF8
+0x616B 0x29C64
+0x616C 0x29C65
+0x616D 0x29F35
+0x616E 0x29F29
+0x616F 0x29F2C
+0x6170 0x29F31
+0x6171 0x29F2B
+0x6172 0x29F2E
+0x6173 0x29F25
+0x6174 0x2A1DA
+0x6175 0x2A1E0
+0x6176 0x2A1D4
+0x6177 0x2A1E1
+0x6178 0x2A1DD
+0x6179 0x2A3E7
+0x617A 0x2A412
+0x617B 0x2A4AE
+0x617C 0x2A4AF
+0x617D 0x2A586
+0x617E 0x2A585
+0x6221 0x2A5D1
+0x6222 0x2A658
+0x6223 0x2A63F
+0x6224 0x2A652
+0x6225 0x2A64B
+0x6226 0x2A653
+0x6227 0x2A650
+0x6228 0x2A656
+0x6229 0x2A657
+0x622A 0x2A6CD
+0x622B 0x2A6CB
+0x622C 0x20831
+0x622D 0x20830
+0x622E 0x209D1
+0x6230 0x21192
+0x6231 0x21190
+0x6232 0x2118F
+0x6233 0x21193
+0x6234 0x21191
+0x6236 0x22313
+0x6237 0x2247F
+0x6238 0x22EAC
+0x6239 0x24170
+0x623A 0x244E5
+0x623B 0x24B23
+0x623C 0x24B24
+0x623D 0x24D08
+0x623E 0x24D07
+0x623F 0x24F1F
+0x6240 0x24F20
+0x6241 0x24F21
+0x6242 0x250E1
+0x6243 0x25354
+0x6244 0x25357
+0x6245 0x25355
+0x6246 0x255FA
+0x6247 0x25738
+0x6248 0x27186
+0x6249 0x25737
+0x624A 0x25A53
+0x624B 0x25F7E
+0x624C 0x25F7B
+0x624D 0x2F971
+0x624E 0x261FD
+0x624F 0x261FC
+0x6250 0x26346
+0x6251 0x26932
+0x6252 0x26AC7
+0x6253 0x27171
+0x6254 0x27183
+0x6255 0x2716F
+0x6256 0x2717E
+0x6257 0x2717D
+0x6258 0x27181
+0x6259 0x2717C
+0x625A 0x2758A
+0x625B 0x2757E
+0x625C 0x27580
+0x625D 0x2757D
+0x625E 0x2757F
+0x625F 0x27582
+0x6260 0x277D4
+0x6261 0x277D0
+0x6262 0x277D2
+0x6263 0x27955
+0x6264 0x27B9B
+0x6265 0x27B9A
+0x6266 0x27E4E
+0x6267 0x281F1
+0x6268 0x283F8
+0x6269 0x283FD
+0x626A 0x2865E
+0x626B 0x28666
+0x626C 0x28905
+0x626D 0x28C0A
+0x626E 0x28C0B
+0x626F 0x28C0E
+0x6270 0x28C0D
+0x6271 0x28C11
+0x6272 0x28C09
+0x6273 0x28C10
+0x6274 0x28C0C
+0x6275 0x28C12
+0x6276 0x28CC4
+0x6277 0x28DF7
+0x6278 0x28DF8
+0x6279 0x28F6A
+0x627A 0x28F6B
+0x627B 0x291C0
+0x627C 0x291C2
+0x627D 0x29385
+0x627E 0x29380
+0x6321 0x29384
+0x6322 0x29381
+0x6323 0x291C4
+0x6324 0x2958B
+0x6325 0x2958D
+0x6326 0x2958E
+0x6327 0x29AB7
+0x6328 0x29AB9
+0x6329 0x29AEF
+0x632A 0x29BFB
+0x632B 0x29BFF
+0x632C 0x29C67
+0x632D 0x29C68
+0x632E 0x29C69
+0x632F 0x29D3F
+0x6330 0x29F3C
+0x6331 0x29F4C
+0x6332 0x29F3D
+0x6333 0x29F3E
+0x6334 0x29F3F
+0x6335 0x29F3B
+0x6336 0x2A1FF
+0x6338 0x2A1F6
+0x6339 0x2A1EE
+0x633A 0x2A1FC
+0x633B 0x2A1F8
+0x633C 0x2A201
+0x633D 0x2A1FA
+0x633E 0x2A288
+0x633F 0x2A380
+0x6340 0x2A411
+0x6341 0x2A4FE
+0x6342 0x2A500
+0x6343 0x2A535
+0x6344 0x2503C
+0x6345 0x2A5BD
+0x6346 0x2A5BB
+0x6347 0x2A65C
+0x6348 0x2A65A
+0x6349 0x2A6D1
+0x634A 0x2A6D0
+0x634B 0x20A0B
+0x634C 0x23873
+0x634D 0x21939
+0x634E 0x21B1A
+0x634F 0x21FE3
+0x6350 0x22187
+0x6351 0x22377
+0x6352 0x22378
+0x6353 0x22EB1
+0x6354 0x2386A
+0x6355 0x23874
+0x6356 0x23AEB
+0x6357 0x2417B
+0x6358 0x245A5
+0x6359 0x248E4
+0x635A 0x24D0B
+0x635B 0x24D0E
+0x635C 0x24D0C
+0x635D 0x25739
+0x635E 0x25E10
+0x635F 0x25E11
+0x6360 0x25E16
+0x6361 0x25F81
+0x6362 0x25F80
+0x6363 0x261FE
+0x6364 0x26201
+0x6365 0x26200
+0x6366 0x26347
+0x6367 0x263EF
+0x6368 0x27188
+0x6369 0x2758B
+0x636A 0x2758D
+0x636B 0x27587
+0x636C 0x27585
+0x636D 0x2758F
+0x636E 0x27584
+0x636F 0x27588
+0x6370 0x2758E
+0x6371 0x2758C
+0x6372 0x277D7
+0x6373 0x277D6
+0x6374 0x27B9F
+0x6375 0x22188
+0x6376 0x28203
+0x6377 0x283FE
+0x6378 0x287EF
+0x6379 0x28909
+0x637A 0x28908
+0x637B 0x28C20
+0x637C 0x28C24
+0x637D 0x28C1F
+0x637E 0x29070
+0x6421 0x29256
+0x6422 0x293F7
+0x6423 0x293F8
+0x6424 0x293F6
+0x6425 0x29590
+0x6426 0x2965E
+0x6427 0x297F7
+0x6428 0x299D6
+0x6429 0x299D5
+0x642A 0x29ABB
+0x642B 0x29AF0
+0x642C 0x29C01
+0x642D 0x29C6C
+0x642E 0x29D41
+0x642F 0x29D42
+0x6430 0x29F4F
+0x6431 0x29F53
+0x6432 0x29F58
+0x6433 0x2A212
+0x6434 0x2A204
+0x6435 0x2A213
+0x6436 0x2A205
+0x6437 0x2A20D
+0x6438 0x2A382
+0x6439 0x2A381
+0x643A 0x2A4B5
+0x643B 0x2A4BA
+0x643C 0x2A5BE
+0x643D 0x2A665
+0x643E 0x2A663
+0x643F 0x2A66E
+0x6440 0x2A66A
+0x6441 0x2A66C
+0x6442 0x2A6C4
+0x6443 0x2096C
+0x6444 0x27BA5
+0x6445 0x21B12
+0x6446 0x2244D
+0x6447 0x2331F
+0x6448 0x23877
+0x6449 0x23878
+0x644A 0x23C44
+0x644B 0x2417C
+0x644C 0x244EB
+0x644D 0x244EA
+0x644E 0x244EC
+0x644F 0x245A7
+0x6450 0x24719
+0x6451 0x24F23
+0x6453 0x25601
+0x6454 0x25E1C
+0x6455 0x26203
+0x6456 0x26348
+0x6457 0x268DA
+0x6458 0x27191
+0x6459 0x27192
+0x645A 0x27596
+0x645B 0x27597
+0x645C 0x27591
+0x645D 0x27593
+0x645E 0x277D8
+0x645F 0x277D5
+0x6460 0x27957
+0x6461 0x27958
+0x6462 0x27BA2
+0x6463 0x28205
+0x6464 0x283FA
+0x6465 0x2890C
+0x6466 0x2890A
+0x6467 0x28C2E
+0x6468 0x28C29
+0x6469 0x28C2F
+0x646A 0x28CC5
+0x646B 0x29072
+0x646C 0x291C8
+0x646D 0x2925A
+0x646E 0x29259
+0x646F 0x29389
+0x6470 0x29388
+0x6471 0x299DB
+0x6472 0x299D9
+0x6473 0x299DA
+0x6474 0x29ABC
+0x6476 0x29C06
+0x6477 0x29C05
+0x6478 0x29C6F
+0x6479 0x29C6D
+0x647A 0x29C70
+0x647B 0x29F60
+0x647C 0x29F5E
+0x647D 0x29F63
+0x647E 0x29F5A
+0x6521 0x29F5F
+0x6522 0x2A219
+0x6523 0x2A21D
+0x6524 0x2A21B
+0x6525 0x2A222
+0x6526 0x2A21C
+0x6527 0x2A21E
+0x6528 0x2A2F7
+0x6529 0x2A384
+0x652A 0x2A415
+0x652B 0x2A4B8
+0x652C 0x2A4C1
+0x652D 0x2A501
+0x652E 0x2A50A
+0x652F 0x2A5D2
+0x6530 0x2A675
+0x6531 0x2A674
+0x6532 0x2A672
+0x6533 0x20AD0
+0x6534 0x21B1B
+0x6535 0x22010
+0x6536 0x22379
+0x6537 0x244ED
+0x6538 0x24BB9
+0x6539 0x24F24
+0x653A 0x24FC5
+0x653B 0x25603
+0x653C 0x2634A
+0x653D 0x268F7
+0x653E 0x269C1
+0x653F 0x269C2
+0x6540 0x27194
+0x6541 0x27599
+0x6542 0x2759A
+0x6543 0x2795A
+0x6544 0x27BA8
+0x6545 0x27C25
+0x6546 0x27C9E
+0x6547 0x28441
+0x6548 0x28C32
+0x6549 0x28C33
+0x654A 0x291CB
+0x654B 0x291CA
+0x654C 0x291CC
+0x654D 0x29593
+0x654E 0x299E0
+0x654F 0x29C71
+0x6550 0x29F6B
+0x6551 0x2A22B
+0x6552 0x2A229
+0x6553 0x2A21A
+0x6554 0x2A226
+0x6555 0x2A227
+0x6556 0x2A22A
+0x6557 0x2A2F8
+0x6558 0x2503D
+0x6559 0x2A676
+0x655A 0x21518
+0x655B 0x2387A
+0x655C 0x2417F
+0x655E 0x263F0
+0x655F 0x2719A
+0x6560 0x27196
+0x6561 0x2759E
+0x6562 0x2759D
+0x6563 0x275DC
+0x6564 0x277DA
+0x6565 0x2820B
+0x6566 0x28402
+0x6567 0x28442
+0x6568 0x28667
+0x6569 0x2938B
+0x656A 0x299E2
+0x656B 0x29F71
+0x656C 0x2A22F
+0x656D 0x2A22E
+0x656E 0x2A4C6
+0x656F 0x2A58E
+0x6570 0x2A67B
+0x6571 0x2A677
+0x6572 0x2A678
+0x6573 0x2A67C
+0x6574 0x2387C
+0x6575 0x26207
+0x6576 0x27197
+0x6577 0x27BD9
+0x6578 0x2890D
+0x6579 0x2890E
+0x657A 0x299E3
+0x657B 0x299E4
+0x657C 0x29AF3
+0x657D 0x29C75
+0x657E 0x2A237
+0x6621 0x2A235
+0x6622 0x2A58F
+0x6623 0x2A680
+0x6624 0x2A67F
+0x6625 0x2A6D4
+0x6626 0x22EB4
+0x6627 0x2A3EC
+0x6628 0x28F75
+0x6629 0x24D10
+0x662A 0x26269
+0x662B 0x275A4
+0x662C 0x277DB
+0x662D 0x291D1
+0x662E 0x2938D
+0x662F 0x29F76
+0x6630 0x2A239
+0x6631 0x2A684
+0x6632 0x2A682
+0x6633 0x20AD2
+0x6634 0x244EE
+0x6635 0x24D11
+0x6636 0x25F84
+0x6637 0x28F74
+0x6638 0x2938F
+0x6639 0x2938E
+0x663A 0x2A23B
+0x663B 0x208CB
+0x663C 0x2A688
+0x663D 0x2A686
+0x663E 0x2335C
+0x663F 0x253A4
+0x6640 0x29075
+0x6641 0x2A68B
+0x6642 0x21519
+0x6643 0x27C9F
+0x6644 0x299E5
+0x6645 0x2A240
+0x6646 0x24D12
+0x6647 0x2A2FB
+0x6648 0x2A68C
+0x6649 0x253A5
+0x664A 0x29C77
+0x664B 0x29C78
+0x664C 0x2A6D6
+0x664D 0x277DF
+0x664E 0x291D2
+0x664F 0x2151A
+0x6650 0x27BA9
+0x6651 0x291D3
+0x6652 0x2A4CA
+0x6653 0x269C4
+0x6654 0x278B1
+0x6655 0x29664
diff --git a/test/sun/nio/cs/SurrogateTestHKSCS.java b/test/sun/nio/cs/SurrogateTestHKSCS.java
new file mode 100644
index 000000000..2f15355ea
--- /dev/null
+++ b/test/sun/nio/cs/SurrogateTestHKSCS.java
@@ -0,0 +1,1191 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4750497
+ @summary Check surrogate coverage of Big5-HKSCS (2001)
+ */
+
+/*
+ * Tests the HKSCS converter. Supplements the test for BMP
+ * mappings (and compatibility char->byte mappings) provided
+ * via ./test/sun/io/Converter/Big5-HKSCS.b2c and
+ * ./test/sun/io/Converter/Big5-HKSCS.c2b-irreversible
+ *
+ * Mappings available at :
+ * http://www.info.gov.hk/digital21/eng/hkscs/download.html
+ *
+ */
+
+import java.io.*;
+public class SurrogateTestHKSCS {
+
+ /**
+ * int array holding the supplementary character
+ * values (encoded as ints below) for full set of 1651
+ * supplementary chars / surrogate pairs which should
+ * be round-trip mappable within Big5-HKSCS 2001
+ *
+ */
+
+ static int[] suppValues = {
+ 0x20021, 0x2003E, 0x20046, 0x2004E, 0x20068, 0x20086,
+ 0x20087, 0x2008A, 0x20094, 0x200CA, 0x200CB, 0x200CC,
+ 0x200CD, 0x200D1, 0x200EE, 0x2010C, 0x2010E, 0x20118,
+ 0x201A9, 0x201AB, 0x201C1, 0x201D4, 0x201F2, 0x20204,
+ 0x2020C, 0x20214, 0x2025B, 0x20274, 0x20275, 0x20299,
+ 0x2029E, 0x202A0, 0x202B7, 0x202BF, 0x202C0, 0x202E5,
+ 0x2030A, 0x20325, 0x20341, 0x20345, 0x20346, 0x20347,
+ 0x2037E, 0x2037F, 0x20380, 0x203A0, 0x203A7, 0x203B5,
+ 0x203C9, 0x203CB, 0x203F5, 0x203FC, 0x20413, 0x20414,
+ 0x2041F, 0x20465, 0x20487, 0x2048E, 0x20491, 0x20492,
+ 0x204A3, 0x204D7, 0x204FC, 0x204FE, 0x20547, 0x2058E,
+ 0x205A5, 0x205B3, 0x205C3, 0x205CA, 0x205D0, 0x205D5,
+ 0x205DF, 0x205E0, 0x205EB, 0x20611, 0x20615, 0x20619,
+ 0x2061A, 0x20630, 0x20656, 0x20676, 0x2070E, 0x20731,
+ 0x20779, 0x2082C, 0x20873, 0x208D5, 0x20916, 0x20923,
+ 0x20954, 0x20979, 0x209E7, 0x20A11, 0x20A50, 0x20AB4,
+ 0x20AC2, 0x20ACD, 0x20B0D, 0x20B8F, 0x20BA8, 0x20BA9,
+ 0x20BBF, 0x20BC6, 0x20BCB, 0x20BE2, 0x20BEB, 0x20BFB,
+ 0x20BFF, 0x20C0B, 0x20C0D, 0x20C20, 0x20C34, 0x20C3A,
+ 0x20C3B, 0x20C41, 0x20C42, 0x20C43, 0x20C53, 0x20C65,
+ 0x20C77, 0x20C78, 0x20C7C, 0x20C8D, 0x20C96, 0x20C9C,
+ 0x20CB5, 0x20CB8, 0x20CCF, 0x20CD3, 0x20CD4, 0x20CD5,
+ 0x20CD6, 0x20CDD, 0x20CED, 0x20CFF, 0x20D15, 0x20D28,
+ 0x20D31, 0x20D32, 0x20D46, 0x20D47, 0x20D48, 0x20D49,
+ 0x20D4C, 0x20D4D, 0x20D4E, 0x20D6F, 0x20D71, 0x20D74,
+ 0x20D7C, 0x20D7E, 0x20D7F, 0x20D96, 0x20D9C, 0x20DA7,
+ 0x20DB2, 0x20DC8, 0x20E04, 0x20E09, 0x20E0A, 0x20E0D,
+ 0x20E0E, 0x20E0F, 0x20E10, 0x20E11, 0x20E16, 0x20E1D,
+ 0x20E4C, 0x20E6D, 0x20E73, 0x20E75, 0x20E76, 0x20E77,
+ 0x20E78, 0x20E79, 0x20E7A, 0x20E7B, 0x20E8C, 0x20E96,
+ 0x20E98, 0x20E9D, 0x20EA2, 0x20EAA, 0x20EAB, 0x20EAC,
+ 0x20EB6, 0x20ED7, 0x20ED8, 0x20EDD, 0x20EF8, 0x20EF9,
+ 0x20EFA, 0x20EFB, 0x20F1D, 0x20F26, 0x20F2D, 0x20F2E,
+ 0x20F30, 0x20F31, 0x20F3B, 0x20F4C, 0x20F64, 0x20F8D,
+ 0x20F90, 0x20FAD, 0x20FB4, 0x20FB5, 0x20FB6, 0x20FBC,
+ 0x20FDF, 0x20FEA, 0x20FEB, 0x20FEC, 0x20FED, 0x21014,
+ 0x2101D, 0x2101E, 0x2104F, 0x2105C, 0x2106F, 0x21075,
+ 0x21076, 0x21077, 0x21078, 0x2107B, 0x21088, 0x21096,
+ 0x2109D, 0x210B4, 0x210BF, 0x210C0, 0x210C1, 0x210C7,
+ 0x210C8, 0x210C9, 0x210CF, 0x210D3, 0x210E4, 0x210F4,
+ 0x210F5, 0x210F6, 0x2112F, 0x2113B, 0x2113D, 0x21145,
+ 0x21148, 0x2114F, 0x21180, 0x21187, 0x211D9, 0x2123C,
+ 0x2124F, 0x2127C, 0x212A8, 0x212A9, 0x212B0, 0x212E3,
+ 0x212FE, 0x21302, 0x21303, 0x21304, 0x21305, 0x21336,
+ 0x2133A, 0x21375, 0x21376, 0x2138E, 0x21398, 0x2139C,
+ 0x213C5, 0x213C6, 0x213ED, 0x213FE, 0x21413, 0x21416,
+ 0x21424, 0x2143F, 0x21452, 0x21454, 0x21455, 0x2148A,
+ 0x21497, 0x214B6, 0x214E8, 0x214FD, 0x21577, 0x21582,
+ 0x21596, 0x2160A, 0x21613, 0x21619, 0x2163E, 0x21661,
+ 0x21692, 0x216B8, 0x216BA, 0x216C0, 0x216C1, 0x216C2,
+ 0x216D3, 0x216D5, 0x216DF, 0x216E6, 0x216E7, 0x216E8,
+ 0x216FA, 0x216FB, 0x216FC, 0x216FE, 0x2170D, 0x21710,
+ 0x21726, 0x2173A, 0x2173B, 0x2173C, 0x21757, 0x2176C,
+ 0x2176D, 0x2176E, 0x2176F, 0x21770, 0x21771, 0x21773,
+ 0x21774, 0x217AB, 0x217B0, 0x217B1, 0x217B2, 0x217B3,
+ 0x217B4, 0x217B5, 0x217C3, 0x217C7, 0x217D9, 0x217DA,
+ 0x217DB, 0x217DC, 0x217DF, 0x217EF, 0x217F5, 0x217F6,
+ 0x217F8, 0x217F9, 0x217FA, 0x217FB, 0x217FC, 0x21820,
+ 0x21828, 0x21829, 0x2182A, 0x2182D, 0x21839, 0x2183A,
+ 0x2183B, 0x21840, 0x21845, 0x21852, 0x2185E, 0x21861,
+ 0x21862, 0x21863, 0x21864, 0x21877, 0x2187B, 0x21883,
+ 0x21884, 0x21885, 0x2189E, 0x2189F, 0x218A0, 0x218A1,
+ 0x218A2, 0x218BE, 0x218BF, 0x218D1, 0x218D6, 0x218D7,
+ 0x218D8, 0x218D9, 0x218FA, 0x21903, 0x21904, 0x21905,
+ 0x21910, 0x21911, 0x21912, 0x21915, 0x2191C, 0x21922,
+ 0x21927, 0x2193B, 0x21944, 0x21958, 0x2196A, 0x2197C,
+ 0x21980, 0x21983, 0x21988, 0x21996, 0x219DB, 0x219F3,
+ 0x21A2D, 0x21A34, 0x21A45, 0x21A4B, 0x21B44, 0x21BC1,
+ 0x21BC2, 0x21C2A, 0x21C70, 0x21CA2, 0x21CA5, 0x21CAC,
+ 0x21D46, 0x21D90, 0x21DB6, 0x21DBA, 0x21DCA, 0x21DD1,
+ 0x21DEB, 0x21DF9, 0x21E1C, 0x21E37, 0x21E3D, 0x21E89,
+ 0x21EA4, 0x21EA8, 0x21EC8, 0x21ED5, 0x21F0F, 0x21F15,
+ 0x21F6A, 0x21F9E, 0x21FA1, 0x21FE8, 0x22045, 0x22049,
+ 0x2207E, 0x2209A, 0x220C7, 0x220FC, 0x2212A, 0x2215B,
+ 0x22173, 0x2217A, 0x221A1, 0x221C3, 0x22208, 0x2227C,
+ 0x22321, 0x22325, 0x223BD, 0x223D0, 0x223D7, 0x223FA,
+ 0x22465, 0x22471, 0x2248B, 0x22491, 0x224B0, 0x224ED,
+ 0x22513, 0x2251B, 0x22530, 0x22554, 0x2258D, 0x225AF,
+ 0x225BE, 0x2261B, 0x2261C, 0x2262B, 0x22668, 0x2267A,
+ 0x22696, 0x22698, 0x226F4, 0x226F5, 0x226F6, 0x22712,
+ 0x22714, 0x2271B, 0x2271F, 0x2272A, 0x22775, 0x22781,
+ 0x227B4, 0x227B5, 0x227CD, 0x22803, 0x2285F, 0x22860,
+ 0x22871, 0x228AD, 0x228C1, 0x228F7, 0x22926, 0x22939,
+ 0x2294F, 0x22967, 0x2296B, 0x22980, 0x22993, 0x22A66,
+ 0x22ACF, 0x22AD5, 0x22AE6, 0x22AE8, 0x22B0E, 0x22B22,
+ 0x22B3F, 0x22B43, 0x22B6A, 0x22BCA, 0x22BCE, 0x22C26,
+ 0x22C27, 0x22C38, 0x22C4C, 0x22C51, 0x22C55, 0x22C62,
+ 0x22C88, 0x22C9B, 0x22CA1, 0x22CA9, 0x22CB2, 0x22CB7,
+ 0x22CC2, 0x22CC6, 0x22CC9, 0x22D07, 0x22D08, 0x22D12,
+ 0x22D44, 0x22D4C, 0x22D67, 0x22D8D, 0x22D95, 0x22DA0,
+ 0x22DA3, 0x22DA4, 0x22DB7, 0x22DEE, 0x22E0D, 0x22E36,
+ 0x22E42, 0x22E78, 0x22E8B, 0x22EB3, 0x22EEF, 0x22F74,
+ 0x22FCC, 0x22FE3, 0x23033, 0x23044, 0x2304B, 0x23066,
+ 0x2307D, 0x2307E, 0x2308E, 0x230B7, 0x230BC, 0x230DA,
+ 0x23103, 0x2313D, 0x2317D, 0x23182, 0x231A4, 0x231A5,
+ 0x231B3, 0x231C8, 0x231C9, 0x231F7, 0x231F8, 0x231F9,
+ 0x2320F, 0x23225, 0x2322F, 0x23231, 0x23232, 0x23233,
+ 0x23234, 0x23262, 0x23281, 0x23289, 0x2328A, 0x232AB,
+ 0x232AC, 0x232AD, 0x232D2, 0x232E0, 0x232E1, 0x23300,
+ 0x2330A, 0x2331F, 0x233B4, 0x233CC, 0x233DE, 0x233E6,
+ 0x233F4, 0x233F5, 0x233F9, 0x233FA, 0x233FE, 0x23400,
+ 0x2343F, 0x23450, 0x2346F, 0x23472, 0x234E5, 0x23519,
+ 0x23530, 0x2355A, 0x23567, 0x23595, 0x23599, 0x2359C,
+ 0x235CD, 0x235CE, 0x235CF, 0x235F3, 0x23600, 0x2361A,
+ 0x2363C, 0x23640, 0x23659, 0x2365F, 0x23677, 0x236A6,
+ 0x236AD, 0x236BA, 0x236DF, 0x236EE, 0x23703, 0x23716,
+ 0x23720, 0x2372D, 0x2372F, 0x2373F, 0x23766, 0x23781,
+ 0x237A2, 0x237BC, 0x237C2, 0x237D5, 0x237D6, 0x237D7,
+ 0x2383A, 0x239C2, 0x23AA7, 0x23ADB, 0x23AEE, 0x23AFA,
+ 0x23B5A, 0x23C63, 0x23C99, 0x23C9A, 0x23C9B, 0x23CB5,
+ 0x23CB7, 0x23CC7, 0x23CC8, 0x23CC9, 0x23CFC, 0x23CFD,
+ 0x23CFE, 0x23CFF, 0x23D40, 0x23D5B, 0x23D7E, 0x23D8F,
+ 0x23DB6, 0x23DB7, 0x23DB8, 0x23DB9, 0x23DBA, 0x23DBB,
+ 0x23DBC, 0x23DBD, 0x23DE3, 0x23DF8, 0x23E11, 0x23E2C,
+ 0x23E2D, 0x23E2E, 0x23E2F, 0x23E30, 0x23E31, 0x23E39,
+ 0x23E88, 0x23E89, 0x23E8A, 0x23E8B, 0x23EB9, 0x23EBF,
+ 0x23ED7, 0x23EF7, 0x23EF8, 0x23EF9, 0x23EFA, 0x23EFB,
+ 0x23EFC, 0x23F35, 0x23F41, 0x23F4A, 0x23F7F, 0x23F80,
+ 0x23F81, 0x23F82, 0x23F8F, 0x23FB4, 0x23FB7, 0x23FC0,
+ 0x23FC5, 0x23FEB, 0x23FEC, 0x23FED, 0x23FEE, 0x23FEF,
+ 0x23FF0, 0x24011, 0x24039, 0x2403A, 0x2403B, 0x2403C,
+ 0x2403D, 0x24057, 0x24085, 0x2408B, 0x2408C, 0x2408D,
+ 0x24091, 0x240C9, 0x240E1, 0x24104, 0x2410F, 0x24119,
+ 0x2413F, 0x24140, 0x24144, 0x2414E, 0x24155, 0x24156,
+ 0x24157, 0x2415C, 0x2415F, 0x24177, 0x2417A, 0x241A3,
+ 0x241A4, 0x241A5, 0x241AC, 0x241B5, 0x241CD, 0x241E2,
+ 0x241FC, 0x2421B, 0x2424B, 0x24256, 0x24259, 0x24276,
+ 0x24277, 0x24278, 0x24284, 0x24293, 0x24295, 0x242A5,
+ 0x242C1, 0x242C9, 0x242CA, 0x242EE, 0x242FA, 0x2430D,
+ 0x2431A, 0x24334, 0x24348, 0x24362, 0x24363, 0x24364,
+ 0x24365, 0x2438C, 0x24396, 0x2439C, 0x243BD, 0x243C1,
+ 0x243E9, 0x243EA, 0x243F2, 0x243F8, 0x24404, 0x24435,
+ 0x24436, 0x2445A, 0x2445B, 0x24473, 0x24487, 0x24488,
+ 0x244B9, 0x244BC, 0x244CE, 0x244D3, 0x244D6, 0x24505,
+ 0x24521, 0x24578, 0x245C8, 0x24618, 0x2462A, 0x24665,
+ 0x24674, 0x24697, 0x246D4, 0x24706, 0x24725, 0x2472F,
+ 0x2478F, 0x247E0, 0x24812, 0x24823, 0x24882, 0x248E9,
+ 0x248F0, 0x248F1, 0x248F2, 0x248F3, 0x248FB, 0x248FF,
+ 0x24900, 0x24901, 0x2490C, 0x24916, 0x24917, 0x24919,
+ 0x2492F, 0x24933, 0x24934, 0x2493E, 0x2493F, 0x24940,
+ 0x24941, 0x24942, 0x24943, 0x24962, 0x24963, 0x24974,
+ 0x24975, 0x24976, 0x2497B, 0x2497F, 0x24982, 0x24988,
+ 0x24989, 0x2498A, 0x2498B, 0x2498C, 0x2498D, 0x2498E,
+ 0x2498F, 0x24994, 0x249A4, 0x249A7, 0x249A9, 0x249AB,
+ 0x249AC, 0x249AD, 0x249B7, 0x249B8, 0x249B9, 0x249BA,
+ 0x249BB, 0x249C5, 0x249D0, 0x249DA, 0x249DE, 0x249DF,
+ 0x249E3, 0x249E5, 0x249EC, 0x249ED, 0x249F6, 0x249F7,
+ 0x249F8, 0x249F9, 0x249FB, 0x24A0E, 0x24A12, 0x24A13,
+ 0x24A15, 0x24A21, 0x24A22, 0x24A23, 0x24A24, 0x24A25,
+ 0x24A26, 0x24A27, 0x24A28, 0x24A29, 0x24A2A, 0x24A3E,
+ 0x24A42, 0x24A45, 0x24A4A, 0x24A4E, 0x24A4F, 0x24A50,
+ 0x24A51, 0x24A5D, 0x24A65, 0x24A66, 0x24A67, 0x24A71,
+ 0x24A77, 0x24A78, 0x24A79, 0x24A7A, 0x24A8C, 0x24A93,
+ 0x24A94, 0x24A95, 0x24A96, 0x24AA4, 0x24AA5, 0x24AA6,
+ 0x24AA7, 0x24AB1, 0x24AB2, 0x24AB3, 0x24ABA, 0x24ABB,
+ 0x24ABC, 0x24AC0, 0x24AC7, 0x24ACA, 0x24AD1, 0x24ADF,
+ 0x24AE2, 0x24AE9, 0x24B6E, 0x24BF5, 0x24C09, 0x24C9E,
+ 0x24C9F, 0x24CC9, 0x24CD9, 0x24D06, 0x24D13, 0x24DB8,
+ 0x24DEA, 0x24DEB, 0x24E3B, 0x24E50, 0x24EA5, 0x24EA7,
+ 0x24F0E, 0x24F5C, 0x24F82, 0x24F86, 0x24F97, 0x24F9A,
+ 0x24FA9, 0x24FB8, 0x24FC2, 0x2502C, 0x25052, 0x2509D,
+ 0x2512B, 0x25148, 0x2517D, 0x2517E, 0x251CD, 0x251E3,
+ 0x251E6, 0x251E7, 0x25220, 0x25221, 0x25250, 0x25299,
+ 0x252C7, 0x252D8, 0x2530E, 0x25311, 0x25313, 0x25419,
+ 0x25425, 0x2542F, 0x25430, 0x25446, 0x2546C, 0x2546E,
+ 0x25531, 0x25535, 0x2553F, 0x2555B, 0x2555C, 0x2555D,
+ 0x2555E, 0x25562, 0x25565, 0x25566, 0x25581, 0x25584,
+ 0x2558F, 0x255B9, 0x255D5, 0x255DB, 0x255E0, 0x25605,
+ 0x25635, 0x25651, 0x25683, 0x25695, 0x256E3, 0x256F6,
+ 0x25706, 0x2571D, 0x25725, 0x2573D, 0x25772, 0x257C7,
+ 0x257DF, 0x257E0, 0x257E1, 0x25857, 0x2585D, 0x25872,
+ 0x258C8, 0x258E1, 0x25903, 0x25946, 0x25956, 0x259AC,
+ 0x259CC, 0x25A95, 0x25A9C, 0x25AAE, 0x25AAF, 0x25AE9,
+ 0x25B74, 0x25B89, 0x25BB3, 0x25BB4, 0x25BC6, 0x25BE4,
+ 0x25BE8, 0x25C01, 0x25C06, 0x25C21, 0x25C4A, 0x25C65,
+ 0x25C91, 0x25CA4, 0x25CC0, 0x25CC1, 0x25CFE, 0x25D20,
+ 0x25D30, 0x25D43, 0x25E0E, 0x25E49, 0x25E81, 0x25E82,
+ 0x25E83, 0x25EA6, 0x25EBC, 0x25ED7, 0x25ED8, 0x25F1A,
+ 0x25F4B, 0x25FE1, 0x25FE2, 0x26029, 0x26048, 0x26064,
+ 0x26083, 0x26097, 0x260A4, 0x260A5, 0x26102, 0x26121,
+ 0x26159, 0x2615A, 0x2615B, 0x2615C, 0x261AD, 0x261AE,
+ 0x261B2, 0x261DD, 0x26258, 0x26261, 0x2626A, 0x2626B,
+ 0x262D0, 0x26335, 0x2634B, 0x2634C, 0x26351, 0x263BE,
+ 0x263F5, 0x263F8, 0x26402, 0x26410, 0x26411, 0x26412,
+ 0x2644A, 0x26469, 0x26484, 0x26488, 0x26489, 0x2648D,
+ 0x26498, 0x26512, 0x26572, 0x265A0, 0x265AD, 0x265BF,
+ 0x26612, 0x26626, 0x266AF, 0x266B1, 0x266B5, 0x266DA,
+ 0x266E8, 0x266FC, 0x26716, 0x26741, 0x26799, 0x267B3,
+ 0x267B4, 0x267CC, 0x2681C, 0x26846, 0x2685E, 0x2686E,
+ 0x26888, 0x2688A, 0x26893, 0x268C7, 0x2690E, 0x26911,
+ 0x26926, 0x26939, 0x26951, 0x269A8, 0x269B5, 0x269F2,
+ 0x269FA, 0x26A2D, 0x26A2E, 0x26A34, 0x26A42, 0x26A51,
+ 0x26A52, 0x26B05, 0x26B0A, 0x26B13, 0x26B15, 0x26B28,
+ 0x26B50, 0x26B51, 0x26B52, 0x26B53, 0x26B5B, 0x26B75,
+ 0x26B82, 0x26B96, 0x26B97, 0x26B9D, 0x26BB3, 0x26BC0,
+ 0x26BF7, 0x26C21, 0x26C40, 0x26C7E, 0x26C7F, 0x26C80,
+ 0x26C81, 0x26C82, 0x26CA4, 0x26CB7, 0x26CB8, 0x26CBD,
+ 0x26CC0, 0x26CC3, 0x26CD1, 0x26D22, 0x26D23, 0x26D24,
+ 0x26D25, 0x26D26, 0x26D27, 0x26D28, 0x26D29, 0x26D2A,
+ 0x26D51, 0x26D74, 0x26DA0, 0x26DA1, 0x26DA2, 0x26DA3,
+ 0x26DA4, 0x26DA5, 0x26DA6, 0x26DA7, 0x26DAE, 0x26DDC,
+ 0x26DEA, 0x26DEB, 0x26DF0, 0x26E00, 0x26E05, 0x26E07,
+ 0x26E12, 0x26E42, 0x26E43, 0x26E44, 0x26E45, 0x26E6E,
+ 0x26E72, 0x26E77, 0x26E84, 0x26E99, 0x26ED0, 0x26ED1,
+ 0x26ED2, 0x26ED3, 0x26ED4, 0x26ED5, 0x26ED6, 0x26ED7,
+ 0x26F26, 0x26F73, 0x26F74, 0x26F9F, 0x26FA1, 0x26FBE,
+ 0x26FDE, 0x26FDF, 0x2700E, 0x2704B, 0x27052, 0x27053,
+ 0x27088, 0x270AD, 0x270AE, 0x270AF, 0x270CD, 0x270F8,
+ 0x27109, 0x2710C, 0x2710D, 0x27126, 0x27127, 0x27164,
+ 0x27165, 0x27175, 0x271CD, 0x2721B, 0x27280, 0x27285,
+ 0x2728B, 0x272B2, 0x272B6, 0x272E6, 0x2739A, 0x27422,
+ 0x27450, 0x27484, 0x27486, 0x27574, 0x275A3, 0x275E0,
+ 0x275E4, 0x275FD, 0x275FE, 0x27607, 0x2760C, 0x27632,
+ 0x27639, 0x27655, 0x27656, 0x27657, 0x27694, 0x2770F,
+ 0x27735, 0x27736, 0x27741, 0x2775E, 0x27784, 0x27785,
+ 0x277CC, 0x27858, 0x27870, 0x2789D, 0x278B2, 0x278C8,
+ 0x27924, 0x27967, 0x2797A, 0x279A0, 0x279DD, 0x279FD,
+ 0x27A0A, 0x27A0E, 0x27A3E, 0x27A53, 0x27A59, 0x27A79,
+ 0x27A84, 0x27ABD, 0x27ABE, 0x27AF4, 0x27B06, 0x27B0B,
+ 0x27B18, 0x27B38, 0x27B39, 0x27B3A, 0x27B48, 0x27BF4,
+ 0x27C12, 0x27D2F, 0x27D53, 0x27D54, 0x27D66, 0x27D73,
+ 0x27D84, 0x27D8F, 0x27D98, 0x27DBD, 0x27DDC, 0x27E4D,
+ 0x27E4F, 0x27FF9, 0x28002, 0x28009, 0x2801E, 0x28023,
+ 0x28024, 0x28048, 0x28083, 0x28090, 0x280BD, 0x280BE,
+ 0x280E8, 0x280E9, 0x280F4, 0x2812E, 0x2814F, 0x2815D,
+ 0x2816F, 0x28189, 0x281AF, 0x281BC, 0x28207, 0x28218,
+ 0x2821A, 0x28256, 0x2827C, 0x2829B, 0x282CD, 0x282E2,
+ 0x28306, 0x28318, 0x2832F, 0x2833A, 0x28365, 0x2836D,
+ 0x2837D, 0x2838A, 0x28412, 0x28468, 0x2846C, 0x28473,
+ 0x28482, 0x28501, 0x2853C, 0x2853D, 0x2856C, 0x285E8,
+ 0x285F4, 0x28600, 0x2860B, 0x28625, 0x2863B, 0x286AA,
+ 0x286AB, 0x286BC, 0x286D8, 0x286E6, 0x2870F, 0x28713,
+ 0x28804, 0x2882B, 0x28933, 0x28948, 0x28949, 0x28956,
+ 0x28964, 0x28968, 0x2896C, 0x2897E, 0x28989, 0x289A8,
+ 0x289AA, 0x289AB, 0x289B8, 0x289BC, 0x289C0, 0x289DC,
+ 0x289DE, 0x289E1, 0x289E3, 0x289E4, 0x289E7, 0x289E8,
+ 0x289F9, 0x289FA, 0x289FB, 0x289FC, 0x28A0F, 0x28A16,
+ 0x28A25, 0x28A29, 0x28A32, 0x28A36, 0x28A44, 0x28A45,
+ 0x28A46, 0x28A47, 0x28A48, 0x28A49, 0x28A4A, 0x28A4B,
+ 0x28A59, 0x28A5A, 0x28A81, 0x28A82, 0x28A83, 0x28A9A,
+ 0x28A9B, 0x28A9C, 0x28AC0, 0x28AC6, 0x28ACB, 0x28ACC,
+ 0x28ACE, 0x28ADE, 0x28ADF, 0x28AE0, 0x28AE1, 0x28AE2,
+ 0x28AE3, 0x28AE5, 0x28AEA, 0x28AFC, 0x28B0C, 0x28B13,
+ 0x28B21, 0x28B22, 0x28B2B, 0x28B2C, 0x28B2D, 0x28B2F,
+ 0x28B46, 0x28B4C, 0x28B4E, 0x28B50, 0x28B63, 0x28B64,
+ 0x28B65, 0x28B66, 0x28B6C, 0x28B8F, 0x28B99, 0x28B9C,
+ 0x28B9D, 0x28BC2, 0x28BC5, 0x28BD4, 0x28BD7, 0x28BD9,
+ 0x28BDA, 0x28BE7, 0x28BE8, 0x28BE9, 0x28BEA, 0x28BEB,
+ 0x28BEC, 0x28BF5, 0x28BFF, 0x28C03, 0x28C09, 0x28C1C,
+ 0x28C1D, 0x28C23, 0x28C26, 0x28C2B, 0x28C30, 0x28C39,
+ 0x28C3B, 0x28CCA, 0x28CCD, 0x28CD2, 0x28D34, 0x28D99,
+ 0x28DB9, 0x28E0F, 0x28E36, 0x28E39, 0x28E65, 0x28E66,
+ 0x28E97, 0x28EAC, 0x28EB2, 0x28EB3, 0x28ED9, 0x28EE7,
+ 0x28FC5, 0x29088, 0x2908B, 0x29093, 0x290AF, 0x290B0,
+ 0x290B1, 0x290C0, 0x290E4, 0x290E5, 0x290EC, 0x290ED,
+ 0x2910D, 0x29110, 0x2913C, 0x2914D, 0x2915B, 0x2915E,
+ 0x29170, 0x2919C, 0x291A8, 0x291D5, 0x291EB, 0x2941D,
+ 0x29420, 0x29433, 0x2943F, 0x29448, 0x294D0, 0x294D9,
+ 0x294DA, 0x294E5, 0x294E7, 0x2959E, 0x295B0, 0x295B8,
+ 0x295D7, 0x295E9, 0x295F4, 0x29720, 0x29732, 0x297D4,
+ 0x29810, 0x29857, 0x298A4, 0x298D1, 0x298EA, 0x298F1,
+ 0x29903, 0x29905, 0x2992F, 0x29947, 0x29948, 0x29949,
+ 0x2995D, 0x2996A, 0x2999D, 0x299C3, 0x299C9, 0x29A28,
+ 0x29A4D, 0x29B05, 0x29B0E, 0x29BD5, 0x29C73, 0x29CAD,
+ 0x29D3E, 0x29D5A, 0x29D7C, 0x29D98, 0x29D9B, 0x29DF6,
+ 0x29E06, 0x29E2D, 0x29E68, 0x29EAC, 0x29EC3, 0x29EF8,
+ 0x29F23, 0x29F30, 0x29FB7, 0x29FDE, 0x2A014, 0x2A087,
+ 0x2A0B9, 0x2A0E1, 0x2A0ED, 0x2A0F3, 0x2A0F8, 0x2A0FE,
+ 0x2A107, 0x2A123, 0x2A133, 0x2A134, 0x2A150, 0x2A192,
+ 0x2A193, 0x2A1AB, 0x2A1B4, 0x2A1DF, 0x2A1F5, 0x2A220,
+ 0x2A233, 0x2A293, 0x2A29F, 0x2A2B2, 0x2A2B4, 0x2A2B6,
+ 0x2A2BA, 0x2A2BD, 0x2A2DF, 0x2A2FF, 0x2A3A9, 0x2A434,
+ 0x2A45B, 0x2A5C6, 0x2A5CB, 0x2A601, 0x2A632, 0x2A64A,
+ 0x2A65B, 0x2A6A9, 0x2F825, 0x2F83B, 0x2F840, 0x2F878,
+ 0x2F894, 0x2F8A6, 0x2F8CD, 0x2F994, 0x2F9B2, 0x2F9BC,
+ 0x2F9D4 };
+
+ /**
+ * Big5-HKSCS native encoded equivalent for the
+ * surrogate pair input provided above within the
+ * String constant "surrogates"
+ */
+
+ final static byte[] expectBytes = {
+ (byte)0x9C, (byte)0x71, (byte)0x93, (byte)0x75,
+ (byte)0x93, (byte)0x76, (byte)0x95, (byte)0x48,
+ (byte)0x8E, (byte)0xC6, (byte)0x8B, (byte)0xC5,
+ (byte)0x8B, (byte)0xFA, (byte)0xC8, (byte)0x7C,
+ (byte)0x9A, (byte)0xB4, (byte)0x88, (byte)0x4E,
+ (byte)0x88, (byte)0x4B, (byte)0xC8, (byte)0x7A,
+ (byte)0x88, (byte)0x48, (byte)0x88, (byte)0x47,
+ (byte)0xA0, (byte)0xF6, (byte)0x88, (byte)0x45,
+ (byte)0x88, (byte)0x53, (byte)0xFC, (byte)0xAD,
+ (byte)0x8A, (byte)0xAD, (byte)0x92, (byte)0x72,
+ (byte)0xFC, (byte)0x47, (byte)0x94, (byte)0xDF,
+ (byte)0x9F, (byte)0xD1, (byte)0xFB, (byte)0xCB,
+ (byte)0x92, (byte)0x7D, (byte)0x98, (byte)0xA4,
+ (byte)0x94, (byte)0xE7, (byte)0x90, (byte)0xCB,
+ (byte)0x92, (byte)0x7B, (byte)0x94, (byte)0xD8,
+ (byte)0xFC, (byte)0x5F, (byte)0xFA, (byte)0x54,
+ (byte)0x9A, (byte)0xB5, (byte)0x96, (byte)0xDA,
+ (byte)0x92, (byte)0x79, (byte)0xFA, (byte)0x74,
+ (byte)0x92, (byte)0x75, (byte)0x8D, (byte)0xFB,
+ (byte)0x8A, (byte)0x49, (byte)0x92, (byte)0xDF,
+ (byte)0x9B, (byte)0x7C, (byte)0xFA, (byte)0x63,
+ (byte)0xFA, (byte)0x60, (byte)0x92, (byte)0x6D,
+ (byte)0xFA, (byte)0x62, (byte)0x9A, (byte)0xB6,
+ (byte)0x97, (byte)0x6B, (byte)0xFD, (byte)0x6A,
+ (byte)0xFD, (byte)0x54, (byte)0x92, (byte)0x73,
+ (byte)0x97, (byte)0xD8, (byte)0x9F, (byte)0xBB,
+ (byte)0x93, (byte)0x42, (byte)0x92, (byte)0x76,
+ (byte)0xFA, (byte)0x65, (byte)0x92, (byte)0x6C,
+ (byte)0xFA, (byte)0x6E, (byte)0x9E, (byte)0xE0,
+ (byte)0x92, (byte)0xC0, (byte)0x92, (byte)0xBF,
+ (byte)0x92, (byte)0xBE, (byte)0x9A, (byte)0xBA,
+ (byte)0x8A, (byte)0xB3, (byte)0x97, (byte)0x75,
+ (byte)0xFA, (byte)0x40, (byte)0xFA, (byte)0x76,
+ (byte)0xFB, (byte)0xD0, (byte)0xFA, (byte)0x7B,
+ (byte)0xFE, (byte)0x6D, (byte)0x9B, (byte)0xB3,
+ (byte)0x89, (byte)0xCC, (byte)0x9A, (byte)0xBE,
+ (byte)0xFA, (byte)0x42, (byte)0x92, (byte)0xBC,
+ (byte)0x94, (byte)0x5C, (byte)0x9B, (byte)0xB5,
+ (byte)0x9A, (byte)0xBF, (byte)0x98, (byte)0xA7,
+ (byte)0x97, (byte)0xA4, (byte)0x90, (byte)0xFD,
+ (byte)0xFC, (byte)0x7B, (byte)0x9A, (byte)0xC0,
+ (byte)0x92, (byte)0xC3, (byte)0x8A, (byte)0xAA,
+ (byte)0x9B, (byte)0xD0, (byte)0x95, (byte)0x50,
+ (byte)0x92, (byte)0xC6, (byte)0x98, (byte)0xA6,
+ (byte)0x95, (byte)0x46, (byte)0xFD, (byte)0x63,
+ (byte)0xFA, (byte)0xC2, (byte)0x9E, (byte)0xC3,
+ (byte)0x89, (byte)0xB2, (byte)0x9C, (byte)0x66,
+ (byte)0x90, (byte)0x53, (byte)0x97, (byte)0xC1,
+ (byte)0x9A, (byte)0xC4, (byte)0x9A, (byte)0xC5,
+ (byte)0x8E, (byte)0xEF, (byte)0xFA, (byte)0xE9,
+ (byte)0x92, (byte)0x62, (byte)0x8A, (byte)0xF7,
+ (byte)0x9A, (byte)0xC6, (byte)0x92, (byte)0xE1,
+ (byte)0x9A, (byte)0xC9, (byte)0xFA, (byte)0xC6,
+ (byte)0x97, (byte)0xA5, (byte)0x9A, (byte)0xCB,
+ (byte)0xFA, (byte)0x72, (byte)0x8A, (byte)0x5E,
+ (byte)0x94, (byte)0xE0, (byte)0x92, (byte)0xCC,
+ (byte)0x8A, (byte)0xE5, (byte)0xFE, (byte)0x5C,
+ (byte)0x9A, (byte)0xCC, (byte)0x9D, (byte)0xF9,
+ (byte)0x8A, (byte)0x43, (byte)0x8A, (byte)0xA6,
+ (byte)0x9A, (byte)0xCD, (byte)0x9A, (byte)0xCE,
+ (byte)0xFA, (byte)0xEE, (byte)0x9B, (byte)0xCC,
+ (byte)0x9A, (byte)0xCF, (byte)0x9A, (byte)0xD1,
+ (byte)0x9D, (byte)0xFA, (byte)0x9D, (byte)0x7C,
+ (byte)0x9A, (byte)0xD3, (byte)0x97, (byte)0xA6,
+ (byte)0x99, (byte)0x5F, (byte)0xFB, (byte)0xF6,
+ (byte)0x9F, (byte)0xC5, (byte)0x8A, (byte)0x59,
+ (byte)0x8B, (byte)0x6B, (byte)0x9A, (byte)0xD4,
+ (byte)0x9A, (byte)0xD5, (byte)0x97, (byte)0xA2,
+ (byte)0x8A, (byte)0x44, (byte)0x9F, (byte)0x4A,
+ (byte)0x90, (byte)0xA1, (byte)0xFD, (byte)0xA4,
+ (byte)0x8A, (byte)0x64, (byte)0x8A, (byte)0xF2,
+ (byte)0x8A, (byte)0xF8, (byte)0x9D, (byte)0xD8,
+ (byte)0x94, (byte)0xD6, (byte)0xFA, (byte)0xFE,
+ (byte)0xFB, (byte)0xA7, (byte)0x9A, (byte)0xD6,
+ (byte)0x9F, (byte)0x4D, (byte)0xFA, (byte)0xF6,
+ (byte)0x8A, (byte)0x57, (byte)0x8B, (byte)0x43,
+ (byte)0x8B, (byte)0x44, (byte)0x8A, (byte)0xB6,
+ (byte)0x8A, (byte)0xC0, (byte)0x9E, (byte)0x54,
+ (byte)0x9A, (byte)0xD7, (byte)0x9A, (byte)0xD8,
+ (byte)0x9A, (byte)0xDC, (byte)0x8A, (byte)0xCA,
+ (byte)0x9E, (byte)0xA8, (byte)0x92, (byte)0x63,
+ (byte)0x9A, (byte)0xDD, (byte)0x8B, (byte)0x65,
+ (byte)0x8B, (byte)0x6F, (byte)0x8B, (byte)0x7E,
+ (byte)0x8F, (byte)0x43, (byte)0x92, (byte)0xD0,
+ (byte)0x8A, (byte)0xF4, (byte)0x9D, (byte)0xBE,
+ (byte)0x9A, (byte)0xE1, (byte)0xFC, (byte)0xDE,
+ (byte)0x9D, (byte)0xFD, (byte)0x8B, (byte)0x66,
+ (byte)0x8B, (byte)0x70, (byte)0x8B, (byte)0x75,
+ (byte)0x8A, (byte)0xE4, (byte)0x8B, (byte)0xA4,
+ (byte)0x8A, (byte)0xED, (byte)0x8A, (byte)0x5D,
+ (byte)0x8B, (byte)0x48, (byte)0x9D, (byte)0xED,
+ (byte)0x9E, (byte)0x40, (byte)0x8A, (byte)0xEF,
+ (byte)0x8A, (byte)0xF6, (byte)0x9E, (byte)0x76,
+ (byte)0x9E, (byte)0xE3, (byte)0x9A, (byte)0xDE,
+ (byte)0x8D, (byte)0xFE, (byte)0xFA, (byte)0xFC,
+ (byte)0x9C, (byte)0xB1, (byte)0x9E, (byte)0x77,
+ (byte)0x8B, (byte)0x64, (byte)0x8B, (byte)0x67,
+ (byte)0x97, (byte)0x4B, (byte)0x96, (byte)0x53,
+ (byte)0x9A, (byte)0xE0, (byte)0x8B, (byte)0x4A,
+ (byte)0x8A, (byte)0xF1, (byte)0x8A, (byte)0xD7,
+ (byte)0xA0, (byte)0xAB, (byte)0x8A, (byte)0xB5,
+ (byte)0x8A, (byte)0x5F, (byte)0x8A, (byte)0xEE,
+ (byte)0x9A, (byte)0xDF, (byte)0x8A, (byte)0xFE,
+ (byte)0x8A, (byte)0x58, (byte)0x8B, (byte)0xA3,
+ (byte)0x8B, (byte)0xA7, (byte)0x9A, (byte)0xE3,
+ (byte)0x92, (byte)0x61, (byte)0x9D, (byte)0xD7,
+ (byte)0x9E, (byte)0x7D, (byte)0x9E, (byte)0xA7,
+ (byte)0x9E, (byte)0xAB, (byte)0x90, (byte)0x42,
+ (byte)0x8B, (byte)0x79, (byte)0x8B, (byte)0x7A,
+ (byte)0x9A, (byte)0xE6, (byte)0x9A, (byte)0xE5,
+ (byte)0x8A, (byte)0x7E, (byte)0x9E, (byte)0x44,
+ (byte)0x9A, (byte)0xE7, (byte)0x8A, (byte)0x7C,
+ (byte)0x8B, (byte)0x71, (byte)0x9A, (byte)0xE9,
+ (byte)0x9A, (byte)0xEA, (byte)0x9A, (byte)0xEB,
+ (byte)0x8A, (byte)0xBD, (byte)0xFB, (byte)0x4E,
+ (byte)0x9A, (byte)0xED, (byte)0x8A, (byte)0xF9,
+ (byte)0x9E, (byte)0x63, (byte)0x8B, (byte)0x49,
+ (byte)0x8A, (byte)0xCE, (byte)0x8B, (byte)0x6E,
+ (byte)0x8A, (byte)0xE8, (byte)0x9A, (byte)0xEE,
+ (byte)0x92, (byte)0xCE, (byte)0x8A, (byte)0x5A,
+ (byte)0x8B, (byte)0x7B, (byte)0x8B, (byte)0x7C,
+ (byte)0x9A, (byte)0xEF, (byte)0x9A, (byte)0xF0,
+ (byte)0x8A, (byte)0xFA, (byte)0x89, (byte)0x41,
+ (byte)0x8B, (byte)0x72, (byte)0x8A, (byte)0xF3,
+ (byte)0x8B, (byte)0xA8, (byte)0x9E, (byte)0xAE,
+ (byte)0x9E, (byte)0x72, (byte)0xFB, (byte)0x73,
+ (byte)0xFB, (byte)0x5F, (byte)0x90, (byte)0xBA,
+ (byte)0x91, (byte)0xFE, (byte)0x9E, (byte)0xF6,
+ (byte)0x97, (byte)0xED, (byte)0x9A, (byte)0xF3,
+ (byte)0xA0, (byte)0xEE, (byte)0x96, (byte)0x7C,
+ (byte)0x93, (byte)0x45, (byte)0x98, (byte)0x6E,
+ (byte)0xFA, (byte)0x56, (byte)0x9A, (byte)0xF5,
+ (byte)0xFC, (byte)0x4B, (byte)0x9A, (byte)0xF4,
+ (byte)0xFE, (byte)0xDE, (byte)0xFC, (byte)0xB7,
+ (byte)0x97, (byte)0xF1, (byte)0x97, (byte)0xC7,
+ (byte)0x9C, (byte)0xCB, (byte)0x92, (byte)0x40,
+ (byte)0x9C, (byte)0xE8, (byte)0x91, (byte)0xFD,
+ (byte)0x97, (byte)0x4E, (byte)0xFB, (byte)0x68,
+ (byte)0x97, (byte)0x6C, (byte)0x8C, (byte)0xC2,
+ (byte)0x97, (byte)0xE8, (byte)0xFB, (byte)0x6A,
+ (byte)0x8B, (byte)0x74, (byte)0x8E, (byte)0xE7,
+ (byte)0xFD, (byte)0xC8, (byte)0x92, (byte)0x41,
+ (byte)0x96, (byte)0xA1, (byte)0x8E, (byte)0xF3,
+ (byte)0x9A, (byte)0xF7, (byte)0x8F, (byte)0xA6,
+ (byte)0xFA, (byte)0xD6, (byte)0x9C, (byte)0xC7,
+ (byte)0xFA, (byte)0xD7, (byte)0x9A, (byte)0xF8,
+ (byte)0xFB, (byte)0xA1, (byte)0x8E, (byte)0xC5,
+ (byte)0xFB, (byte)0xA4, (byte)0xFB, (byte)0xC2,
+ (byte)0x9A, (byte)0xC1, (byte)0x91, (byte)0xFA,
+ (byte)0xFE, (byte)0xDB, (byte)0x97, (byte)0xAB,
+ (byte)0x91, (byte)0x47, (byte)0xFB, (byte)0xB1,
+ (byte)0x8F, (byte)0xEA, (byte)0x94, (byte)0xD2,
+ (byte)0xFE, (byte)0x61, (byte)0xFA, (byte)0xCE,
+ (byte)0x92, (byte)0xED, (byte)0x91, (byte)0xF3,
+ (byte)0x93, (byte)0xC6, (byte)0x93, (byte)0x5A,
+ (byte)0xFA, (byte)0xFB, (byte)0x92, (byte)0xEF,
+ (byte)0xFA, (byte)0xC8, (byte)0x98, (byte)0x47,
+ (byte)0x93, (byte)0x66, (byte)0x98, (byte)0x55,
+ (byte)0x96, (byte)0xE6, (byte)0x9F, (byte)0x43,
+ (byte)0x9F, (byte)0xAA, (byte)0x94, (byte)0xDA,
+ (byte)0x92, (byte)0xEE, (byte)0xFC, (byte)0xAF,
+ (byte)0xFB, (byte)0xFB, (byte)0x8E, (byte)0xF9,
+ (byte)0x91, (byte)0xF6, (byte)0x93, (byte)0x64,
+ (byte)0x94, (byte)0xF5, (byte)0x9C, (byte)0xB6,
+ (byte)0xFB, (byte)0xAD, (byte)0x98, (byte)0x4E,
+ (byte)0x8F, (byte)0x44, (byte)0x96, (byte)0xFD,
+ (byte)0x9A, (byte)0xF9, (byte)0x9A, (byte)0xFA,
+ (byte)0x97, (byte)0x69, (byte)0x95, (byte)0xD4,
+ (byte)0x98, (byte)0x4B, (byte)0xFB, (byte)0xAA,
+ (byte)0x98, (byte)0x7C, (byte)0x91, (byte)0xEA,
+ (byte)0x9D, (byte)0xAF, (byte)0x9D, (byte)0xC5,
+ (byte)0x91, (byte)0xF1, (byte)0x8E, (byte)0xB1,
+ (byte)0x97, (byte)0xA9, (byte)0xFB, (byte)0xAC,
+ (byte)0xFC, (byte)0xB8, (byte)0x9C, (byte)0xB9,
+ (byte)0xFB, (byte)0xB0, (byte)0xFC, (byte)0xD2,
+ (byte)0x93, (byte)0xCB, (byte)0x9A, (byte)0xFD,
+ (byte)0x91, (byte)0xF4, (byte)0x8B, (byte)0xAC,
+ (byte)0xA0, (byte)0x55, (byte)0x95, (byte)0x74,
+ (byte)0x95, (byte)0xBE, (byte)0x97, (byte)0xAD,
+ (byte)0x8E, (byte)0xE9, (byte)0x92, (byte)0xF8,
+ (byte)0x97, (byte)0xBE, (byte)0x91, (byte)0x6C,
+ (byte)0x94, (byte)0xAA, (byte)0xFC, (byte)0x63,
+ (byte)0x9D, (byte)0xC6, (byte)0x97, (byte)0xB5,
+ (byte)0x92, (byte)0xB8, (byte)0x91, (byte)0xEF,
+ (byte)0xFE, (byte)0xA6, (byte)0x97, (byte)0x60,
+ (byte)0x93, (byte)0x58, (byte)0x95, (byte)0x76,
+ (byte)0x8F, (byte)0xAC, (byte)0x91, (byte)0xEC,
+ (byte)0x97, (byte)0xB4, (byte)0x91, (byte)0xF7,
+ (byte)0x97, (byte)0x4A, (byte)0xFB, (byte)0x49,
+ (byte)0x95, (byte)0x78, (byte)0x93, (byte)0xBC,
+ (byte)0x91, (byte)0xD6, (byte)0x93, (byte)0x55,
+ (byte)0x93, (byte)0x56, (byte)0x98, (byte)0x51,
+ (byte)0x8F, (byte)0xF8, (byte)0xFB, (byte)0xC0,
+ (byte)0x93, (byte)0xF2, (byte)0x90, (byte)0xD0,
+ (byte)0x9C, (byte)0x44, (byte)0x92, (byte)0x55,
+ (byte)0x93, (byte)0x63, (byte)0x91, (byte)0xA5,
+ (byte)0xA0, (byte)0xED, (byte)0xFD, (byte)0x6B,
+ (byte)0x9A, (byte)0xFE, (byte)0x93, (byte)0x51,
+ (byte)0x8C, (byte)0x57, (byte)0xFA, (byte)0x78,
+ (byte)0xFE, (byte)0xA8, (byte)0x93, (byte)0x50,
+ (byte)0xFA, (byte)0x4C, (byte)0x92, (byte)0xF7,
+ (byte)0x9B, (byte)0x40, (byte)0xFB, (byte)0xCE,
+ (byte)0x9B, (byte)0x41, (byte)0xFE, (byte)0xAD,
+ (byte)0xFB, (byte)0xD5, (byte)0x8B, (byte)0xC2,
+ (byte)0x9A, (byte)0x7C, (byte)0x9B, (byte)0x42,
+ (byte)0x9B, (byte)0x43, (byte)0x9E, (byte)0x79,
+ (byte)0xFB, (byte)0xD9, (byte)0x9B, (byte)0x44,
+ (byte)0xA0, (byte)0xA7, (byte)0x9B, (byte)0xF3,
+ (byte)0x8C, (byte)0x79, (byte)0x93, (byte)0x5E,
+ (byte)0x89, (byte)0xCB, (byte)0x9F, (byte)0x53,
+ (byte)0x93, (byte)0xD7, (byte)0xFB, (byte)0xE1,
+ (byte)0xFE, (byte)0xD0, (byte)0xFB, (byte)0xE2,
+ (byte)0xFC, (byte)0xE3, (byte)0x90, (byte)0x74,
+ (byte)0xFB, (byte)0xE6, (byte)0x9B, (byte)0xB7,
+ (byte)0x9B, (byte)0x45, (byte)0x9B, (byte)0x47,
+ (byte)0x9F, (byte)0x50, (byte)0x9B, (byte)0x48,
+ (byte)0xFC, (byte)0x5B, (byte)0x98, (byte)0xA9,
+ (byte)0x9C, (byte)0xFD, (byte)0x88, (byte)0x4C,
+ (byte)0x9B, (byte)0x4B, (byte)0xFB, (byte)0xEC,
+ (byte)0x8C, (byte)0x69, (byte)0x9B, (byte)0xA8,
+ (byte)0x8A, (byte)0xD5, (byte)0xFA, (byte)0x73,
+ (byte)0xFD, (byte)0x59, (byte)0x91, (byte)0xA2,
+ (byte)0xFB, (byte)0xED, (byte)0x9C, (byte)0xA9,
+ (byte)0x8A, (byte)0xA8, (byte)0x9B, (byte)0xC3,
+ (byte)0x8A, (byte)0xE1, (byte)0x9B, (byte)0x4E,
+ (byte)0x95, (byte)0xD0, (byte)0x90, (byte)0x5F,
+ (byte)0x97, (byte)0xEE, (byte)0xFC, (byte)0x4E,
+ (byte)0x9B, (byte)0x4F, (byte)0x9B, (byte)0x50,
+ (byte)0x9E, (byte)0xC6, (byte)0xFC, (byte)0x50,
+ (byte)0xFD, (byte)0x73, (byte)0xFD, (byte)0xA7,
+ (byte)0x9D, (byte)0xA2, (byte)0xFA, (byte)0x58,
+ (byte)0xFA, (byte)0x5E, (byte)0xA0, (byte)0x59,
+ (byte)0xFA, (byte)0x75, (byte)0xFB, (byte)0xBE,
+ (byte)0x9C, (byte)0xA2, (byte)0x93, (byte)0x70,
+ (byte)0x93, (byte)0x71, (byte)0x93, (byte)0x77,
+ (byte)0xFE, (byte)0xEF, (byte)0x93, (byte)0x6D,
+ (byte)0xFC, (byte)0x5D, (byte)0x90, (byte)0xB8,
+ (byte)0x8A, (byte)0xFC, (byte)0xFB, (byte)0x41,
+ (byte)0x9E, (byte)0x6B, (byte)0x94, (byte)0xE3,
+ (byte)0x8E, (byte)0xE2, (byte)0x8C, (byte)0x7D,
+ (byte)0x8E, (byte)0xD7, (byte)0x9C, (byte)0x4D,
+ (byte)0x96, (byte)0xA3, (byte)0x9B, (byte)0x51,
+ (byte)0x8A, (byte)0xC3, (byte)0x96, (byte)0xAA,
+ (byte)0xFC, (byte)0x68, (byte)0x8B, (byte)0x6D,
+ (byte)0xFD, (byte)0x67, (byte)0x8A, (byte)0xE9,
+ (byte)0xFC, (byte)0xA1, (byte)0x93, (byte)0x6C,
+ (byte)0x9B, (byte)0x52, (byte)0xFE, (byte)0x70,
+ (byte)0xFC, (byte)0xA8, (byte)0xFC, (byte)0xE9,
+ (byte)0x9C, (byte)0xB4, (byte)0x8A, (byte)0xEA,
+ (byte)0x9B, (byte)0x53, (byte)0x9B, (byte)0x55,
+ (byte)0x96, (byte)0xAB, (byte)0xFC, (byte)0xA7,
+ (byte)0x9B, (byte)0x56, (byte)0x8A, (byte)0xBC,
+ (byte)0x8A, (byte)0xCB, (byte)0x9B, (byte)0x57,
+ (byte)0x89, (byte)0xCD, (byte)0x9B, (byte)0x59,
+ (byte)0x9B, (byte)0x5B, (byte)0x93, (byte)0xA5,
+ (byte)0x9B, (byte)0x5D, (byte)0x9E, (byte)0x4F,
+ (byte)0x93, (byte)0xA3, (byte)0x8A, (byte)0x7B,
+ (byte)0x8B, (byte)0x42, (byte)0x97, (byte)0x50,
+ (byte)0x8F, (byte)0xB3, (byte)0x8A, (byte)0x50,
+ (byte)0x9B, (byte)0x60, (byte)0x8B, (byte)0x45,
+ (byte)0x8B, (byte)0x46, (byte)0x9D, (byte)0xFE,
+ (byte)0x9B, (byte)0x62, (byte)0x93, (byte)0x7B,
+ (byte)0x93, (byte)0xB1, (byte)0x8A, (byte)0x60,
+ (byte)0x8A, (byte)0xD8, (byte)0x9B, (byte)0x63,
+ (byte)0x8A, (byte)0x69, (byte)0x8A, (byte)0x47,
+ (byte)0x8A, (byte)0xCC, (byte)0x93, (byte)0x7C,
+ (byte)0x9B, (byte)0x65, (byte)0x9B, (byte)0x66,
+ (byte)0x8A, (byte)0x72, (byte)0x8A, (byte)0x7A,
+ (byte)0x93, (byte)0xAF, (byte)0x8A, (byte)0xB0,
+ (byte)0x9B, (byte)0x68, (byte)0x9E, (byte)0xA3,
+ (byte)0xFA, (byte)0xEC, (byte)0x8B, (byte)0x77,
+ (byte)0x9B, (byte)0x67, (byte)0x8B, (byte)0x59,
+ (byte)0xFC, (byte)0xB1, (byte)0xFC, (byte)0xBB,
+ (byte)0x9B, (byte)0x69, (byte)0x93, (byte)0xA8,
+ (byte)0x8A, (byte)0xE0, (byte)0x9E, (byte)0x51,
+ (byte)0x8F, (byte)0x5F, (byte)0x9B, (byte)0x6A,
+ (byte)0x9B, (byte)0x6B, (byte)0x97, (byte)0xEC,
+ (byte)0x9B, (byte)0x6C, (byte)0xFE, (byte)0x4E,
+ (byte)0xFD, (byte)0xC2, (byte)0x9B, (byte)0x6D,
+ (byte)0x91, (byte)0x67, (byte)0xFC, (byte)0xCC,
+ (byte)0x93, (byte)0xB6, (byte)0x90, (byte)0xE4,
+ (byte)0x90, (byte)0xE5, (byte)0x9E, (byte)0xF2,
+ (byte)0x93, (byte)0xCA, (byte)0x8B, (byte)0xBC,
+ (byte)0x8F, (byte)0x46, (byte)0x93, (byte)0xCF,
+ (byte)0xFC, (byte)0xDB, (byte)0xFC, (byte)0xDC,
+ (byte)0x93, (byte)0xC0, (byte)0xFC, (byte)0xE6,
+ (byte)0x96, (byte)0xE7, (byte)0xFC, (byte)0xD8,
+ (byte)0xFC, (byte)0xD9, (byte)0xFD, (byte)0xA6,
+ (byte)0x93, (byte)0xCE, (byte)0x95, (byte)0xF1,
+ (byte)0x9C, (byte)0xE9, (byte)0xFC, (byte)0xE4,
+ (byte)0x94, (byte)0xAF, (byte)0xFA, (byte)0x77,
+ (byte)0x93, (byte)0xCC, (byte)0x90, (byte)0x5A,
+ (byte)0x8C, (byte)0x54, (byte)0x93, (byte)0xBF,
+ (byte)0xFB, (byte)0x51, (byte)0x93, (byte)0xB9,
+ (byte)0xFE, (byte)0xD7, (byte)0x93, (byte)0xB7,
+ (byte)0x93, (byte)0xD9, (byte)0x93, (byte)0xBB,
+ (byte)0x93, (byte)0xDA, (byte)0x98, (byte)0xA3,
+ (byte)0x90, (byte)0xD1, (byte)0x9B, (byte)0x6E,
+ (byte)0xFA, (byte)0x70, (byte)0x9B, (byte)0xEB,
+ (byte)0x9B, (byte)0x6F, (byte)0xFC, (byte)0xFC,
+ (byte)0x8B, (byte)0x40, (byte)0xA0, (byte)0x7B,
+ (byte)0x8C, (byte)0xA1, (byte)0x97, (byte)0xF7,
+ (byte)0x93, (byte)0xE2, (byte)0xFC, (byte)0xD6,
+ (byte)0x95, (byte)0x59, (byte)0x93, (byte)0xA6,
+ (byte)0xFD, (byte)0x40, (byte)0x93, (byte)0x5F,
+ (byte)0x97, (byte)0xF2, (byte)0x9C, (byte)0x76,
+ (byte)0x8E, (byte)0xF8, (byte)0x8F, (byte)0x47,
+ (byte)0x9B, (byte)0x74, (byte)0x92, (byte)0xB4,
+ (byte)0x91, (byte)0xED, (byte)0x96, (byte)0xD2,
+ (byte)0xFD, (byte)0x46, (byte)0x8F, (byte)0x4F,
+ (byte)0x95, (byte)0x49, (byte)0x9B, (byte)0x75,
+ (byte)0xFA, (byte)0x5C, (byte)0x9B, (byte)0x79,
+ (byte)0xFD, (byte)0x4B, (byte)0x96, (byte)0xD3,
+ (byte)0xFD, (byte)0x58, (byte)0x94, (byte)0x5F,
+ (byte)0xA0, (byte)0xF5, (byte)0x92, (byte)0x43,
+ (byte)0x97, (byte)0xFA, (byte)0x9D, (byte)0xD9,
+ (byte)0x97, (byte)0xF4, (byte)0x92, (byte)0x4D,
+ (byte)0xFD, (byte)0x5B, (byte)0x9B, (byte)0x7A,
+ (byte)0x9E, (byte)0xD5, (byte)0xFA, (byte)0xAE,
+ (byte)0x9C, (byte)0xC9, (byte)0x92, (byte)0x58,
+ (byte)0x8E, (byte)0xC8, (byte)0x94, (byte)0xB4,
+ (byte)0x93, (byte)0xE1, (byte)0x93, (byte)0xDF,
+ (byte)0xFC, (byte)0xF0, (byte)0x93, (byte)0xEC,
+ (byte)0x97, (byte)0xF6, (byte)0x96, (byte)0xCF,
+ (byte)0x93, (byte)0xDE, (byte)0x8A, (byte)0xCF,
+ (byte)0x9B, (byte)0xA2, (byte)0xFD, (byte)0x69,
+ (byte)0x93, (byte)0x52, (byte)0x98, (byte)0xA2,
+ (byte)0xFD, (byte)0x6E, (byte)0x8C, (byte)0xA4,
+ (byte)0xFA, (byte)0x7C, (byte)0x93, (byte)0xFA,
+ (byte)0x90, (byte)0x7C, (byte)0x8F, (byte)0x67,
+ (byte)0x9D, (byte)0xB7, (byte)0xA0, (byte)0xE9,
+ (byte)0xFA, (byte)0x4E, (byte)0xFD, (byte)0xA1,
+ (byte)0x9E, (byte)0x74, (byte)0x9F, (byte)0xBF,
+ (byte)0x9E, (byte)0xCB, (byte)0x9B, (byte)0xB9,
+ (byte)0x9D, (byte)0xD4, (byte)0x97, (byte)0xB9,
+ (byte)0x8E, (byte)0xF1, (byte)0x95, (byte)0x7B,
+ (byte)0x9E, (byte)0xD2, (byte)0x97, (byte)0x53,
+ (byte)0x96, (byte)0xA4, (byte)0x8F, (byte)0xBE,
+ (byte)0x94, (byte)0xD9, (byte)0x90, (byte)0x58,
+ (byte)0xFD, (byte)0x79, (byte)0xFD, (byte)0x7B,
+ (byte)0x8E, (byte)0xDA, (byte)0x8E, (byte)0xFA,
+ (byte)0x9B, (byte)0xA5, (byte)0x9E, (byte)0xD9,
+ (byte)0x97, (byte)0xD4, (byte)0x90, (byte)0xBB,
+ (byte)0xFD, (byte)0xBC, (byte)0xFD, (byte)0xC6,
+ (byte)0x92, (byte)0x48, (byte)0x92, (byte)0xB5,
+ (byte)0x9D, (byte)0xC1, (byte)0x92, (byte)0xB9,
+ (byte)0x92, (byte)0xA6, (byte)0x8F, (byte)0x4B,
+ (byte)0x9B, (byte)0xA6, (byte)0x92, (byte)0xB6,
+ (byte)0x8E, (byte)0x40, (byte)0x9E, (byte)0xD8,
+ (byte)0x94, (byte)0x5E, (byte)0x98, (byte)0x5F,
+ (byte)0x94, (byte)0xCE, (byte)0x92, (byte)0x4A,
+ (byte)0xFD, (byte)0x70, (byte)0x94, (byte)0x67,
+ (byte)0x8D, (byte)0xEC, (byte)0x9B, (byte)0xD8,
+ (byte)0x94, (byte)0x48, (byte)0xFA, (byte)0xC1,
+ (byte)0x9C, (byte)0xF7, (byte)0xFD, (byte)0xBE,
+ (byte)0x8F, (byte)0xDA, (byte)0xFD, (byte)0xD9,
+ (byte)0xFC, (byte)0x7E, (byte)0x93, (byte)0xF9,
+ (byte)0xFA, (byte)0x43, (byte)0xFA, (byte)0xEB,
+ (byte)0xFA, (byte)0xC3, (byte)0x97, (byte)0xD3,
+ (byte)0x95, (byte)0xF9, (byte)0x9C, (byte)0x48,
+ (byte)0xFD, (byte)0xD8, (byte)0xA0, (byte)0xD8,
+ (byte)0xFD, (byte)0xD7, (byte)0xFB, (byte)0x4A,
+ (byte)0x9B, (byte)0xAF, (byte)0x94, (byte)0x4B,
+ (byte)0xFD, (byte)0xC9, (byte)0x8E, (byte)0xAC,
+ (byte)0xFD, (byte)0xB2, (byte)0x92, (byte)0x5A,
+ (byte)0xFC, (byte)0xBD, (byte)0x92, (byte)0xD9,
+ (byte)0xFD, (byte)0xD5, (byte)0x92, (byte)0xDD,
+ (byte)0x92, (byte)0x59, (byte)0x96, (byte)0xBA,
+ (byte)0x92, (byte)0x5B, (byte)0x9B, (byte)0xAB,
+ (byte)0xFD, (byte)0xDA, (byte)0xFD, (byte)0xDE,
+ (byte)0xFD, (byte)0xD3, (byte)0x8C, (byte)0x46,
+ (byte)0xFD, (byte)0xD6, (byte)0xFD, (byte)0xDC,
+ (byte)0xFD, (byte)0xDD, (byte)0x90, (byte)0xFE,
+ (byte)0xFE, (byte)0xA1, (byte)0x8B, (byte)0xAD,
+ (byte)0x9C, (byte)0xD8, (byte)0x9E, (byte)0x6D,
+ (byte)0xFD, (byte)0x7C, (byte)0xFB, (byte)0x61,
+ (byte)0x96, (byte)0xF8, (byte)0x96, (byte)0xF0,
+ (byte)0xFC, (byte)0xF4, (byte)0xFE, (byte)0x60,
+ (byte)0x98, (byte)0x52, (byte)0x96, (byte)0x4F,
+ (byte)0x91, (byte)0x6E, (byte)0x98, (byte)0x6D,
+ (byte)0x98, (byte)0x64, (byte)0x94, (byte)0x53,
+ (byte)0xFD, (byte)0xEC, (byte)0xFB, (byte)0x78,
+ (byte)0x95, (byte)0xBA, (byte)0x98, (byte)0x5D,
+ (byte)0x92, (byte)0xF9, (byte)0x98, (byte)0x5A,
+ (byte)0xFD, (byte)0xF6, (byte)0x93, (byte)0xD0,
+ (byte)0x98, (byte)0x62, (byte)0x9B, (byte)0xAD,
+ (byte)0x97, (byte)0x4F, (byte)0x9B, (byte)0xAE,
+ (byte)0x94, (byte)0x52, (byte)0x9B, (byte)0xB0,
+ (byte)0x91, (byte)0xD2, (byte)0x97, (byte)0xEA,
+ (byte)0xFB, (byte)0x6B, (byte)0x91, (byte)0xB1,
+ (byte)0xFD, (byte)0xF3, (byte)0x92, (byte)0xCB,
+ (byte)0x9B, (byte)0xB1, (byte)0xFC, (byte)0xEC,
+ (byte)0x98, (byte)0x6B, (byte)0x97, (byte)0x51,
+ (byte)0x98, (byte)0x71, (byte)0x95, (byte)0xEF,
+ (byte)0x9E, (byte)0xF3, (byte)0x91, (byte)0xE8,
+ (byte)0x9B, (byte)0xBA, (byte)0xFB, (byte)0x4C,
+ (byte)0x92, (byte)0x6A, (byte)0xFD, (byte)0xF8,
+ (byte)0x98, (byte)0x61, (byte)0x91, (byte)0xE7,
+ (byte)0x93, (byte)0xED, (byte)0x97, (byte)0x44,
+ (byte)0x91, (byte)0xE1, (byte)0xFB, (byte)0xF5,
+ (byte)0x98, (byte)0x69, (byte)0x8A, (byte)0x62,
+ (byte)0x9B, (byte)0xBB, (byte)0x8C, (byte)0xA8,
+ (byte)0x9C, (byte)0x55, (byte)0x8E, (byte)0x77,
+ (byte)0x8A, (byte)0xB2, (byte)0x9E, (byte)0xBC,
+ (byte)0x93, (byte)0xE6, (byte)0x93, (byte)0xA2,
+ (byte)0x9B, (byte)0xBD, (byte)0x94, (byte)0xB3,
+ (byte)0x93, (byte)0x7D, (byte)0x9E, (byte)0x66,
+ (byte)0x94, (byte)0x59, (byte)0x9B, (byte)0xBF,
+ (byte)0x94, (byte)0x58, (byte)0x9E, (byte)0xA5,
+ (byte)0x9B, (byte)0xC7, (byte)0xFE, (byte)0x54,
+ (byte)0x8E, (byte)0x74, (byte)0x8B, (byte)0xD6,
+ (byte)0x94, (byte)0xB6, (byte)0xFD, (byte)0x74,
+ (byte)0x98, (byte)0xC0, (byte)0x94, (byte)0xA5,
+ (byte)0x9B, (byte)0xC8, (byte)0x95, (byte)0xED,
+ (byte)0xFD, (byte)0x7E, (byte)0xFB, (byte)0xEB,
+ (byte)0xFD, (byte)0x7D, (byte)0x97, (byte)0x6F,
+ (byte)0x94, (byte)0x61, (byte)0x9F, (byte)0xC1,
+ (byte)0x95, (byte)0xD7, (byte)0xFA, (byte)0x52,
+ (byte)0x9C, (byte)0x58, (byte)0x9F, (byte)0x68,
+ (byte)0x9B, (byte)0xE7, (byte)0xFC, (byte)0xCE,
+ (byte)0x96, (byte)0xE8, (byte)0xFA, (byte)0x49,
+ (byte)0x97, (byte)0xA1, (byte)0x95, (byte)0x4D,
+ (byte)0x9E, (byte)0xF8, (byte)0xFE, (byte)0x49,
+ (byte)0x91, (byte)0xCE, (byte)0x97, (byte)0x71,
+ (byte)0x8C, (byte)0xCF, (byte)0xFD, (byte)0xB1,
+ (byte)0xFC, (byte)0x6E, (byte)0x9C, (byte)0xF2,
+ (byte)0x93, (byte)0xB8, (byte)0x90, (byte)0x43,
+ (byte)0x97, (byte)0x59, (byte)0x94, (byte)0xD7,
+ (byte)0xFE, (byte)0x66, (byte)0x94, (byte)0x7D,
+ (byte)0xFC, (byte)0x6F, (byte)0x92, (byte)0x46,
+ (byte)0xFA, (byte)0x6D, (byte)0x8E, (byte)0xF7,
+ (byte)0xFB, (byte)0xB7, (byte)0x94, (byte)0x7C,
+ (byte)0x92, (byte)0xCD, (byte)0x97, (byte)0xB2,
+ (byte)0xFE, (byte)0x65, (byte)0x96, (byte)0x7E,
+ (byte)0x97, (byte)0x58, (byte)0x9B, (byte)0x77,
+ (byte)0x91, (byte)0xCF, (byte)0x94, (byte)0xA4,
+ (byte)0x9C, (byte)0xAD, (byte)0x8B, (byte)0xAB,
+ (byte)0x96, (byte)0xD5, (byte)0xFC, (byte)0xB3,
+ (byte)0x93, (byte)0xAE, (byte)0x97, (byte)0x6D,
+ (byte)0x94, (byte)0x46, (byte)0x95, (byte)0xF7,
+ (byte)0x9C, (byte)0x46, (byte)0x95, (byte)0x5B,
+ (byte)0x91, (byte)0xD1, (byte)0x94, (byte)0xF4,
+ (byte)0xFE, (byte)0x67, (byte)0x92, (byte)0xA5,
+ (byte)0xFE, (byte)0xDF, (byte)0x8C, (byte)0xAB,
+ (byte)0x9B, (byte)0xC9, (byte)0xFC, (byte)0xED,
+ (byte)0xFD, (byte)0xFA, (byte)0xFC, (byte)0xC8,
+ (byte)0xFE, (byte)0x62, (byte)0x91, (byte)0xFC,
+ (byte)0xFE, (byte)0x6B, (byte)0xFD, (byte)0xF9,
+ (byte)0xFC, (byte)0xC7, (byte)0x91, (byte)0x4E,
+ (byte)0x9C, (byte)0xB8, (byte)0x97, (byte)0x67,
+ (byte)0x95, (byte)0xEE, (byte)0x9B, (byte)0xB2,
+ (byte)0x94, (byte)0x60, (byte)0x94, (byte)0xA2,
+ (byte)0x98, (byte)0x75, (byte)0x97, (byte)0xAC,
+ (byte)0x91, (byte)0xD3, (byte)0x98, (byte)0x7B,
+ (byte)0x8E, (byte)0xEB, (byte)0x97, (byte)0x6A,
+ (byte)0x96, (byte)0x5E, (byte)0x97, (byte)0xEB,
+ (byte)0x9F, (byte)0xF9, (byte)0x95, (byte)0xF8,
+ (byte)0xFE, (byte)0xA2, (byte)0x8F, (byte)0xE6,
+ (byte)0xFE, (byte)0x7E, (byte)0x9D, (byte)0xA4,
+ (byte)0x97, (byte)0x68, (byte)0x8E, (byte)0xEC,
+ (byte)0x94, (byte)0xBD, (byte)0x94, (byte)0x5B,
+ (byte)0x9C, (byte)0xF6, (byte)0xFA, (byte)0xA7,
+ (byte)0x9B, (byte)0xD9, (byte)0xFA, (byte)0x5D,
+ (byte)0x96, (byte)0x56, (byte)0x97, (byte)0x62,
+ (byte)0x94, (byte)0xBA, (byte)0xA0, (byte)0x4F,
+ (byte)0x92, (byte)0xD8, (byte)0x9B, (byte)0xCB,
+ (byte)0x94, (byte)0xBB, (byte)0x9D, (byte)0x5F,
+ (byte)0x90, (byte)0xCF, (byte)0x94, (byte)0x65,
+ (byte)0x9F, (byte)0x4C, (byte)0x90, (byte)0xD8,
+ (byte)0x9E, (byte)0xBE, (byte)0xFB, (byte)0x6D,
+ (byte)0x95, (byte)0xCA, (byte)0x9D, (byte)0xC2,
+ (byte)0x97, (byte)0xF8, (byte)0x8F, (byte)0xFC,
+ (byte)0x94, (byte)0x73, (byte)0x94, (byte)0x74,
+ (byte)0xFE, (byte)0xB7, (byte)0x8A, (byte)0x4B,
+ (byte)0x8A, (byte)0x55, (byte)0x8B, (byte)0x69,
+ (byte)0x8A, (byte)0xDC, (byte)0x8B, (byte)0x76,
+ (byte)0x9B, (byte)0xCE, (byte)0x8A, (byte)0x68,
+ (byte)0xA0, (byte)0xF8, (byte)0x98, (byte)0xDF,
+ (byte)0xFE, (byte)0xB5, (byte)0x9B, (byte)0xCF,
+ (byte)0x96, (byte)0xFB, (byte)0x9B, (byte)0xFB,
+ (byte)0x9E, (byte)0xCE, (byte)0x8E, (byte)0xE5,
+ (byte)0x9E, (byte)0x7B, (byte)0x9B, (byte)0xD2,
+ (byte)0x8A, (byte)0xA5, (byte)0xFE, (byte)0xCE,
+ (byte)0x8A, (byte)0x45, (byte)0x9D, (byte)0xFC,
+ (byte)0xFE, (byte)0xCF, (byte)0x8B, (byte)0xA5,
+ (byte)0x8C, (byte)0x4A, (byte)0x8A, (byte)0xEC,
+ (byte)0xFC, (byte)0xE0, (byte)0x94, (byte)0xAD,
+ (byte)0xFE, (byte)0xD5, (byte)0x94, (byte)0xAC,
+ (byte)0xFC, (byte)0x5A, (byte)0x9B, (byte)0xD6,
+ (byte)0x8A, (byte)0x6F, (byte)0x8B, (byte)0xA9,
+ (byte)0x8E, (byte)0x5F, (byte)0x9D, (byte)0xCB,
+ (byte)0xFC, (byte)0xE7, (byte)0x9B, (byte)0xD7,
+ (byte)0x93, (byte)0xC8, (byte)0x91, (byte)0xF0,
+ (byte)0x8F, (byte)0xE0, (byte)0x9B, (byte)0xDB,
+ (byte)0x90, (byte)0xED, (byte)0x9B, (byte)0xDC,
+ (byte)0xA0, (byte)0xEC, (byte)0x98, (byte)0xFA,
+ (byte)0x9B, (byte)0xE0, (byte)0x93, (byte)0xC7,
+ (byte)0x92, (byte)0x49, (byte)0x96, (byte)0xE1,
+ (byte)0x9B, (byte)0xE2, (byte)0x9B, (byte)0xE4,
+ (byte)0x8F, (byte)0xE1, (byte)0x9B, (byte)0xE5,
+ (byte)0x94, (byte)0xC0, (byte)0x93, (byte)0xC3,
+ (byte)0x93, (byte)0xC5, (byte)0x90, (byte)0x79,
+ (byte)0x97, (byte)0x7B, (byte)0x90, (byte)0x7E,
+ (byte)0xFE, (byte)0xE6, (byte)0xFE, (byte)0x46,
+ (byte)0x9D, (byte)0xB8, (byte)0x92, (byte)0x70,
+ (byte)0x95, (byte)0xA8, (byte)0x8C, (byte)0xB0,
+ (byte)0x94, (byte)0xC8, (byte)0x98, (byte)0xB9,
+ (byte)0x91, (byte)0x40, (byte)0xFC, (byte)0xBE,
+ (byte)0x91, (byte)0x57, (byte)0x8B, (byte)0xB2,
+ (byte)0xFA, (byte)0xDF, (byte)0x9B, (byte)0xE6,
+ (byte)0x96, (byte)0x43, (byte)0x8E, (byte)0x44,
+ (byte)0x9C, (byte)0x4F, (byte)0xFE, (byte)0xF4,
+ (byte)0x9B, (byte)0xE8, (byte)0x93, (byte)0xDC,
+ (byte)0x96, (byte)0x6F, (byte)0x8E, (byte)0x4A,
+ (byte)0x9B, (byte)0xED, (byte)0x92, (byte)0xF6,
+ (byte)0x9D, (byte)0xB9, (byte)0x8E, (byte)0x4E,
+ (byte)0xFB, (byte)0xCF, (byte)0x9E, (byte)0xC2,
+ (byte)0x94, (byte)0xE5, (byte)0x9B, (byte)0xF0,
+ (byte)0x94, (byte)0xE4, (byte)0x95, (byte)0x51,
+ (byte)0x8B, (byte)0xBB, (byte)0x9B, (byte)0xF1,
+ (byte)0x94, (byte)0xF0, (byte)0x8E, (byte)0x64,
+ (byte)0x94, (byte)0xEA, (byte)0x8F, (byte)0x61,
+ (byte)0x9B, (byte)0x64, (byte)0x8E, (byte)0x5B,
+ (byte)0x9B, (byte)0xF2, (byte)0x9F, (byte)0xBE,
+ (byte)0x9D, (byte)0xC9, (byte)0x8E, (byte)0x6C,
+ (byte)0x8F, (byte)0x73, (byte)0x8C, (byte)0xAF,
+ (byte)0x8F, (byte)0x75, (byte)0x8E, (byte)0x71,
+ (byte)0x8E, (byte)0x60, (byte)0x8E, (byte)0x6A,
+ (byte)0x8C, (byte)0x4C, (byte)0x95, (byte)0x52,
+ (byte)0x95, (byte)0x54, (byte)0x8A, (byte)0xD4,
+ (byte)0x9D, (byte)0xBB, (byte)0x95, (byte)0x43,
+ (byte)0x92, (byte)0xFE, (byte)0x94, (byte)0xF2,
+ (byte)0x94, (byte)0xF1, (byte)0xA0, (byte)0xEA,
+ (byte)0x9D, (byte)0xD2, (byte)0xA0, (byte)0xB1,
+ (byte)0x91, (byte)0xF8, (byte)0x94, (byte)0x62,
+ (byte)0x9B, (byte)0xA4, (byte)0x8E, (byte)0xAD,
+ (byte)0x9E, (byte)0xAD, (byte)0x96, (byte)0xD0,
+ (byte)0xFE, (byte)0xEE, (byte)0x8A, (byte)0xB4,
+ (byte)0x97, (byte)0x57, (byte)0x8A, (byte)0x77,
+ (byte)0x9B, (byte)0xF7, (byte)0x8E, (byte)0xB5,
+ (byte)0xA0, (byte)0x6D, (byte)0x8E, (byte)0xB6,
+ (byte)0x97, (byte)0x56, (byte)0x95, (byte)0x40,
+ (byte)0xA0, (byte)0xF3, (byte)0x94, (byte)0xBE,
+ (byte)0x9B, (byte)0xFA, (byte)0xFD, (byte)0xDF,
+ (byte)0x9D, (byte)0xBC, (byte)0x94, (byte)0xFE,
+ (byte)0x8B, (byte)0xDB, (byte)0xA0, (byte)0xFE,
+ (byte)0x8E, (byte)0xC0, (byte)0x9F, (byte)0x47,
+ (byte)0x8B, (byte)0xDE, (byte)0xA0, (byte)0xFB,
+ (byte)0x8E, (byte)0xC3, (byte)0x96, (byte)0x49,
+ (byte)0xFE, (byte)0xC2, (byte)0x95, (byte)0x4C,
+ (byte)0x9B, (byte)0xFD, (byte)0x90, (byte)0xCC,
+ (byte)0x9C, (byte)0x60, (byte)0x95, (byte)0x4B,
+ (byte)0x9B, (byte)0xFE, (byte)0x9C, (byte)0x70,
+ (byte)0x9C, (byte)0x43, (byte)0x9C, (byte)0x47,
+ (byte)0x8E, (byte)0xCC, (byte)0x8E, (byte)0x54,
+ (byte)0x8E, (byte)0xE4, (byte)0x9C, (byte)0x49,
+ (byte)0x8B, (byte)0x5E, (byte)0x95, (byte)0x5E,
+ (byte)0x95, (byte)0x5C, (byte)0x9C, (byte)0x4B,
+ (byte)0x8B, (byte)0xE1, (byte)0x8E, (byte)0xD9,
+ (byte)0x9D, (byte)0xB4, (byte)0x92, (byte)0x5F,
+ (byte)0x9C, (byte)0x4C, (byte)0x8A, (byte)0xA1,
+ (byte)0x8E, (byte)0xDB, (byte)0x9C, (byte)0x56,
+ (byte)0x8A, (byte)0xA2, (byte)0x97, (byte)0x54,
+ (byte)0x9C, (byte)0x5E, (byte)0x9E, (byte)0xD4,
+ (byte)0x95, (byte)0x68, (byte)0xA0, (byte)0xC3,
+ (byte)0x8A, (byte)0xE6, (byte)0xA0, (byte)0xF7,
+ (byte)0x9C, (byte)0x61, (byte)0x9C, (byte)0x5F,
+ (byte)0xFC, (byte)0x4D, (byte)0x9E, (byte)0x5B,
+ (byte)0x9E, (byte)0x69, (byte)0x9C, (byte)0x63,
+ (byte)0xFE, (byte)0xC7, (byte)0xFE, (byte)0xC6,
+ (byte)0x9C, (byte)0x67, (byte)0x9C, (byte)0x69,
+ (byte)0x8B, (byte)0xE2, (byte)0x91, (byte)0x65,
+ (byte)0x9C, (byte)0xE7, (byte)0x8A, (byte)0x54,
+ (byte)0x9C, (byte)0x6C, (byte)0x9C, (byte)0x6E,
+ (byte)0xFE, (byte)0x5D, (byte)0x9C, (byte)0x73,
+ (byte)0x95, (byte)0x6A, (byte)0x95, (byte)0x6D,
+ (byte)0x8E, (byte)0xF0, (byte)0x8F, (byte)0x4D,
+ (byte)0x8E, (byte)0xF6, (byte)0xFA, (byte)0xBC,
+ (byte)0x8C, (byte)0xD5, (byte)0xFB, (byte)0xDA,
+ (byte)0x8B, (byte)0x4C, (byte)0xFD, (byte)0x75,
+ (byte)0x9B, (byte)0xDD, (byte)0xFA, (byte)0xF5,
+ (byte)0x9C, (byte)0x74, (byte)0x95, (byte)0x45,
+ (byte)0x96, (byte)0xC6, (byte)0x8F, (byte)0x6A,
+ (byte)0x8F, (byte)0x4E, (byte)0x9C, (byte)0x78,
+ (byte)0xFA, (byte)0x55, (byte)0x97, (byte)0xE4,
+ (byte)0x9C, (byte)0x41, (byte)0x92, (byte)0x5C,
+ (byte)0x96, (byte)0xFA, (byte)0xFB, (byte)0x66,
+ (byte)0x8E, (byte)0x65, (byte)0x98, (byte)0x49,
+ (byte)0xFB, (byte)0xA8, (byte)0x98, (byte)0x42,
+ (byte)0x9C, (byte)0x7A, (byte)0x97, (byte)0xFB,
+ (byte)0x90, (byte)0xCA, (byte)0x9C, (byte)0x5B,
+ (byte)0x97, (byte)0x4D, (byte)0x8E, (byte)0xD3,
+ (byte)0x95, (byte)0x61, (byte)0x9F, (byte)0x4B,
+ (byte)0x9F, (byte)0xB5, (byte)0x93, (byte)0xD2,
+ (byte)0xFD, (byte)0xAA, (byte)0x98, (byte)0x40,
+ (byte)0x91, (byte)0x46, (byte)0x98, (byte)0x67,
+ (byte)0xFA, (byte)0x5A, (byte)0xFB, (byte)0xA9,
+ (byte)0x98, (byte)0x41, (byte)0x8C, (byte)0xD3,
+ (byte)0xFC, (byte)0xFD, (byte)0xFD, (byte)0xAB,
+ (byte)0x91, (byte)0xBD, (byte)0x8F, (byte)0x4C,
+ (byte)0x96, (byte)0xC9, (byte)0x8F, (byte)0x55,
+ (byte)0xFB, (byte)0xAE, (byte)0x95, (byte)0x6F,
+ (byte)0x9C, (byte)0x7D, (byte)0xA0, (byte)0xF0,
+ (byte)0x94, (byte)0x6F, (byte)0xFD, (byte)0xAC,
+ (byte)0x96, (byte)0xCB, (byte)0x96, (byte)0xCE,
+ (byte)0xA0, (byte)0x56, (byte)0x9C, (byte)0xE1,
+ (byte)0x96, (byte)0xC4, (byte)0x8F, (byte)0x5E,
+ (byte)0x8F, (byte)0x6C, (byte)0x8E, (byte)0xA3,
+ (byte)0xFB, (byte)0xB3, (byte)0xFC, (byte)0x53,
+ (byte)0xFD, (byte)0xB3, (byte)0x8F, (byte)0x6B,
+ (byte)0x96, (byte)0xCA, (byte)0x8F, (byte)0x79,
+ (byte)0x9E, (byte)0x6F, (byte)0xA0, (byte)0xC5,
+ (byte)0xFC, (byte)0x78, (byte)0x8E, (byte)0x42,
+ (byte)0x8F, (byte)0x5A, (byte)0x90, (byte)0xC2,
+ (byte)0x8E, (byte)0xA5, (byte)0x90, (byte)0x61,
+ (byte)0x92, (byte)0x4F, (byte)0x93, (byte)0x73,
+ (byte)0xFD, (byte)0xB5, (byte)0xFE, (byte)0xCC,
+ (byte)0xFB, (byte)0xBD, (byte)0x8C, (byte)0xD6,
+ (byte)0x98, (byte)0x43, (byte)0x96, (byte)0xC5,
+ (byte)0x89, (byte)0xBC, (byte)0x9C, (byte)0xA3,
+ (byte)0x92, (byte)0x4B, (byte)0x98, (byte)0x4A,
+ (byte)0x8F, (byte)0xA4, (byte)0xA0, (byte)0xF1,
+ (byte)0x9E, (byte)0xFB, (byte)0x9C, (byte)0xD2,
+ (byte)0x8F, (byte)0xA7, (byte)0xFC, (byte)0x5C,
+ (byte)0x98, (byte)0x45, (byte)0x90, (byte)0x46,
+ (byte)0x8C, (byte)0xD1, (byte)0xFE, (byte)0xFA,
+ (byte)0x95, (byte)0x60, (byte)0x9F, (byte)0x48,
+ (byte)0x92, (byte)0x47, (byte)0x90, (byte)0xFB,
+ (byte)0x9C, (byte)0xA4, (byte)0x95, (byte)0x71,
+ (byte)0x9C, (byte)0xA6, (byte)0x9C, (byte)0xA7,
+ (byte)0x9C, (byte)0xAA, (byte)0x9E, (byte)0xD3,
+ (byte)0x9E, (byte)0x70, (byte)0x9C, (byte)0xAC,
+ (byte)0x8F, (byte)0xAE, (byte)0x95, (byte)0x7D,
+ (byte)0x9C, (byte)0xB0, (byte)0x97, (byte)0xB6,
+ (byte)0xA0, (byte)0xBD, (byte)0x8A, (byte)0xDF,
+ (byte)0x9E, (byte)0xAA, (byte)0x8F, (byte)0xBD,
+ (byte)0x8F, (byte)0xBF, (byte)0x93, (byte)0x69,
+ (byte)0x9B, (byte)0xA7, (byte)0xC8, (byte)0xA4,
+ (byte)0xFE, (byte)0xEA, (byte)0x9B, (byte)0xE1,
+ (byte)0x8B, (byte)0x41, (byte)0x9D, (byte)0xB6,
+ (byte)0xA0, (byte)0xEB, (byte)0x9B, (byte)0xA3,
+ (byte)0x8B, (byte)0xA1, (byte)0x8F, (byte)0xC8,
+ (byte)0x89, (byte)0x4C, (byte)0x98, (byte)0x60,
+ (byte)0x94, (byte)0xC7, (byte)0x8B, (byte)0x58,
+ (byte)0x95, (byte)0xAB, (byte)0x95, (byte)0xAA,
+ (byte)0x9C, (byte)0xC3, (byte)0x9C, (byte)0xC4,
+ (byte)0x93, (byte)0xD6, (byte)0x9D, (byte)0xAC,
+ (byte)0x8B, (byte)0xE6, (byte)0x8A, (byte)0x71,
+ (byte)0x8F, (byte)0xD1, (byte)0x99, (byte)0xD5,
+ (byte)0x90, (byte)0xF4, (byte)0x8A, (byte)0xA3,
+ (byte)0x9C, (byte)0xCE, (byte)0x9C, (byte)0xD4,
+ (byte)0x9C, (byte)0xD5, (byte)0xFB, (byte)0xC8,
+ (byte)0x9D, (byte)0xB3, (byte)0xFC, (byte)0x70,
+ (byte)0x8F, (byte)0xD7, (byte)0x9B, (byte)0x73,
+ (byte)0xFA, (byte)0x5B, (byte)0x8F, (byte)0xD2,
+ (byte)0x90, (byte)0x64, (byte)0x98, (byte)0xB6,
+ (byte)0x96, (byte)0x68, (byte)0x9C, (byte)0xD6,
+ (byte)0x98, (byte)0xBD, (byte)0x8F, (byte)0xDC,
+ (byte)0xFE, (byte)0xF6, (byte)0x8F, (byte)0xD9,
+ (byte)0x95, (byte)0x41, (byte)0x97, (byte)0xF3,
+ (byte)0x9B, (byte)0xF8, (byte)0x9E, (byte)0x6C,
+ (byte)0x8F, (byte)0xF2, (byte)0x8F, (byte)0xEE,
+ (byte)0x9C, (byte)0xD7, (byte)0x9E, (byte)0x6E,
+ (byte)0x8A, (byte)0x40, (byte)0x8F, (byte)0xEF,
+ (byte)0x8F, (byte)0xF4, (byte)0x8F, (byte)0xF5,
+ (byte)0x95, (byte)0xC2, (byte)0x98, (byte)0x6A,
+ (byte)0x97, (byte)0xCF, (byte)0x9E, (byte)0x7C,
+ (byte)0x90, (byte)0x41, (byte)0x9C, (byte)0xDB,
+ (byte)0x94, (byte)0x41, (byte)0x9C, (byte)0xE6,
+ (byte)0x9D, (byte)0xB0, (byte)0x9C, (byte)0xEA,
+ (byte)0x9C, (byte)0xED, (byte)0x9C, (byte)0xFA,
+ (byte)0x8B, (byte)0x62, (byte)0x8A, (byte)0x4E,
+ (byte)0x9C, (byte)0xCA, (byte)0x8A, (byte)0x66,
+ (byte)0x9C, (byte)0xFB, (byte)0x9C, (byte)0xFC,
+ (byte)0x9C, (byte)0xFE, (byte)0x8A, (byte)0x53,
+ (byte)0x9C, (byte)0xE5, (byte)0x9D, (byte)0x40,
+ (byte)0x9D, (byte)0x41, (byte)0x90, (byte)0x45,
+ (byte)0x8B, (byte)0x73, (byte)0x97, (byte)0xCA,
+ (byte)0x9D, (byte)0x42, (byte)0x8A, (byte)0x61,
+ (byte)0x8B, (byte)0xAE, (byte)0x8A, (byte)0xD2,
+ (byte)0x8B, (byte)0xA2, (byte)0x9D, (byte)0xF2,
+ (byte)0x9D, (byte)0x43, (byte)0x9C, (byte)0xDF,
+ (byte)0x9D, (byte)0x44, (byte)0x8E, (byte)0xCA,
+ (byte)0x90, (byte)0x4E, (byte)0x8E, (byte)0xB3,
+ (byte)0x9F, (byte)0xF5, (byte)0x9D, (byte)0x45,
+ (byte)0x90, (byte)0x4F, (byte)0x9D, (byte)0x47,
+ (byte)0x89, (byte)0xCA, (byte)0x9C, (byte)0xB5,
+ (byte)0xFB, (byte)0xFE, (byte)0x90, (byte)0x5E,
+ (byte)0x90, (byte)0x63, (byte)0x90, (byte)0x57,
+ (byte)0x90, (byte)0x66, (byte)0x9B, (byte)0xC0,
+ (byte)0xFC, (byte)0xE5, (byte)0x91, (byte)0x62,
+ (byte)0x90, (byte)0x67, (byte)0x8F, (byte)0xA1,
+ (byte)0x8F, (byte)0xA2, (byte)0x9D, (byte)0x48,
+ (byte)0xFA, (byte)0xD3, (byte)0x90, (byte)0x5D,
+ (byte)0x90, (byte)0xB9, (byte)0x90, (byte)0x6B,
+ (byte)0x8C, (byte)0x5C, (byte)0x90, (byte)0x69,
+ (byte)0xFE, (byte)0x57, (byte)0xFE, (byte)0x55,
+ (byte)0x90, (byte)0x73, (byte)0x9B, (byte)0xEF,
+ (byte)0x9C, (byte)0xF0, (byte)0x9D, (byte)0x4B,
+ (byte)0xFE, (byte)0xD9, (byte)0xFE, (byte)0xDA,
+ (byte)0x91, (byte)0xE0, (byte)0x91, (byte)0xD8,
+ (byte)0x96, (byte)0x46, (byte)0x93, (byte)0x60,
+ (byte)0xFA, (byte)0x53, (byte)0x9C, (byte)0xD3,
+ (byte)0x9D, (byte)0x4E, (byte)0xFB, (byte)0x40,
+ (byte)0x8D, (byte)0xE2, (byte)0x94, (byte)0x42,
+ (byte)0x90, (byte)0x56, (byte)0x98, (byte)0x65,
+ (byte)0x8C, (byte)0x6C, (byte)0xFA, (byte)0x4A,
+ (byte)0x9D, (byte)0x50, (byte)0x9D, (byte)0x52,
+ (byte)0x95, (byte)0xAF, (byte)0x97, (byte)0x5A,
+ (byte)0x93, (byte)0x49, (byte)0x97, (byte)0x47,
+ (byte)0xA0, (byte)0xF4, (byte)0x97, (byte)0x78,
+ (byte)0x8F, (byte)0xCF, (byte)0xFC, (byte)0x60,
+ (byte)0x8C, (byte)0x4E, (byte)0xFC, (byte)0x56,
+ (byte)0x91, (byte)0xDC, (byte)0x96, (byte)0x61,
+ (byte)0x92, (byte)0xEC, (byte)0x93, (byte)0x5D,
+ (byte)0x8E, (byte)0xDE, (byte)0x96, (byte)0xFE,
+ (byte)0xFD, (byte)0x4F, (byte)0x95, (byte)0xDE,
+ (byte)0x98, (byte)0xB0, (byte)0xA0, (byte)0x40,
+ (byte)0x97, (byte)0xBD, (byte)0x97, (byte)0x7D,
+ (byte)0x97, (byte)0xF5, (byte)0x9B, (byte)0xAC,
+ (byte)0xFA, (byte)0xDA, (byte)0x92, (byte)0xC2,
+ (byte)0x97, (byte)0xB1, (byte)0x90, (byte)0x7B,
+ (byte)0x93, (byte)0xFE, (byte)0x94, (byte)0x7B,
+ (byte)0x97, (byte)0x77, (byte)0xFA, (byte)0xBE,
+ (byte)0xFD, (byte)0x43, (byte)0x90, (byte)0xC6,
+ (byte)0x90, (byte)0xA4, (byte)0x90, (byte)0xA8,
+ (byte)0x94, (byte)0xA9, (byte)0x90, (byte)0xA9,
+ (byte)0x8C, (byte)0x65, (byte)0x95, (byte)0xE0,
+ (byte)0x90, (byte)0x7D, (byte)0x92, (byte)0x65,
+ (byte)0xFD, (byte)0xBA, (byte)0x93, (byte)0xC4,
+ (byte)0xFE, (byte)0xED, (byte)0x9D, (byte)0xAB,
+ (byte)0xA0, (byte)0xE3, (byte)0x96, (byte)0x48,
+ (byte)0x9D, (byte)0x53, (byte)0x8A, (byte)0xA9,
+ (byte)0x9B, (byte)0xC5, (byte)0x96, (byte)0x5D,
+ (byte)0x97, (byte)0x5F, (byte)0x96, (byte)0x5F,
+ (byte)0x96, (byte)0x6E, (byte)0xFB, (byte)0x5D,
+ (byte)0x9D, (byte)0xB1, (byte)0xFE, (byte)0xA3,
+ (byte)0x9D, (byte)0xB2, (byte)0x95, (byte)0xAE,
+ (byte)0xFC, (byte)0xA3, (byte)0xA0, (byte)0xA2,
+ (byte)0x96, (byte)0x55, (byte)0x9D, (byte)0x54,
+ (byte)0x93, (byte)0x41, (byte)0x95, (byte)0xAD,
+ (byte)0x91, (byte)0xD5, (byte)0x97, (byte)0x7A,
+ (byte)0xFD, (byte)0xFC, (byte)0x8E, (byte)0x47,
+ (byte)0x93, (byte)0xFD, (byte)0x90, (byte)0xA5,
+ (byte)0x90, (byte)0xAC, (byte)0x95, (byte)0xAC,
+ (byte)0x90, (byte)0xAE, (byte)0xFE, (byte)0xA5,
+ (byte)0x9D, (byte)0x56, (byte)0x97, (byte)0xE3,
+ (byte)0x95, (byte)0xE2, (byte)0x94, (byte)0x66,
+ (byte)0x96, (byte)0x47, (byte)0x91, (byte)0xB8,
+ (byte)0x9C, (byte)0xEC, (byte)0x90, (byte)0xAD,
+ (byte)0x95, (byte)0xE3, (byte)0x8B, (byte)0x4F,
+ (byte)0x8A, (byte)0xE3, (byte)0x8B, (byte)0x4D,
+ (byte)0x95, (byte)0xEA, (byte)0x8B, (byte)0x4E,
+ (byte)0x8C, (byte)0xC1, (byte)0x8B, (byte)0xED,
+ (byte)0x91, (byte)0xD9, (byte)0xA0, (byte)0xA4,
+ (byte)0x95, (byte)0xF5, (byte)0x95, (byte)0xF4,
+ (byte)0x9F, (byte)0xB3, (byte)0xFE, (byte)0xAF,
+ (byte)0xFE, (byte)0x72, (byte)0x92, (byte)0x7A,
+ (byte)0xFE, (byte)0xAC, (byte)0x95, (byte)0xF3,
+ (byte)0x9D, (byte)0x58, (byte)0x93, (byte)0x72,
+ (byte)0x91, (byte)0xC5, (byte)0x96, (byte)0x42,
+ (byte)0x90, (byte)0xCD, (byte)0x95, (byte)0xFE,
+ (byte)0x91, (byte)0x59, (byte)0x9C, (byte)0x65,
+ (byte)0x97, (byte)0xCC, (byte)0x90, (byte)0xCE,
+ (byte)0x9D, (byte)0x59, (byte)0xFC, (byte)0xF5,
+ (byte)0xFE, (byte)0xFD, (byte)0x9D, (byte)0x5B,
+ (byte)0x9D, (byte)0x5C, (byte)0x93, (byte)0x7E,
+ (byte)0x98, (byte)0xAC, (byte)0x9D, (byte)0x5E,
+ (byte)0xFD, (byte)0xD0, (byte)0xFD, (byte)0x60,
+ (byte)0x9C, (byte)0xCF, (byte)0x90, (byte)0xDD,
+ (byte)0x90, (byte)0xE0, (byte)0x90, (byte)0xF3,
+ (byte)0x98, (byte)0xB1, (byte)0x90, (byte)0xF0,
+ (byte)0x93, (byte)0xBD, (byte)0x95, (byte)0xB7,
+ (byte)0x9F, (byte)0x46, (byte)0x8E, (byte)0x4B,
+ (byte)0x96, (byte)0x58, (byte)0x8A, (byte)0x4C,
+ (byte)0x9D, (byte)0x63, (byte)0x9E, (byte)0xCF,
+ (byte)0x9D, (byte)0x65, (byte)0x9D, (byte)0x66,
+ (byte)0x96, (byte)0x5A, (byte)0x9D, (byte)0x64,
+ (byte)0x8A, (byte)0x6C, (byte)0x8A, (byte)0xD9,
+ (byte)0x9D, (byte)0x67, (byte)0x8A, (byte)0x70,
+ (byte)0x8B, (byte)0xF3, (byte)0x91, (byte)0x50,
+ (byte)0x9C, (byte)0xC1, (byte)0x9D, (byte)0x68,
+ (byte)0x93, (byte)0xA7, (byte)0x96, (byte)0x74,
+ (byte)0xA0, (byte)0xEF, (byte)0x91, (byte)0x51,
+ (byte)0x96, (byte)0xC1, (byte)0x8C, (byte)0x64,
+ (byte)0x96, (byte)0x76, (byte)0x9D, (byte)0x69,
+ (byte)0xFC, (byte)0xA4, (byte)0x9D, (byte)0x6A,
+ (byte)0x92, (byte)0x4E, (byte)0x9D, (byte)0x6B,
+ (byte)0x9B, (byte)0xC1, (byte)0x9D, (byte)0x6C,
+ (byte)0x8A, (byte)0x65, (byte)0x91, (byte)0x5D,
+ (byte)0x9D, (byte)0x6D, (byte)0x91, (byte)0x5A,
+ (byte)0x8C, (byte)0x42, (byte)0x9C, (byte)0xC0,
+ (byte)0x91, (byte)0x6A, (byte)0x9D, (byte)0x6E,
+ (byte)0x9E, (byte)0xA6, (byte)0x9D, (byte)0xCD,
+ (byte)0x9D, (byte)0x6F, (byte)0x89, (byte)0xBB,
+ (byte)0x9E, (byte)0xF9, (byte)0x96, (byte)0xB4,
+ (byte)0x91, (byte)0x72, (byte)0x9E, (byte)0xC8,
+ (byte)0x8B, (byte)0x55, (byte)0x9D, (byte)0x71,
+ (byte)0x9D, (byte)0x72, (byte)0x9E, (byte)0xCC,
+ (byte)0x91, (byte)0x74, (byte)0x9E, (byte)0xD0,
+ (byte)0x90, (byte)0x5C, (byte)0x8E, (byte)0xD2,
+ (byte)0x91, (byte)0xA8, (byte)0x91, (byte)0x77,
+ (byte)0x96, (byte)0xBF, (byte)0x96, (byte)0xC0,
+ (byte)0x8F, (byte)0xB1, (byte)0x96, (byte)0xB7,
+ (byte)0x8C, (byte)0x55, (byte)0x91, (byte)0x78,
+ (byte)0x89, (byte)0xBE, (byte)0x91, (byte)0x7C,
+ (byte)0xFB, (byte)0x77, (byte)0x91, (byte)0x75,
+ (byte)0x91, (byte)0xA3, (byte)0x91, (byte)0x76,
+ (byte)0x96, (byte)0xBE, (byte)0x91, (byte)0x79,
+ (byte)0x96, (byte)0xB6, (byte)0x91, (byte)0xA4,
+ (byte)0x91, (byte)0xA6, (byte)0x9D, (byte)0x75,
+ (byte)0x90, (byte)0x52, (byte)0xA0, (byte)0x45,
+ (byte)0x91, (byte)0xA9, (byte)0x98, (byte)0xAA,
+ (byte)0x8C, (byte)0x5F, (byte)0x8B, (byte)0xAA,
+ (byte)0x9C, (byte)0xDD, (byte)0x9D, (byte)0x77,
+ (byte)0x89, (byte)0x40, (byte)0x9E, (byte)0xEC,
+ (byte)0x93, (byte)0xAA, (byte)0x94, (byte)0x78,
+ (byte)0x9D, (byte)0x7A, (byte)0x8A, (byte)0xC9,
+ (byte)0x8B, (byte)0x4B, (byte)0x9F, (byte)0xEC,
+ (byte)0x8A, (byte)0xE2, (byte)0x9E, (byte)0x75,
+ (byte)0x98, (byte)0x74, (byte)0x9A, (byte)0xC8,
+ (byte)0xA0, (byte)0x47, (byte)0x8B, (byte)0xC3,
+ (byte)0xFC, (byte)0x48, (byte)0xFC, (byte)0x77,
+ (byte)0x9C, (byte)0x52, (byte)0x8E, (byte)0xFD,
+ (byte)0x8F, (byte)0xA8, (byte)0x95, (byte)0x7A,
+ (byte)0x8F, (byte)0xF0 };
+
+
+ /*
+ * Tests the roundtrip integrity and expected encoding
+ * correctness for a String containing the 1651 surrogate
+ * pairs equivalent to 1651 supplementary characters whose
+ * mappings are covered by HKSCS (2001)
+ */
+
+ public static void main(String[] args) throws Exception {
+ char[] surrogatePair = new char[2];
+
+ for (int i=0, j=0 ; j < expectBytes.length ; i++, j+=2) {
+ surrogatePair[0] = (char) ((suppValues[i] - 0x10000) / 0x400 + 0xd800);
+ surrogatePair[1] = (char) ((suppValues[i] - 0x10000) % 0x400 + 0xdc00);
+ String testStr = new String(surrogatePair);
+ byte[] encodedBytes = testStr.getBytes("Big5-HKSCS");
+
+ if (encodedBytes[0] != expectBytes[j]
+ && encodedBytes[1] != expectBytes[j+1])
+ throw new Exception("HKSCS Surrogate Encoder error");
+
+ String decoded = new String(encodedBytes, "Big5-HKSCS");
+
+ if (!decoded.equals(testStr)) {
+ throw new Exception("HKSCS Decoder error");
+ }
+ }
+ }
+}
diff --git a/test/sun/nio/cs/Test4200310.sh b/test/sun/nio/cs/Test4200310.sh
new file mode 100644
index 000000000..cc38a66da
--- /dev/null
+++ b/test/sun/nio/cs/Test4200310.sh
@@ -0,0 +1,41 @@
+#
+# Copyright 2008 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.
+#
+# 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.
+#
+# @test
+# @bug 4200310
+# @summary make sure class files are not duplicated between rt.jar,
+# charsets.jar, and localedata.jar
+# @author Norbert Lindenberg
+# @run shell Test4200310.sh
+
+2>1 $TESTJAVA/bin/jar -tf "$TESTJAVA/jre/lib/rt.jar" > class-list
+2>1 $TESTJAVA/bin/jar -tf "$TESTJAVA/jre/lib/charsets.jar" >> class-list
+2>1 $TESTJAVA/bin/jar -tf "$TESTJAVA/jre/lib/ext/localedata.jar" >> class-list
+duplicates=`grep '\.class$' class-list | sort | uniq -d`
+
+rm -f class-list
+if [ "$duplicates" != "" ]; then
+ echo FAILED: $duplicates are duplicated between rt.jar, charsets.jar, and localedata.jar
+ exit 1
+fi
+
+exit 0
diff --git a/test/sun/nio/cs/Test4206507.java b/test/sun/nio/cs/Test4206507.java
new file mode 100644
index 000000000..15097d787
--- /dev/null
+++ b/test/sun/nio/cs/Test4206507.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4206507
+ @summary verify that we can obtain and use a converter for encoding
+ ISO8859-9 in the Turkish locale.
+ */
+
+import java.util.Locale;
+import java.io.UnsupportedEncodingException;
+
+public class Test4206507 {
+ public static void main(String[] args) throws UnsupportedEncodingException {
+ Locale.setDefault(new Locale("tr", "TR"));
+ byte[] b = "".getBytes("ISO8859-9");
+ }
+}
diff --git a/test/sun/nio/cs/Test6254467.java b/test/sun/nio/cs/Test6254467.java
new file mode 100644
index 000000000..bc508574d
--- /dev/null
+++ b/test/sun/nio/cs/Test6254467.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 6254467
+ @summary Checks if Charset.forName() accepts legal IANA alias names
+ for charset IBM037.
+ */
+import java.nio.charset.Charset;
+
+public class Test6254467 {
+ public static void main (String[] args) throws Exception {
+ Charset ebcdic = Charset.forName("ebcdic-cp-us");
+ ebcdic = Charset.forName("ebcdic-cp-ca");
+ ebcdic = Charset.forName("ebcdic-cp-wt");
+ ebcdic = Charset.forName("ebcdic-cp-nl");
+ }
+}
diff --git a/test/sun/nio/cs/Test6275027.java b/test/sun/nio/cs/Test6275027.java
new file mode 100644
index 000000000..2658b3d33
--- /dev/null
+++ b/test/sun/nio/cs/Test6275027.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 6275027
+ @summary Check if StreamEncoder works correctly when fed with unpaired
+ surrogates.
+ */
+
+import java.io.*;
+public class Test6275027 {
+ public static void main( String arg[] ) throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ PrintStream ps = new PrintStream(baos);
+ ps.print("\uda00");
+ ps.print("\uda01");
+ ps.close();
+ if (!"??".equals(baos.toString()))
+ throw new Exception("failed");
+ }
+
+}
diff --git a/test/sun/nio/cs/Test6392804.java b/test/sun/nio/cs/Test6392804.java
new file mode 100644
index 000000000..d93343a0a
--- /dev/null
+++ b/test/sun/nio/cs/Test6392804.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ @bug 6392804
+ @summary Decoder fails to detect decoding error
+*/
+import java.nio.*;
+import java.nio.charset.*;
+
+public class Test6392804 {
+ public static void main(String[] args) throws Throwable {
+ test("ISO-2022-JP",
+ new byte[] {0x1b,(byte)0x8e, 0x24, 0x40, 0x0, 0x0});
+ test("ISO-2022-JP-2",
+ new byte[] {0x1b,(byte)0x8e, 0x24, 0x40, 0x0, 0x0});
+ test("x-windows-50220",
+ new byte[] {0x1b,(byte)0x8e, 0x24, 0x40, 0x0, 0x0});
+ test("x-windows-50221",
+ new byte[] {0x1b,(byte)0x8e, 0x24, 0x40, 0x0, 0x0});
+ test("x-windows-iso2022jp",
+ new byte[] {0x1b,(byte)0x8e, 0x24, 0x40, 0x0, 0x0});
+ test("EUC_TW",
+ new byte[] {(byte)0x8e, (byte)0xa8, (byte)0xad, (byte)0xe5});
+ //out of range second byte
+ test("EUC_TW",
+ new byte[] {(byte)0x8e, (byte)0x92, (byte)0xa1, (byte)0xa1});
+ test("EUC_TW",
+ new byte[] {(byte)0x8e, (byte)0x98, (byte)0xa1, (byte)0xa1});
+ }
+
+ static void test(String csn, byte[] bytes) throws Throwable {
+ CharsetDecoder dec = Charset.forName(csn).newDecoder();
+ CharBuffer cb = CharBuffer.allocate(1024);
+ CoderResult cr = dec.decode(ByteBuffer.wrap(bytes), cb, true);
+ if (cr.isUnderflow())
+ throw new RuntimeException(csn + " failed cr=" + cr);
+ }
+}
diff --git a/test/sun/nio/cs/TestCompoundTest.java b/test/sun/nio/cs/TestCompoundTest.java
new file mode 100644
index 000000000..a75f35641
--- /dev/null
+++ b/test/sun/nio/cs/TestCompoundTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ * @bug 6427981
+ * @summary Check the Compound_Text's canonical name and its aliases
+ */
+
+import java.nio.charset.*;
+import java.util.Set;
+
+public class TestCompoundTest {
+
+ public static void main(String args[]) throws Exception
+ {
+ if (System.getProperty("os.name").startsWith("Windows"))
+ return;
+ Charset cs = Charset.forName("COMPOUND_TEXT");
+ if (!cs.name().startsWith("x-"))
+ throw new RuntimeException("FAILED: name does not start with x-");
+ Set<String> aliases = cs.aliases();
+ if (!aliases.contains("COMPOUND_TEXT") ||
+ !aliases.contains("x-compound-text") ||
+ !aliases.contains("x11-compound_text"))
+ throw new RuntimeException("FAILED: alias name is missing");
+ }
+}
diff --git a/test/sun/nio/cs/TestConverterDroppedCharacters.java b/test/sun/nio/cs/TestConverterDroppedCharacters.java
new file mode 100644
index 000000000..985ca6175
--- /dev/null
+++ b/test/sun/nio/cs/TestConverterDroppedCharacters.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4122961
+ @summary Verify that converters don't drop characters on buffer boundaries
+
+ This is a slightly modified version of the attachment supplied with the
+ bug report.
+ */
+import java.io.*;
+
+public class TestConverterDroppedCharacters {
+ public static void main(String args[])
+ throws java.io.IOException, java.io.UnsupportedEncodingException,
+ java.io.FileNotFoundException
+ {
+ /* Try misc. encodings, many are broken. */
+ tryEncoding("Big5");
+ tryEncoding("CNS11643");
+ tryEncoding("Cp1006");
+ tryEncoding("Cp1381");
+ tryEncoding("Cp33722");
+ tryEncoding("GB2312");
+ tryEncoding("KSC5601");
+ tryEncoding("SJIS");
+ tryEncoding("UTF8");
+ }
+
+ static void tryEncoding(String encoding)
+ throws java.io.IOException, java.io.UnsupportedEncodingException,
+ java.io.FileNotFoundException
+ {
+ String filename = "OUTPUT";
+ int goesBadAfter = 8193;
+ int i;
+ char data[] = new char[goesBadAfter+1];
+
+ System.out.println("Testing " + encoding);
+
+ /* Create some data */
+ for(i = 0; i < goesBadAfter; i++) {
+ data[i] = (char)((i % 0x7f) + 1);
+ }
+
+ /* Write the data out to a file. */
+ FileOutputStream fout = new FileOutputStream(filename);
+ OutputStreamWriter ow = new OutputStreamWriter(fout, encoding);
+ BufferedWriter fd = new BufferedWriter(ow);
+ fd.write(data,0,goesBadAfter);
+ fd.close();
+
+ /* Now read it back with the same encoding. */
+ char buf[] = new char[goesBadAfter+1];
+ FileInputStream fin = new FileInputStream("OUTPUT");
+ InputStreamReader ir = new InputStreamReader(fin, encoding);
+ ir.read(buf,0,goesBadAfter);
+ ir.close();
+
+ /* And check to see if what we wrote is what we got back. */
+ for(i = 0; i < goesBadAfter; i++) {
+ if (data[i] != buf[i]) {
+ System.out.println("ERROR with encoding " + encoding
+ + ": Data wrong at position " + i + " "
+ + "in: " + (int)data[i] + " "
+ + "out: " + (int)buf[i]);
+ throw new RuntimeException();
+ }
+ }
+ System.out.println("Successfully tested " + encoding);
+ }
+}
diff --git a/test/sun/nio/cs/TestCp834_SBCS.java b/test/sun/nio/cs/TestCp834_SBCS.java
new file mode 100644
index 000000000..06c939dbb
--- /dev/null
+++ b/test/sun/nio/cs/TestCp834_SBCS.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 6379808
+ @summary Check all Cp933 SBCS characters are not supported in Cp834
+ */
+
+import sun.io.*;
+import java.io.*;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class TestCp834_SBCS {
+ public static void main(String args[]) throws Exception {
+ // The correctness of 1:1 mapping is Coverted by CoderTest.java
+ // and TestConv.java, we only need to verify that SBCS characters
+ // are not supported by this charset.
+ CharToByteConverter cb834 = CharToByteConverter.getConverter("Cp834");
+ ByteToCharConverter bc834 = ByteToCharConverter.getConverter("Cp834");
+ CharsetEncoder enc834 = Charset.forName("Cp834")
+ .newEncoder()
+ .onUnmappableCharacter(CodingErrorAction.REPLACE)
+ .onMalformedInput(CodingErrorAction.REPLACE);
+
+ CharsetDecoder dec834 = Charset.forName("Cp834")
+ .newDecoder()
+ .onUnmappableCharacter(CodingErrorAction.REPLACE)
+ .onMalformedInput(CodingErrorAction.REPLACE);
+
+ CharsetDecoder dec933 = Charset.forName("Cp933")
+ .newDecoder()
+ .onUnmappableCharacter(CodingErrorAction.REPLACE)
+ .onMalformedInput(CodingErrorAction.REPLACE);
+ byte[] ba = new byte[1];
+ byte[] ba2 = new byte[2];
+ ByteBuffer dbb = ByteBuffer.allocateDirect(10);
+ char[] ca = new char[1];
+ char c;
+ for (int i = 0; i <= 0xff; i++) {
+ if (i != 0xe && i != 0xf) { // no SI/SO
+ ba[0] = (byte)i;
+ CharBuffer cb = dec933.decode(ByteBuffer.wrap(ba));
+ if ((c = cb.get()) != '\ufffd') {
+ // OK, this is a SBCS character in Cp933
+ if (dec834.decode(ByteBuffer.wrap(ba)).get() != '\ufffd')
+ throw new Exception("SBCS is supported in IBM834 decoder");
+
+ if (enc834.canEncode(c))
+ throw new Exception("SBCS can be encoded in IBM834 encoder");
+
+ ca[0] = c;
+ ByteBuffer bb = enc834.encode(CharBuffer.wrap(ca));
+ if (bb.get() != (byte)0xfe || bb.get() != (byte)0xfe)
+ throw new Exception("SBCS is supported in IBM834 encoder");
+
+ boolean isMalformed = false;
+ int ret = 0;
+ bc834.reset();
+ try {
+ ret = bc834.convert(ba, 0, 1, ca, 0, 1);
+ } catch (sun.io.MalformedInputException x) { isMalformed = true; }
+ if (!isMalformed && ret != 0 && ca[0] != '\ufffd') {
+ // three scenarios (1)malformed (2)held as an incomplete
+ // input or (3)return replacement all mean "no sbcs"
+ throw new Exception("SBCS is supported in Cp834 b2c");
+ }
+
+ if (cb834.canConvert(c))
+ throw new Exception("SBCS can be converted in Cp834 c2b ");
+
+ ca[0] = c;
+ if (cb834.convert(ca, 0, 1, ba2, 0, 2) != 2 ||
+ ba2[0] != (byte)0xfe || ba2[1] != (byte)0xfe) {
+ throw new Exception("SBCS is supported in Cp834 c2b");
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/test/sun/nio/cs/TestCp93xSISO.java b/test/sun/nio/cs/TestCp93xSISO.java
new file mode 100644
index 000000000..4a9de28da
--- /dev/null
+++ b/test/sun/nio/cs/TestCp93xSISO.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4429358
+ @summary Remove illegal SI/SO char to byte mappings
+ */
+
+public class TestCp93xSISO {
+ public static void main ( String[] args) throws Exception {
+ int exceptionCount = 0;
+ String[] encName = {"Cp930", "Cp933", "Cp935", "Cp937", "Cp939" };
+
+ String s = "\u000e\u000f" ;
+
+ for ( int i=0; i < encName.length; i++) { // Test 2 converters.
+ try {
+ byte[] encoded = s.getBytes(encName[i]);
+ for (int j=0 ; j<encoded.length; j++) {
+ if (encoded[j] != (byte)0x6f) // Expect to map to 0x6f
+ exceptionCount++;
+ }
+ } catch (Throwable t) {
+ System.err.println("error with converter " + encName[i]);
+ exceptionCount++;
+ }
+ }
+
+ if (exceptionCount > 0)
+ throw new Exception ("bug4429369: Cp93x SI/SO Ch->Byte mappings incorrect");
+ }
+}
diff --git a/test/sun/nio/cs/TestIBMBugs.java b/test/sun/nio/cs/TestIBMBugs.java
new file mode 100644
index 000000000..dcca1ed88
--- /dev/null
+++ b/test/sun/nio/cs/TestIBMBugs.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 6371437 6371422 6371416 6371619 5058184 6371431
+ @summary Check if the problems reported in above bugs have been fixed
+ */
+
+import java.io.*;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class TestIBMBugs {
+
+ private static void bug6371437() throws Exception {
+ CharsetEncoder converter = Charset.forName("Cp933").newEncoder();
+ converter = converter.onMalformedInput(CodingErrorAction.REPORT);
+ converter = converter.onUnmappableCharacter(CodingErrorAction.REPORT);
+ CharBuffer in = CharBuffer.wrap(new char[] { (char)4352 });
+ try {
+ ByteBuffer out = converter.encode(in);
+ } catch (CharacterCodingException e) { }
+ }
+
+ private static void bug6371422() throws Exception {
+ String[] charsets = { "Cp949", "Cp949C" };
+ for (int n = 0; n < charsets.length; n++) {
+ String charset = charsets[n];
+ CharsetEncoder converter = Charset.forName(charset).newEncoder();
+ converter = converter.onMalformedInput(CodingErrorAction.REPORT);
+ converter = converter.onUnmappableCharacter(CodingErrorAction.REPORT);
+ int errors = 0;
+ for (int i = 1; i < 0x1ffff; i++) {
+ if (i >= 0x1100 && i <= 0x11f9)
+ continue; //Dont try leading consonant, vowel and trailing
+ //consonant as a single char
+ char[] in = (i < 0x10000
+ ? new char[] { (char)i }
+ : new char[] { (char)(0xd800 + ((i - 0x10000) >> 10)),
+ (char)(0xdc00 + ((i - 0x10000) & 0x3ff)) });
+
+ try {
+ ByteBuffer out = converter.encode(CharBuffer.wrap(in));
+ if (out.remaining() == 0 ||
+ (out.remaining() == 1 && out.get(0) == 0x00)) {
+ errors++;
+ }
+ } catch (CharacterCodingException e) { }
+ }
+ if (errors > 0)
+ throw new Exception("Charset "+charset+": "+errors+" errors");
+ }
+ }
+
+ private static void bug6371416() throws Exception {
+ String[] charsets = { "Cp933", "Cp949", "Cp949C", "Cp970"};
+ for (int n = 0; n < charsets.length; n++) {
+ String charset = charsets[n];
+ CharsetEncoder converter = Charset.forName(charset).newEncoder();
+ converter = converter.onMalformedInput(CodingErrorAction.REPORT);
+ converter = converter.onUnmappableCharacter(CodingErrorAction.REPORT);
+ int errors = 0;
+ for (int i = 0xd800; i < 0xe000; i++) {
+ char[] in = new char[] { (char)i };
+ try {
+ ByteBuffer out = converter.encode(CharBuffer.wrap(in));
+ if (out.remaining() == 0)
+ errors++;
+ } catch (CharacterCodingException e) { }
+ }
+ if (errors > 0)
+ throw new Exception("Charset "+charset+": "+errors+" errors");
+ }
+ }
+
+ private static void bug6371619() throws Exception {
+ String encoding = "Cp964";
+ Charset charset = Charset.forName(encoding);
+ CharsetDecoder converter = charset.newDecoder();
+ converter = converter.onMalformedInput(CodingErrorAction.REPORT);
+ converter = converter.onUnmappableCharacter(CodingErrorAction.REPORT);
+ int errors = 0;
+ for (int b = 0x80; b < 0x100; b++)
+ if (!(b == 0x8e || // 0x8e is a SS2
+ (b >= 0x80 && b <= 0x8d) || (b >= 0x90 && b <= 0x9f))) {
+ ByteBuffer in = ByteBuffer.wrap(new byte[] { (byte)b });
+ try {
+ CharBuffer out = converter.decode(in);
+ if (out.length() == 0) {
+ errors++;
+ }
+ } catch (CharacterCodingException e) { }
+ }
+ if (errors > 0)
+ throw new Exception("Charset "+charset+": "+errors+" errors");
+ }
+
+
+ private static void bug6371431() throws Exception {
+ String encoding = "Cp33722";
+ Charset charset = Charset.forName(encoding);
+ CharsetDecoder converter = charset.newDecoder();
+ converter = converter.onMalformedInput(CodingErrorAction.REPORT);
+ converter = converter.onUnmappableCharacter(CodingErrorAction.REPORT);
+ int errors = 0;
+ for (int b = 0xa0; b < 0x100; b++) {
+ ByteBuffer in = ByteBuffer.wrap(new byte[] { (byte)b });
+ try {
+ CharBuffer out = converter.decode(in);
+ if (out.length() == 0) {
+ errors++;
+ }
+ } catch (CharacterCodingException e) { }
+ }
+ if (errors > 0)
+ throw new Exception("Charset "+charset+": "+errors+" errors");
+ }
+
+ public static void main (String[] args) throws Exception {
+ bug6371437();
+ bug6371422();
+ bug6371416();
+ bug6371619();
+ bug6371431();
+ }
+}
diff --git a/test/sun/nio/cs/TestISCII91.java b/test/sun/nio/cs/TestISCII91.java
new file mode 100644
index 000000000..01b05bafd
--- /dev/null
+++ b/test/sun/nio/cs/TestISCII91.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 6431650
+ @summary Check charset ISCII91 and C2B/B2CISCII91 yield same encoding/decoding result
+ */
+
+
+import java.nio.*;
+import java.nio.charset.*;
+import sun.io.*;
+
+public class TestISCII91 {
+ public static void main(String[] args) throws Throwable{
+ CharToByteConverter c2b = new CharToByteISCII91();
+ ByteToCharConverter b2c = new ByteToCharISCII91();
+ Charset cs = Charset.forName("ISCII91");
+ String charsToEncode = getCharsForEncoding("ISCII91");
+
+ byte [] c2bBytes = c2b.convertAll(charsToEncode.toCharArray());
+ byte [] csBytes = cs.encode(charsToEncode).array();
+ for (int i = 0; i < c2bBytes.length; ++i) {
+ if (c2bBytes[i] != csBytes[i])
+ throw new RuntimeException("ISCII91 encoding failed!");
+ }
+
+ char[] c2bChars = b2c.convertAll(c2bBytes);
+ char[] csChars = cs.decode(ByteBuffer.wrap(csBytes)).array();
+ for (int i = 0; i < c2bChars.length; ++i) {
+ if (c2bChars[i] != csChars[i])
+ throw new RuntimeException("ISCII91 decoding failed!");
+ }
+ }
+
+
+ static String getCharsForEncoding(String encodingName)
+ throws CharacterCodingException{
+ Charset set = Charset.forName(encodingName);
+ CharBuffer chars = CharBuffer.allocate(300);
+ CharsetEncoder encoder = set.newEncoder();
+ for (int c = 0; chars.remaining() > 0 && c < Character.MAX_VALUE; ++c) {
+ if (Character.isDefined((char) c) && !Character.isISOControl((char) c) && encoder.canEncode((char) c)) {
+ chars.put((char) c);
+ }
+ }
+ chars.limit(chars.position());
+ chars.rewind();
+ return chars.toString();
+ }
+}
diff --git a/test/sun/nio/cs/TestISO2022CNDecoder.java b/test/sun/nio/cs/TestISO2022CNDecoder.java
new file mode 100644
index 000000000..f27ba85ff
--- /dev/null
+++ b/test/sun/nio/cs/TestISO2022CNDecoder.java
@@ -0,0 +1,440 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4779029 4924625 6392664
+ @summary Test decoding of various permutations of valid ISO-2022-CN byte sequences
+ */
+
+/*
+ * Regression test for NIO ISO-2022-CN decoder. Passes various valid
+ * ISO-2022-CN byte sequences to the decoder using the java.io
+ * InputStreamReader API
+ */
+
+import java.io.*;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class TestISO2022CNDecoder
+{
+ private static String encodingName = "ISO2022CN";
+
+ //
+ // Positive tests -- test both output and input processing against
+ // various "known good" data
+ //
+ private static boolean decodeTest (
+ byte encoded[],
+ char decoded[],
+ String label)
+ {
+ boolean retval = true;
+ int i = 0;
+
+ try {
+ //
+ // Ensure that reading decodes correctly
+ //
+ ByteArrayInputStream in;
+ InputStreamReader reader;
+
+ in = new ByteArrayInputStream(encoded);
+ reader = new InputStreamReader(in, encodingName);
+
+ for (i = 0; i < decoded.length; i++) {
+ int c = reader.read();
+
+ if (c != decoded[i]) {
+ System.err.print(label + ": read failed, char " + i);
+ System.err.print(" ... expected 0x"
+ + Integer.toHexString(decoded[i]));
+ if (c == -1)
+ System.err.println(", got EOF");
+ else
+ System.err.println(", got 0x"
+ + Integer.toHexString(c));
+ retval = false;
+ if (c == -1)
+ return retval;
+ }
+ }
+
+ int testChar;
+ if ((testChar = reader.read()) != -1) {
+ System.err.println(label + ": read failed, no EOF");
+ System.err.println("testChar is " +
+ Integer.toHexString((int)testChar));
+ return false;
+ }
+ String decodedString = new String(encoded, "ISO2022CN");
+
+ for (i = 0; i < decodedString.length(); i++) {
+ if (decodedString.charAt(i) != decoded[i])
+ System.err.println(label + ": read failed, char " + i);
+ }
+
+ CharsetDecoder dec = Charset.forName("ISO2022CN")
+ .newDecoder()
+ .onUnmappableCharacter(CodingErrorAction.REPLACE)
+ .onMalformedInput(CodingErrorAction.REPLACE);
+ ByteBuffer bb = ByteBuffer.allocateDirect(encoded.length).put(encoded);
+ bb.flip();
+ CharBuffer cb = ByteBuffer.allocateDirect(2*encoded.length*(int)dec.maxCharsPerByte())
+ .asCharBuffer();
+ if (bb.hasArray() || cb.hasArray()) {
+ System.err.println(label + ": directBuffer failed, ");
+ return false;
+ }
+ if (!dec.decode(bb, cb, true).isUnderflow()) {
+ System.err.println(label + ": decoder's decode() failed!");
+ return false;
+ }
+ cb.flip();
+ for (i = 0; i < cb.limit(); i++) {
+ if (cb.get() != decoded[i])
+ System.err.println(label + ": decoder failed, char " + i);
+ }
+
+ } catch (Exception e) {
+ System.err.println(label + ": failed "
+ + "(i = " + i + "), "
+ + e.getClass().getName()
+ + ", " + e.getMessage());
+ e.printStackTrace();
+ return false;
+ }
+ return retval;
+ }
+
+ private static boolean equal(CoderResult a, CoderResult b) {
+ return (a == CoderResult.OVERFLOW && b == CoderResult.OVERFLOW) ||
+ (a == CoderResult.UNDERFLOW && b == CoderResult.UNDERFLOW) ||
+ ((a.isError() == b.isError()) &&
+ (a.isMalformed() == b.isMalformed()) &&
+ (a.isUnmappable() == b.isUnmappable()) &&
+ (a.length() == b.length()));
+ }
+
+ private static boolean decodeResultTest (byte encoded[],
+ CoderResult expected,
+ String label) {
+ CharsetDecoder dec = Charset.forName("ISO2022CN").newDecoder();
+ ByteBuffer bb = ByteBuffer.wrap(encoded);
+ CharBuffer cb = CharBuffer.allocate(encoded.length*(int)dec.maxCharsPerByte());
+ CoderResult result = dec.decode(bb, cb, true);
+ if (!equal(result, expected)) {
+ System.err.println(label + ": decoder's decode() failed!");
+ return false;
+ }
+
+ bb = ByteBuffer.allocateDirect(encoded.length).put(encoded);
+ bb.flip();
+ cb = ByteBuffer.allocateDirect(2*encoded.length*(int)dec.maxCharsPerByte())
+ .asCharBuffer();
+ if (bb.hasArray() || cb.hasArray()) {
+ System.err.println(label + ": directBuffer failed, ");
+ return false;
+ }
+ result = dec.reset().decode(bb, cb, true);
+ if (!equal(result, expected)) {
+ System.err.println(label + ": decoder's decode() - direct failed!");
+ return false;
+ }
+ return true;
+ }
+
+ //
+ // Negative tests -- only for input processing, make sure that
+ // invalid or corrupt characters are rejected.
+ //
+ private static boolean negative (byte encoded [], String label)
+ {
+ try {
+ ByteArrayInputStream in;
+ InputStreamReader reader;
+ int c;
+
+ in = new ByteArrayInputStream(encoded);
+ reader = new InputStreamReader(in, encodingName);
+
+ c = reader.read();
+ System.err.print (label + ": read failed, ");
+
+ if (c == -1)
+ System.err.println("reported EOF");
+ else
+ System.err.println("returned char 0x"
+ + Integer.toHexString(c)
+ + ", expected exception");
+ return false;
+
+ } catch (CharConversionException e) {
+ return true;
+
+ } catch (Throwable t) {
+ System.err.println(label + ": failed, threw "
+ + t.getClass().getName()
+ + ", " + t.getMessage());
+ }
+ return false;
+ }
+
+ private static boolean decodeTest6392664 () {
+ try {
+ CharsetDecoder dec = Charset.forName("ISO-2022-CN-GB").newDecoder();
+ dec.decode(ByteBuffer.wrap(new byte[] {(byte)0x0e, (byte)0x42, (byte)0x43 }));
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ return true;
+ }
+
+ //
+ // TEST #0: 7-bit unshifted values,
+ // shift-in of a valid decodable GB2312-80
+ // character and an unmappable GB2312-80 char
+ // This is a positive test.
+ //
+ private static byte test0_bytes[] = {
+ (byte)0x00,
+ (byte)0x01, (byte)0x02, (byte)0x03,
+ (byte)0x0E, (byte)0x21, (byte)0x2f,
+ (byte)0x0E, (byte)0xDD, (byte)0x9f
+ };
+
+ private static char test0_chars[] = {
+ 0x0000,
+ 0x0001, 0x0002, 0x0003,
+ 0x2019,
+ 0xFFFD
+ };
+
+ private static byte test1_bytes[] = {
+ (byte)0x1b, (byte)0x24, (byte)0x29, (byte)0x41, (byte)0x21,
+ (byte)0x2f };
+
+ private static char test1_chars[] = {
+ 0x21, 0x2f
+ };
+
+ private static byte test2_bytes[] = {
+ (byte)0x0e,
+ (byte)0x1b, (byte)0x24, (byte)0x29, (byte)0x41,
+ (byte)0x21, (byte)0x2f };
+
+ private static char test2_chars[] = {
+ 0x2019
+ };
+
+ private static byte test3_bytes[] = {
+ (byte)0x1b, (byte)0x24, (byte)0x29, (byte)0x41,
+ (byte)0x0e,
+ (byte)0x21, (byte)0x2f };
+
+ private static byte test3a_bytes[] = {
+ (byte)0x1b, (byte)0x24, (byte)0x41,
+ (byte)0x0e,
+ (byte)0x21, (byte)0x2f };
+
+ private static char test3_chars[] = {
+ 0x2019
+ };
+
+ private static byte test4_bytes[] = {
+ (byte)0x1b, (byte)0x24, (byte)0x29, (byte)0x41,
+ (byte)0x0f,
+ (byte)0x21, (byte)0x2f };
+
+ private static char test4_chars[] = {
+ 0x21, 0x2f
+ };
+
+ private static byte test5_bytes[] = {
+ (byte)0x1b, (byte)0x24, (byte)0x29, (byte)0x41,
+ (byte)0x0e, (byte)0x21, (byte)0x2e,
+ (byte)0x0f, (byte)0x21, (byte)0x2f };
+
+ private static char test5_chars[] = {
+ 0x2018, 0x21, 0x2f
+ };
+
+ private static byte test6_bytes[] = {
+ (byte)0x1b, (byte)0x24, (byte)0x29, (byte)0x41,
+ (byte)0x0e, (byte)0x21, (byte)0x2e,
+ (byte)0x21, (byte)0x2f };
+
+ private static char test6_chars[] = {
+ 0x2018, 0x2019
+ };
+
+ private static byte test7_bytes[] = {
+ (byte)0x1b, (byte)0x24, (byte)0x29, (byte)'G',
+ (byte)0x0e, (byte)0x21, (byte)0x2e,
+ (byte)0x21, (byte)0x2f };
+
+ private static char test7_chars[] = {
+ 0xFE50, 0xFE51
+ };
+
+ private static byte test8_bytes[] = {
+ (byte)0x1b, (byte)0x24, (byte)0x29, (byte)'G',
+ (byte)0x0e, (byte)0x21, (byte)0x2e,
+ (byte)0x0f, (byte)0x21, (byte)0x2f };
+
+ private static char test8_chars[] = {
+ 0xFE50, 0x21, 0x2f
+ };
+
+ private static byte test9_bytes[] = {
+ (byte)0x1b, (byte)0x24, (byte)0x2a, (byte)'H',
+ (byte)0x1b, (byte)0x4e,
+ (byte)0x21, (byte)0x2f };
+
+ private static char test9_chars[] = {
+ 0x4e0e
+ };
+
+ /*
+ * Plane 3 support provided for compatibility with
+ * sun.io ISO2022_CN decoder. Officially ISO-2022-CN
+ * just handles planes 1/2 of CNS-11643 (1986)
+ * Test case data below verifies this compatibility
+ *
+ */
+
+ private static byte test10_bytes[] = {
+ (byte)0x1b, (byte)0x24, (byte)'+', (byte)'I',
+ (byte)0x1b, (byte)0x4f,
+ (byte)0x21, (byte)0x2f };
+
+ private static char test10_chars[] = {
+ 0x51e2
+ };
+
+ private static byte test11_bytes[] = {
+ (byte)0x1b, (byte)0x24, (byte)0x29, (byte)0x41, //SO Designator
+ (byte)0x0e, //SO
+ (byte)0x21, (byte)0x2e, //GB2312 char
+ (byte)0x1b, (byte)0x24, (byte)0x2a, (byte)'H', //SS2 Designator
+ (byte)0x1b, (byte)0x4e, //SS2
+ (byte)0x21, (byte)0x2f, //CNS-P2 char
+ (byte)0x21, (byte)0x2f //GB2312 char
+ };
+
+ private static char test11_chars[] = {
+ 0x2018,
+ 0x4e0e,
+ 0x2019
+ };
+
+ private static byte test12_bytes[] = {
+ (byte)0x1b, (byte)0x24, (byte)0x29, (byte)0x41, //SO Designator
+ (byte)0x0e, //SO
+ (byte)0x21, (byte)0x2e, //GB2312 char
+ (byte)0x1b, (byte)0x24, (byte)'+', (byte)'I', //SS3 Designator
+ (byte)0x1b, (byte)0x4f, //SS3
+ (byte)0x21, (byte)0x2f, //CNS-P2 char
+ (byte)0x21, (byte)0x2f //GB2312 char
+ };
+
+ private static char test12_chars[] = {
+ 0x2018,
+ 0x51e2,
+ 0x2019
+ };
+
+
+ private static byte test13_bytes[] = {
+ (byte)0x0f0, // byte with MSB
+ };
+
+ private static char test13_chars[] = {
+ 0x00f0,
+ };
+
+ private static byte test14_bytes[] = {
+ (byte)0x0E, (byte)0x21, (byte)0x2f,
+ (byte)0x0E, (byte)0xDD, (byte)0x9f
+ };
+ private static CoderResult test14_result = CoderResult.unmappableForLength(2);
+
+ // Current ISO2022CN treats the "out of range" code points as "unmappable"
+ private static byte test15_bytes[] = {
+ (byte)0x1b, (byte)0x4f, // SS3
+ (byte)0x20, (byte)0x2f, // "out of range" CNS-P2 char
+ };
+ private static CoderResult test15_result = CoderResult.unmappableForLength(4);
+
+ /**
+ * Main program to test ISO2022CN conformance
+ *
+ */
+ public static void main (String argv []) throws Exception
+ {
+ boolean pass = true;
+
+ System.out.println ("");
+ System.out.println ("------ checking ISO2022CN decoder -----");
+
+ // This regtest must be the first one.
+ pass &= decodeTest6392664();
+
+ try {
+ new InputStreamReader (System.in, "ISO2022CN");
+ } catch (Exception e) {
+ encodingName = "ISO2022CN";
+ System.out.println ("... requires nonstandard encoding name "
+ + encodingName);
+ pass &= false;
+ }
+
+ //
+ // Positive tests -- good data is dealt with correctly
+ //
+ pass &= decodeTest(test0_bytes, test0_chars, "first batch");
+ pass &= decodeTest(test1_bytes, test1_chars, "escapes1");
+ pass &= decodeTest(test2_bytes, test2_chars, "escapes2");
+ pass &= decodeTest(test3_bytes, test3_chars, "escapes3");
+ pass &= decodeTest(test3a_bytes, test3_chars, "escapes3a");
+ pass &= decodeTest(test4_bytes, test4_chars, "escapes4");
+ pass &= decodeTest(test5_bytes, test5_chars, "escapes5");
+ pass &= decodeTest(test6_bytes, test6_chars, "escapes6");
+ pass &= decodeTest(test7_bytes, test7_chars, "escapes7");
+ pass &= decodeTest(test8_bytes, test8_chars, "escapes8");
+ pass &= decodeTest(test9_bytes, test9_chars, "escapes9");
+ pass &= decodeTest(test10_bytes, test10_chars, "escapes10");
+ pass &= decodeTest(test11_bytes, test11_chars, "escapes11");
+ pass &= decodeTest(test12_bytes, test12_chars, "escapes12");
+ pass &= decodeTest(test13_bytes, test13_chars, "escapes13");
+ pass &= decodeResultTest(test14_bytes, test14_result, "escapes14");
+ pass &= decodeResultTest(test15_bytes, test15_result, "escapes15");
+ // PASS/FAIL status is what the whole thing is about.
+ //
+ if (! pass) {
+ throw new Exception("FAIL -- incorrect ISO-2022-CN");
+ }
+
+ }
+}
diff --git a/test/sun/nio/cs/TestISO2022JP.java b/test/sun/nio/cs/TestISO2022JP.java
new file mode 100644
index 000000000..a2f2b33bf
--- /dev/null
+++ b/test/sun/nio/cs/TestISO2022JP.java
@@ -0,0 +1,612 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4626545 4879522 4913711 4119445
+ @summary Check full coverage encode/decode for ISO-2022-JP
+ */
+
+/*
+ * Tests the NIO converter for J2RE >= 1.4.1
+ * since the default converter used by String
+ * API is the NIO converter sun.nio.cs.ext.ISO2022_JP
+ */
+
+import java.io.*;
+public class TestISO2022JP {
+
+ private final static String US_ASCII =
+ "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
+ "\b\t\n\u000B\f\r" +
+ "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
+ "\u0018\u0019\u001A\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\u00A5\u203E";
+
+ // Subset of chars sourced from JISX0208:1983
+
+ private final static String JISX0208SUBSET =
+ "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" +
+ "\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\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" +
+ "\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" +
+ "\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" +
+ "\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" +
+ "\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292" +
+ "\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4" +
+ "\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";
+
+ final static String JISX0202KATAKANA =
+ "\uFF61\uFF62\uFF63\uFF64" +
+ "\uFF65\uFF66\uFF67\uFF68\uFF69\uFF6A\uFF6B\uFF6C" +
+ "\uFF6D\uFF6E\uFF6F\uFF70\uFF71\uFF72\uFF73\uFF74" +
+ "\uFF75\uFF76\uFF77\uFF78\uFF79\uFF7A\uFF7B\uFF7C" +
+ "\uFF7D\uFF7E\uFF7F\uFF80\uFF81\uFF82\uFF83\uFF84" +
+ "\uFF85\uFF86\uFF87\uFF88\uFF89\uFF8A\uFF8B\uFF8C" +
+ "\uFF8D\uFF8E\uFF8F\uFF90\uFF91\uFF92\uFF93\uFF94" +
+ "\uFF95\uFF96\uFF97\uFF98\uFF99\uFF9A\uFF9B\uFF9C" +
+ "\uFF9D\uFF9E\uFF9F";
+
+
+ final static byte[] expectedBytes1 = {
+ (byte) 0x0, (byte) 0x1, (byte) 0x2, (byte) 0x3,
+ (byte) 0x4, (byte) 0x5, (byte) 0x6, (byte) 0x7,
+ (byte) 0x8, (byte) 0x9, (byte) 0xa, (byte) 0xb,
+ (byte) 0xc, (byte) 0xd,
+ (byte) 0x10, (byte) 0x11, (byte) 0x12, (byte) 0x13,
+ (byte) 0x14, (byte) 0x15, (byte) 0x16, (byte) 0x17,
+ (byte) 0x18, (byte) 0x19, (byte) 0x1a,
+ (byte) 0x1c, (byte) 0x1d, (byte) 0x1e, (byte) 0x1f,
+ (byte) 0x20, (byte) 0x21, (byte) 0x22, (byte) 0x23,
+ (byte) 0x24, (byte) 0x25, (byte) 0x26, (byte) 0x27,
+ (byte) 0x28, (byte) 0x29, (byte) 0x2a, (byte) 0x2b,
+ (byte) 0x2c, (byte) 0x2d, (byte) 0x2e, (byte) 0x2f,
+ (byte) 0x30, (byte) 0x31, (byte) 0x32, (byte) 0x33,
+ (byte) 0x34, (byte) 0x35, (byte) 0x36, (byte) 0x37,
+ (byte) 0x38, (byte) 0x39, (byte) 0x3a, (byte) 0x3b,
+ (byte) 0x3c, (byte) 0x3d, (byte) 0x3e, (byte) 0x3f,
+ (byte) 0x40, (byte) 0x41, (byte) 0x42, (byte) 0x43,
+ (byte) 0x44, (byte) 0x45, (byte) 0x46, (byte) 0x47,
+ (byte) 0x48, (byte) 0x49, (byte) 0x4a, (byte) 0x4b,
+ (byte) 0x4c, (byte) 0x4d, (byte) 0x4e, (byte) 0x4f,
+ (byte) 0x50, (byte) 0x51, (byte) 0x52, (byte) 0x53,
+ (byte) 0x54, (byte) 0x55, (byte) 0x56, (byte) 0x57,
+ (byte) 0x58, (byte) 0x59, (byte) 0x5a, (byte) 0x5b,
+ (byte) 0x5c, (byte) 0x5d, (byte) 0x5e, (byte) 0x5f,
+ (byte) 0x60, (byte) 0x61, (byte) 0x62, (byte) 0x63,
+ (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67,
+ (byte) 0x68, (byte) 0x69, (byte) 0x6a, (byte) 0x6b,
+ (byte) 0x6c, (byte) 0x6d, (byte) 0x6e, (byte) 0x6f,
+ (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73,
+ (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77,
+ (byte) 0x78, (byte) 0x79, (byte) 0x7a, (byte) 0x7b,
+ (byte) 0x7c, (byte) 0x7d, (byte) 0x7e, (byte) 0x1b,
+ (byte) 0x28, (byte) 0x4a, (byte) 0x5c, (byte) 0x7e,
+ (byte) 0x1b, (byte) 0x28, (byte) 0x42, (byte) 0x75,
+ (byte) 0x33, (byte) 0x30, (byte) 0x30, (byte) 0x30,
+ (byte) 0x1b, (byte) 0x24, (byte) 0x42, (byte) 0x21,
+ (byte) 0x22, (byte) 0x21, (byte) 0x23, (byte) 0x21,
+ (byte) 0x24, (byte) 0x21, (byte) 0x25, (byte) 0x21,
+ (byte) 0x26, (byte) 0x21, (byte) 0x27, (byte) 0x21,
+ (byte) 0x28, (byte) 0x21, (byte) 0x29, (byte) 0x21,
+ (byte) 0x2a, (byte) 0x21, (byte) 0x2b, (byte) 0x21,
+ (byte) 0x2c, (byte) 0x21, (byte) 0x2d, (byte) 0x21,
+ (byte) 0x2e, (byte) 0x21, (byte) 0x2f, (byte) 0x21,
+ (byte) 0x30, (byte) 0x21, (byte) 0x31, (byte) 0x21,
+ (byte) 0x32, (byte) 0x21, (byte) 0x33, (byte) 0x21,
+ (byte) 0x34, (byte) 0x21, (byte) 0x35, (byte) 0x21,
+ (byte) 0x36, (byte) 0x21, (byte) 0x37, (byte) 0x21,
+ (byte) 0x38, (byte) 0x21, (byte) 0x39, (byte) 0x21,
+ (byte) 0x3a, (byte) 0x21, (byte) 0x3b, (byte) 0x21,
+ (byte) 0x3c, (byte) 0x21, (byte) 0x3d, (byte) 0x21,
+ (byte) 0x3e, (byte) 0x21, (byte) 0x3f, (byte) 0x21,
+ (byte) 0x40, (byte) 0x21, (byte) 0x41, (byte) 0x21,
+ (byte) 0x42, (byte) 0x21, (byte) 0x43, (byte) 0x21,
+ (byte) 0x44, (byte) 0x21, (byte) 0x45, (byte) 0x21,
+ (byte) 0x46, (byte) 0x21, (byte) 0x47, (byte) 0x55,
+ (byte) 0x71, (byte) 0x55, (byte) 0x72, (byte) 0x55,
+ (byte) 0x73, (byte) 0x55, (byte) 0x74, (byte) 0x55,
+ (byte) 0x75, (byte) 0x55, (byte) 0x76, (byte) 0x55,
+ (byte) 0x77, (byte) 0x55, (byte) 0x78, (byte) 0x55,
+ (byte) 0x79, (byte) 0x55, (byte) 0x7a, (byte) 0x55,
+ (byte) 0x7b, (byte) 0x55, (byte) 0x7c, (byte) 0x55,
+ (byte) 0x7d, (byte) 0x55, (byte) 0x7e, (byte) 0x56,
+ (byte) 0x21, (byte) 0x56, (byte) 0x22, (byte) 0x56,
+ (byte) 0x23, (byte) 0x56, (byte) 0x24, (byte) 0x56,
+ (byte) 0x25, (byte) 0x56, (byte) 0x26, (byte) 0x56,
+ (byte) 0x27, (byte) 0x56, (byte) 0x28, (byte) 0x56,
+ (byte) 0x29, (byte) 0x56, (byte) 0x2a, (byte) 0x56,
+ (byte) 0x2b, (byte) 0x56, (byte) 0x2c, (byte) 0x56,
+ (byte) 0x2d, (byte) 0x56, (byte) 0x2e, (byte) 0x56,
+ (byte) 0x2f, (byte) 0x56, (byte) 0x30, (byte) 0x56,
+ (byte) 0x31, (byte) 0x56, (byte) 0x32, (byte) 0x56,
+ (byte) 0x33, (byte) 0x56, (byte) 0x34, (byte) 0x56,
+ (byte) 0x35, (byte) 0x56, (byte) 0x36, (byte) 0x56,
+ (byte) 0x37, (byte) 0x56, (byte) 0x38, (byte) 0x56,
+ (byte) 0x39, (byte) 0x56, (byte) 0x3a, (byte) 0x56,
+ (byte) 0x3b, (byte) 0x56, (byte) 0x3c, (byte) 0x56,
+ (byte) 0x3d, (byte) 0x56, (byte) 0x3e, (byte) 0x56,
+ (byte) 0x3f, (byte) 0x56, (byte) 0x40, (byte) 0x56,
+ (byte) 0x41, (byte) 0x56, (byte) 0x42, (byte) 0x56,
+ (byte) 0x43, (byte) 0x56, (byte) 0x44, (byte) 0x56,
+ (byte) 0x45, (byte) 0x56, (byte) 0x46, (byte) 0x56,
+ (byte) 0x47, (byte) 0x56, (byte) 0x48, (byte) 0x56,
+ (byte) 0x49, (byte) 0x56, (byte) 0x4a, (byte) 0x56,
+ (byte) 0x4b, (byte) 0x56, (byte) 0x4c, (byte) 0x56,
+ (byte) 0x4d, (byte) 0x56, (byte) 0x4e, (byte) 0x56,
+ (byte) 0x4f, (byte) 0x56, (byte) 0x50, (byte) 0x56,
+ (byte) 0x51, (byte) 0x56, (byte) 0x52, (byte) 0x56,
+ (byte) 0x53, (byte) 0x56, (byte) 0x54, (byte) 0x56,
+ (byte) 0x55, (byte) 0x56, (byte) 0x56, (byte) 0x56,
+ (byte) 0x57, (byte) 0x56, (byte) 0x58, (byte) 0x56,
+ (byte) 0x59, (byte) 0x56, (byte) 0x5a, (byte) 0x56,
+ (byte) 0x5b, (byte) 0x56, (byte) 0x5c, (byte) 0x56,
+ (byte) 0x5d, (byte) 0x56, (byte) 0x5e, (byte) 0x56,
+ (byte) 0x5f, (byte) 0x56, (byte) 0x60, (byte) 0x56,
+ (byte) 0x61, (byte) 0x56, (byte) 0x62, (byte) 0x56,
+ (byte) 0x63, (byte) 0x56, (byte) 0x64, (byte) 0x56,
+ (byte) 0x65, (byte) 0x56, (byte) 0x66, (byte) 0x56,
+ (byte) 0x67, (byte) 0x56, (byte) 0x68, (byte) 0x56,
+ (byte) 0x69, (byte) 0x56, (byte) 0x6a, (byte) 0x56,
+ (byte) 0x6b, (byte) 0x56, (byte) 0x6c, (byte) 0x56,
+ (byte) 0x6d, (byte) 0x56, (byte) 0x6e, (byte) 0x56,
+ (byte) 0x6f, (byte) 0x56, (byte) 0x70, (byte) 0x56,
+ (byte) 0x71, (byte) 0x56, (byte) 0x72, (byte) 0x56,
+ (byte) 0x73, (byte) 0x56, (byte) 0x74, (byte) 0x56,
+ (byte) 0x75, (byte) 0x56, (byte) 0x76, (byte) 0x56,
+ (byte) 0x77, (byte) 0x56, (byte) 0x78, (byte) 0x56,
+ (byte) 0x79, (byte) 0x56, (byte) 0x7a, (byte) 0x56,
+ (byte) 0x7b, (byte) 0x56, (byte) 0x7c, (byte) 0x56,
+ (byte) 0x7d, (byte) 0x56, (byte) 0x7e, (byte) 0x57,
+ (byte) 0x21, (byte) 0x57, (byte) 0x22, (byte) 0x57,
+ (byte) 0x23, (byte) 0x57, (byte) 0x24, (byte) 0x57,
+ (byte) 0x25, (byte) 0x57, (byte) 0x26, (byte) 0x57,
+ (byte) 0x27, (byte) 0x57, (byte) 0x28, (byte) 0x57,
+ (byte) 0x29, (byte) 0x57, (byte) 0x2a, (byte) 0x57,
+ (byte) 0x2b, (byte) 0x57, (byte) 0x2c, (byte) 0x57,
+ (byte) 0x2d, (byte) 0x57, (byte) 0x2e, (byte) 0x57,
+ (byte) 0x2f, (byte) 0x57, (byte) 0x30, (byte) 0x57,
+ (byte) 0x31, (byte) 0x57, (byte) 0x32, (byte) 0x57,
+ (byte) 0x33, (byte) 0x57, (byte) 0x34, (byte) 0x57,
+ (byte) 0x35, (byte) 0x57, (byte) 0x36, (byte) 0x57,
+ (byte) 0x37, (byte) 0x57, (byte) 0x38, (byte) 0x57,
+ (byte) 0x39, (byte) 0x57, (byte) 0x3a, (byte) 0x57,
+ (byte) 0x3b, (byte) 0x57, (byte) 0x3c, (byte) 0x57,
+ (byte) 0x3d, (byte) 0x57, (byte) 0x3e, (byte) 0x57,
+ (byte) 0x3f, (byte) 0x57, (byte) 0x40, (byte) 0x57,
+ (byte) 0x41, (byte) 0x57, (byte) 0x42, (byte) 0x57,
+ (byte) 0x43, (byte) 0x57, (byte) 0x44, (byte) 0x57,
+ (byte) 0x45, (byte) 0x57, (byte) 0x46, (byte) 0x57,
+ (byte) 0x47, (byte) 0x57, (byte) 0x48, (byte) 0x57,
+ (byte) 0x49, (byte) 0x57, (byte) 0x4a, (byte) 0x57,
+ (byte) 0x4b, (byte) 0x57, (byte) 0x4c, (byte) 0x57,
+ (byte) 0x4d, (byte) 0x57, (byte) 0x4e, (byte) 0x57,
+ (byte) 0x4f, (byte) 0x57, (byte) 0x50, (byte) 0x57,
+ (byte) 0x51, (byte) 0x57, (byte) 0x52, (byte) 0x57,
+ (byte) 0x53, (byte) 0x57, (byte) 0x54, (byte) 0x57,
+ (byte) 0x55, (byte) 0x57, (byte) 0x56, (byte) 0x57,
+ (byte) 0x57, (byte) 0x57, (byte) 0x58, (byte) 0x57,
+ (byte) 0x59, (byte) 0x57, (byte) 0x5a, (byte) 0x57,
+ (byte) 0x5b, (byte) 0x57, (byte) 0x5c, (byte) 0x57,
+ (byte) 0x5d, (byte) 0x57, (byte) 0x5e, (byte) 0x57,
+ (byte) 0x5f, (byte) 0x57, (byte) 0x60, (byte) 0x57,
+ (byte) 0x61, (byte) 0x57, (byte) 0x62, (byte) 0x57,
+ (byte) 0x63, (byte) 0x57, (byte) 0x64, (byte) 0x59,
+ (byte) 0x49, (byte) 0x59, (byte) 0x4a, (byte) 0x59,
+ (byte) 0x4b, (byte) 0x59, (byte) 0x4c, (byte) 0x59,
+ (byte) 0x4d, (byte) 0x59, (byte) 0x4e, (byte) 0x59,
+ (byte) 0x4f, (byte) 0x59, (byte) 0x50, (byte) 0x59,
+ (byte) 0x51, (byte) 0x59, (byte) 0x52, (byte) 0x59,
+ (byte) 0x53, (byte) 0x59, (byte) 0x54, (byte) 0x59,
+ (byte) 0x55, (byte) 0x59, (byte) 0x56, (byte) 0x59,
+ (byte) 0x57, (byte) 0x59, (byte) 0x58, (byte) 0x59,
+ (byte) 0x59, (byte) 0x59, (byte) 0x5a, (byte) 0x59,
+ (byte) 0x5b, (byte) 0x59, (byte) 0x5c, (byte) 0x59,
+ (byte) 0x5d, (byte) 0x59, (byte) 0x5e, (byte) 0x59,
+ (byte) 0x5f, (byte) 0x59, (byte) 0x60, (byte) 0x59,
+ (byte) 0x61, (byte) 0x59, (byte) 0x62, (byte) 0x59,
+ (byte) 0x63, (byte) 0x59, (byte) 0x64, (byte) 0x59,
+ (byte) 0x65, (byte) 0x59, (byte) 0x66, (byte) 0x59,
+ (byte) 0x67, (byte) 0x59, (byte) 0x68, (byte) 0x59,
+ (byte) 0x69, (byte) 0x59, (byte) 0x6a, (byte) 0x59,
+ (byte) 0x6b, (byte) 0x59, (byte) 0x6c, (byte) 0x59,
+ (byte) 0x6d, (byte) 0x59, (byte) 0x6e, (byte) 0x59,
+ (byte) 0x6f, (byte) 0x59, (byte) 0x70, (byte) 0x59,
+ (byte) 0x71, (byte) 0x59, (byte) 0x72, (byte) 0x59,
+ (byte) 0x73, (byte) 0x59, (byte) 0x74, (byte) 0x59,
+ (byte) 0x75, (byte) 0x59, (byte) 0x76, (byte) 0x59,
+ (byte) 0x77, (byte) 0x59, (byte) 0x78, (byte) 0x59,
+ (byte) 0x79, (byte) 0x59, (byte) 0x7a, (byte) 0x59,
+ (byte) 0x7b, (byte) 0x59, (byte) 0x7c, (byte) 0x59,
+ (byte) 0x7d, (byte) 0x59, (byte) 0x7e, (byte) 0x5a,
+ (byte) 0x21, (byte) 0x5a, (byte) 0x22, (byte) 0x5a,
+ (byte) 0x23, (byte) 0x5a, (byte) 0x24, (byte) 0x5a,
+ (byte) 0x25, (byte) 0x5a, (byte) 0x26, (byte) 0x5a,
+ (byte) 0x27, (byte) 0x5a, (byte) 0x28, (byte) 0x5a,
+ (byte) 0x29, (byte) 0x5a, (byte) 0x2a, (byte) 0x5a,
+ (byte) 0x2b, (byte) 0x5a, (byte) 0x2c, (byte) 0x5a,
+ (byte) 0x2d, (byte) 0x5a, (byte) 0x2e, (byte) 0x5a,
+ (byte) 0x2f, (byte) 0x5a, (byte) 0x30, (byte) 0x5a,
+ (byte) 0x31, (byte) 0x5a, (byte) 0x32, (byte) 0x5a,
+ (byte) 0x33, (byte) 0x5a, (byte) 0x34, (byte) 0x5a,
+ (byte) 0x35, (byte) 0x5a, (byte) 0x36, (byte) 0x5a,
+ (byte) 0x37, (byte) 0x5a, (byte) 0x38, (byte) 0x5a,
+ (byte) 0x39, (byte) 0x5a, (byte) 0x3a, (byte) 0x5a,
+ (byte) 0x3b, (byte) 0x5a, (byte) 0x3c, (byte) 0x5a,
+ (byte) 0x3d, (byte) 0x5a, (byte) 0x3e, (byte) 0x5a,
+ (byte) 0x3f, (byte) 0x5a, (byte) 0x40, (byte) 0x5a,
+ (byte) 0x41, (byte) 0x5a, (byte) 0x42, (byte) 0x5b,
+ (byte) 0x35, (byte) 0x5b, (byte) 0x36, (byte) 0x5b,
+ (byte) 0x37, (byte) 0x5b, (byte) 0x38, (byte) 0x5b,
+ (byte) 0x39, (byte) 0x5b, (byte) 0x3a, (byte) 0x5b,
+ (byte) 0x3b, (byte) 0x5b, (byte) 0x3c, (byte) 0x5b,
+ (byte) 0x3d, (byte) 0x5b, (byte) 0x3e, (byte) 0x5b,
+ (byte) 0x3f, (byte) 0x5b, (byte) 0x40, (byte) 0x5b,
+ (byte) 0x41, (byte) 0x5b, (byte) 0x42, (byte) 0x5b,
+ (byte) 0x43, (byte) 0x5b, (byte) 0x44, (byte) 0x5b,
+ (byte) 0x45, (byte) 0x5b, (byte) 0x46, (byte) 0x5b,
+ (byte) 0x47, (byte) 0x5b, (byte) 0x48, (byte) 0x5b,
+ (byte) 0x49, (byte) 0x5b, (byte) 0x4a, (byte) 0x5b,
+ (byte) 0x4b, (byte) 0x5b, (byte) 0x4c, (byte) 0x5b,
+ (byte) 0x4d, (byte) 0x5b, (byte) 0x4e, (byte) 0x5b,
+ (byte) 0x4f, (byte) 0x5b, (byte) 0x50, (byte) 0x5b,
+ (byte) 0x51, (byte) 0x5b, (byte) 0x52, (byte) 0x5b,
+ (byte) 0x53, (byte) 0x5b, (byte) 0x54, (byte) 0x5b,
+ (byte) 0x55, (byte) 0x5b, (byte) 0x56, (byte) 0x5b,
+ (byte) 0x57, (byte) 0x5b, (byte) 0x58, (byte) 0x5b,
+ (byte) 0x59, (byte) 0x5b, (byte) 0x5a, (byte) 0x5b,
+ (byte) 0x5b, (byte) 0x5b, (byte) 0x5c, (byte) 0x5b,
+ (byte) 0x5d, (byte) 0x5b, (byte) 0x5e, (byte) 0x5b,
+ (byte) 0x5f, (byte) 0x5b, (byte) 0x60, (byte) 0x5b,
+ (byte) 0x61, (byte) 0x5b, (byte) 0x62, (byte) 0x5b,
+ (byte) 0x63, (byte) 0x5b, (byte) 0x64, (byte) 0x5b,
+ (byte) 0x65, (byte) 0x5b, (byte) 0x66, (byte) 0x5b,
+ (byte) 0x67, (byte) 0x5b, (byte) 0x68, (byte) 0x5b,
+ (byte) 0x69, (byte) 0x5b, (byte) 0x6a, (byte) 0x5b,
+ (byte) 0x6b, (byte) 0x5b, (byte) 0x6c, (byte) 0x5b,
+ (byte) 0x6d, (byte) 0x5b, (byte) 0x6e, (byte) 0x5b,
+ (byte) 0x6f, (byte) 0x5b, (byte) 0x70, (byte) 0x5b,
+ (byte) 0x71, (byte) 0x5b, (byte) 0x72, (byte) 0x5b,
+ (byte) 0x73, (byte) 0x5b, (byte) 0x74, (byte) 0x5b,
+ (byte) 0x75, (byte) 0x5b, (byte) 0x76, (byte) 0x5b,
+ (byte) 0x77, (byte) 0x5b, (byte) 0x78, (byte) 0x5b,
+ (byte) 0x79, (byte) 0x5b, (byte) 0x7a, (byte) 0x5b,
+ (byte) 0x7b, (byte) 0x5b, (byte) 0x7c, (byte) 0x5b,
+ (byte) 0x7d, (byte) 0x5b, (byte) 0x7e, (byte) 0x5c,
+ (byte) 0x21, (byte) 0x5c, (byte) 0x22, (byte) 0x5c,
+ (byte) 0x23, (byte) 0x5c, (byte) 0x24, (byte) 0x5c,
+ (byte) 0x25, (byte) 0x5c, (byte) 0x26, (byte) 0x5c,
+ (byte) 0x27, (byte) 0x5c, (byte) 0x28, (byte) 0x5c,
+ (byte) 0x29, (byte) 0x5c, (byte) 0x2a, (byte) 0x5c,
+ (byte) 0x2b, (byte) 0x5c, (byte) 0x2c, (byte) 0x5c,
+ (byte) 0x2d, (byte) 0x5c, (byte) 0x2e, (byte) 0x5c,
+ (byte) 0x2f, (byte) 0x5c, (byte) 0x30, (byte) 0x5c,
+ (byte) 0x31, (byte) 0x5c, (byte) 0x32, (byte) 0x5c,
+ (byte) 0x33, (byte) 0x5c, (byte) 0x34, (byte) 0x5c,
+ (byte) 0x35, (byte) 0x5c, (byte) 0x36, (byte) 0x5d,
+ (byte) 0x79, (byte) 0x5d, (byte) 0x7a, (byte) 0x5d,
+ (byte) 0x7b, (byte) 0x5d, (byte) 0x7c, (byte) 0x5d,
+ (byte) 0x7d, (byte) 0x5d, (byte) 0x7e, (byte) 0x5e,
+ (byte) 0x21, (byte) 0x5e, (byte) 0x22, (byte) 0x5e,
+ (byte) 0x23, (byte) 0x5e, (byte) 0x24, (byte) 0x5e,
+ (byte) 0x25, (byte) 0x5e, (byte) 0x26, (byte) 0x5e,
+ (byte) 0x27, (byte) 0x5e, (byte) 0x28, (byte) 0x5e,
+ (byte) 0x29, (byte) 0x5e, (byte) 0x2a, (byte) 0x5e,
+ (byte) 0x2b, (byte) 0x5e, (byte) 0x2c, (byte) 0x5e,
+ (byte) 0x2d, (byte) 0x5e, (byte) 0x2e, (byte) 0x5e,
+ (byte) 0x2f, (byte) 0x5e, (byte) 0x30, (byte) 0x5e,
+ (byte) 0x31, (byte) 0x5e, (byte) 0x32, (byte) 0x5e,
+ (byte) 0x33, (byte) 0x5e, (byte) 0x34, (byte) 0x5e,
+ (byte) 0x35, (byte) 0x5e, (byte) 0x36, (byte) 0x5e,
+ (byte) 0x37, (byte) 0x5e, (byte) 0x38, (byte) 0x5e,
+ (byte) 0x39, (byte) 0x5e, (byte) 0x3a, (byte) 0x5e,
+ (byte) 0x3b, (byte) 0x5e, (byte) 0x3c, (byte) 0x5e,
+ (byte) 0x3d, (byte) 0x5e, (byte) 0x3e, (byte) 0x5e,
+ (byte) 0x3f, (byte) 0x5e, (byte) 0x40, (byte) 0x5e,
+ (byte) 0x41, (byte) 0x5e, (byte) 0x42, (byte) 0x5e,
+ (byte) 0x43, (byte) 0x5e, (byte) 0x44, (byte) 0x5e,
+ (byte) 0x45, (byte) 0x5e, (byte) 0x46, (byte) 0x5e,
+ (byte) 0x47, (byte) 0x5e, (byte) 0x48, (byte) 0x5e,
+ (byte) 0x49, (byte) 0x5e, (byte) 0x4a, (byte) 0x60,
+ (byte) 0x30, (byte) 0x60, (byte) 0x31, (byte) 0x60,
+ (byte) 0x32, (byte) 0x60, (byte) 0x33, (byte) 0x60,
+ (byte) 0x34, (byte) 0x60, (byte) 0x35, (byte) 0x60,
+ (byte) 0x36, (byte) 0x60, (byte) 0x37, (byte) 0x60,
+ (byte) 0x38, (byte) 0x60, (byte) 0x39, (byte) 0x60,
+ (byte) 0x3a, (byte) 0x60, (byte) 0x3b, (byte) 0x60,
+ (byte) 0x3c, (byte) 0x60, (byte) 0x3d, (byte) 0x60,
+ (byte) 0x3e, (byte) 0x60, (byte) 0x3f, (byte) 0x73,
+ (byte) 0x26, (byte) 0x73, (byte) 0x27, (byte) 0x73,
+ (byte) 0x28, (byte) 0x73, (byte) 0x29, (byte) 0x73,
+ (byte) 0x2a, (byte) 0x73, (byte) 0x2b, (byte) 0x73,
+ (byte) 0x2c, (byte) 0x73, (byte) 0x2d, (byte) 0x73,
+ (byte) 0x2e, (byte) 0x73, (byte) 0x2f, (byte) 0x73,
+ (byte) 0x30, (byte) 0x73, (byte) 0x31, (byte) 0x73,
+ (byte) 0x32, (byte) 0x73, (byte) 0x33, (byte) 0x73,
+ (byte) 0x34, (byte) 0x73, (byte) 0x35, (byte) 0x73,
+ (byte) 0x36, (byte) 0x73, (byte) 0x37, (byte) 0x73,
+ (byte) 0x38, (byte) 0x73, (byte) 0x39, (byte) 0x73,
+ (byte) 0x3a, (byte) 0x73, (byte) 0x3b, (byte) 0x73,
+ (byte) 0x3c, (byte) 0x73, (byte) 0x3d, (byte) 0x73,
+ (byte) 0x3e, (byte) 0x73, (byte) 0x3f, (byte) 0x73,
+ (byte) 0x40, (byte) 0x73, (byte) 0x41, (byte) 0x73,
+ (byte) 0x42, (byte) 0x73, (byte) 0x43, (byte) 0x73,
+ (byte) 0x44, (byte) 0x73, (byte) 0x45, (byte) 0x73,
+ (byte) 0x46, (byte) 0x73, (byte) 0x47, (byte) 0x73,
+ (byte) 0x48, (byte) 0x73, (byte) 0x49, (byte) 0x73,
+ (byte) 0x4a, (byte) 0x73, (byte) 0x4b, (byte) 0x73,
+ (byte) 0x4c, (byte) 0x73, (byte) 0x4d, (byte) 0x73,
+ (byte) 0x4e, (byte) 0x73, (byte) 0x4f, (byte) 0x73,
+ (byte) 0x50, (byte) 0x73, (byte) 0x51, (byte) 0x73,
+ (byte) 0x52, (byte) 0x73, (byte) 0x53, (byte) 0x73,
+ (byte) 0x54, (byte) 0x73, (byte) 0x55, (byte) 0x73,
+ (byte) 0x56, (byte) 0x73, (byte) 0x57, (byte) 0x73,
+ (byte) 0x58, (byte) 0x73, (byte) 0x59, (byte) 0x73,
+ (byte) 0x5a, (byte) 0x73, (byte) 0x5b, (byte) 0x73,
+ (byte) 0x5c, (byte) 0x73, (byte) 0x5d, (byte) 0x73,
+ (byte) 0x5e, (byte) 0x73, (byte) 0x5f, (byte) 0x73,
+ (byte) 0x60, (byte) 0x73, (byte) 0x61, (byte) 0x73,
+ (byte) 0x62, (byte) 0x73, (byte) 0x63, (byte) 0x73,
+ (byte) 0x64, (byte) 0x73, (byte) 0x65, (byte) 0x73,
+ (byte) 0x66, (byte) 0x73, (byte) 0x67, (byte) 0x73,
+ (byte) 0x68, (byte) 0x73, (byte) 0x69, (byte) 0x73,
+ (byte) 0x6a, (byte) 0x73, (byte) 0x6b, (byte) 0x73,
+ (byte) 0x6c, (byte) 0x73, (byte) 0x6d, (byte) 0x73,
+ (byte) 0x6e, (byte) 0x73, (byte) 0x6f, (byte) 0x73,
+ (byte) 0x70, (byte) 0x73, (byte) 0x71, (byte) 0x73,
+ (byte) 0x72, (byte) 0x73, (byte) 0x73, (byte) 0x73,
+ (byte) 0x74, (byte) 0x73, (byte) 0x75, (byte) 0x73,
+ (byte) 0x76, (byte) 0x73, (byte) 0x77, (byte) 0x73,
+ (byte) 0x78, (byte) 0x73, (byte) 0x79, (byte) 0x73,
+ (byte) 0x7a, (byte) 0x73, (byte) 0x7b, (byte) 0x73,
+ (byte) 0x7c, (byte) 0x73, (byte) 0x7d, (byte) 0x73,
+ (byte) 0x7e, (byte) 0x74, (byte) 0x21, (byte) 0x74,
+ (byte) 0x22, (byte) 0x74, (byte) 0x23, (byte) 0x74,
+ (byte) 0x24, (byte) 0x74, (byte) 0x25, (byte) 0x74,
+ (byte) 0x26, (byte) 0x1b, (byte) 0x28, (byte) 0x49,
+ (byte) 0x21, (byte) 0x22, (byte) 0x23, (byte) 0x24,
+ (byte) 0x25, (byte) 0x26, (byte) 0x27, (byte) 0x28,
+ (byte) 0x29, (byte) 0x2a, (byte) 0x2b, (byte) 0x2c,
+ (byte) 0x2d, (byte) 0x2e, (byte) 0x2f, (byte) 0x30,
+ (byte) 0x31, (byte) 0x32, (byte) 0x33, (byte) 0x34,
+ (byte) 0x35, (byte) 0x36, (byte) 0x37, (byte) 0x38,
+ (byte) 0x39, (byte) 0x3a, (byte) 0x3b, (byte) 0x3c,
+ (byte) 0x3d, (byte) 0x3e, (byte) 0x3f, (byte) 0x40,
+ (byte) 0x41, (byte) 0x42, (byte) 0x43, (byte) 0x44,
+ (byte) 0x45, (byte) 0x46, (byte) 0x47, (byte) 0x48,
+ (byte) 0x49, (byte) 0x4a, (byte) 0x4b, (byte) 0x4c,
+ (byte) 0x4d, (byte) 0x4e, (byte) 0x4f, (byte) 0x50,
+ (byte) 0x51, (byte) 0x52, (byte) 0x53, (byte) 0x54,
+ (byte) 0x55, (byte) 0x56, (byte) 0x57, (byte) 0x58,
+ (byte) 0x59, (byte) 0x5a, (byte) 0x5b, (byte) 0x5c,
+ (byte) 0x5d, (byte) 0x5e, (byte) 0x5f, (byte) 0x1b,
+ (byte) 0x28, (byte) 0x42 };
+
+ private final static String MIXEDCONTENT =
+ "JA\u3000\u3002\u0062\uFF64PAN" +
+ "\uFF0C\uFF0E\u00A5\uFF65\uFF66X\u203E" +
+ "\u30FB\uFF67\u203E";
+
+ static byte[] mixedBytesExpected = {
+ (byte) 0x4a, (byte) 0x41, (byte) 0x1b, (byte) 0x24,
+ (byte) 0x42, (byte) 0x21, (byte) 0x21, (byte) 0x21,
+ (byte) 0x23, (byte) 0x1b, (byte) 0x28, (byte) 0x42,
+ (byte) 0x62, (byte) 0x1b, (byte) 0x28, (byte) 0x49,
+ (byte) 0x24, (byte) 0x1b, (byte) 0x28, (byte) 0x42,
+ (byte) 0x50, (byte) 0x41, (byte) 0x4e, (byte) 0x1b,
+ (byte) 0x24, (byte) 0x42, (byte) 0x21, (byte) 0x24,
+ (byte) 0x21, (byte) 0x25, (byte) 0x1b, (byte) 0x28,
+ (byte) 0x4a, (byte) 0x5c, (byte) 0x1b, (byte) 0x28,
+ (byte) 0x49, (byte) 0x25, (byte) 0x26, (byte) 0x1b,
+ (byte) 0x28, (byte) 0x42, (byte) 0x58, (byte) 0x1b,
+ (byte) 0x28, (byte) 0x4a, (byte) 0x7e, (byte) 0x1b,
+ (byte) 0x24, (byte) 0x42, (byte) 0x21, (byte) 0x26,
+ (byte) 0x1b, (byte) 0x28, (byte) 0x49, (byte) 0x27,
+ (byte) 0x1b, (byte) 0x28, (byte) 0x4a, (byte) 0x7e,
+ (byte) 0x1b, (byte) 0x28, (byte) 0x42 };
+
+ static byte[] repeatingEscapes = {
+ (byte) 0x4a, (byte) 0x41, (byte) 0x1b, (byte) 0x24,
+ (byte) 0x42, (byte)0x1b, (byte)0x24, (byte)0x42,
+ (byte) 0x21, (byte) 0x21, (byte) 0x21,
+ (byte) 0x23, (byte) 0x1b, (byte) 0x28, (byte) 0x42,
+ // embedded repeated iso-2022 escapes (see bugID 4879522)
+ (byte)0x1b, (byte)0x28, (byte)0x42,
+ (byte) 0x62, (byte) 0x1b, (byte) 0x28, (byte) 0x49,
+ (byte)0x0f, (byte)0x0e, (byte)0x0f,
+ (byte)0x1b, (byte)0x28, (byte)0x49,
+ (byte) 0x24, (byte) 0x1b, (byte) 0x28, (byte) 0x42,
+ (byte) 0x50, (byte) 0x41, (byte) 0x4e,
+ // embedded shift chars (see bugID 4879522)
+ (byte)0x0e, (byte)0x0f,
+ (byte) 0x1b,
+ (byte) 0x24, (byte) 0x42, (byte) 0x21, (byte) 0x24,
+ (byte) 0x21, (byte) 0x25, (byte) 0x1b, (byte) 0x28,
+ (byte) 0x4a, (byte) 0x5c, (byte) 0x1b, (byte) 0x28,
+ (byte) 0x49, (byte) 0x25, (byte) 0x26, (byte) 0x1b,
+ (byte) 0x28, (byte) 0x42, (byte) 0x58, (byte) 0x1b,
+ (byte) 0x28, (byte) 0x4a, (byte) 0x7e, (byte) 0x1b,
+ (byte) 0x24, (byte) 0x42, (byte) 0x21, (byte) 0x26,
+ (byte) 0x1b, (byte) 0x28, (byte) 0x49, (byte) 0x27,
+ (byte) 0x1b, (byte) 0x28, (byte) 0x4a, (byte) 0x7e,
+ (byte) 0x1b, (byte) 0x28, (byte) 0x42 };
+
+
+ private static String JISX0212 =
+ "\u02d8\u6896\u9fa5";
+
+ private static byte[] expectedBytes_JISX0212 = {
+ (byte)0x1b, (byte)0x24, (byte)0x28, (byte)0x44,
+ (byte)0x22, (byte)0x2f, (byte)0x43, (byte)0x6f,
+ (byte)0x6d, (byte)0x63,
+ (byte)0x1b, (byte)0x28, (byte)0x42
+ };
+
+ /*
+ * Tests the roundtrip integrity and expected encoding
+ * correctness for a String containing a substantial
+ * subset of ISO-2022-JP/ISO-2022-JP-2 encodeable chars
+ */
+
+ private static void roundTrip(String testStr, byte[] expectBytes,
+ String csName)
+ throws Exception {
+ byte[] encodedBytes = testStr.getBytes(csName);
+
+ if (encodedBytes.length != expectBytes.length) {
+ throw new Exception(csName + " Encoder error");
+ }
+
+ for (int i = 0; i < expectBytes.length; i++) {
+ if (encodedBytes[i] != expectBytes[i]) {
+ throw new Exception(csName + " Encoder error");
+ }
+ }
+ String decoded = new String(encodedBytes, csName);
+
+ if (!decoded.equals(testStr)) {
+ throw new Exception(csName + " Decoder error");
+ }
+ String decoded2 = new String(repeatingEscapes, csName);
+ if (!decoded2.equals(MIXEDCONTENT)) {
+ throw new Exception(csName + " Decoder error");
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+
+ // Long String containing sequential chars
+ // ASCII/yen/tilde/jisx0208 chars/katakana chars
+
+ String testStr1 = US_ASCII +
+ JISX0208SUBSET + JISX0202KATAKANA;
+ roundTrip(testStr1, expectedBytes1, "ISO-2022-JP");
+ roundTrip(testStr1, expectedBytes1, "ISO-2022-JP-2");
+ roundTrip(JISX0212, expectedBytes_JISX0212, "ISO-2022-JP-2");
+
+ // mixed chars which encode to the supported codesets
+ // of ISO-2022-JP/ISO-2022-JP-2
+
+ String testStr2 = MIXEDCONTENT;
+ roundTrip(testStr2 , mixedBytesExpected, "ISO-2022-JP");
+ roundTrip(testStr2 , mixedBytesExpected, "ISO-2022-JP-2");
+
+ String decoded2 = new String(repeatingEscapes, "ISO-2022-JP");
+ if (!decoded2.equals(MIXEDCONTENT)) {
+ throw new Exception("ISO-2022-JP Decoder error");
+ }
+
+ decoded2 = new String(repeatingEscapes, "ISO-2022-JP-2");
+ if (!decoded2.equals(MIXEDCONTENT)) {
+ throw new Exception("ISO-2022-JP-2 Decoder error");
+ }
+
+ // Test for bugID 4913711
+ // ISO-2022-JP encoding of a single input char yields
+ // 8 output bytes. Prior to fix for 4913711 the
+ // max bytes per char value was underspecified as 5.0
+ // and the code below would have thrown a BufferOverflow
+ // exception. This test validates the fix for 4913711
+
+ String testStr3 = "\u3042";
+ byte[] expected = { (byte)0x1b, (byte)0x24, (byte)0x42,
+ (byte)0x24, (byte)0x22, (byte)0x1b,
+ (byte)0x28, (byte)0x42 };
+ byte[] encoded = testStr3.getBytes("ISO-2022-JP");
+ for (int i = 0; i < expected.length; i++) {
+ if (encoded[i] != expected[i])
+ throw new Exception("ISO-2022-JP Decoder error");
+ }
+ }
+}
diff --git a/test/sun/nio/cs/TestISO2022JPEncoder.java b/test/sun/nio/cs/TestISO2022JPEncoder.java
new file mode 100644
index 000000000..ec2cbff0b
--- /dev/null
+++ b/test/sun/nio/cs/TestISO2022JPEncoder.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4251646
+ @summary Make sure buffer boundary convert works
+ */
+
+import java.nio.*;
+import java.nio.charset.*;
+
+public class TestISO2022JPEncoder {
+ static char[] inputChars = {'\u0020', '\u0020', '\u0020', '\u0020',
+ '\u0020', '\u0020', '\u0020', '\u0020',
+ '\u0020', '\u4e00'};
+ static byte[] expectedBytes1 = {0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20};
+ static byte[] expectedBytes2 = {0x1b, 0x24, 0x42, 0x30, 0x6c,
+ 0x1b, 0x28, 0x42};
+ static byte[] outputBuff = new byte[10];
+
+ public static void main(String args[]) throws Exception {
+ CharsetEncoder enc = Charset.forName("ISO2022JP").newEncoder();
+ CharBuffer cb = CharBuffer.wrap(inputChars);
+ ByteBuffer bb = ByteBuffer.wrap(outputBuff);
+ CoderResult cr = enc.encode(cb, bb, false);
+ if (!cr.isOverflow())
+ throw new Exception("Expected CodeResult.OVERFLOW was not returned");
+ for (int i = 0; i < expectedBytes1.length; ++i) {
+ //System.out.println(expectedBytes1[i] + ":" + outputBuff[i]);
+ if (expectedBytes1[i] != outputBuff[i]) {
+ throw new Exception("Output bytes does not match at first conversion");
+ }
+ }
+ int nci = cb.position();
+ if (nci != expectedBytes1.length)
+ throw new Exception("Output length does not match at first conversion");
+ bb.clear();
+ cr = enc.encode(cb, bb, true);
+ enc.flush(bb);
+ //System.out.println(ret + "," + expectedBytes2.length);
+ bb.flip();
+ int len = bb.remaining();
+ if (len != expectedBytes2.length)
+ throw new Exception("Output length does not match at second conversion");
+ for (int i = 0; i < expectedBytes2.length; ++i) {
+ //System.out.println(expectedBytes2[i] + ":" + outputBuff[i]);
+ if (expectedBytes2[i] != outputBuff[i]) {
+ throw new Exception("Output bytes does not match at second conversion");
+ }
+ }
+ }
+}
diff --git a/test/sun/nio/cs/TestISO2022JPSubBytes.java b/test/sun/nio/cs/TestISO2022JPSubBytes.java
new file mode 100644
index 000000000..7dc38522f
--- /dev/null
+++ b/test/sun/nio/cs/TestISO2022JPSubBytes.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4262894 6233303
+ @summary Testing substitute character Escape sequence
+ */
+
+import java.nio.*;
+import java.nio.charset.*;
+
+public class TestISO2022JPSubBytes {
+ /* \U2460 is not valid character in ISO2022JP and will be substituted
+ * with replacement character. If the replacement character is not the
+ * "current charset" character, correct escape sequence should be output
+ * for changing character set.
+ */
+ static char[][] in = { {'\u25cb', '\u2460', '\u25cb'},
+ {'\u0061', '\u2460', '\u0061'},
+ {'\u25cb', '\u2460', '\u25cb'},
+ {'\u0061', '\u2460', '\u0061'},
+ };
+ static byte[][] expected = { {0x1b, 0x24, 0x42, 0x21, 0x7b,
+ 0x21, 0x29,
+ 0x21, 0x7b,
+ 0x1b, 0x28, 0x42},
+ {0x61,
+ 0x1b, 0x24, 0x42, 0x21, 0x29,
+ 0x1b, 0x28, 0x42, 0x61},
+ {0x1b, 0x24, 0x42, 0x21, 0x7b,
+ 0x1b, 0x28, 0x42, 0x3f,
+ 0x1b, 0x24, 0x42, 0x21, 0x7b,
+ 0x1b, 0x28, 0x42},
+ {0x61,
+ 0x3f,
+ 0x61}
+ };
+
+ public static void main(String args[]) throws Exception {
+ CharsetEncoder enc = Charset.forName("ISO2022JP")
+ .newEncoder()
+ .onUnmappableCharacter(CodingErrorAction.REPLACE);
+
+ test(enc, in[0], expected[0]);
+
+ enc.reset();
+ test(enc, in[1], expected[1]);
+
+ enc.reset();
+ enc.replaceWith(new byte[]{(byte)'?'});
+ test(enc, in[2], expected[2]);
+
+ enc.reset();
+ test(enc, in[3], expected[3]);
+ }
+
+ public static void test (CharsetEncoder enc,
+ char[] inputChars,
+ byte[] expectedBytes) throws Exception
+ {
+ ByteBuffer bb = ByteBuffer.allocate(expectedBytes.length);
+ enc.encode(CharBuffer.wrap(inputChars), bb, true);
+ enc.flush(bb);
+ bb.flip();
+ byte[] outputBuff = bb.array();
+ int outputLen = bb.limit();
+ if (outputLen != expectedBytes.length) {
+ throw new Exception("Output bytes does not match");
+ }
+ for (int i = 0; i < outputLen; ++i) {
+ System.out.printf("<%x:%x> ",
+ expectedBytes[i] & 0xff,
+ outputBuff[i] & 0xff);
+ if (expectedBytes[i] != outputBuff[i]) {
+ System.out.println("...");
+ throw new Exception("Output bytes does not match");
+ }
+ }
+ System.out.println();
+ }
+}
diff --git a/test/sun/nio/cs/TestIllegalISO2022Esc.java b/test/sun/nio/cs/TestIllegalISO2022Esc.java
new file mode 100644
index 000000000..696177fa4
--- /dev/null
+++ b/test/sun/nio/cs/TestIllegalISO2022Esc.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4429369
+ @summary ISO2022CN and ISO2022KR converters throw exception
+ */
+
+import java.io.*;
+import java.nio.charset.*;
+
+public class TestIllegalISO2022Esc {
+
+ public static void main ( String[] args) throws Exception {
+ int exceptionCount = 0;
+ String[] encName = {"ISO2022CN", "ISO2022KR" };
+ byte[]b= {
+ (byte)0x1b, //Illegal sequence for both converters.
+ (byte)')',
+ (byte)'x'
+ };
+
+ for ( int i=0; i < 2; i++) { // Test 2 converters.
+ try {
+ ByteArrayInputStream bais = new ByteArrayInputStream(b);
+ InputStreamReader isr =
+ new InputStreamReader(bais,encName[i]);
+ char cc[] = new char[1];
+ isr.read(cc,0,1); //attempt to read
+ } catch (MalformedInputException e) { } // Passes if thrown
+ catch (Throwable t) {
+ System.err.println("error with converter " + encName[i]);
+ exceptionCount++;
+ }
+ }
+
+ if (exceptionCount > 0)
+ throw new Exception ("Incorrect handling of illegal ISO2022 escapes");
+ }
+}
diff --git a/test/sun/nio/cs/TestIllegalSJIS.java b/test/sun/nio/cs/TestIllegalSJIS.java
new file mode 100644
index 000000000..e5562bbfb
--- /dev/null
+++ b/test/sun/nio/cs/TestIllegalSJIS.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4117820
+ @summary Verify that SJIS.Decoder works properly for values between 0xA000 and 0xA0FC
+ */
+
+import java.nio.charset.*;
+import java.nio.*;
+
+public class TestIllegalSJIS {
+
+ public static void main(String[] args) throws Exception
+ {
+ CharsetDecoder dec = Charset.forName("SJIS").newDecoder()
+ .onUnmappableCharacter(CodingErrorAction.REPLACE)
+ .onMalformedInput(CodingErrorAction.REPLACE);
+ byte[] sjis = {(byte)0xA0, (byte)0x00};
+
+ int b;
+ for (b = 0; b < 0xFD; b++) {
+ sjis[1] = (byte) b;
+ CharBuffer cb = dec.decode(ByteBuffer.wrap(sjis));
+ if (cb.charAt(0) != 0xFFFD) {
+ throw new Exception(Integer.toHexString(0xa000 + b) + " failed to convert to 0xFFFD");
+ }
+ }
+ }
+}
diff --git a/test/sun/nio/cs/TestJIS0208Decoder.java b/test/sun/nio/cs/TestJIS0208Decoder.java
new file mode 100644
index 000000000..e0bacd874
--- /dev/null
+++ b/test/sun/nio/cs/TestJIS0208Decoder.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 4179800
+ * @summary Make sure JIS0208.Decoder really works
+ */
+
+import java.nio.*;
+import java.nio.charset.*;
+
+public class TestJIS0208Decoder {
+ static String outputString = "\u65e5\u672c\u8a9e\u30c6\u30ad\u30b9\u30c8";
+ static byte [] inputBytes = new byte[] {(byte)'F', (byte)'|', (byte)'K', (byte)'\\',
+ (byte)'8', (byte)'l', (byte)'%', (byte)'F',
+ (byte)'%', (byte)'-', (byte)'%', (byte)'9',
+ (byte)'%', (byte)'H'};
+
+ public static void main(String args[])
+ throws Exception
+ {
+ test();
+ }
+
+ private static void test()
+ throws Exception
+ {
+ CharsetDecoder dec = Charset.forName("JIS0208").newDecoder();
+ try {
+ String ret = dec.decode(ByteBuffer.wrap(inputBytes)).toString();
+ if (ret.length() != outputString.length()
+ || ! outputString.equals(ret)){
+ throw new Exception("ByteToCharJIS0208 does not work correctly");
+ }
+ }
+ catch (Exception e){
+ throw new Exception("ByteToCharJIS0208 does not work correctly");
+ }
+ }
+}
diff --git a/test/sun/nio/cs/TestJIS0212Decoder.java b/test/sun/nio/cs/TestJIS0212Decoder.java
new file mode 100644
index 000000000..568361619
--- /dev/null
+++ b/test/sun/nio/cs/TestJIS0212Decoder.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ @bug 4179800
+ @summary Make sure JIS0212.Decoder really works
+ */
+
+import java.nio.*;
+import java.nio.charset.*;
+
+public class TestJIS0212Decoder {
+ static String outputString = "\u4e02\u4e04\u4e05\u4e0c\u4e12\u4e1f\u4e23";
+ static char [] outputChars = new char[8];
+ static byte [] inputBytes = new byte[] {(byte)0x30, (byte)0x21, (byte)0x30, (byte)0x22,
+ (byte)0x30, (byte)0x23, (byte)0x30, (byte)0x24,
+ (byte)0x30, (byte)0x25, (byte)0x30, (byte)0x26,
+ (byte)0x30, (byte)0x27};
+
+ public static void main(String args[])
+ throws Exception
+ {
+ test();
+ }
+
+ private static void test()
+ throws Exception
+ {
+ CharsetDecoder dec = Charset.forName("JIS0212").newDecoder();
+ try {
+ String ret = dec.decode(ByteBuffer.wrap(inputBytes)).toString();
+ if (ret.length() != outputString.length()
+ || ! outputString.equals(ret)){
+ throw new Exception("ByteToCharJIS0212 does not work correctly");
+ }
+ }
+ catch (Exception e){
+ throw new Exception("ByteToCharJIS0212 does not work correctly");
+ }
+ }
+}
diff --git a/test/sun/nio/cs/TestMS5022X.java b/test/sun/nio/cs/TestMS5022X.java
new file mode 100644
index 000000000..e98e3d0df
--- /dev/null
+++ b/test/sun/nio/cs/TestMS5022X.java
@@ -0,0 +1,750 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 6173388 6319716
+ @summary Check full coverage encode/decode for Microsoft
+ ISO2022_JP variants MS50220, MS50221 and MSISO2022JP
+ */
+
+import java.io.*;
+import java.nio.charset.*;
+public class TestMS5022X {
+
+ private static String US_ASCII =
+ "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
+ "\b\t\n\u000B\f\r" +
+ "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
+ "\u0018\u0019\u001A\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\u00A5\u203E";
+
+ // Subset of chars sourced from JISX0208:1983
+
+ private static String JISX0208SUBSET =
+ "\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" + //u2014->u2015
+ "\uFF3C\u301C\u2016\uFF5C\u2026\u2025\u2018\u2019" +
+ "\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\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" +
+ "\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" +
+ "\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" +
+ "\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" +
+ "\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292" +
+ "\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4" +
+ "\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";
+
+ private static String JISX0201KATAKANA =
+ "\uFF61\uFF62\uFF63\uFF64" +
+ "\uFF65\uFF66\uFF67\uFF68\uFF69\uFF6A\uFF6B\uFF6C" +
+ "\uFF6D\uFF6E\uFF6F\uFF70\uFF71\uFF72\uFF73\uFF74" +
+ "\uFF75\uFF76\uFF77\uFF78\uFF79\uFF7A\uFF7B\uFF7C" +
+ "\uFF7D\uFF7E\uFF7F\uFF80\uFF81\uFF82\uFF83\uFF84" +
+ "\uFF85\uFF86\uFF87\uFF88\uFF89\uFF8A\uFF8B\uFF8C" +
+ "\uFF8D\uFF8E\uFF8F\uFF90\uFF91\uFF92\uFF93\uFF94" +
+ "\uFF95\uFF96\uFF97\uFF98\uFF99\uFF9A\uFF9B\uFF9C" +
+ "\uFF9D\uFF9E\uFF9F";
+
+ private static String JISX0208NECROW13 =
+ "\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\u3349\u3314" +
+ "\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357" +
+ "\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D" +
+ "\u339E\u338E\u338F\u33C4\u33A1\u337B\u301E\u301F" +
+ "\u2116\u33CD\u2121\u32A4\u32A5\u32A6\u32A7\u32A8" +
+ "\u3231\u3232\u3239\u337E\u337D\u337C" +
+ "\u222e\u2211\u221f\u22bf";
+
+ private static byte[] expectedBytes_US_ASCII = {
+ (byte)0x0, (byte)0x1, (byte)0x2, (byte)0x3,
+ (byte)0x4, (byte)0x5, (byte)0x6, (byte)0x7,
+ (byte)0x8, (byte)0x9, (byte)0xa, (byte)0xb,
+ (byte)0xc, (byte)0xd,
+ (byte)0x10, (byte)0x11, (byte)0x12, (byte)0x13,
+ (byte)0x14, (byte)0x15, (byte)0x16, (byte)0x17,
+ (byte)0x18, (byte)0x19, (byte)0x1a,
+ (byte)0x1c, (byte)0x1d, (byte)0x1e, (byte)0x1f,
+ (byte)0x20, (byte)0x21, (byte)0x22, (byte)0x23,
+ (byte)0x24, (byte)0x25, (byte)0x26, (byte)0x27,
+ (byte)0x28, (byte)0x29, (byte)0x2a, (byte)0x2b,
+ (byte)0x2c, (byte)0x2d, (byte)0x2e, (byte)0x2f,
+ (byte)0x30, (byte)0x31, (byte)0x32, (byte)0x33,
+ (byte)0x34, (byte)0x35, (byte)0x36, (byte)0x37,
+ (byte)0x38, (byte)0x39, (byte)0x3a, (byte)0x3b,
+ (byte)0x3c, (byte)0x3d, (byte)0x3e, (byte)0x3f,
+ (byte)0x40, (byte)0x41, (byte)0x42, (byte)0x43,
+ (byte)0x44, (byte)0x45, (byte)0x46, (byte)0x47,
+ (byte)0x48, (byte)0x49, (byte)0x4a, (byte)0x4b,
+ (byte)0x4c, (byte)0x4d, (byte)0x4e, (byte)0x4f,
+ (byte)0x50, (byte)0x51, (byte)0x52, (byte)0x53,
+ (byte)0x54, (byte)0x55, (byte)0x56, (byte)0x57,
+ (byte)0x58, (byte)0x59, (byte)0x5a, (byte)0x5b,
+ (byte)0x5c, (byte)0x5d, (byte)0x5e, (byte)0x5f,
+ (byte)0x60, (byte)0x61, (byte)0x62, (byte)0x63,
+ (byte)0x64, (byte)0x65, (byte)0x66, (byte)0x67,
+ (byte)0x68, (byte)0x69, (byte)0x6a, (byte)0x6b,
+ (byte)0x6c, (byte)0x6d, (byte)0x6e, (byte)0x6f,
+ (byte)0x70, (byte)0x71, (byte)0x72, (byte)0x73,
+ (byte)0x74, (byte)0x75, (byte)0x76, (byte)0x77,
+ (byte)0x78, (byte)0x79, (byte)0x7a, (byte)0x7b,
+ (byte)0x7c, (byte)0x7d, (byte)0x7e, (byte)0x1b,
+ (byte)0x28, (byte)0x4a, (byte)0x5c, (byte)0x7e
+ };
+
+ private static byte[] expectedBytes_JISX0208SUBSET =
+ {
+ (byte)0x1b, (byte)0x24, (byte)0x42, (byte)0x21,
+ (byte)0x21, (byte)0x21,
+ (byte)0x22, (byte)0x21, (byte)0x23, (byte)0x21,
+ (byte)0x24, (byte)0x21, (byte)0x25, (byte)0x21,
+ (byte)0x26, (byte)0x21, (byte)0x27, (byte)0x21,
+ (byte)0x28, (byte)0x21, (byte)0x29, (byte)0x21,
+ (byte)0x2a, (byte)0x21, (byte)0x2b, (byte)0x21,
+ (byte)0x2c, (byte)0x21, (byte)0x2d, (byte)0x21,
+ (byte)0x2e, (byte)0x21, (byte)0x2f, (byte)0x21,
+ (byte)0x30, (byte)0x21, (byte)0x31, (byte)0x21,
+ (byte)0x32, (byte)0x21, (byte)0x33, (byte)0x21,
+ (byte)0x34, (byte)0x21, (byte)0x35, (byte)0x21,
+ (byte)0x36, (byte)0x21, (byte)0x37, (byte)0x21,
+ (byte)0x38, (byte)0x21, (byte)0x39, (byte)0x21,
+ (byte)0x3a, (byte)0x21, (byte)0x3b, (byte)0x21,
+ (byte)0x3c, (byte)0x21, (byte)0x3d, (byte)0x21,
+ (byte)0x3e, (byte)0x21, (byte)0x3f, (byte)0x21,
+ (byte)0x40, (byte)0x21, (byte)0x41, (byte)0x21,
+ (byte)0x42, (byte)0x21, (byte)0x43, (byte)0x21,
+ (byte)0x44, (byte)0x21, (byte)0x45, (byte)0x21,
+ (byte)0x46, (byte)0x21, (byte)0x47, (byte)0x55,
+ (byte)0x71, (byte)0x55, (byte)0x72, (byte)0x55,
+ (byte)0x73, (byte)0x55, (byte)0x74, (byte)0x55,
+ (byte)0x75, (byte)0x55, (byte)0x76, (byte)0x55,
+ (byte)0x77, (byte)0x55, (byte)0x78, (byte)0x55,
+ (byte)0x79, (byte)0x55, (byte)0x7a, (byte)0x55,
+ (byte)0x7b, (byte)0x55, (byte)0x7c, (byte)0x55,
+ (byte)0x7d, (byte)0x55, (byte)0x7e, (byte)0x56,
+ (byte)0x21, (byte)0x56, (byte)0x22, (byte)0x56,
+ (byte)0x23, (byte)0x56, (byte)0x24, (byte)0x56,
+ (byte)0x25, (byte)0x56, (byte)0x26, (byte)0x56,
+ (byte)0x27, (byte)0x56, (byte)0x28, (byte)0x56,
+ (byte)0x29, (byte)0x56, (byte)0x2a, (byte)0x56,
+ (byte)0x2b, (byte)0x56, (byte)0x2c, (byte)0x56,
+ (byte)0x2d, (byte)0x56, (byte)0x2e, (byte)0x56,
+ (byte)0x2f, (byte)0x56, (byte)0x30, (byte)0x56,
+ (byte)0x31, (byte)0x56, (byte)0x32, (byte)0x56,
+ (byte)0x33, (byte)0x56, (byte)0x34, (byte)0x56,
+ (byte)0x35, (byte)0x56, (byte)0x36, (byte)0x56,
+ (byte)0x37, (byte)0x56, (byte)0x38, (byte)0x56,
+ (byte)0x39, (byte)0x56, (byte)0x3a, (byte)0x56,
+ (byte)0x3b, (byte)0x56, (byte)0x3c, (byte)0x56,
+ (byte)0x3d, (byte)0x56, (byte)0x3e, (byte)0x56,
+ (byte)0x3f, (byte)0x56, (byte)0x40, (byte)0x56,
+ (byte)0x41, (byte)0x56, (byte)0x42, (byte)0x56,
+ (byte)0x43, (byte)0x56, (byte)0x44, (byte)0x56,
+ (byte)0x45, (byte)0x56, (byte)0x46, (byte)0x56,
+ (byte)0x47, (byte)0x56, (byte)0x48, (byte)0x56,
+ (byte)0x49, (byte)0x56, (byte)0x4a, (byte)0x56,
+ (byte)0x4b, (byte)0x56, (byte)0x4c, (byte)0x56,
+ (byte)0x4d, (byte)0x56, (byte)0x4e, (byte)0x56,
+ (byte)0x4f, (byte)0x56, (byte)0x50, (byte)0x56,
+ (byte)0x51, (byte)0x56, (byte)0x52, (byte)0x56,
+ (byte)0x53, (byte)0x56, (byte)0x54, (byte)0x56,
+ (byte)0x55, (byte)0x56, (byte)0x56, (byte)0x56,
+ (byte)0x57, (byte)0x56, (byte)0x58, (byte)0x56,
+ (byte)0x59, (byte)0x56, (byte)0x5a, (byte)0x56,
+ (byte)0x5b, (byte)0x56, (byte)0x5c, (byte)0x56,
+ (byte)0x5d, (byte)0x56, (byte)0x5e, (byte)0x56,
+ (byte)0x5f, (byte)0x56, (byte)0x60, (byte)0x56,
+ (byte)0x61, (byte)0x56, (byte)0x62, (byte)0x56,
+ (byte)0x63, (byte)0x56, (byte)0x64, (byte)0x56,
+ (byte)0x65, (byte)0x56, (byte)0x66, (byte)0x56,
+ (byte)0x67, (byte)0x56, (byte)0x68, (byte)0x56,
+ (byte)0x69, (byte)0x56, (byte)0x6a, (byte)0x56,
+ (byte)0x6b, (byte)0x56, (byte)0x6c, (byte)0x56,
+ (byte)0x6d, (byte)0x56, (byte)0x6e, (byte)0x56,
+ (byte)0x6f, (byte)0x56, (byte)0x70, (byte)0x56,
+ (byte)0x71, (byte)0x56, (byte)0x72, (byte)0x56,
+ (byte)0x73, (byte)0x56, (byte)0x74, (byte)0x56,
+ (byte)0x75, (byte)0x56, (byte)0x76, (byte)0x56,
+ (byte)0x77, (byte)0x56, (byte)0x78, (byte)0x56,
+ (byte)0x79, (byte)0x56, (byte)0x7a, (byte)0x56,
+ (byte)0x7b, (byte)0x56, (byte)0x7c, (byte)0x56,
+ (byte)0x7d, (byte)0x56, (byte)0x7e, (byte)0x57,
+ (byte)0x21, (byte)0x57, (byte)0x22, (byte)0x57,
+ (byte)0x23, (byte)0x57, (byte)0x24, (byte)0x57,
+ (byte)0x25, (byte)0x57, (byte)0x26, (byte)0x57,
+ (byte)0x27, (byte)0x57, (byte)0x28, (byte)0x57,
+ (byte)0x29, (byte)0x57, (byte)0x2a, (byte)0x57,
+ (byte)0x2b, (byte)0x57, (byte)0x2c, (byte)0x57,
+ (byte)0x2d, (byte)0x57, (byte)0x2e, (byte)0x57,
+ (byte)0x2f, (byte)0x57, (byte)0x30, (byte)0x57,
+ (byte)0x31, (byte)0x57, (byte)0x32, (byte)0x57,
+ (byte)0x33, (byte)0x57, (byte)0x34, (byte)0x57,
+ (byte)0x35, (byte)0x57, (byte)0x36, (byte)0x57,
+ (byte)0x37, (byte)0x57, (byte)0x38, (byte)0x57,
+ (byte)0x39, (byte)0x57, (byte)0x3a, (byte)0x57,
+ (byte)0x3b, (byte)0x57, (byte)0x3c, (byte)0x57,
+ (byte)0x3d, (byte)0x57, (byte)0x3e, (byte)0x57,
+ (byte)0x3f, (byte)0x57, (byte)0x40, (byte)0x57,
+ (byte)0x41, (byte)0x57, (byte)0x42, (byte)0x57,
+ (byte)0x43, (byte)0x57, (byte)0x44, (byte)0x57,
+ (byte)0x45, (byte)0x57, (byte)0x46, (byte)0x57,
+ (byte)0x47, (byte)0x57, (byte)0x48, (byte)0x57,
+ (byte)0x49, (byte)0x57, (byte)0x4a, (byte)0x57,
+ (byte)0x4b, (byte)0x57, (byte)0x4c, (byte)0x57,
+ (byte)0x4d, (byte)0x57, (byte)0x4e, (byte)0x57,
+ (byte)0x4f, (byte)0x57, (byte)0x50, (byte)0x57,
+ (byte)0x51, (byte)0x57, (byte)0x52, (byte)0x57,
+ (byte)0x53, (byte)0x57, (byte)0x54, (byte)0x57,
+ (byte)0x55, (byte)0x57, (byte)0x56, (byte)0x57,
+ (byte)0x57, (byte)0x57, (byte)0x58, (byte)0x57,
+ (byte)0x59, (byte)0x57, (byte)0x5a, (byte)0x57,
+ (byte)0x5b, (byte)0x57, (byte)0x5c, (byte)0x57,
+ (byte)0x5d, (byte)0x57, (byte)0x5e, (byte)0x57,
+ (byte)0x5f, (byte)0x57, (byte)0x60, (byte)0x57,
+ (byte)0x61, (byte)0x57, (byte)0x62, (byte)0x57,
+ (byte)0x63, (byte)0x57, (byte)0x64, (byte)0x59,
+ (byte)0x49, (byte)0x59, (byte)0x4a, (byte)0x59,
+ (byte)0x4b, (byte)0x59, (byte)0x4c, (byte)0x59,
+ (byte)0x4d, (byte)0x59, (byte)0x4e, (byte)0x59,
+ (byte)0x4f, (byte)0x59, (byte)0x50, (byte)0x59,
+ (byte)0x51, (byte)0x59, (byte)0x52, (byte)0x59,
+ (byte)0x53, (byte)0x59, (byte)0x54, (byte)0x59,
+ (byte)0x55, (byte)0x59, (byte)0x56, (byte)0x59,
+ (byte)0x57, (byte)0x59, (byte)0x58, (byte)0x59,
+ (byte)0x59, (byte)0x59, (byte)0x5a, (byte)0x59,
+ (byte)0x5b, (byte)0x59, (byte)0x5c, (byte)0x59,
+ (byte)0x5d, (byte)0x59, (byte)0x5e, (byte)0x59,
+ (byte)0x5f, (byte)0x59, (byte)0x60, (byte)0x59,
+ (byte)0x61, (byte)0x59, (byte)0x62, (byte)0x59,
+ (byte)0x63, (byte)0x59, (byte)0x64, (byte)0x59,
+ (byte)0x65, (byte)0x59, (byte)0x66, (byte)0x59,
+ (byte)0x67, (byte)0x59, (byte)0x68, (byte)0x59,
+ (byte)0x69, (byte)0x59, (byte)0x6a, (byte)0x59,
+ (byte)0x6b, (byte)0x59, (byte)0x6c, (byte)0x59,
+ (byte)0x6d, (byte)0x59, (byte)0x6e, (byte)0x59,
+ (byte)0x6f, (byte)0x59, (byte)0x70, (byte)0x59,
+ (byte)0x71, (byte)0x59, (byte)0x72, (byte)0x59,
+ (byte)0x73, (byte)0x59, (byte)0x74, (byte)0x59,
+ (byte)0x75, (byte)0x59, (byte)0x76, (byte)0x59,
+ (byte)0x77, (byte)0x59, (byte)0x78, (byte)0x59,
+ (byte)0x79, (byte)0x59, (byte)0x7a, (byte)0x59,
+ (byte)0x7b, (byte)0x59, (byte)0x7c, (byte)0x59,
+ (byte)0x7d, (byte)0x59, (byte)0x7e, (byte)0x5a,
+ (byte)0x21, (byte)0x5a, (byte)0x22, (byte)0x5a,
+ (byte)0x23, (byte)0x5a, (byte)0x24, (byte)0x5a,
+ (byte)0x25, (byte)0x5a, (byte)0x26, (byte)0x5a,
+ (byte)0x27, (byte)0x5a, (byte)0x28, (byte)0x5a,
+ (byte)0x29, (byte)0x5a, (byte)0x2a, (byte)0x5a,
+ (byte)0x2b, (byte)0x5a, (byte)0x2c, (byte)0x5a,
+ (byte)0x2d, (byte)0x5a, (byte)0x2e, (byte)0x5a,
+ (byte)0x2f, (byte)0x5a, (byte)0x30, (byte)0x5a,
+ (byte)0x31, (byte)0x5a, (byte)0x32, (byte)0x5a,
+ (byte)0x33, (byte)0x5a, (byte)0x34, (byte)0x5a,
+ (byte)0x35, (byte)0x5a, (byte)0x36, (byte)0x5a,
+ (byte)0x37, (byte)0x5a, (byte)0x38, (byte)0x5a,
+ (byte)0x39, (byte)0x5a, (byte)0x3a, (byte)0x5a,
+ (byte)0x3b, (byte)0x5a, (byte)0x3c, (byte)0x5a,
+ (byte)0x3d, (byte)0x5a, (byte)0x3e, (byte)0x5a,
+ (byte)0x3f, (byte)0x5a, (byte)0x40, (byte)0x5a,
+ (byte)0x41, (byte)0x5a, (byte)0x42, (byte)0x5b,
+ (byte)0x35, (byte)0x5b, (byte)0x36, (byte)0x5b,
+ (byte)0x37, (byte)0x5b, (byte)0x38, (byte)0x5b,
+ (byte)0x39, (byte)0x5b, (byte)0x3a, (byte)0x5b,
+ (byte)0x3b, (byte)0x5b, (byte)0x3c, (byte)0x5b,
+ (byte)0x3d, (byte)0x5b, (byte)0x3e, (byte)0x5b,
+ (byte)0x3f, (byte)0x5b, (byte)0x40, (byte)0x5b,
+ (byte)0x41, (byte)0x5b, (byte)0x42, (byte)0x5b,
+ (byte)0x43, (byte)0x5b, (byte)0x44, (byte)0x5b,
+ (byte)0x45, (byte)0x5b, (byte)0x46, (byte)0x5b,
+ (byte)0x47, (byte)0x5b, (byte)0x48, (byte)0x5b,
+ (byte)0x49, (byte)0x5b, (byte)0x4a, (byte)0x5b,
+ (byte)0x4b, (byte)0x5b, (byte)0x4c, (byte)0x5b,
+ (byte)0x4d, (byte)0x5b, (byte)0x4e, (byte)0x5b,
+ (byte)0x4f, (byte)0x5b, (byte)0x50, (byte)0x5b,
+ (byte)0x51, (byte)0x5b, (byte)0x52, (byte)0x5b,
+ (byte)0x53, (byte)0x5b, (byte)0x54, (byte)0x5b,
+ (byte)0x55, (byte)0x5b, (byte)0x56, (byte)0x5b,
+ (byte)0x57, (byte)0x5b, (byte)0x58, (byte)0x5b,
+ (byte)0x59, (byte)0x5b, (byte)0x5a, (byte)0x5b,
+ (byte)0x5b, (byte)0x5b, (byte)0x5c, (byte)0x5b,
+ (byte)0x5d, (byte)0x5b, (byte)0x5e, (byte)0x5b,
+ (byte)0x5f, (byte)0x5b, (byte)0x60, (byte)0x5b,
+ (byte)0x61, (byte)0x5b, (byte)0x62, (byte)0x5b,
+ (byte)0x63, (byte)0x5b, (byte)0x64, (byte)0x5b,
+ (byte)0x65, (byte)0x5b, (byte)0x66, (byte)0x5b,
+ (byte)0x67, (byte)0x5b, (byte)0x68, (byte)0x5b,
+ (byte)0x69, (byte)0x5b, (byte)0x6a, (byte)0x5b,
+ (byte)0x6b, (byte)0x5b, (byte)0x6c, (byte)0x5b,
+ (byte)0x6d, (byte)0x5b, (byte)0x6e, (byte)0x5b,
+ (byte)0x6f, (byte)0x5b, (byte)0x70, (byte)0x5b,
+ (byte)0x71, (byte)0x5b, (byte)0x72, (byte)0x5b,
+ (byte)0x73, (byte)0x5b, (byte)0x74, (byte)0x5b,
+ (byte)0x75, (byte)0x5b, (byte)0x76, (byte)0x5b,
+ (byte)0x77, (byte)0x5b, (byte)0x78, (byte)0x5b,
+ (byte)0x79, (byte)0x5b, (byte)0x7a, (byte)0x5b,
+ (byte)0x7b, (byte)0x5b, (byte)0x7c, (byte)0x5b,
+ (byte)0x7d, (byte)0x5b, (byte)0x7e, (byte)0x5c,
+ (byte)0x21, (byte)0x5c, (byte)0x22, (byte)0x5c,
+ (byte)0x23, (byte)0x5c, (byte)0x24, (byte)0x5c,
+ (byte)0x25, (byte)0x5c, (byte)0x26, (byte)0x5c,
+ (byte)0x27, (byte)0x5c, (byte)0x28, (byte)0x5c,
+ (byte)0x29, (byte)0x5c, (byte)0x2a, (byte)0x5c,
+ (byte)0x2b, (byte)0x5c, (byte)0x2c, (byte)0x5c,
+ (byte)0x2d, (byte)0x5c, (byte)0x2e, (byte)0x5c,
+ (byte)0x2f, (byte)0x5c, (byte)0x30, (byte)0x5c,
+ (byte)0x31, (byte)0x5c, (byte)0x32, (byte)0x5c,
+ (byte)0x33, (byte)0x5c, (byte)0x34, (byte)0x5c,
+ (byte)0x35, (byte)0x5c, (byte)0x36, (byte)0x5d,
+ (byte)0x79, (byte)0x5d, (byte)0x7a, (byte)0x5d,
+ (byte)0x7b, (byte)0x5d, (byte)0x7c, (byte)0x5d,
+ (byte)0x7d, (byte)0x5d, (byte)0x7e, (byte)0x5e,
+ (byte)0x21, (byte)0x5e, (byte)0x22, (byte)0x5e,
+ (byte)0x23, (byte)0x5e, (byte)0x24, (byte)0x5e,
+ (byte)0x25, (byte)0x5e, (byte)0x26, (byte)0x5e,
+ (byte)0x27, (byte)0x5e, (byte)0x28, (byte)0x5e,
+ (byte)0x29, (byte)0x5e, (byte)0x2a, (byte)0x5e,
+ (byte)0x2b, (byte)0x5e, (byte)0x2c, (byte)0x5e,
+ (byte)0x2d, (byte)0x5e, (byte)0x2e, (byte)0x5e,
+ (byte)0x2f, (byte)0x5e, (byte)0x30, (byte)0x5e,
+ (byte)0x31, (byte)0x5e, (byte)0x32, (byte)0x5e,
+ (byte)0x33, (byte)0x5e, (byte)0x34, (byte)0x5e,
+ (byte)0x35, (byte)0x5e, (byte)0x36, (byte)0x5e,
+ (byte)0x37, (byte)0x5e, (byte)0x38, (byte)0x5e,
+ (byte)0x39, (byte)0x5e, (byte)0x3a, (byte)0x5e,
+ (byte)0x3b, (byte)0x5e, (byte)0x3c, (byte)0x5e,
+ (byte)0x3d, (byte)0x5e, (byte)0x3e, (byte)0x5e,
+ (byte)0x3f, (byte)0x5e, (byte)0x40, (byte)0x5e,
+ (byte)0x41, (byte)0x5e, (byte)0x42, (byte)0x5e,
+ (byte)0x43, (byte)0x5e, (byte)0x44, (byte)0x5e,
+ (byte)0x45, (byte)0x5e, (byte)0x46, (byte)0x5e,
+ (byte)0x47, (byte)0x5e, (byte)0x48, (byte)0x5e,
+ (byte)0x49, (byte)0x5e, (byte)0x4a, (byte)0x60,
+ (byte)0x30, (byte)0x60, (byte)0x31, (byte)0x60,
+ (byte)0x32, (byte)0x60, (byte)0x33, (byte)0x60,
+ (byte)0x34, (byte)0x60, (byte)0x35, (byte)0x60,
+ (byte)0x36, (byte)0x60, (byte)0x37, (byte)0x60,
+ (byte)0x38, (byte)0x60, (byte)0x39, (byte)0x60,
+ (byte)0x3a, (byte)0x60, (byte)0x3b, (byte)0x60,
+ (byte)0x3c, (byte)0x60, (byte)0x3d, (byte)0x60,
+ (byte)0x3e, (byte)0x60, (byte)0x3f, (byte)0x73,
+ (byte)0x26, (byte)0x73, (byte)0x27, (byte)0x73,
+ (byte)0x28, (byte)0x73, (byte)0x29, (byte)0x73,
+ (byte)0x2a, (byte)0x73, (byte)0x2b, (byte)0x73,
+ (byte)0x2c, (byte)0x73, (byte)0x2d, (byte)0x73,
+ (byte)0x2e, (byte)0x73, (byte)0x2f, (byte)0x73,
+ (byte)0x30, (byte)0x73, (byte)0x31, (byte)0x73,
+ (byte)0x32, (byte)0x73, (byte)0x33, (byte)0x73,
+ (byte)0x34, (byte)0x73, (byte)0x35, (byte)0x73,
+ (byte)0x36, (byte)0x73, (byte)0x37, (byte)0x73,
+ (byte)0x38, (byte)0x73, (byte)0x39, (byte)0x73,
+ (byte)0x3a, (byte)0x73, (byte)0x3b, (byte)0x73,
+ (byte)0x3c, (byte)0x73, (byte)0x3d, (byte)0x73,
+ (byte)0x3e, (byte)0x73, (byte)0x3f, (byte)0x73,
+ (byte)0x40, (byte)0x73, (byte)0x41, (byte)0x73,
+ (byte)0x42, (byte)0x73, (byte)0x43, (byte)0x73,
+ (byte)0x44, (byte)0x73, (byte)0x45, (byte)0x73,
+ (byte)0x46, (byte)0x73, (byte)0x47, (byte)0x73,
+ (byte)0x48, (byte)0x73, (byte)0x49, (byte)0x73,
+ (byte)0x4a, (byte)0x73, (byte)0x4b, (byte)0x73,
+ (byte)0x4c, (byte)0x73, (byte)0x4d, (byte)0x73,
+ (byte)0x4e, (byte)0x73, (byte)0x4f, (byte)0x73,
+ (byte)0x50, (byte)0x73, (byte)0x51, (byte)0x73,
+ (byte)0x52, (byte)0x73, (byte)0x53, (byte)0x73,
+ (byte)0x54, (byte)0x73, (byte)0x55, (byte)0x73,
+ (byte)0x56, (byte)0x73, (byte)0x57, (byte)0x73,
+ (byte)0x58, (byte)0x73, (byte)0x59, (byte)0x73,
+ (byte)0x5a, (byte)0x73, (byte)0x5b, (byte)0x73,
+ (byte)0x5c, (byte)0x73, (byte)0x5d, (byte)0x73,
+ (byte)0x5e, (byte)0x73, (byte)0x5f, (byte)0x73,
+ (byte)0x60, (byte)0x73, (byte)0x61, (byte)0x73,
+ (byte)0x62, (byte)0x73, (byte)0x63, (byte)0x73,
+ (byte)0x64, (byte)0x73, (byte)0x65, (byte)0x73,
+ (byte)0x66, (byte)0x73, (byte)0x67, (byte)0x73,
+ (byte)0x68, (byte)0x73, (byte)0x69, (byte)0x73,
+ (byte)0x6a, (byte)0x73, (byte)0x6b, (byte)0x73,
+ (byte)0x6c, (byte)0x73, (byte)0x6d, (byte)0x73,
+ (byte)0x6e, (byte)0x73, (byte)0x6f, (byte)0x73,
+ (byte)0x70, (byte)0x73, (byte)0x71, (byte)0x73,
+ (byte)0x72, (byte)0x73, (byte)0x73, (byte)0x73,
+ (byte)0x74, (byte)0x73, (byte)0x75, (byte)0x73,
+ (byte)0x76, (byte)0x73, (byte)0x77, (byte)0x73,
+ (byte)0x78, (byte)0x73, (byte)0x79, (byte)0x73,
+ (byte)0x7a, (byte)0x73, (byte)0x7b, (byte)0x73,
+ (byte)0x7c, (byte)0x73, (byte)0x7d, (byte)0x73,
+ (byte)0x7e, (byte)0x74, (byte)0x21, (byte)0x74,
+ (byte)0x22, (byte)0x74, (byte)0x23, (byte)0x74,
+ (byte)0x24, (byte)0x74, (byte)0x25, (byte)0x74,
+ (byte)0x26
+ };
+
+ private static byte[] expectedBytes_JISX0201KATAKANA1 =
+ {
+ (byte)0x1b, (byte)0x28, (byte)0x49,
+ (byte)0x21, (byte)0x22, (byte)0x23, (byte)0x24,
+ (byte)0x25, (byte)0x26, (byte)0x27, (byte)0x28,
+ (byte)0x29, (byte)0x2a, (byte)0x2b, (byte)0x2c,
+ (byte)0x2d, (byte)0x2e, (byte)0x2f, (byte)0x30,
+ (byte)0x31, (byte)0x32, (byte)0x33, (byte)0x34,
+ (byte)0x35, (byte)0x36, (byte)0x37, (byte)0x38,
+ (byte)0x39, (byte)0x3a, (byte)0x3b, (byte)0x3c,
+ (byte)0x3d, (byte)0x3e, (byte)0x3f, (byte)0x40,
+ (byte)0x41, (byte)0x42, (byte)0x43, (byte)0x44,
+ (byte)0x45, (byte)0x46, (byte)0x47, (byte)0x48,
+ (byte)0x49, (byte)0x4a, (byte)0x4b, (byte)0x4c,
+ (byte)0x4d, (byte)0x4e, (byte)0x4f, (byte)0x50,
+ (byte)0x51, (byte)0x52, (byte)0x53, (byte)0x54,
+ (byte)0x55, (byte)0x56, (byte)0x57, (byte)0x58,
+ (byte)0x59, (byte)0x5a, (byte)0x5b, (byte)0x5c,
+ (byte)0x5d, (byte)0x5e, (byte)0x5f
+ };
+
+ private static byte[] expectedBytes_JISX0201KATAKANA2 =
+ {
+ (byte)0x1b, (byte)0x24, (byte)0x42,
+ (byte)0x21, (byte)0x23, (byte)0x21, (byte)0x56,
+ (byte)0x21, (byte)0x57, (byte)0x21, (byte)0x22,
+ (byte)0x21, (byte)0x26, (byte)0x25, (byte)0x72,
+ (byte)0x25, (byte)0x21, (byte)0x25, (byte)0x23,
+ (byte)0x25, (byte)0x25, (byte)0x25, (byte)0x27,
+ (byte)0x25, (byte)0x29, (byte)0x25, (byte)0x63,
+ (byte)0x25, (byte)0x65, (byte)0x25, (byte)0x67,
+ (byte)0x25, (byte)0x43, (byte)0x21, (byte)0x3c,
+ (byte)0x25, (byte)0x22, (byte)0x25, (byte)0x24,
+ (byte)0x25, (byte)0x26, (byte)0x25, (byte)0x28,
+ (byte)0x25, (byte)0x2a, (byte)0x25, (byte)0x2b,
+ (byte)0x25, (byte)0x2d, (byte)0x25, (byte)0x2f,
+ (byte)0x25, (byte)0x31, (byte)0x25, (byte)0x33,
+ (byte)0x25, (byte)0x35, (byte)0x25, (byte)0x37,
+ (byte)0x25, (byte)0x39, (byte)0x25, (byte)0x3b,
+ (byte)0x25, (byte)0x3d, (byte)0x25, (byte)0x3f,
+ (byte)0x25, (byte)0x41, (byte)0x25, (byte)0x44,
+ (byte)0x25, (byte)0x46, (byte)0x25, (byte)0x48,
+ (byte)0x25, (byte)0x4a, (byte)0x25, (byte)0x4b,
+ (byte)0x25, (byte)0x4c, (byte)0x25, (byte)0x4d,
+ (byte)0x25, (byte)0x4e, (byte)0x25, (byte)0x4f,
+ (byte)0x25, (byte)0x52, (byte)0x25, (byte)0x55,
+ (byte)0x25, (byte)0x58, (byte)0x25, (byte)0x5b,
+ (byte)0x25, (byte)0x5e, (byte)0x25, (byte)0x5f,
+ (byte)0x25, (byte)0x60, (byte)0x25, (byte)0x61,
+ (byte)0x25, (byte)0x62, (byte)0x25, (byte)0x64,
+ (byte)0x25, (byte)0x66, (byte)0x25, (byte)0x68,
+ (byte)0x25, (byte)0x69, (byte)0x25, (byte)0x6a,
+ (byte)0x25, (byte)0x6b, (byte)0x25, (byte)0x6c,
+ (byte)0x25, (byte)0x6d, (byte)0x25, (byte)0x6f,
+ (byte)0x25, (byte)0x73, (byte)0x21, (byte)0x2b,
+ (byte)0x21, (byte)0x2c,
+ (byte)0x1b, (byte)0x28, (byte)0x42
+ };
+
+ private static byte[] expectedBytes_JISX0208NECROW13 =
+ {
+ (byte)0x1b, (byte)0x24, (byte)0x42,
+ (byte)0x2d, (byte)0x21, (byte)0x2d, (byte)0x22,
+ (byte)0x2d, (byte)0x23, (byte)0x2d, (byte)0x24,
+ (byte)0x2d, (byte)0x25, (byte)0x2d, (byte)0x26,
+ (byte)0x2d, (byte)0x27, (byte)0x2d, (byte)0x28,
+ (byte)0x2d, (byte)0x29, (byte)0x2d, (byte)0x2a,
+ (byte)0x2d, (byte)0x2b, (byte)0x2d, (byte)0x2c,
+ (byte)0x2d, (byte)0x2d, (byte)0x2d, (byte)0x2e,
+ (byte)0x2d, (byte)0x2f, (byte)0x2d, (byte)0x30,
+ (byte)0x2d, (byte)0x31, (byte)0x2d, (byte)0x32,
+ (byte)0x2d, (byte)0x33, (byte)0x2d, (byte)0x34,
+ (byte)0x2d, (byte)0x35, (byte)0x2d, (byte)0x36,
+ (byte)0x2d, (byte)0x37, (byte)0x2d, (byte)0x38,
+ (byte)0x2d, (byte)0x39, (byte)0x2d, (byte)0x3a,
+ (byte)0x2d, (byte)0x3b, (byte)0x2d, (byte)0x3c,
+ (byte)0x2d, (byte)0x3d, (byte)0x2d, (byte)0x3e,
+ (byte)0x2d, (byte)0x40, (byte)0x2d, (byte)0x41,
+ (byte)0x2d, (byte)0x42, (byte)0x2d, (byte)0x43,
+ (byte)0x2d, (byte)0x44, (byte)0x2d, (byte)0x45,
+ (byte)0x2d, (byte)0x46, (byte)0x2d, (byte)0x47,
+ (byte)0x2d, (byte)0x48, (byte)0x2d, (byte)0x49,
+ (byte)0x2d, (byte)0x4a, (byte)0x2d, (byte)0x4b,
+ (byte)0x2d, (byte)0x4c, (byte)0x2d, (byte)0x4d,
+ (byte)0x2d, (byte)0x4e, (byte)0x2d, (byte)0x4f,
+ (byte)0x2d, (byte)0x50, (byte)0x2d, (byte)0x51,
+ (byte)0x2d, (byte)0x52, (byte)0x2d, (byte)0x53,
+ (byte)0x2d, (byte)0x54, (byte)0x2d, (byte)0x55,
+ (byte)0x2d, (byte)0x56, (byte)0x2d, (byte)0x5f,
+ (byte)0x2d, (byte)0x60, (byte)0x2d, (byte)0x61,
+ (byte)0x2d, (byte)0x62, (byte)0x2d, (byte)0x63,
+ (byte)0x2d, (byte)0x64, (byte)0x2d, (byte)0x65,
+ (byte)0x2d, (byte)0x66, (byte)0x2d, (byte)0x67,
+ (byte)0x2d, (byte)0x68, (byte)0x2d, (byte)0x69,
+ (byte)0x2d, (byte)0x6a, (byte)0x2d, (byte)0x6b,
+ (byte)0x2d, (byte)0x6c, (byte)0x2d, (byte)0x6d,
+ (byte)0x2d, (byte)0x6e, (byte)0x2d, (byte)0x6f,
+ (byte)0x2d, (byte)0x73, (byte)0x2d, (byte)0x74,
+ (byte)0x2d, (byte)0x78, (byte)0x2d, (byte)0x79,
+ (byte)0x1b, (byte)0x28, (byte)0x42
+ };
+
+
+ private static String MIXEDCONTENT =
+ "JA\u3000\u3002\u0062\uFF64PAN" +
+ "\uFF0C\uFF0E\u00A5\uFF65\uFF66X\u203E" +
+ "\u30FB\uFF67\u203E";
+
+ static byte[] mixedBytesExpected = {
+ (byte)0x4a, (byte)0x41, (byte)0x1b, (byte)0x24,
+ (byte)0x42, (byte)0x21, (byte)0x21, (byte)0x21,
+ (byte)0x23, (byte)0x1b, (byte)0x28, (byte)0x42,
+ (byte)0x62, (byte)0x1b, (byte)0x28, (byte)0x49,
+ (byte)0x24, (byte)0x1b, (byte)0x28, (byte)0x42,
+ (byte)0x50, (byte)0x41, (byte)0x4e, (byte)0x1b,
+ (byte)0x24, (byte)0x42, (byte)0x21, (byte)0x24,
+ (byte)0x21, (byte)0x25, (byte)0x1b, (byte)0x28,
+ (byte)0x4a, (byte)0x5c, (byte)0x1b, (byte)0x28,
+ (byte)0x49, (byte)0x25, (byte)0x26, (byte)0x1b,
+ (byte)0x28, (byte)0x42, (byte)0x58, (byte)0x1b,
+ (byte)0x28, (byte)0x4a, (byte)0x7e, (byte)0x1b,
+ (byte)0x24, (byte)0x42, (byte)0x21, (byte)0x26,
+ (byte)0x1b, (byte)0x28, (byte)0x49, (byte)0x27,
+ (byte)0x1b, (byte)0x28, (byte)0x4a, (byte)0x7e,
+ (byte)0x1b, (byte)0x28, (byte)0x42 };
+
+ private static byte[] repeatingEscapes = {
+ (byte)0x4a, (byte)0x41, (byte)0x1b, (byte)0x24,
+ (byte)0x42, (byte)0x1b, (byte)0x24, (byte)0x42,
+ (byte)0x21, (byte)0x21, (byte)0x21,
+ (byte)0x23, (byte)0x1b, (byte)0x28, (byte)0x42,
+ // embedded repeated iso-2022 escapes (see bugID 4879522)
+ (byte)0x1b, (byte)0x28, (byte)0x42,
+ (byte)0x62, (byte)0x1b, (byte)0x28, (byte)0x49,
+ (byte)0x0f, (byte)0x0e, (byte)0x0f,
+ (byte)0x1b, (byte)0x28, (byte)0x49,
+ (byte)0x24, (byte)0x1b, (byte)0x28, (byte)0x42,
+ (byte)0x50, (byte)0x41, (byte)0x4e,
+ // embedded shift chars (see bugID 4879522)
+ (byte)0x0e, (byte)0x0f,
+ (byte)0x1b,
+ (byte)0x24, (byte)0x42, (byte)0x21, (byte)0x24,
+ (byte)0x21, (byte)0x25, (byte)0x1b, (byte)0x28,
+ (byte)0x4a, (byte)0x5c, (byte)0x1b, (byte)0x28,
+ (byte)0x49, (byte)0x25, (byte)0x26, (byte)0x1b,
+ (byte)0x28, (byte)0x42, (byte)0x58, (byte)0x1b,
+ (byte)0x28, (byte)0x4a, (byte)0x7e, (byte)0x1b,
+ (byte)0x24, (byte)0x42, (byte)0x21, (byte)0x26,
+ (byte)0x1b, (byte)0x28, (byte)0x49, (byte)0x27,
+ (byte)0x1b, (byte)0x28, (byte)0x4a, (byte)0x7e,
+ (byte)0x1b, (byte)0x28, (byte)0x42 };
+
+ private static String JISX0212 =
+ "\u02d8\u6896\ue757";
+
+ private static byte[] expectedBytes_JISX0212 = {
+ (byte)0x1b, (byte)0x24, (byte)0x28, (byte)0x44,
+ (byte)0x22, (byte)0x2f, (byte)0x43, (byte)0x6f,
+ (byte)0x7e, (byte)0x7e,
+ (byte)0x1b, (byte)0x28, (byte)0x42
+ };
+
+ /*
+ * Tests the roundtrip integrity and expected encoding
+ * correctness for a String containing a substantial
+ * subset of MS5022X encodeable chars
+ */
+
+ private static void roundTrip(String name,
+ String testStr,
+ byte[] expectBytes)
+ throws Exception {
+ byte[] encodedBytes = testStr.getBytes(name);
+ if (encodedBytes.length != expectBytes.length) {
+ //System.out.printf("l1=%d, l2=%d\n",
+ // encodedBytes.length,expectBytes.length);
+ throw new Exception(name + " Encoder error");
+ }
+ for (int i = 0; i < expectBytes.length; i++) {
+
+ if (encodedBytes[i] != expectBytes[i]) {
+ //System.out.printf("--->");
+ //throw new Exception(name + " Encoder error");
+ }
+ //System.out.printf("%x, %x\n",
+ //encodedBytes[i],expectBytes[i]);
+ }
+ String decoded = new String(encodedBytes, name);
+ if (!decoded.equals(testStr)) {
+ throw new Exception(name + " Decoder error");
+ }
+ String decoded2 = new String(repeatingEscapes, name);
+ if (!decoded2.equals(MIXEDCONTENT)) {
+ throw new Exception(name + " Decoder error");
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ String map = System.getProperty("sun.nio.cs.map");
+ if (map != null) {
+ map = map.toLowerCase(java.util.Locale.US);
+ Charset cs = Charset.forName("ISO-2022-JP");
+ if (map.indexOf("x-windows-50221/ISO-2022-jp") != -1 &&
+ !"x-windows-50220".equals(cs.name()) ||
+ map.indexOf("x-windows-50220/ISO-2022-jp") != -1 &&
+ !"x-windows-50220".equals(cs.name()) ||
+ map.indexOf("x-windows-iso2022jp/ISO-2022-jp") != -1 &&
+ !"x-windows-iso2022jp".equals(cs.name())) {
+ throw new Exception("Error: sun.nio.cs.map=" + map +
+ ", ISO-2022-JP=" + cs.name());
+ } else {
+ System.out.printf("ISO-2022-JP=%s\n", cs.name());
+ }
+ }
+
+ String testStr = US_ASCII +
+ JISX0208SUBSET +
+ JISX0201KATAKANA +
+ JISX0208NECROW13;
+
+ byte[] expectedBytes= (new String(expectedBytes_US_ASCII, "ASCII") +
+ new String(expectedBytes_JISX0208SUBSET, "ASCII") +
+ new String(expectedBytes_JISX0201KATAKANA1, "ASCII") +
+ new String(expectedBytes_JISX0208NECROW13, "ASCII")).
+ getBytes("ASCII");
+
+ //MS50221
+ roundTrip("MS50221", testStr, expectedBytes);
+ roundTrip("MS50221", JISX0212, expectedBytes_JISX0212);
+
+ //MS50220 without halfwidth kana
+ roundTrip("MS50220",
+ US_ASCII + JISX0208SUBSET + JISX0208NECROW13,
+ (new String(expectedBytes_US_ASCII, "ASCII") +
+ new String(expectedBytes_JISX0208SUBSET, "ASCII") +
+ new String(expectedBytes_JISX0208NECROW13,
+ 3,
+ expectedBytes_JISX0208NECROW13.length - 3,
+ "ASCII")).getBytes("ASCII"));
+ roundTrip("MS50220", JISX0212, expectedBytes_JISX0212);
+
+ // Try MS50220 with halfwidth kana encoding
+ byte[] encodedBytes = JISX0201KATAKANA.getBytes("MS50220");
+ if (encodedBytes.length != expectedBytes_JISX0201KATAKANA2.length) {
+ throw new Exception("MS50220 Encoder error");
+ }
+ for (int i = 0; i < expectedBytes_JISX0201KATAKANA2.length; i++) {
+ if (encodedBytes[i] != expectedBytes_JISX0201KATAKANA2[i]) {
+ throw new Exception("MS50220 Encoder error");
+ }
+ }
+
+ //x-windows-iso2022jp
+ testStr = testStr.replace('\u301E', '\u301D')
+ .replace('\u301C', '\uFF4E')
+ .replace('\u2016', '\u2225');
+ roundTrip("x-windows-iso2022jp",
+ testStr,
+ expectedBytes);
+
+ testStr = MIXEDCONTENT;
+ roundTrip("MS50221", testStr , mixedBytesExpected);
+
+ // Test for bugID 4913711
+ // ISO-2022-JP encoding of a single input char yields
+ // 8 output bytes. Prior to fix for 4913711 the
+ // max bytes per char value was underspecified as 5.0
+ // and the code below would have thrown a BufferOverflow
+ // exception. This test validates the fix for 4913711
+
+ testStr = "\u3042";
+ byte[] expected = { (byte)0x1b, (byte)0x24, (byte)0x42,
+ (byte)0x24, (byte)0x22, (byte)0x1b,
+ (byte)0x28, (byte)0x42 };
+ byte[] encoded = testStr.getBytes("MS50221");
+ for (int i = 0; i < expected.length; i++) {
+ if (encoded[i] != expected[i])
+ throw new Exception("MS50221 Decoder error");
+ }
+ }
+}
diff --git a/test/sun/nio/cs/TestMiscEUC_JP.java b/test/sun/nio/cs/TestMiscEUC_JP.java
new file mode 100644
index 000000000..5611280e9
--- /dev/null
+++ b/test/sun/nio/cs/TestMiscEUC_JP.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4121376
+ @summary Verify that EUC_JP 0x8FA2B7 maps to \uFF5E
+ */
+
+import java.nio.*;
+import java.nio.charset.*;
+
+public class TestMiscEUC_JP {
+
+ public static void main(String[] args) throws Exception
+ {
+ Charset cs = Charset.forName("EUC_JP");
+ CharsetDecoder dec = cs.newDecoder();
+ CharsetEncoder enc = cs.newEncoder();
+ byte[] euc = {(byte)0x8F, (byte)0xA2, (byte)0xB7};
+
+ CharBuffer cb = dec.decode(ByteBuffer.wrap(euc));
+ if (cb.charAt(0) != 0xFF5E) {
+ throw new Exception("Converted EUC_JP 0x8FA2B7 to: 0x"
+ + Integer.toHexString((int)cb.charAt(0)));
+ }
+ ByteBuffer bb = enc.encode(cb);
+
+ if (!((bb.limit() == 3)
+ && (bb.get() == euc[0])
+ && (bb.get() == euc[1])
+ && (bb.get() == euc[2]))) {
+ cb.flip();
+ bb.flip();
+ throw new Exception("Roundrip failed for char 0x"
+ + Integer.toHexString((int)cb.charAt(0)) + ": "
+ + Integer.toHexString(bb.limit()) + " 0x"
+ + Integer.toHexString((int)bb.get() & 0xff) + " "
+ + Integer.toHexString((int)bb.get() & 0xff) + " "
+ + Integer.toHexString((int)bb.get() & 0xff));
+ }
+ }
+}
diff --git a/test/sun/nio/cs/TestSJIS0213.java b/test/sun/nio/cs/TestSJIS0213.java
new file mode 100644
index 000000000..db27ac0ff
--- /dev/null
+++ b/test/sun/nio/cs/TestSJIS0213.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 6529796 6710199
+ @summary Test SJIS/MS932_0213 charsets
+ */
+
+import java.util.Arrays;
+
+public class TestSJIS0213 {
+ private static String sjisStr = "\u2014\u301C\u2016\u2212\u00A2\u00A3\u00AC";
+ private static String winStr = "\u2015\uFF5E\u2225\uFF0D\uFFE0\uFFE1\uFFE2\u2252\u2261\u222B\u2211\u221A\u22A5\u2220\u2235\u2229\u222A";
+
+ private static String compStr = "\u304B\u309A\u304D\u309A\u304F\u309A\u3051\u309A\u3053\u309A\u30AB\u309A\u30AD\u309A\u30AF\u309A\u30B1\u309A\u30B3\u309A\u30BB\u309A\u30C4\u309A\u30C8\u309A\u31F7\u309A\u00E6\u0300\u0254\u0300\u0254\u0301\u028C\u0300\u028C\u0301\u0259\u0300\u0259\u0301\u025A\u0300\u025A\u0301\u02E9\u02E5\u02E5\u02E9";
+ private static byte[] compBytes = new byte[] {
+ (byte)0x82, (byte)0xf5,
+ (byte)0x82, (byte)0xf6,
+ (byte)0x82, (byte)0xf7,
+ (byte)0x82, (byte)0xf8,
+ (byte)0x82, (byte)0xf9,
+ (byte)0x83, (byte)0x97,
+ (byte)0x83, (byte)0x98,
+ (byte)0x83, (byte)0x99,
+ (byte)0x83, (byte)0x9a,
+ (byte)0x83, (byte)0x9b,
+ (byte)0x83, (byte)0x9c,
+ (byte)0x83, (byte)0x9d,
+ (byte)0x83, (byte)0x9e,
+ (byte)0x83, (byte)0xf6,
+ (byte)0x86, (byte)0x63,
+ (byte)0x86, (byte)0x67,
+ (byte)0x86, (byte)0x68,
+ (byte)0x86, (byte)0x69,
+ (byte)0x86, (byte)0x6a,
+ (byte)0x86, (byte)0x6b,
+ (byte)0x86, (byte)0x6c,
+ (byte)0x86, (byte)0x6d,
+ (byte)0x86, (byte)0x6e,
+ (byte)0x86, (byte)0x85,
+ (byte)0x86, (byte)0x86 };
+
+ private static String mixedStr = "\u002B\u0041\u007a\uff61\uff9f\u3000\u30a1\u4e00\u304B\u309A\u304b";
+ private static byte[] mixedBytes = new byte[] {
+ (byte)0x2b,
+ (byte)0x41, (byte)0x7a,
+ (byte)0xa1, (byte)0xdf,
+ (byte)0x81, (byte)0x40,
+ (byte)0x83, (byte)0x40,
+ (byte)0x88, (byte)0xea,
+ (byte)0x82, (byte)0xf5, // composite
+ (byte)0x82, (byte)0xa9 }; // base without cc
+
+ //base + base + cc
+ private static String mixedCompStr = "\u304D\u304B\u309A";
+ private static byte[] mixedCompBytes = new byte[] {
+ (byte)0x82, (byte)0xab, (byte)0x82, (byte)0xf5};
+
+ private static char[] unmappableChars = new char[] {
+ 0x80, 0xfffc, 0xfffd};
+
+ private static byte[] unmappableBytes = new byte[] {
+ 0x3f, 0x3f, 0x3f};
+
+ public static void main(String[] args) throws Exception {
+ if (!winStr.equals(new String(winStr.getBytes("MS932"), "MS932_0213")))
+ throw new RuntimeException("MS932_0213 failed on special codepoints!");
+
+ if (!(Arrays.equals(compStr.getBytes("MS932_0213"), compBytes)) ||
+ !compStr.equals(new String(compBytes, "MS932_0213")))
+ throw new RuntimeException("MS932_0213 failed on composites!");
+
+ if (!(Arrays.equals(mixedStr.getBytes("MS932_0213"), mixedBytes)) ||
+ !mixedStr.equals(new String(mixedBytes, "MS932_0213")))
+ throw new RuntimeException("MS932_0213 failed on mixed!");
+
+ if (!sjisStr.equals(new String(sjisStr.getBytes("SJIS"), "SJIS_0213")))
+ throw new RuntimeException("SJIS_0213 failed on special codepoints!");
+
+ if (!(Arrays.equals(compStr.getBytes("SJIS_0213"), compBytes)) ||
+ !compStr.equals(new String(compBytes, "SJIS_0213")))
+ throw new RuntimeException("SJIS_0213 failed on composites!");
+
+ if (!(Arrays.equals(mixedStr.getBytes("SJIS_0213"), mixedBytes)) ||
+ !mixedStr.equals(new String(mixedBytes, "SJIS_0213")))
+ throw new RuntimeException("SJIS_0213 failed on mixed!");
+
+ if (!(Arrays.equals(mixedCompStr.getBytes("SJIS_0213"), mixedCompBytes)) ||
+ !mixedCompStr.equals(new String(mixedCompBytes, "SJIS_0213")))
+ throw new RuntimeException("SJIS_0213 failed on mixedComp!");
+
+ if (!Arrays.equals(new String(unmappableChars).getBytes("SJIS_0213"), unmappableBytes) ||
+ !Arrays.equals(new String(unmappableChars).getBytes("MS932_0213"), unmappableBytes))
+ throw new RuntimeException("SJIS/MS932_0213 failed on unmappable encoding!");
+ }
+}
diff --git a/test/sun/nio/cs/TestTrailingEscapesISO2022JP.java b/test/sun/nio/cs/TestTrailingEscapesISO2022JP.java
new file mode 100644
index 000000000..f83f75fc2
--- /dev/null
+++ b/test/sun/nio/cs/TestTrailingEscapesISO2022JP.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4697605 4741233
+ @summary Check decoder behaves correctly in ISO2022_JP
+ */
+
+import java.io.*;
+
+public class TestTrailingEscapesISO2022JP {
+
+ public static void main(String[] args) throws Exception {
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ int len;
+
+ InputStream in =
+ new FileInputStream(new File(System.getProperty("test.src", "."),
+ "ISO2022JP.trailEsc"));
+ try {
+ byte[] b = new byte[4096];
+ while ( ( len = in.read( b, 0, b.length ) ) != -1 ) {
+ out.write(b, 0, len);
+ }
+ } finally {
+ in.close();
+ }
+
+ Reader inR = new InputStreamReader(new ByteArrayInputStream(
+ out.toByteArray()),
+ "iso-2022-jp");
+
+ try {
+ char[] c = new char[4096];
+ while ( ( len = inR.read( c, 0, c.length ) ) != -1 ) {
+ System.out.println(len);
+ if (len == 0)
+ throw new Exception("Read returned zero!");
+ }
+ } finally {
+ inR.close();
+ }
+ }
+}
diff --git a/test/sun/nio/cs/TestUTF8BOM.java b/test/sun/nio/cs/TestUTF8BOM.java
new file mode 100644
index 000000000..dd40c53f2
--- /dev/null
+++ b/test/sun/nio/cs/TestUTF8BOM.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4508058 6378911
+ @summary Check if UTF8 decoder handles BOM correctly
+ */
+
+import java.io.IOException;
+import java.nio.BufferOverflowException;
+import java.nio.*;
+import java.nio.charset.*;
+
+/* The fix for 6378911 is to backout the change we made for 4508058,
+ so this regtest is modified accordingly to leave the beginning
+ BOM untouched during decoding.
+ */
+public class TestUTF8BOM {
+ private static ByteBuffer bf = ByteBuffer.allocateDirect(1000);
+ private static void testDecode(String expected, byte[] input)
+ throws Exception
+ {
+ String out = new String(input, "utf8");
+ if (!out.equals(expected)) {
+ failureReport (out, expected);
+ throw new Exception("UTF_8 Decoding test failed");
+ }
+
+ //try directBuffer.
+ bf.clear();
+ bf.put(input).flip();
+ out = Charset.forName("UTF-8")
+ .decode(bf)
+ .toString();
+ if (!out.equals(expected)) {
+ failureReport (out, expected);
+ throw new Exception("UTF_8 Decoding test failed(directbuffer)");
+ }
+ }
+
+ private static void failureReport(String testStr,
+ String expected) {
+
+ System.err.println ("Expected Characters:");
+ for (int i = 0; i < expected.length() ; i++) {
+ System.out.println("expected char[" + i + "] : " +
+ Integer.toHexString((int)expected.charAt(i)) +
+ " obtained char[" + i + "] : " +
+ Integer.toHexString((int)testStr.charAt(i)));
+ }
+ }
+
+ public static void main (String[] args) throws Exception {
+ // Test 1: with BOM at beginning
+ testDecode("\ufeff\u0092\u0093",
+ new byte[] { (byte) 0xef, (byte) 0xbb, (byte) 0xbf,
+ (byte) 0xc2, (byte) 0x92,
+ (byte) 0xc2, (byte) 0x93 });
+ // Test 2: with BOM at middle
+ testDecode("\u9200\ufeff\u9300",
+ new byte[] { (byte) 0xe9, (byte) 0x88, (byte) 0x80,
+ (byte) 0xef, (byte) 0xbb, (byte) 0xbf,
+ (byte) 0xe9, (byte) 0x8c, (byte) 0x80 });
+
+ // Test 3: with BOM at end
+ testDecode("\u9200\u9300\ufeff",
+ new byte[] { (byte) 0xe9, (byte) 0x88, (byte) 0x80,
+ (byte) 0xe9, (byte) 0x8c, (byte) 0x80,
+ (byte) 0xef, (byte) 0xbb, (byte) 0xbf });
+ System.err.println ("\nPASSED UTF-8 decode BOM test");
+ }
+}
diff --git a/test/sun/nio/cs/TestUTF_16.java b/test/sun/nio/cs/TestUTF_16.java
new file mode 100644
index 000000000..3e1b91ae7
--- /dev/null
+++ b/test/sun/nio/cs/TestUTF_16.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4403848 6348426 6407730
+ @summary Check correctness of the UTF-16 converter in all its flavors
+ */
+
+import java.io.IOException;
+import java.nio.BufferOverflowException;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class TestUTF_16 {
+
+ private static void testDecode(String charset,
+ String expected,
+ byte[] input)
+ throws Exception
+ {
+ String out = new String(input, charset);
+ if (!out.equals(expected)) {
+ failureReport (out, expected);
+ throw new Exception("UTF_16 Decoding test failed " + charset);
+ }
+ }
+
+ private static void testEncode(String charset,
+ String input,
+ byte[] expected)
+ throws Exception
+ {
+ byte[] testBytes = input.getBytes(charset);
+ for (int i = 0; i< expected.length; i++)
+ if (testBytes[i] != expected[i])
+ throw new Exception("UTF_16 Encoding test failed " + charset);
+
+ }
+
+ private static void warn(String s) {
+ System.err.println("FAILED Test 4403848 UTF-16" +
+ s) ;
+ }
+
+ private static void failureReport(String testStr,
+ String expected) {
+
+ System.err.println ("Expected Characters:");
+ for (int i = 0; i < expected.length() ; i++) {
+ warn("expected char[" + i + "] : " +
+ Integer.toHexString((int)expected.charAt(i)) +
+ "obtained char[" + i + "] : " +
+ Integer.toHexString((int)testStr.charAt(i)));
+ }
+ }
+
+ /*
+ private static void checkResult(char[] expected,
+ String testStr,
+ String testName)
+ throws Exception
+ {
+ if (testStr.length() != expected.length)
+ failureReport(testStr, expected);
+
+ for (int i = 0; i < testStr.length(); i++) {
+ if (testStr.charAt(i) != expected[i]) {
+ failureReport(testStr, expected);
+ throw new Exception ("REGTEST TestUTF16 failed: "
+ + testName);
+ }
+ }
+ System.err.println ("Test " + testName + " PASSED");
+ return;
+ }
+ */
+
+ private static void test() throws Exception {
+
+ // Tests: Check decoding of UTF-16.
+ // Ensures correct endian polarity
+ // of the decoders and appropriate
+ // interpretation of BOM bytes where
+ // they are required.
+
+ // Test 1: BigEndian UTF-16 Decoding
+
+ testDecode("UTF_16BE", "\u0092\u0093",
+ new byte[] { (byte) 0x00, (byte) 0x92,
+ (byte) 0x00, (byte) 0x93 });
+
+ // Test 1a: BigEndian UTF-16 Decoding. BOM bytes provided.
+ testDecode("UTF_16BE", "\ufeff\u0092\u0093",
+ new byte[] { (byte) 0xfe, (byte) 0xff,
+ (byte) 0x00, (byte) 0x92,
+ (byte) 0x00, (byte) 0x93 });
+
+ testDecode("UTF_16LE", "\u9200\u9300",
+ new byte[] { (byte) 0x00, (byte) 0x92,
+ (byte) 0x00, (byte) 0x93 });
+
+ // Test 2a: LittleEndian UTF-16 Decoding, BOM bytes provided.
+ testDecode("UTF_16LE", "\ufeff\u9200\u9300",
+ new byte[] { (byte) 0xff, (byte) 0xfe,
+ (byte) 0x00, (byte) 0x92,
+ (byte) 0x00, (byte) 0x93 });
+
+ // Test 3: UTF-16 (with mandatory byte order mark) Decoding
+
+ testDecode("UTF-16", "\u9200\u9300",
+ new byte[] { (byte) 0xfe, (byte) 0xff,
+ (byte) 0x92, (byte) 0x00,
+ (byte) 0x93, (byte) 0x00 });
+
+
+ // Test 3a: UTF-16 BOM omitted. This should decode OK.
+ testDecode("UTF-16", "\u9200\u9300",
+ new byte[] { (byte) 0x92, (byte) 0x00,
+ (byte) 0x93, (byte) 0x00 });
+
+
+ // Test 4: encoding using UTF-16
+ // BOM must be emitted when encoding and must be BigEndian.
+
+ testEncode("UTF-16", "\u0123",
+ new byte[] { (byte) 0xfe, (byte) 0xff,
+ (byte) 0x01, (byte) 0x23 });
+
+ // Test 5:
+ if (CoderResult.OVERFLOW !=
+ Charset.forName("UTF_16")
+ .newDecoder()
+ .decode((ByteBuffer)(ByteBuffer.allocate(4)
+ .put(new byte[]
+ {(byte)0xd8,(byte)0x00,
+ (byte)0xdc,(byte)0x01})
+ .flip()),
+ CharBuffer.allocate(1),
+ true)) {
+ throw new Exception ("REGTEST TestUTF16 Overflow test failed");
+ }
+
+ // Test 6: decoding using UTF_16LE_BOM/UnicodeLittle
+ // UnicodeLittle should accept non-BOM byte sequence
+
+ testDecode("UnicodeLittle", "Arial",
+ new byte[] { 'A', 0, 'r', 0, 'i', 0, 'a', 0, 'l', 0});
+
+ System.err.println ("\nPASSED UTF-16 encoder test");
+
+ // Reversed BOM in middle of stream Negative test.
+
+ /*
+ boolean caughtException = false;
+ try {
+ String out = new String(new byte[] {(byte)0x00,
+ (byte)0x92,
+ (byte)0xff,
+ (byte)0xfe},
+ "UTF-16");
+ } catch (IOException e) { caughtException = true; }
+
+ if (caughtException == false)
+ throw new Exception ("Incorrectly parsed BOM in middle of input");
+ */
+
+ // Fixed included with bug 4403848 fixes buffer sizing
+ // issue due to non provision of additional 2 bytes
+ // headroom for initial BOM bytes for UTF-16 encoding.
+ System.err.println ("OVERALL PASS OF UTF-16 Test");
+ }
+
+ public static void main (String[] args) throws Exception {
+ test();
+ }
+}
diff --git a/test/sun/nio/cs/TestUTF_32.java b/test/sun/nio/cs/TestUTF_32.java
new file mode 100644
index 000000000..a9ccf061c
--- /dev/null
+++ b/test/sun/nio/cs/TestUTF_32.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ @bug 6346419
+ @summary Check correctness of the UTF-32 and its variant charsets
+ */
+
+import java.io.*;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class TestUTF_32 {
+ private static void testDecode(String charset,
+ String expected,
+ byte[] input)
+ throws Exception
+ {
+ String out = new String(input, charset);
+ if (!out.equals(expected)) {
+ failureReport (out, expected);
+ throw new Exception("UTF_32 Decoding test failed: " + charset);
+ }
+ }
+
+ private static void testEncode(String charset,
+ String input,
+ byte[] expected)
+ throws Exception
+ {
+ byte[] testBytes = input.getBytes(charset);
+ for (int i = 0; i< expected.length; i++)
+ if (testBytes[i] != expected[i])
+ throw new Exception("UTF_32 Encoding test failed: [" + i + "]"+ charset);
+
+ }
+
+ private static void warn(String s) {
+ System.err.println("FAILED Test UTF-32:" +
+ s) ;
+ }
+
+ private static void failureReport(String testStr,
+ String expected) {
+ System.err.println ("Expected Characters:");
+ for (int i = 0; i < expected.length() ; i++) {
+ warn("expected char[" + i + "] : " +
+ Integer.toHexString((int)expected.charAt(i)) +
+ "obtained char[" + i + "] : " +
+ Integer.toHexString((int)testStr.charAt(i)));
+ }
+ }
+
+ private static void writeInt(OutputStream os, int i, boolean isBig)
+ throws Exception
+ {
+ if (isBig) {
+ os.write((i>>24) & 0xff);
+ os.write((i>>16) & 0xff);
+ os.write((i>>8) & 0xff);
+ os.write(i & 0xff);
+ } else {
+ os.write(i & 0xff);
+ os.write((i>>8) & 0xff);
+ os.write((i>>16) & 0xff);
+ os.write((i>>24) & 0xff);
+ }
+ }
+
+ private static byte[] getBytes(boolean doBOM, boolean isBig)
+ throws Exception
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream(1024*1024);
+ if (doBOM)
+ writeInt(baos, 0xfeff, isBig);
+
+ for (int i = 0; i < 0xffff; i++) {
+ if (i < Character.MIN_SURROGATE ||
+ i > Character.MAX_SURROGATE)
+ writeInt(baos, i, isBig);
+ }
+ for (int i = 0x10000; i < 0x1ffff; i++) {
+ writeInt(baos, i, isBig);
+ }
+
+ for (int i = 0x100000; i < 0x10ffff; i++) {
+ writeInt(baos, i, isBig);
+ }
+ byte[] bb = baos.toByteArray();
+ baos.close();
+ return bb;
+ }
+
+ public static void main (String[] args) throws Exception {
+ byte[] bb;
+ String s;
+
+ // Test 1: UTF_32 BigEndian
+ bb = getBytes(false, true);
+ s = new String(bb, "UTF-32");
+ testDecode("UTF_32", s, bb);
+ testEncode("UTF_32", s, bb);
+
+ // Test 2: UTF_32 LittleEndian Decoding With BOM and
+ // BigEndian Encoding
+ bb = getBytes(true, false);
+ s = new String(bb, "UTF-32");
+ bb = getBytes(false, true);
+ testDecode("UTF_32", s, bb);
+ testEncode("UTF_32", s, bb);
+
+
+ // Test 3: UTF_32BE
+ bb = getBytes(false, true);
+ s = new String(bb, "UTF-32BE");
+ testDecode("UTF_32BE", s, bb);
+ testEncode("UTF_32BE", s, bb);
+
+
+ // Test 4: UTF_32LE
+ bb = getBytes(false, false);
+ s = new String(bb, "UTF-32LE");
+ testDecode("UTF_32LE", s, bb);
+ testEncode("UTF_32LE", s, bb);
+
+ // Test 5: UTF_32BE_BOM
+ bb = getBytes(true, true);
+ s = new String(bb, "UTF-32BE-BOM");
+ testDecode("UTF_32BE_BOM", s, bb);
+ testEncode("UTF_32BE_BOM", s, bb);
+
+
+ // Test 6: UTF_32LE_BOM
+ bb = getBytes(true, false);
+ s = new String(bb, "UTF-32LE-BOM");
+ testDecode("UTF_32LE_BOM", s, bb);
+ testEncode("UTF_32LE_BOM", s, bb);
+
+ s = "\u4e00\ufffd\u4e01";
+ // Test 7: BigEndian with reverse BOM in middle
+ bb = new byte[] {
+ (byte)0x00,(byte)0x00,(byte)0x4e,(byte)0x00,
+ (byte)0xff,(byte)0xfe,(byte)0x00,(byte)0x00,
+ (byte)0x00,(byte)0x00,(byte)0x4e,(byte)0x01
+ };
+ if (!s.equals(new String(bb, "UTF_32")) ||
+ !s.equals(new String(bb, "UTF_32BE")) ||
+ !s.equals(new String(bb, "UTF_32BE_BOM")))
+ throw new Exception("UTF_32 Decoding test failed: ");
+
+ // Test 7: LittleEndian with reverse BOM in middle
+ bb = new byte[] {
+ (byte)0xff,(byte)0xfe,(byte)0x00,(byte)0x00,
+ (byte)0x00,(byte)0x4e,(byte)0x00,(byte)0x00,
+ (byte)0x00,(byte)0x00,(byte)0xfe,(byte)0xff,
+ (byte)0x01,(byte)0x4e,(byte)0x00,(byte)0x00
+ };
+ if (!s.equals(new String(bb, "UTF_32")) ||
+ !s.equals(new String(bb, "UTF_32LE")) ||
+ !s.equals(new String(bb, "UTF_32LE_BOM")))
+ throw new Exception("UTF_32 Decoding test failed: ");
+
+ // Test 8: Overflow
+ if (CoderResult.OVERFLOW !=
+ Charset.forName("UTF_32")
+ .newDecoder()
+ .decode((ByteBuffer)(ByteBuffer.allocate(4)
+ .put(new byte[]
+ {(byte)0,(byte)1, (byte)0,(byte)01})
+ .flip()),
+ CharBuffer.allocate(1),
+ true)) {
+ throw new Exception ("Test UTF-32 Overflow test failed");
+ }
+ System.err.println ("OVERALL PASS OF UTF-32 Test");
+ }
+}
diff --git a/test/sun/nio/cs/TestUni2HKSCS.java b/test/sun/nio/cs/TestUni2HKSCS.java
new file mode 100644
index 000000000..08a8a13db
--- /dev/null
+++ b/test/sun/nio/cs/TestUni2HKSCS.java
@@ -0,0 +1,327 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4634811
+ @summary Check Unicode 2.1 --> Big5-HKSCS reverse compatible mappings
+ */
+
+/*
+ * Mappings sourced from www.info.gov.hk/digital21/eng/hkscs
+ */
+
+public class TestUni2HKSCS {
+ private static final String uni21String =
+ "\uF3F5\uF3F8\uF3FD\uF403\uF413\uF415\uF418\uF419\uF41A"+
+ "\uF424\uF426\uF428\uF42B\uF42C\uF42D\uF437\uF439"+
+ "\uF43A\uF43C\uF445\uF44A\uF44E\uF44F\uF464\uF468"+
+ "\uF46A\uF46B\uF473\uF47A\uF487\uF489\uF493\uF494"+
+ "\uF496\uF49D\uF4A2\uF4AB\uF4AC\uF4AE\uF4B5\uF4C6"+
+ "\uF4CB\uF4D6\uF4E1\uF4FA\uF502\uF504\uF51E\uF529"+
+ "\uF52D\uF52E\uF530\uF536\uF540\uF544\uF554\uF637"+
+ "\uF638\uF63B\uF63C\uF641\uF642\uF643\uF644\uF648"+
+ "\uF64C\uF651\uF653\uF658\uF65D\uF65F\uF662\uF664"+
+ "\uF666\uF669\uF66C\uF66D\uF66E\uF675\uF677\uF67C"+
+ "\uF67E\uF688\uF68D\uF69D\uF6A1\uF6A2\uF6A5\uF6A7"+
+ "\uF6AE\uF6AF\uE316\uE326\uE32A\uE33C\uE351\uE35E"+
+ "\uE368\uE376\uE378\uE387\uE39C\uE3AD\uE3B3\uE3BE"+
+ "\uE3C2\uE3C7\uE3CB\uE3D1\uE3D2\uE3DE\uE3E2\uE3E4"+
+ "\uE3E8\uE3EA\uE3F5\uE3F7\uE406\uE40E\uE427\uE437"+
+ "\uE43D\uE449\uE44F\uE460\uE46B\uE47A\uE493\uE4A0"+
+ "\uE4A5\uE4A9\uE4B2\uE4BE\uE4BF\uE4C0\uE4DE\uE4E3"+
+ "\uE4E5\uE4ED\uE4F7\uE500\uE507\uE50E\uE534\uE539"+
+ "\uE53A\uE53B\uE53D\uE541\uE553\uE569\uE574\uE578"+
+ "\uE57B\uE57F\uE591\uE596\uE597\uE598\uE59C\uE5AE"+
+ "\uE5B9\uE5BC\uE5E0\uE5EC\uE5F5\uE5FA\uE5FE\uE60C"+
+ "\uE61D\uE629\uE62D\uE639\uE63B\uE63D\uE651\uE664"+
+ "\uE675\uE681\uE682\uE68D\uE694\uE69D\uE6A0\uE6A4"+
+ "\uE6A9\uE6AB\uE6B6\uE6C8\uE6E2\uE6E3\uE6E8\uE6ED"+
+ "\uE6EF\uE6F1\uE6F4\uE6F8\uE6FD\uE6FE\uE700\uE712"+
+ "\uE716\uE719\uE726\uE72E\uE730\uE738\uE73A\uE73B"+
+ "\uE749\uE74C\uE760\uE776\uE77E\uE780\uE78F\uE7AA"+
+ "\uE7AC\uE7AD\uE7AE\uE7C0\uE7C1\uE7C7\uE7CB\uE7D0"+
+ "\uE7D5\uE7D9\uE7E6\uE7EA\uE7F0\uE7F6\uE7FA\uE806"+
+ "\uE815\uE81B\uE81D\uE822\uE824\uE82E\uE831\uE832"+
+ "\uE83D\uE83F\uE850\uE853\uE85F\uE86B\uE86D\uE876"+
+ "\uE880\uE88E\uE899\uE89B\uE89C\uE8B3\uE8B7\uE8BC"+
+ "\uE8D2\uE8E2\uE8E4\uE8EC\uE8EE\uE8F4\uE8F6\uE8F7"+
+ "\uE8F9\uE8FA\uE8FD\uE901\uE906\uE90B\uE90E\uE90F"+
+ "\uE910\uE911\uE912\uE915\uE91B\uE931\uE932\uE946"+
+ "\uE949\uE965\uE96C\uE979\uE98D\uE994\uE996\uE99C"+
+ "\uE99D\uE99E\uE99F\uE9A1\uE9A2\uE9A7\uE9AA\uE9AC"+
+ "\uE9AE\uE9B5\uE9B7\uE9B9\uE9BA\uE9BC\uE9BD\uE9C5"+
+ "\uE9CF\uE9D0\uE9D6\uE9D8\uE9DB\uE9DE\uE9E5\uE9E6"+
+ "\uE9E9\uE9EB\uE9F7\uE9FE\uEA03\uEA0A\uEA0B\uEA0F"+
+ "\uEA13\uEA15\uEA1B\uEA21\uEA2A\uEA31\uEA35\uEA3C"+
+ "\uEA3D\uEA4C\uEA4F\uEA57\uEA63\uEA66\uEA75\uEA76"+
+ "\uEA7D\uEA82\uEA85\uEA87\uEA89\uEA8D\uEA90\uEA9B"+
+ "\uEA9D\uEAA6\uEAA8\uEAC8\uEAF7\uEB17\uEB51\uEB52"+
+ "\uEB60\uEB66\uEB6A\uEB87\uEB8B\uEB92\uEB96\uEBB1"+
+ "\uEBC3\uEBD6\uEBE0\uEBE6\uEBEA\uEBFF\uEC00\uEC03"+
+ "\uEC0B\uEC0D\uEC16\uEC3D\uEC4A\uEC4D\uEC53\uEC55"+
+ "\uEC61\uEC77\uEC7C\uEC7F\uEC87\uEC8C\uEC8F\uEC97"+
+ "\uECAE\uECB0\uECD0\uECD5\uECF4\uED05\uED1B\uED1F"+
+ "\uED23\uED33\uED37\uED38\uED3A\uED44\uED48\uED4C"+
+ "\uED59\uED5C\uED5D\uED5E\uED64\uED66\uED6D\uED6F"+
+ "\uED7B\uEDAE\uEDC1\uEDF3\uEDF5\uEE2E\uEE43\uEE45"+
+ "\uEE4A\uEE53\uEE59\uEE65\uEE89\uEE93\uEE97\uEE9F"+
+ "\uEEB2\uF6DD\uF820\uF821\uF822\uF823\uF824\uF825"+
+ "\uF826\uF827\uF828\uF829\uF82A\uF82B\uF82C\uF82D"+
+ "\uF82E\uF82F\uF830\uF831\uF832\uF833\uF834\uF835"+
+ "\uF836\uF837\uF838\uF839\uF83A\uF83B\uE005\uE008"+
+ "\uE028\uE02B\uE043\uE06A\uE06B\uE06E\uE07E\uE086"+
+ "\uE098\uE09B\uE0A0\uE0A8\uE0BB\uE0C2\uE0CD\uE0D7"+
+ "\uE0DA\uE0F1\uE0F4\uE0FA\uE0FC\uE104\uE105\uE10E"+
+ "\uE117\uE125\uE12A\uE12B\uE13C\uE143\uE144\uE153"+
+ "\uE15E\uE15F\uE160\uE164\uE17E\uE18C\uE19A\uE19C"+
+ "\uE1A7\uE1A9\uE1C6\uE1CF\uE1E0\uE1E1\uE1E3\uE1E7"+
+ "\uE1EA\uE1F4\uE1F8\uE203\uE211\uE217\uE218\uE239"+
+ "\uE23F\uE243\uE246\uE25D\uE25E\uE281\uE28A\uE298"+
+ "\uE2A2\uE2AC\uE2B1\uE2C8\uE2D7\uE30D";
+
+ private static final byte[] expectedBytes =
+ {(byte)0x89,(byte)0xb7,(byte)0x89,(byte)0xba,(byte)0x89,
+ (byte)0xbf,(byte)0x89,(byte)0xc5,(byte)0x89,(byte)0xd5,
+ (byte)0x89,(byte)0xd7,(byte)0x89,(byte)0xda,(byte)0x89,
+ (byte)0xdb,(byte)0x89,(byte)0xdc,(byte)0x89,(byte)0xe6,
+ (byte)0x89,(byte)0xe8,(byte)0x89,(byte)0xea,(byte)0x89,
+ (byte)0xed,(byte)0x89,(byte)0xee,(byte)0x89,(byte)0xef,
+ (byte)0x89,(byte)0xf9,(byte)0x89,(byte)0xfb,(byte)0x89,
+ (byte)0xfc,(byte)0x89,(byte)0xfe,(byte)0x8a,(byte)0x48,
+ (byte)0x8a,(byte)0x4d,(byte)0x8a,(byte)0x51,(byte)0x8a,
+ (byte)0x52,(byte)0x8a,(byte)0x67,(byte)0x8a,(byte)0x6b,
+ (byte)0x8a,(byte)0x6d,(byte)0x8a,(byte)0x6e,(byte)0x8a,
+ (byte)0x76,(byte)0x8a,(byte)0x7d,(byte)0x8a,(byte)0xac,
+ (byte)0x8a,(byte)0xae,(byte)0x8a,(byte)0xb8,(byte)0x8a,
+ (byte)0xb9,(byte)0x8a,(byte)0xbb,(byte)0x8a,(byte)0xc2,
+ (byte)0x8a,(byte)0xc7,(byte)0x8a,(byte)0xd0,(byte)0x8a,
+ (byte)0xd1,(byte)0x8a,(byte)0xd3,(byte)0x8a,(byte)0xda,
+ (byte)0x8a,(byte)0xeb,(byte)0x8a,(byte)0xf0,(byte)0x8a,
+ (byte)0xfb,(byte)0x8b,(byte)0x47,(byte)0x8b,(byte)0x60,
+ (byte)0x8b,(byte)0x68,(byte)0x8b,(byte)0x6a,(byte)0x8b,
+ (byte)0xa6,(byte)0x8b,(byte)0xb1,(byte)0x8b,(byte)0xb5,
+ (byte)0x8b,(byte)0xb6,(byte)0x8b,(byte)0xb8,(byte)0x8b,
+ (byte)0xbe,(byte)0x8b,(byte)0xc8,(byte)0x8b,(byte)0xcc,
+ (byte)0x8b,(byte)0xdc,(byte)0x8d,(byte)0x63,(byte)0x8d,
+ (byte)0x64,(byte)0x8d,(byte)0x67,(byte)0x8d,(byte)0x68,
+ (byte)0x8d,(byte)0x6d,(byte)0x8d,(byte)0x6e,(byte)0x8d,
+ (byte)0x6f,(byte)0x8d,(byte)0x70,(byte)0x8d,(byte)0x74,
+ (byte)0x8d,(byte)0x78,(byte)0x8d,(byte)0x7d,(byte)0x8d,
+ (byte)0xa1,(byte)0x8d,(byte)0xa6,(byte)0x8d,(byte)0xab,
+ (byte)0x8d,(byte)0xad,(byte)0x8d,(byte)0xb0,(byte)0x8d,
+ (byte)0xb2,(byte)0x8d,(byte)0xb4,(byte)0x8d,(byte)0xb7,
+ (byte)0x8d,(byte)0xba,(byte)0x8d,(byte)0xbb,(byte)0x8d,
+ (byte)0xbc,(byte)0x8d,(byte)0xc3,(byte)0x8d,(byte)0xc5,
+ (byte)0x8d,(byte)0xca,(byte)0x8d,(byte)0xcc,(byte)0x8d,
+ (byte)0xd6,(byte)0x8d,(byte)0xdb,(byte)0x8d,(byte)0xeb,
+ (byte)0x8d,(byte)0xef,(byte)0x8d,(byte)0xf0,(byte)0x8d,
+ (byte)0xf3,(byte)0x8d,(byte)0xf5,(byte)0x8d,(byte)0xfc,
+ (byte)0x8d,(byte)0xfd,(byte)0x8e,(byte)0x45,(byte)0x8e,
+ (byte)0x55,(byte)0x8e,(byte)0x59,(byte)0x8e,(byte)0x6b,
+ (byte)0x8e,(byte)0xa2,(byte)0x8e,(byte)0xaf,(byte)0x8e,
+ (byte)0xb9,(byte)0x8e,(byte)0xc7,(byte)0x8e,(byte)0xc9,
+ (byte)0x8e,(byte)0xd8,(byte)0x8e,(byte)0xed,(byte)0x8e,
+ (byte)0xfe,(byte)0x8f,(byte)0x45,(byte)0x8f,(byte)0x50,
+ (byte)0x8f,(byte)0x54,(byte)0x8f,(byte)0x59,(byte)0x8f,
+ (byte)0x5d,(byte)0x8f,(byte)0x63,(byte)0x8f,(byte)0x64,
+ (byte)0x8f,(byte)0x70,(byte)0x8f,(byte)0x74,(byte)0x8f,
+ (byte)0x76,(byte)0x8f,(byte)0x7a,(byte)0x8f,(byte)0x7c,
+ (byte)0x8f,(byte)0xa9,(byte)0x8f,(byte)0xab,(byte)0x8f,
+ (byte)0xba,(byte)0x8f,(byte)0xc2,(byte)0x8f,(byte)0xdb,
+ (byte)0x8f,(byte)0xeb,(byte)0x8f,(byte)0xf1,(byte)0x8f,
+ (byte)0xfd,(byte)0x90,(byte)0x44,(byte)0x90,(byte)0x55,
+ (byte)0x90,(byte)0x60,(byte)0x90,(byte)0x6f,(byte)0x90,
+ (byte)0xaa,(byte)0x90,(byte)0xb7,(byte)0x90,(byte)0xbc,
+ (byte)0x90,(byte)0xc0,(byte)0x90,(byte)0xc9,(byte)0x90,
+ (byte)0xd5,(byte)0x90,(byte)0xd6,(byte)0x90,(byte)0xd7,
+ (byte)0x90,(byte)0xf5,(byte)0x90,(byte)0xfa,(byte)0x90,
+ (byte)0xfc,(byte)0x91,(byte)0x45,(byte)0x91,(byte)0x4f,
+ (byte)0x91,(byte)0x58,(byte)0x91,(byte)0x5f,(byte)0x91,
+ (byte)0x66,(byte)0x91,(byte)0xae,(byte)0x91,(byte)0xb3,
+ (byte)0x91,(byte)0xb4,(byte)0x91,(byte)0xb5,(byte)0x91,
+ (byte)0xb7,(byte)0x91,(byte)0xbb,(byte)0x91,(byte)0xcd,
+ (byte)0x91,(byte)0xe3,(byte)0x91,(byte)0xee,(byte)0x91,
+ (byte)0xf2,(byte)0x91,(byte)0xf5,(byte)0x91,(byte)0xf9,
+ (byte)0x92,(byte)0x4c,(byte)0x92,(byte)0x51,(byte)0x92,
+ (byte)0x52,(byte)0x92,(byte)0x53,(byte)0x92,(byte)0x57,
+ (byte)0x92,(byte)0x69,(byte)0x92,(byte)0x74,(byte)0x92,
+ (byte)0x77,(byte)0x92,(byte)0xbd,(byte)0x92,(byte)0xc9,
+ (byte)0x92,(byte)0xd2,(byte)0x92,(byte)0xd7,(byte)0x92,
+ (byte)0xdb,(byte)0x92,(byte)0xe9,(byte)0x92,(byte)0xfa,
+ (byte)0x93,(byte)0x47,(byte)0x93,(byte)0x4b,(byte)0x93,
+ (byte)0x57,(byte)0x93,(byte)0x59,(byte)0x93,(byte)0x5b,
+ (byte)0x93,(byte)0x6f,(byte)0x93,(byte)0xa4,(byte)0x93,
+ (byte)0xb5,(byte)0x93,(byte)0xc1,(byte)0x93,(byte)0xc2,
+ (byte)0x93,(byte)0xcd,(byte)0x93,(byte)0xd4,(byte)0x93,
+ (byte)0xdd,(byte)0x93,(byte)0xe0,(byte)0x93,(byte)0xe4,
+ (byte)0x93,(byte)0xe9,(byte)0x93,(byte)0xeb,(byte)0x93,
+ (byte)0xf6,(byte)0x94,(byte)0x49,(byte)0x94,(byte)0x63,
+ (byte)0x94,(byte)0x64,(byte)0x94,(byte)0x69,(byte)0x94,
+ (byte)0x6e,(byte)0x94,(byte)0x70,(byte)0x94,(byte)0x72,
+ (byte)0x94,(byte)0x75,(byte)0x94,(byte)0x79,(byte)0x94,
+ (byte)0x7e,(byte)0x94,(byte)0xa1,(byte)0x94,(byte)0xa3,
+ (byte)0x94,(byte)0xb5,(byte)0x94,(byte)0xb9,(byte)0x94,
+ (byte)0xbc,(byte)0x94,(byte)0xc9,(byte)0x94,(byte)0xd1,
+ (byte)0x94,(byte)0xd3,(byte)0x94,(byte)0xdb,(byte)0x94,
+ (byte)0xdd,(byte)0x94,(byte)0xde,(byte)0x94,(byte)0xec,
+ (byte)0x94,(byte)0xef,(byte)0x95,(byte)0x44,(byte)0x95,
+ (byte)0x5a,(byte)0x95,(byte)0x62,(byte)0x95,(byte)0x64,
+ (byte)0x95,(byte)0x73,(byte)0x95,(byte)0xb0,(byte)0x95,
+ (byte)0xb2,(byte)0x95,(byte)0xb3,(byte)0x95,(byte)0xb4,
+ (byte)0x95,(byte)0xc6,(byte)0x95,(byte)0xc7,(byte)0x95,
+ (byte)0xcd,(byte)0x95,(byte)0xd1,(byte)0x95,(byte)0xd6,
+ (byte)0x95,(byte)0xdb,(byte)0x95,(byte)0xdf,(byte)0x95,
+ (byte)0xec,(byte)0x95,(byte)0xf0,(byte)0x95,(byte)0xf6,
+ (byte)0x95,(byte)0xfc,(byte)0x96,(byte)0x41,(byte)0x96,
+ (byte)0x4d,(byte)0x96,(byte)0x5c,(byte)0x96,(byte)0x62,
+ (byte)0x96,(byte)0x64,(byte)0x96,(byte)0x69,(byte)0x96,
+ (byte)0x6b,(byte)0x96,(byte)0x75,(byte)0x96,(byte)0x78,
+ (byte)0x96,(byte)0x79,(byte)0x96,(byte)0xa6,(byte)0x96,
+ (byte)0xa8,(byte)0x96,(byte)0xb9,(byte)0x96,(byte)0xbc,
+ (byte)0x96,(byte)0xc8,(byte)0x96,(byte)0xd4,(byte)0x96,
+ (byte)0xd6,(byte)0x96,(byte)0xdf,(byte)0x96,(byte)0xe9,
+ (byte)0x96,(byte)0xf7,(byte)0x97,(byte)0x43,(byte)0x97,
+ (byte)0x45,(byte)0x97,(byte)0x46,(byte)0x97,(byte)0x5d,
+ (byte)0x97,(byte)0x61,(byte)0x97,(byte)0x66,(byte)0x97,
+ (byte)0x7c,(byte)0x97,(byte)0xae,(byte)0x97,(byte)0xb0,
+ (byte)0x97,(byte)0xb8,(byte)0x97,(byte)0xba,(byte)0x97,
+ (byte)0xc0,(byte)0x97,(byte)0xc2,(byte)0x97,(byte)0xc3,
+ (byte)0x97,(byte)0xc5,(byte)0x97,(byte)0xc6,(byte)0x97,
+ (byte)0xc9,(byte)0x97,(byte)0xcd,(byte)0x97,(byte)0xd2,
+ (byte)0x97,(byte)0xd7,(byte)0x97,(byte)0xda,(byte)0x97,
+ (byte)0xdb,(byte)0x97,(byte)0xdc,(byte)0x97,(byte)0xdd,
+ (byte)0x97,(byte)0xde,(byte)0x97,(byte)0xe1,(byte)0x97,
+ (byte)0xe7,(byte)0x97,(byte)0xfd,(byte)0x97,(byte)0xfe,
+ (byte)0x98,(byte)0x53,(byte)0x98,(byte)0x56,(byte)0x98,
+ (byte)0x72,(byte)0x98,(byte)0x79,(byte)0x98,(byte)0xa8,
+ (byte)0x98,(byte)0xbc,(byte)0x98,(byte)0xc3,(byte)0x98,
+ (byte)0xc5,(byte)0x98,(byte)0xcb,(byte)0x98,(byte)0xcc,
+ (byte)0x98,(byte)0xcd,(byte)0x98,(byte)0xce,(byte)0x98,
+ (byte)0xd0,(byte)0x98,(byte)0xd1,(byte)0x98,(byte)0xd6,
+ (byte)0x98,(byte)0xd9,(byte)0x98,(byte)0xdb,(byte)0x98,
+ (byte)0xdd,(byte)0x98,(byte)0xe4,(byte)0x98,(byte)0xe6,
+ (byte)0x98,(byte)0xe8,(byte)0x98,(byte)0xe9,(byte)0x98,
+ (byte)0xeb,(byte)0x98,(byte)0xec,(byte)0x98,(byte)0xf4,
+ (byte)0x98,(byte)0xfe,(byte)0x99,(byte)0x40,(byte)0x99,
+ (byte)0x46,(byte)0x99,(byte)0x48,(byte)0x99,(byte)0x4b,
+ (byte)0x99,(byte)0x4e,(byte)0x99,(byte)0x55,(byte)0x99,
+ (byte)0x56,(byte)0x99,(byte)0x59,(byte)0x99,(byte)0x5b,
+ (byte)0x99,(byte)0x67,(byte)0x99,(byte)0x6e,(byte)0x99,
+ (byte)0x73,(byte)0x99,(byte)0x7a,(byte)0x99,(byte)0x7b,
+ (byte)0x99,(byte)0xa1,(byte)0x99,(byte)0xa5,(byte)0x99,
+ (byte)0xa7,(byte)0x99,(byte)0xad,(byte)0x99,(byte)0xb3,
+ (byte)0x99,(byte)0xbc,(byte)0x99,(byte)0xc3,(byte)0x99,
+ (byte)0xc7,(byte)0x99,(byte)0xce,(byte)0x99,(byte)0xcf,
+ (byte)0x99,(byte)0xde,(byte)0x99,(byte)0xe1,(byte)0x99,
+ (byte)0xe9,(byte)0x99,(byte)0xf5,(byte)0x99,(byte)0xf8,
+ (byte)0x9a,(byte)0x48,(byte)0x9a,(byte)0x49,(byte)0x9a,
+ (byte)0x50,(byte)0x9a,(byte)0x55,(byte)0x9a,(byte)0x58,
+ (byte)0x9a,(byte)0x5a,(byte)0x9a,(byte)0x5c,(byte)0x9a,
+ (byte)0x60,(byte)0x9a,(byte)0x63,(byte)0x9a,(byte)0x6e,
+ (byte)0x9a,(byte)0x70,(byte)0x9a,(byte)0x79,(byte)0x9a,
+ (byte)0x7b,(byte)0x9a,(byte)0xbd,(byte)0x9a,(byte)0xec,
+ (byte)0x9b,(byte)0x4d,(byte)0x9b,(byte)0xa9,(byte)0x9b,
+ (byte)0xaa,(byte)0x9b,(byte)0xb8,(byte)0x9b,(byte)0xbe,
+ (byte)0x9b,(byte)0xc2,(byte)0x9b,(byte)0xdf,(byte)0x9b,
+ (byte)0xe3,(byte)0x9b,(byte)0xea,(byte)0x9b,(byte)0xee,
+ (byte)0x9c,(byte)0x4a,(byte)0x9c,(byte)0x5c,(byte)0x9c,
+ (byte)0x6f,(byte)0x9c,(byte)0x79,(byte)0x9c,(byte)0xa1,
+ (byte)0x9c,(byte)0xa5,(byte)0x9c,(byte)0xba,(byte)0x9c,
+ (byte)0xbb,(byte)0x9c,(byte)0xbe,(byte)0x9c,(byte)0xc6,
+ (byte)0x9c,(byte)0xc8,(byte)0x9c,(byte)0xd1,(byte)0x9c,
+ (byte)0xf8,(byte)0x9d,(byte)0x46,(byte)0x9d,(byte)0x49,
+ (byte)0x9d,(byte)0x4f,(byte)0x9d,(byte)0x51,(byte)0x9d,
+ (byte)0x5d,(byte)0x9d,(byte)0x73,(byte)0x9d,(byte)0x78,
+ (byte)0x9d,(byte)0x7b,(byte)0x9d,(byte)0xa5,(byte)0x9d,
+ (byte)0xaa,(byte)0x9d,(byte)0xad,(byte)0x9d,(byte)0xb5,
+ (byte)0x9d,(byte)0xcc,(byte)0x9d,(byte)0xce,(byte)0x9d,
+ (byte)0xee,(byte)0x9d,(byte)0xf3,(byte)0x9e,(byte)0x53,
+ (byte)0x9e,(byte)0x64,(byte)0x9e,(byte)0x7a,(byte)0x9e,
+ (byte)0x7e,(byte)0x9e,(byte)0xa4,(byte)0x9e,(byte)0xb4,
+ (byte)0x9e,(byte)0xb8,(byte)0x9e,(byte)0xb9,(byte)0x9e,
+ (byte)0xbb,(byte)0x9e,(byte)0xc5,(byte)0x9e,(byte)0xc9,
+ (byte)0x9e,(byte)0xcd,(byte)0x9e,(byte)0xda,(byte)0x9e,
+ (byte)0xdd,(byte)0x9e,(byte)0xde,(byte)0x9e,(byte)0xdf,
+ (byte)0x9e,(byte)0xe5,(byte)0x9e,(byte)0xe7,(byte)0x9e,
+ (byte)0xee,(byte)0x9e,(byte)0xf0,(byte)0x9e,(byte)0xfc,
+ (byte)0x9f,(byte)0x70,(byte)0x9f,(byte)0xa5,(byte)0x9f,
+ (byte)0xd7,(byte)0x9f,(byte)0xd9,(byte)0xa0,(byte)0x53,
+ (byte)0xa0,(byte)0x68,(byte)0xa0,(byte)0x6a,(byte)0xa0,
+ (byte)0x6f,(byte)0xa0,(byte)0x78,(byte)0xa0,(byte)0x7e,
+ (byte)0xa0,(byte)0xac,(byte)0xa0,(byte)0xd0,(byte)0xa0,
+ (byte)0xda,(byte)0xa0,(byte)0xde,(byte)0xa0,(byte)0xe6,
+ (byte)0xa0,(byte)0xf9,(byte)0xc6,(byte)0xcd,(byte)0xc8,
+ (byte)0xd6,(byte)0xc8,(byte)0xd7,(byte)0xc8,(byte)0xd8,
+ (byte)0xc8,(byte)0xd9,(byte)0xc8,(byte)0xda,(byte)0xc8,
+ (byte)0xdb,(byte)0xc8,(byte)0xdc,(byte)0xc8,(byte)0xdd,
+ (byte)0xc8,(byte)0xde,(byte)0xc8,(byte)0xdf,(byte)0xc8,
+ (byte)0xe0,(byte)0xc8,(byte)0xe1,(byte)0xc8,(byte)0xe2,
+ (byte)0xc8,(byte)0xe3,(byte)0xc8,(byte)0xe4,(byte)0xc8,
+ (byte)0xe5,(byte)0xc8,(byte)0xe6,(byte)0xc8,(byte)0xe7,
+ (byte)0xc8,(byte)0xe8,(byte)0xc8,(byte)0xe9,(byte)0xc8,
+ (byte)0xea,(byte)0xc8,(byte)0xeb,(byte)0xc8,(byte)0xec,
+ (byte)0xc8,(byte)0xed,(byte)0xc8,(byte)0xee,(byte)0xc8,
+ (byte)0xef,(byte)0xc8,(byte)0xf0,(byte)0xc8,(byte)0xf1,
+ (byte)0xfa,(byte)0x45,(byte)0xfa,(byte)0x48,(byte)0xfa,
+ (byte)0x68,(byte)0xfa,(byte)0x6b,(byte)0xfa,(byte)0xa5,
+ (byte)0xfa,(byte)0xcc,(byte)0xfa,(byte)0xcd,(byte)0xfa,
+ (byte)0xd0,(byte)0xfa,(byte)0xe0,(byte)0xfa,(byte)0xe8,
+ (byte)0xfa,(byte)0xfa,(byte)0xfa,(byte)0xfd,(byte)0xfb,
+ (byte)0x43,(byte)0xfb,(byte)0x4b,(byte)0xfb,(byte)0x5e,
+ (byte)0xfb,(byte)0x65,(byte)0xfb,(byte)0x70,(byte)0xfb,
+ (byte)0x7a,(byte)0xfb,(byte)0x7d,(byte)0xfb,(byte)0xb6,
+ (byte)0xfb,(byte)0xb9,(byte)0xfb,(byte)0xbf,(byte)0xfb,
+ (byte)0xc1,(byte)0xfb,(byte)0xc9,(byte)0xfb,(byte)0xca,
+ (byte)0xfb,(byte)0xd3,(byte)0xfb,(byte)0xdc,(byte)0xfb,
+ (byte)0xea,(byte)0xfb,(byte)0xef,(byte)0xfb,(byte)0xf0,
+ (byte)0xfc,(byte)0x42,(byte)0xfc,(byte)0x49,(byte)0xfc,
+ (byte)0x4a,(byte)0xfc,(byte)0x59,(byte)0xfc,(byte)0x64,
+ (byte)0xfc,(byte)0x65,(byte)0xfc,(byte)0x66,(byte)0xfc,
+ (byte)0x6a,(byte)0xfc,(byte)0xa6,(byte)0xfc,(byte)0xb4,
+ (byte)0xfc,(byte)0xc2,(byte)0xfc,(byte)0xc4,(byte)0xfc,
+ (byte)0xcf,(byte)0xfc,(byte)0xd1,(byte)0xfc,(byte)0xee,
+ (byte)0xfc,(byte)0xf7,(byte)0xfd,(byte)0x49,(byte)0xfd,
+ (byte)0x4a,(byte)0xfd,(byte)0x4c,(byte)0xfd,(byte)0x50,
+ (byte)0xfd,(byte)0x53,(byte)0xfd,(byte)0x5d,(byte)0xfd,
+ (byte)0x61,(byte)0xfd,(byte)0x6c,(byte)0xfd,(byte)0x7a,
+ (byte)0xfd,(byte)0xa2,(byte)0xfd,(byte)0xa3,(byte)0xfd,
+ (byte)0xc4,(byte)0xfd,(byte)0xca,(byte)0xfd,(byte)0xce,
+ (byte)0xfd,(byte)0xd1,(byte)0xfd,(byte)0xe8,(byte)0xfd,
+ (byte)0xe9,(byte)0xfe,(byte)0x4d,(byte)0xfe,(byte)0x56,
+ (byte)0xfe,(byte)0x64,(byte)0xfe,(byte)0x6e,(byte)0xfe,
+ (byte)0x78,(byte)0xfe,(byte)0x7d,(byte)0xfe,(byte)0xb6,
+ (byte)0xfe,(byte)0xc5,(byte)0xfe,(byte)0xfb };
+
+ public static void main(String[] args) throws Exception {
+ byte[] encodedBytes = new byte[1000];
+
+ encodedBytes = uni21String.getBytes("Big5-HKSCS");
+
+ for (int i = 0; i < encodedBytes.length - 1; i++) {
+ if (encodedBytes[i] != expectedBytes[i]
+ || encodedBytes[i+1] != expectedBytes[i+1]) {
+ throw new Exception("Unexpected char->byte HKSCS mappings");
+ }
+ }
+ }
+}
diff --git a/test/sun/nio/cs/TestX11JIS0201.java b/test/sun/nio/cs/TestX11JIS0201.java
new file mode 100644
index 000000000..dea3e6bef
--- /dev/null
+++ b/test/sun/nio/cs/TestX11JIS0201.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ * @bug 4195325
+ * @summary name() should return "X11JIS0201"
+ *
+ */
+
+import java.nio.charset.*;
+
+public class TestX11JIS0201 {
+
+ public static void main(String args[])
+ throws Exception
+ {
+ test();
+ }
+
+ private static void test()
+ throws Exception
+ {
+ Class cl = null;
+ try {
+ cl = Class.forName("sun.awt.motif.X11JIS0201");
+ } catch (Exception e){
+ return;
+ }
+ Charset cs = (Charset)cl.newInstance();
+ if (! cs.name().equals("X11JIS0201")){
+ throw new Exception("X11JIS0201 does not work correctly");
+ }
+ }
+}
diff --git a/test/sun/nio/cs/UkrainianIsNotRussian.java b/test/sun/nio/cs/UkrainianIsNotRussian.java
new file mode 100644
index 000000000..d025d28aa
--- /dev/null
+++ b/test/sun/nio/cs/UkrainianIsNotRussian.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ @bug 4890726
+ @summary Check the correctness of KOI8_U by comparing to KOI8_R
+ */
+
+import java.util.*;
+import static java.lang.Character.UnicodeBlock;
+
+public class UkrainianIsNotRussian {
+ private static String decode(byte[] bytes, String encoding) throws Throwable {
+ String s = new String(bytes, encoding);
+ equal(s.length(), 1);
+ check(Arrays.equals(s.getBytes(encoding), bytes));
+ return s;
+ }
+
+ private static void realMain(String[] args) throws Throwable {
+ final byte[] bytes = new byte[1];
+ int differences = 0;
+ for (int i = 0; i < 0xff; i++) {
+ bytes[0] = (byte) i;
+ final String r = decode(bytes, "KOI8_R");
+ final String u = decode(bytes, "KOI8_U");
+ if (! r.equals(u)) {
+ differences++;
+ final char rc = r.charAt(0);
+ final char uc = u.charAt(0);
+ final UnicodeBlock rcb = UnicodeBlock.of(rc);
+ final UnicodeBlock ucb = UnicodeBlock.of(uc);
+ System.out.printf("%02x => %04x %s, %04x %s%n",
+ i, (int) rc, rcb, (int) uc, ucb);
+ check(rcb == UnicodeBlock.BOX_DRAWING &&
+ ucb == UnicodeBlock.CYRILLIC);
+ }
+ }
+ equal(differences, 8);
+ }
+
+ //--------------------- Infrastructure ---------------------------
+ static volatile int passed = 0, failed = 0;
+ static void pass() {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 check(boolean cond) {if (cond) pass(); else fail();}
+ 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.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
+ if (failed > 0) throw new AssertionError("Some tests failed");}
+}
diff --git a/test/sun/nio/cs/ZeroedByteArrayEUCTWTest.java b/test/sun/nio/cs/ZeroedByteArrayEUCTWTest.java
new file mode 100644
index 000000000..dd5b5cfc8
--- /dev/null
+++ b/test/sun/nio/cs/ZeroedByteArrayEUCTWTest.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/* @test
+ * @bug 4522270
+ @summary Ensure that a zeroed byte array produces a valid String when EUC-TW decoded
+
+ */
+
+public class ZeroedByteArrayEUCTWTest
+{
+ public static void main(String[] args) throws Exception {
+ test("cns11643");
+ }
+
+ public static void test(String encoding) throws Exception {
+ String result = null;
+ byte[] data = new byte[16];
+
+ for (int i = 0; i < 16; i++) {
+ data[i] = 0;
+ }
+
+ result = new String(data, encoding);
+ if (result.length() != 16)
+ throw new Exception ("EUC_TW regression test bugID 4522270 failed");
+
+ for (int i=0; i < 16; i++) {
+ data[i] = (byte)( 32 + i);
+ }
+ }
+}
diff --git a/test/sun/security/krb5/OptionPADataInKDCReq.java b/test/sun/security/krb5/OptionPADataInKDCReq.java
index 2229b541e..d0a9f8409 100644
--- a/test/sun/security/krb5/OptionPADataInKDCReq.java
+++ b/test/sun/security/krb5/OptionPADataInKDCReq.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/sun/security/krb5/TimeInCCache.java b/test/sun/security/krb5/TimeInCCache.java
index 5ef8b5370..f9b70283b 100644
--- a/test/sun/security/krb5/TimeInCCache.java
+++ b/test/sun/security/krb5/TimeInCCache.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/sun/security/pkcs11/Cipher/TestSymmCiphers.java b/test/sun/security/pkcs11/Cipher/TestSymmCiphers.java
index e102606b4..5b1e6de37 100644
--- a/test/sun/security/pkcs11/Cipher/TestSymmCiphers.java
+++ b/test/sun/security/pkcs11/Cipher/TestSymmCiphers.java
@@ -2,32 +2,22 @@
* Copyright 2008 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 modi
-fy it
- * under the terms of the GNU General Public License version 2 onl
-y, as
+ * 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, bu
-t WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABIL
-ITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public L
-icense
- * version 2 for more details (a copy is included in the LICENSE f
-ile that
+ * 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 Licen
-se version
- * 2 along with this work; if not, write to the Free Software Foun
-dation,
+ * 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, San
-ta Clara,
- * CA 95054 USA or visit www.sun.com if you need additional inform
-ation or
+ * 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.
*/
diff --git a/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/RSAExport.java b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/RSAExport.java
new file mode 100644
index 000000000..26b00867d
--- /dev/null
+++ b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/RSAExport.java
@@ -0,0 +1,561 @@
+/*
+ * Copyright 2008 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.
+ *
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 6690018
+ * @summary RSAClientKeyExchange NullPointerException
+ */
+
+/*
+ * Certificates and key used in the test.
+ *
+ * TLS server certificate:
+ * server private key:
+ * -----BEGIN RSA PRIVATE KEY-----
+ * Proc-Type: 4,ENCRYPTED
+ * DEK-Info: DES-EDE3-CBC,97EC03A2D031B7BC
+ *
+ * 22wrD+DPv3VF8xg9xoeBqHzFnOVbTLQgVulzaCECDF4zWdxElYKy4yYyY6dMDehi
+ * XT77NTsq1J14zjJHPp2/U6B5OpZxnf97ZSD0ZC9/DDe/2gjW4fY1Lv0TVP0PdXnm
+ * cj84RaDiiSk/cERlFzFJ5L8ULMwxdOtYwXwZ4upITw2lT+8zDlBD2i3zZ4TcWrzE
+ * /su5Kpu+Mp3wthfGX+ZGga2T/NS8ZCKZE+gJDPKQZ/x34VBw+YANQGyCJPv1iMaE
+ * RyagnpApH9OPSrRIp2iR6uWT6836CET2erbfPaC1odyd8IsbnLldVs9CklH7EgXL
+ * Nms+DqrQEbNmvMuQYEFyZEHN9D1fGONeacx+cjI85FyMSHSEO65JJmasAxgQe4nF
+ * /yVz3rNQ2qAGqBhjsjP/WaXuB2aLZiAli/HjN17EJws=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * -----BEGIN RSA PRIVATE KEY-----
+ * MIIBOQIBAAJBALlfGg/5ZweJcW5zqLdnQ2uyircqDDlENKnv9FABOm/j0wnlPHqX
+ * CCqFBLoM7tG8ohci1SPy6fLJ5dqLf5FOH2sCAwEAAQJATO0/hpOMgx8xmJGc2Yeb
+ * /gyY7kwfyIAajs9Khw0LcDTYTo2EAI+vMmDpU+dvmOCLUqq/Z2tiKJhGyrmcBlxr
+ * kQIhAPYkbYovtvWHslxRb78x4eCrn2p1H7iolNKbyepjCI3zAiEAwMufJlLI9Q0O
+ * BIr7fPnUhbs9NyMHLIvIQAf/hXYubqkCIGJZR9NxIT+VyrSMbYQNoF0u9fGJfvU/
+ * lsdYLCOVEnP1AiAsSFjUx50K1CXNG1MqYIPU963W1T/Xln+3XV7ue7esiQIgW2Lu
+ * xGvz2dAUsGId+Xr2GZXb7ZucY/cPt4o5qdP1m7c=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * Private-Key: (512 bit)
+ * modulus:
+ * 00:b9:5f:1a:0f:f9:67:07:89:71:6e:73:a8:b7:67:
+ * 43:6b:b2:8a:b7:2a:0c:39:44:34:a9:ef:f4:50:01:
+ * 3a:6f:e3:d3:09:e5:3c:7a:97:08:2a:85:04:ba:0c:
+ * ee:d1:bc:a2:17:22:d5:23:f2:e9:f2:c9:e5:da:8b:
+ * 7f:91:4e:1f:6b
+ * publicExponent: 65537 (0x10001)
+ * privateExponent:
+ * 4c:ed:3f:86:93:8c:83:1f:31:98:91:9c:d9:87:9b:
+ * fe:0c:98:ee:4c:1f:c8:80:1a:8e:cf:4a:87:0d:0b:
+ * 70:34:d8:4e:8d:84:00:8f:af:32:60:e9:53:e7:6f:
+ * 98:e0:8b:52:aa:bf:67:6b:62:28:98:46:ca:b9:9c:
+ * 06:5c:6b:91
+ * prime1:
+ * 00:f6:24:6d:8a:2f:b6:f5:87:b2:5c:51:6f:bf:31:
+ * e1:e0:ab:9f:6a:75:1f:b8:a8:94:d2:9b:c9:ea:63:
+ * 08:8d:f3
+ * prime2:
+ * 00:c0:cb:9f:26:52:c8:f5:0d:0e:04:8a:fb:7c:f9:
+ * d4:85:bb:3d:37:23:07:2c:8b:c8:40:07:ff:85:76:
+ * 2e:6e:a9
+ * exponent1:
+ * 62:59:47:d3:71:21:3f:95:ca:b4:8c:6d:84:0d:a0:
+ * 5d:2e:f5:f1:89:7e:f5:3f:96:c7:58:2c:23:95:12:
+ * 73:f5
+ * exponent2:
+ * 2c:48:58:d4:c7:9d:0a:d4:25:cd:1b:53:2a:60:83:
+ * d4:f7:ad:d6:d5:3f:d7:96:7f:b7:5d:5e:ee:7b:b7:
+ * ac:89
+ * coefficient:
+ * 5b:62:ee:c4:6b:f3:d9:d0:14:b0:62:1d:f9:7a:f6:
+ * 19:95:db:ed:9b:9c:63:f7:0f:b7:8a:39:a9:d3:f5:
+ * 9b:b7
+ *
+ *
+ * server certificate:
+ * Data:
+ * Version: 3 (0x2)
+ * Serial Number: 11 (0xb)
+ * Signature Algorithm: sha1WithRSAEncryption
+ * Issuer: C=US, ST=Some-State, O=Some Org, CN=Someone
+ * Validity
+ * Not Before: Apr 18 15:07:30 2008 GMT
+ * Not After : Jan 4 15:07:30 2028 GMT
+ * Subject: C=US, ST=Some-State, O=Some Org, CN=SomeoneExport
+ * Subject Public Key Info:
+ * Public Key Algorithm: rsaEncryption
+ * RSA Public Key: (512 bit)
+ * Modulus (512 bit):
+ * 00:b9:5f:1a:0f:f9:67:07:89:71:6e:73:a8:b7:67:
+ * 43:6b:b2:8a:b7:2a:0c:39:44:34:a9:ef:f4:50:01:
+ * 3a:6f:e3:d3:09:e5:3c:7a:97:08:2a:85:04:ba:0c:
+ * ee:d1:bc:a2:17:22:d5:23:f2:e9:f2:c9:e5:da:8b:
+ * 7f:91:4e:1f:6b
+ * Exponent: 65537 (0x10001)
+ * X509v3 extensions:
+ * X509v3 Basic Constraints:
+ * CA:FALSE
+ * X509v3 Key Usage:
+ * Digital Signature, Non Repudiation, Key Encipherment
+ * X509v3 Subject Key Identifier:
+ * F1:30:98:BE:7C:AA:F9:B1:91:38:60:AE:13:5F:67:9C:0A:32:9E:31
+ * X509v3 Authority Key Identifier:
+ * keyid:B5:32:43:D7:00:24:92:BA:E9:95:E5:F9:A3:64:6C:84:EE:33:2E:15
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICIDCCAYmgAwIBAgIBCzANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcxEDAOBgNVBAMT
+ * B1NvbWVvbmUwHhcNMDgwNDE4MTUwNzMwWhcNMjgwMTA0MTUwNzMwWjBNMQswCQYD
+ * VQQGEwJVUzETMBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcx
+ * FjAUBgNVBAMTDVNvbWVvbmVFeHBvcnQwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA
+ * uV8aD/lnB4lxbnOot2dDa7KKtyoMOUQ0qe/0UAE6b+PTCeU8epcIKoUEugzu0byi
+ * FyLVI/Lp8snl2ot/kU4fawIDAQABo1owWDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF
+ * 4DAdBgNVHQ4EFgQU8TCYvnyq+bGROGCuE19nnAoynjEwHwYDVR0jBBgwFoAUtTJD
+ * 1wAkkrrpleX5o2RshO4zLhUwDQYJKoZIhvcNAQEFBQADgYEAFU+fP9FSTQNVZOhv
+ * eJ+zq6wI/biwzTgPbAq3yu2gb5kT85z4nzqBhPd2LWWFXhUW/D8QyNZ54X30y0Ug
+ * 3NfUAvOANW7CgUbHBmm77KQiF4nWdh338qqq9HzLGrPqcxX0dmiq2RBVPy9wb2Ea
+ * FTZiU2v+9pkoLoSDnCOfPCg/4Q4=
+ * -----END CERTIFICATE-----
+ *
+ *
+ * Trusted CA certificate:
+ * Certificate:
+ * Data:
+ * Version: 3 (0x2)
+ * Serial Number: 0 (0x0)
+ * Signature Algorithm: md5WithRSAEncryption
+ * Issuer: C=US, ST=Some-State, O=Some Org, CN=Someone
+ * Validity
+ * Not Before: Mar 30 11:44:47 2001 GMT
+ * Not After : Apr 27 11:44:47 2028 GMT
+ * Subject: C=US, ST=Some-State, O=Some Org, CN=Someone
+ * Subject Public Key Info:
+ * Public Key Algorithm: rsaEncryption
+ * RSA Public Key: (1024 bit)
+ * Modulus (1024 bit):
+ * 00:c1:98:e4:7a:87:53:0f:94:87:dc:da:f3:59:39:
+ * 3e:36:95:e8:77:58:ff:46:8a:81:1b:5e:c5:4c:fa:
+ * b6:91:19:30:be:5b:ef:4c:aa:84:30:a4:9a:d4:68:
+ * af:ef:fa:b4:2c:76:8b:29:33:46:cf:38:74:7c:79:
+ * d5:07:a6:43:39:84:52:39:4f:8a:1c:f3:73:19:12:
+ * 40:cf:ee:a1:77:43:01:02:be:8d:32:11:28:70:f4:
+ * cf:ab:43:75:e4:fb:74:f1:8c:2e:43:24:ba:85:3f:
+ * 66:3a:05:ea:f7:ce:5b:97:e2:34:a3:f0:87:f4:f8:
+ * d1:59:12:5a:68:b7:78:64:a9
+ * Exponent: 65537 (0x10001)
+ * X509v3 extensions:
+ * X509v3 Subject Key Identifier:
+ * B5:32:43:D7:00:24:92:BA:E9:95:E5:F9:A3:64:6C:84:EE:33:2E:15
+ * X509v3 Authority Key Identifier:
+ * keyid:B5:32:43:D7:00:24:92:BA:E9:95:E5:F9:A3:64:6C:84:EE:33:2E:15
+ * DirName:/C=US/ST=Some-State/O=Some Org/CN=Someone
+ * serial:00
+ *
+ * X509v3 Basic Constraints:
+ * CA:TRUE
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICpjCCAg+gAwIBAgIBADANBgkqhkiG9w0BAQQFADBHMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcxEDAOBgNVBAMT
+ * B1NvbWVvbmUwHhcNMDEwMzMwMTE0NDQ3WhcNMjgwNDI3MTE0NDQ3WjBHMQswCQYD
+ * VQQGEwJVUzETMBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcx
+ * EDAOBgNVBAMTB1NvbWVvbmUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMGY
+ * 5HqHUw+Uh9za81k5PjaV6HdY/0aKgRtexUz6tpEZML5b70yqhDCkmtRor+/6tCx2
+ * iykzRs84dHx51QemQzmEUjlPihzzcxkSQM/uoXdDAQK+jTIRKHD0z6tDdeT7dPGM
+ * LkMkuoU/ZjoF6vfOW5fiNKPwh/T40VkSWmi3eGSpAgMBAAGjgaEwgZ4wHQYDVR0O
+ * BBYEFLUyQ9cAJJK66ZXl+aNkbITuMy4VMG8GA1UdIwRoMGaAFLUyQ9cAJJK66ZXl
+ * +aNkbITuMy4VoUukSTBHMQswCQYDVQQGEwJVUzETMBEGA1UECBMKU29tZS1TdGF0
+ * ZTERMA8GA1UEChMIU29tZSBPcmcxEDAOBgNVBAMTB1NvbWVvbmWCAQAwDAYDVR0T
+ * BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBhf3PX0xWxtaUwZlWCO7GfPwCKgBWr
+ * CXqlqjtWHCshaaU7wUsDOwxFDWwKjFrMerQLsLuBlhdXEbNfSPjychkQtfezQHcS
+ * q0Atq7+KVSmRbDw6oKVRs5v1BBzLCupy+o16fNz3/hwreAWwQnSMtAh/osNS9w1b
+ * QeVWU+JV47H+vg==
+ * -----END CERTIFICATE-----
+ *
+ */
+
+import java.io.*;
+import java.net.*;
+import java.security.KeyStore;
+import java.security.KeyFactory;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.security.spec.*;
+import java.security.interfaces.*;
+import javax.net.ssl.*;
+import java.math.BigInteger;
+
+public class RSAExport {
+
+ /*
+ * =============================================================
+ * Set the various variables needed for the tests, then
+ * specify what tests to run on each side.
+ */
+
+
+ /*
+ * Should we run the client or server in a separate thread?
+ * Both sides can throw exceptions, but do you have a preference
+ * as to which side should be the main thread.
+ */
+ static boolean separateServerThread = true;
+
+ /*
+ * Where do we find the keystores?
+ */
+ static String trusedCertStr =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICpjCCAg+gAwIBAgIBADANBgkqhkiG9w0BAQQFADBHMQswCQYDVQQGEwJVUzET\n" +
+ "MBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcxEDAOBgNVBAMT\n" +
+ "B1NvbWVvbmUwHhcNMDEwMzMwMTE0NDQ3WhcNMjgwNDI3MTE0NDQ3WjBHMQswCQYD\n" +
+ "VQQGEwJVUzETMBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcx\n" +
+ "EDAOBgNVBAMTB1NvbWVvbmUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMGY\n" +
+ "5HqHUw+Uh9za81k5PjaV6HdY/0aKgRtexUz6tpEZML5b70yqhDCkmtRor+/6tCx2\n" +
+ "iykzRs84dHx51QemQzmEUjlPihzzcxkSQM/uoXdDAQK+jTIRKHD0z6tDdeT7dPGM\n" +
+ "LkMkuoU/ZjoF6vfOW5fiNKPwh/T40VkSWmi3eGSpAgMBAAGjgaEwgZ4wHQYDVR0O\n" +
+ "BBYEFLUyQ9cAJJK66ZXl+aNkbITuMy4VMG8GA1UdIwRoMGaAFLUyQ9cAJJK66ZXl\n" +
+ "+aNkbITuMy4VoUukSTBHMQswCQYDVQQGEwJVUzETMBEGA1UECBMKU29tZS1TdGF0\n" +
+ "ZTERMA8GA1UEChMIU29tZSBPcmcxEDAOBgNVBAMTB1NvbWVvbmWCAQAwDAYDVR0T\n" +
+ "BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBhf3PX0xWxtaUwZlWCO7GfPwCKgBWr\n" +
+ "CXqlqjtWHCshaaU7wUsDOwxFDWwKjFrMerQLsLuBlhdXEbNfSPjychkQtfezQHcS\n" +
+ "q0Atq7+KVSmRbDw6oKVRs5v1BBzLCupy+o16fNz3/hwreAWwQnSMtAh/osNS9w1b\n" +
+ "QeVWU+JV47H+vg==\n" +
+ "-----END CERTIFICATE-----";
+
+ static String serverCertStr =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICIDCCAYmgAwIBAgIBCzANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzET\n" +
+ "MBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcxEDAOBgNVBAMT\n" +
+ "B1NvbWVvbmUwHhcNMDgwNDE4MTUwNzMwWhcNMjgwMTA0MTUwNzMwWjBNMQswCQYD\n" +
+ "VQQGEwJVUzETMBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcx\n" +
+ "FjAUBgNVBAMTDVNvbWVvbmVFeHBvcnQwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA\n" +
+ "uV8aD/lnB4lxbnOot2dDa7KKtyoMOUQ0qe/0UAE6b+PTCeU8epcIKoUEugzu0byi\n" +
+ "FyLVI/Lp8snl2ot/kU4fawIDAQABo1owWDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF\n" +
+ "4DAdBgNVHQ4EFgQU8TCYvnyq+bGROGCuE19nnAoynjEwHwYDVR0jBBgwFoAUtTJD\n" +
+ "1wAkkrrpleX5o2RshO4zLhUwDQYJKoZIhvcNAQEFBQADgYEAFU+fP9FSTQNVZOhv\n" +
+ "eJ+zq6wI/biwzTgPbAq3yu2gb5kT85z4nzqBhPd2LWWFXhUW/D8QyNZ54X30y0Ug\n" +
+ "3NfUAvOANW7CgUbHBmm77KQiF4nWdh338qqq9HzLGrPqcxX0dmiq2RBVPy9wb2Ea\n" +
+ "FTZiU2v+9pkoLoSDnCOfPCg/4Q4=\n" +
+ "-----END CERTIFICATE-----";
+
+ static byte privateExponent[] = {
+ (byte)0x4c, (byte)0xed, (byte)0x3f, (byte)0x86,
+ (byte)0x93, (byte)0x8c, (byte)0x83, (byte)0x1f,
+ (byte)0x31, (byte)0x98, (byte)0x91, (byte)0x9c,
+ (byte)0xd9, (byte)0x87, (byte)0x9b, (byte)0xfe,
+ (byte)0x0c, (byte)0x98, (byte)0xee, (byte)0x4c,
+ (byte)0x1f, (byte)0xc8, (byte)0x80, (byte)0x1a,
+ (byte)0x8e, (byte)0xcf, (byte)0x4a, (byte)0x87,
+ (byte)0x0d, (byte)0x0b, (byte)0x70, (byte)0x34,
+ (byte)0xd8, (byte)0x4e, (byte)0x8d, (byte)0x84,
+ (byte)0x00, (byte)0x8f, (byte)0xaf, (byte)0x32,
+ (byte)0x60, (byte)0xe9, (byte)0x53, (byte)0xe7,
+ (byte)0x6f, (byte)0x98, (byte)0xe0, (byte)0x8b,
+ (byte)0x52, (byte)0xaa, (byte)0xbf, (byte)0x67,
+ (byte)0x6b, (byte)0x62, (byte)0x28, (byte)0x98,
+ (byte)0x46, (byte)0xca, (byte)0xb9, (byte)0x9c,
+ (byte)0x06, (byte)0x5c, (byte)0x6b, (byte)0x91
+ };
+
+ static byte modulus[] = {
+ (byte)0x00,
+ (byte)0xb9, (byte)0x5f, (byte)0x1a, (byte)0x0f,
+ (byte)0xf9, (byte)0x67, (byte)0x07, (byte)0x89,
+ (byte)0x71, (byte)0x6e, (byte)0x73, (byte)0xa8,
+ (byte)0xb7, (byte)0x67, (byte)0x43, (byte)0x6b,
+ (byte)0xb2, (byte)0x8a, (byte)0xb7, (byte)0x2a,
+ (byte)0x0c, (byte)0x39, (byte)0x44, (byte)0x34,
+ (byte)0xa9, (byte)0xef, (byte)0xf4, (byte)0x50,
+ (byte)0x01, (byte)0x3a, (byte)0x6f, (byte)0xe3,
+ (byte)0xd3, (byte)0x09, (byte)0xe5, (byte)0x3c,
+ (byte)0x7a, (byte)0x97, (byte)0x08, (byte)0x2a,
+ (byte)0x85, (byte)0x04, (byte)0xba, (byte)0x0c,
+ (byte)0xee, (byte)0xd1, (byte)0xbc, (byte)0xa2,
+ (byte)0x17, (byte)0x22, (byte)0xd5, (byte)0x23,
+ (byte)0xf2, (byte)0xe9, (byte)0xf2, (byte)0xc9,
+ (byte)0xe5, (byte)0xda, (byte)0x8b, (byte)0x7f,
+ (byte)0x91, (byte)0x4e, (byte)0x1f, (byte)0x6b
+ };
+
+ static char passphrase[] = "passphrase".toCharArray();
+
+ /*
+ * Is the server ready to serve?
+ */
+ volatile static boolean serverReady = false;
+
+ /*
+ * Turn on SSL debugging?
+ */
+ static boolean debug = false;
+
+ /*
+ * If the client or server is doing some kind of object creation
+ * that the other side depends on, and that thread prematurely
+ * exits, you may experience a hang. The test harness will
+ * terminate all hung threads after its timeout has expired,
+ * currently 3 minutes by default, but you might try to be
+ * smart about it....
+ */
+
+ /*
+ * Define the server side of the test.
+ *
+ * If the server prematurely exits, serverReady will be set to true
+ * to avoid infinite hangs.
+ */
+ void doServerSide() throws Exception {
+ SSLServerSocketFactory sslssf =
+ getSSLContext(true).getServerSocketFactory();
+ SSLServerSocket sslServerSocket =
+ (SSLServerSocket) sslssf.createServerSocket(serverPort);
+
+ serverPort = sslServerSocket.getLocalPort();
+
+ /*
+ * Signal Client, we're ready for this connect.
+ */
+ serverReady = true;
+
+ // Enable RSA_EXPORT cipher suites only.
+ try {
+ String enabledSuites[] = {
+ "SSL_RSA_EXPORT_WITH_RC4_40_MD5",
+ "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA"};
+ sslServerSocket.setEnabledCipherSuites(enabledSuites);
+ } catch (IllegalArgumentException iae) {
+ // ignore the exception a cipher suite is unsupported.
+ }
+
+ SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept();
+ InputStream sslIS = sslSocket.getInputStream();
+ OutputStream sslOS = sslSocket.getOutputStream();
+
+ sslIS.read();
+ sslOS.write(85);
+ sslOS.flush();
+
+
+ sslSocket.close();
+ }
+
+ /*
+ * Define the client side of the test.
+ *
+ * If the server prematurely exits, serverReady will be set to true
+ * to avoid infinite hangs.
+ */
+ void doClientSide() throws Exception {
+
+ /*
+ * Wait for server to get started.
+ */
+ while (!serverReady) {
+ Thread.sleep(50);
+ }
+
+ SSLSocketFactory sslsf =
+ getSSLContext(false).getSocketFactory();
+ SSLSocket sslSocket = (SSLSocket)
+ sslsf.createSocket("localhost", serverPort);
+
+ // Enable RSA_EXPORT cipher suites only.
+ try {
+ String enabledSuites[] = {
+ "SSL_RSA_EXPORT_WITH_RC4_40_MD5",
+ "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA"};
+ sslSocket.setEnabledCipherSuites(enabledSuites);
+ } catch (IllegalArgumentException iae) {
+ // ignore the exception a cipher suite is unsupported.
+ }
+
+ InputStream sslIS = sslSocket.getInputStream();
+ OutputStream sslOS = sslSocket.getOutputStream();
+
+ sslOS.write(280);
+ sslOS.flush();
+ sslIS.read();
+
+ sslSocket.close();
+ }
+
+ /*
+ * =============================================================
+ * The remainder is just support stuff
+ */
+
+ // use any free port by default
+ volatile int serverPort = 0;
+
+ volatile Exception serverException = null;
+ volatile Exception clientException = null;
+
+ public static void main(String[] args) throws Exception {
+ if (debug)
+ System.setProperty("javax.net.debug", "all");
+
+ /*
+ * Start the tests.
+ */
+ new RSAExport();
+ }
+
+ Thread clientThread = null;
+ Thread serverThread = null;
+
+ /*
+ * Primary constructor, used to drive remainder of the test.
+ *
+ * Fork off the other side, then do your work.
+ */
+ RSAExport() throws Exception {
+ if (separateServerThread) {
+ startServer(true);
+ startClient(false);
+ } else {
+ startClient(true);
+ startServer(false);
+ }
+
+ /*
+ * Wait for other side to close down.
+ */
+ if (separateServerThread) {
+ serverThread.join();
+ } else {
+ clientThread.join();
+ }
+
+ /*
+ * When we get here, the test is pretty much over.
+ *
+ * If the main thread excepted, that propagates back
+ * immediately. If the other thread threw an exception, we
+ * should report back.
+ */
+ if (serverException != null)
+ throw serverException;
+ if (clientException != null)
+ throw clientException;
+ }
+
+ void startServer(boolean newThread) throws Exception {
+ if (newThread) {
+ serverThread = new Thread() {
+ public void run() {
+ try {
+ doServerSide();
+ } catch (Exception e) {
+ /*
+ * Our server thread just died.
+ *
+ * Release the client, if not active already...
+ */
+ System.err.println("Server died..." + e);
+ serverReady = true;
+ serverException = e;
+ }
+ }
+ };
+ serverThread.start();
+ } else {
+ doServerSide();
+ }
+ }
+
+ void startClient(boolean newThread) throws Exception {
+ if (newThread) {
+ clientThread = new Thread() {
+ public void run() {
+ try {
+ doClientSide();
+ } catch (Exception e) {
+ /*
+ * Our client thread just died.
+ */
+ System.err.println("Client died...");
+ clientException = e;
+ }
+ }
+ };
+ clientThread.start();
+ } else {
+ doClientSide();
+ }
+ }
+
+ // Get the SSL context
+ private SSLContext getSSLContext(boolean authnRequired) throws Exception {
+ // generate certificate from cert string
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+
+ ByteArrayInputStream is =
+ new ByteArrayInputStream(trusedCertStr.getBytes());
+ Certificate trustedCert = cf.generateCertificate(is);
+
+ // create a key store
+ KeyStore ks = KeyStore.getInstance("JKS");
+ ks.load(null, null);
+
+ // import the trusted cert
+ ks.setCertificateEntry("RSA Export Signer", trustedCert);
+
+ if (authnRequired) {
+ // generate the private key.
+ RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(
+ new BigInteger(modulus),
+ new BigInteger(privateExponent));
+ KeyFactory kf = KeyFactory.getInstance("RSA");
+ RSAPrivateKey priKey =
+ (RSAPrivateKey)kf.generatePrivate(priKeySpec);
+
+ // generate certificate chain
+ is = new ByteArrayInputStream(serverCertStr.getBytes());
+ Certificate serverCert = cf.generateCertificate(is);
+
+ Certificate[] chain = new Certificate[2];
+ chain[0] = serverCert;
+ chain[1] = trustedCert;
+
+ // import the key entry.
+ ks.setKeyEntry("RSA Export", priKey, passphrase, chain);
+ }
+
+ // create SSL context
+ TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX");
+ tmf.init(ks);
+
+ SSLContext ctx = SSLContext.getInstance("TLS");
+ if (authnRequired) {
+ KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
+ kmf.init(ks, passphrase);
+
+ ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+ } else {
+ ctx.init(null, tmf.getTrustManagers(), null);
+ }
+
+ return ctx;
+ }
+
+}
diff --git a/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/AsyncSSLSocketClose.java b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/AsyncSSLSocketClose.java
index 21fe5303a..56eff7e3f 100644
--- a/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/AsyncSSLSocketClose.java
+++ b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/AsyncSSLSocketClose.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/sun/security/tools/keytool/StartDateTest.java b/test/sun/security/tools/keytool/StartDateTest.java
index 7e3e5bad1..602f2f3c8 100644
--- a/test/sun/security/tools/keytool/StartDateTest.java
+++ b/test/sun/security/tools/keytool/StartDateTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2007-2008 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
diff --git a/test/sun/security/tools/keytool/autotest.sh b/test/sun/security/tools/keytool/autotest.sh
index 5376b257a..04c00c14e 100644
--- a/test/sun/security/tools/keytool/autotest.sh
+++ b/test/sun/security/tools/keytool/autotest.sh
@@ -1,5 +1,5 @@
#
-# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2006-2008 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
@@ -90,7 +90,8 @@ chmod u+w cert8.db
echo | ${TESTJAVA}${FS}bin${FS}java -Dfile -Dnss \
-Dnss.lib=${NSS}${FS}lib${FS}${PF}${FS}${LIBNAME} \
- KeyToolTest || exit 12
+ KeyToolTest
+status=$?
rm -f p11-nss.txt
rm -f cert8.db
@@ -101,4 +102,5 @@ rm HumanInputStream*.class
rm KeyToolTest.class
rm TestException.class
-exit $?
+exit $status
+
diff --git a/test/sun/security/tools/keytool/console.sh b/test/sun/security/tools/keytool/console.sh
index 46252de33..dd7d3f840 100644
--- a/test/sun/security/tools/keytool/console.sh
+++ b/test/sun/security/tools/keytool/console.sh
@@ -1,7 +1,7 @@
#! /bin/sh
#
-# Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 2006-2008 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
@@ -30,7 +30,7 @@
#
# @run shell/manual console.sh
-if [ "$ALT_PASS" == "" ]; then
+if [ "$ALT_PASS" = "" ]; then
export PASS=äöäöäöäö
else
export PASS=$ALT_PASS
@@ -54,7 +54,7 @@ echo "If you see both the prompts appear, say --"
echo " Enter key password for <mykey>"
echo " (RETURN if same as keystore password): Enter keystore password:"
echo "only response to the last prompt by typing $PASS and press ENTER"
-echo
+echo
echo "Only if all the command run correctly without showing any error "
echo "or warning, this test passes."
echo
@@ -87,3 +87,6 @@ echo $PASS| $J5/bin/keytool -keystore kkk -genkey -dname CN=olala
$JM/bin/keytool -keystore kkk -list
echo $PASS| $J5/bin/keytool -keystore kkk -list
echo $PASS| $JM/bin/keytool -keystore kkk -list
+rm kkk
+
+exit 0