--- a/make/java/sun_nio/FILES_java.gmk Fri Apr 11 15:06:20 2008 -0700
+++ b/make/java/sun_nio/FILES_java.gmk Tue Apr 15 17:46:47 2008 -0700
@@ -33,6 +33,7 @@ FILES_java = \
sun/nio/cs/AbstractCharsetProvider.java \
sun/nio/cs/HistoricallyNamedCharset.java \
sun/nio/cs/Surrogate.java \
+ sun/nio/cs/CharsetMapping.java \
sun/nio/cs/SingleByteEncoder.java \
sun/nio/cs/SingleByteDecoder.java \
sun/nio/cs/UnicodeEncoder.java \
--- a/make/sun/nio/Makefile Fri Apr 11 15:06:20 2008 -0700
+++ b/make/sun/nio/Makefile Tue Apr 15 17:46:47 2008 -0700
@@ -1,5 +1,5 @@
#
-# Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved.
+# Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -73,11 +73,21 @@ SERVICE_DESCRIPTION = java.nio.charset.s
SERVICE_DESCRIPTION = java.nio.charset.spi.CharsetProvider
SERVICE_DESCRIPTION_PATH = META-INF/services/$(SERVICE_DESCRIPTION)
+GENCSDATASRC = $(BUILDDIR)/tools/CharsetMapping
+FILES_MAP = $(GENCSDATASRC)/sjis0213.map
+FILES_DAT = $(CLASSDESTDIR)/sun/nio/cs/ext/sjis0213.dat
+CHARSETMAPPING_JARFILE = $(BUILDTOOLJARDIR)/charsetmapping.jar
+
+$(FILES_DAT): $(FILES_MAP)
+ @$(prep-target)
+ $(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) \
+ $(FILES_MAP) $(FILES_DAT)
+
$(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH): \
$(SHARE_SRC)/classes/sun/nio/cs/ext/$(SERVICE_DESCRIPTION_PATH)
$(install-file)
-$(CHARSETS_JAR): $(FILES_class) $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH)
+$(CHARSETS_JAR): $(FILES_class) $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH) $(FILES_DAT)
$(BOOT_JAR_CMD) cf $(CHARSETS_JAR) \
-C $(CLASSDESTDIR) sun \
-C $(CLASSDESTDIR) $(SERVICE_DESCRIPTION_PATH) \
--- a/make/tools/Makefile Fri Apr 11 15:06:20 2008 -0700
+++ b/make/tools/Makefile Tue Apr 15 17:46:47 2008 -0700
@@ -50,7 +50,8 @@ SUBDIRS = \
jdwpgen \
makeclasslist \
strip_properties \
- winver
+ winver \
+ CharsetMapping
all build clean clobber::
$(SUBDIRS-loop)
--- a/src/share/bin/emessages.h Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/bin/emessages.h Tue Apr 15 17:46:47 2008 -0700
@@ -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
@@ -50,7 +50,7 @@
#define JAR_ERROR2 "Error: Unable to access jarfile %s"
#define JAR_ERROR3 "Error: Invalid or corrupt jarfile %s"
-#define CLS_ERROR1 "Error: Could not find the main class.\n" JNI_ERROR
+#define CLS_ERROR1 "Error: Could not find the main class %s.\n" JNI_ERROR
#define CLS_ERROR2 "Error: Failed to load Main Class: %s\n%s"
#define CLS_ERROR3 "Error: No main method found in specified class.\n" GEN_ERROR
#define CLS_ERROR4 "Error: Main method not public\n" GEN_ERROR
--- a/src/share/bin/java.c Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/bin/java.c Tue Apr 15 17:46:47 2008 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -414,7 +414,7 @@ JavaMain(void * _args)
mainClass = LoadClass(env, classname);
if(mainClass == NULL) { /* exception occured */
ReportExceptionDescription(env);
- ReportErrorMessage(CLS_ERROR1);
+ ReportErrorMessage(CLS_ERROR1, classname);
goto leave;
}
(*env)->ReleaseStringUTFChars(env, mainClassName, classname);
@@ -433,7 +433,7 @@ JavaMain(void * _args)
mainClass = LoadClass(env, classname);
if(mainClass == NULL) { /* exception occured */
ReportExceptionDescription(env);
- ReportErrorMessage(CLS_ERROR1);
+ ReportErrorMessage(CLS_ERROR1, classname);
goto leave;
}
(*env)->ReleaseStringUTFChars(env, mainClassName, classname);
--- a/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java Tue Apr 15 17:46:47 2008 -0700
@@ -25,6 +25,8 @@
package com.sun.management;
+import java.lang.management.PlatformManagedObject;
+
/**
* Diagnostic management interface for the HotSpot Virtual Machine.
* The diagnostic MBean is registered to the platform MBeanServer
@@ -35,8 +37,13 @@ package com.sun.management;
* <blockquote>
* <tt>com.sun.management:type=HotSpotDiagnostic</tt>
* </blockquote>
+.*
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
*/
-public interface HotSpotDiagnosticMXBean {
+public interface HotSpotDiagnosticMXBean extends PlatformManagedObject {
/**
* Dumps the heap to the <tt>outputFile</tt> file in the same
* format as the hprof heap dump.
--- a/src/share/classes/java/lang/management/ClassLoadingMXBean.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/lang/management/ClassLoadingMXBean.java Tue Apr 15 17:46:47 2008 -0700
@@ -35,7 +35,7 @@ package java.lang.management;
* that can be obtained by calling
* the {@link ManagementFactory#getClassLoadingMXBean} method or
* from the {@link ManagementFactory#getPlatformMBeanServer
- * platform <tt>MBeanServer</tt>} method.
+ * platform <tt>MBeanServer</tt>}.
*
* <p>The <tt>ObjectName</tt> for uniquely identifying the MXBean for
* the class loading system within an <tt>MBeanServer</tt> is:
@@ -44,6 +44,10 @@ package java.lang.management;
* <tt>java.lang:type=ClassLoading</tt>}
* </blockquote>
*
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
* @see <a href="../../../javax/management/package-summary.html">
* JMX Specification.</a>
* @see <a href="package-summary.html#examples">
@@ -52,7 +56,7 @@ package java.lang.management;
* @author Mandy Chung
* @since 1.5
*/
-public interface ClassLoadingMXBean {
+public interface ClassLoadingMXBean extends PlatformManagedObject {
/**
* Returns the total number of classes that have been loaded since
--- a/src/share/classes/java/lang/management/CompilationMXBean.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/lang/management/CompilationMXBean.java Tue Apr 15 17:46:47 2008 -0700
@@ -44,6 +44,10 @@ package java.lang.management;
* <tt>java.lang:type=Compilation</tt>}
* </blockquote>
*
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
* @see <a href="../../../javax/management/package-summary.html">
* JMX Specification.</a>
* @see <a href="package-summary.html#examples">
@@ -52,7 +56,7 @@ package java.lang.management;
* @author Mandy Chung
* @since 1.5
*/
-public interface CompilationMXBean {
+public interface CompilationMXBean extends PlatformManagedObject {
/**
* Returns the name of the Just-in-time (JIT) compiler.
*
--- a/src/share/classes/java/lang/management/GarbageCollectorMXBean.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/lang/management/GarbageCollectorMXBean.java Tue Apr 15 17:46:47 2008 -0700
@@ -48,9 +48,13 @@ package java.lang.management;
* <tt>java.lang:type=GarbageCollector</tt>}<tt>,name=</tt><i>collector's name</i>
* </blockquote>
*
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
* A platform usually includes additional platform-dependent information
* specific to a garbage collection algorithm for monitoring.
*
+ * @see ManagementFactory#getPlatformMXBeans(Class)
* @see MemoryMXBean
*
* @see <a href="../../../javax/management/package-summary.html">
--- a/src/share/classes/java/lang/management/ManagementFactory.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/lang/management/ManagementFactory.java Tue Apr 15 17:46:47 2008 -0700
@@ -24,17 +24,31 @@
*/
package java.lang.management;
+import javax.management.DynamicMBean;
import javax.management.MBeanServer;
import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerFactory;
import javax.management.MBeanServerPermission;
+import javax.management.NotificationEmitter;
+import javax.management.ObjectInstance;
import javax.management.ObjectName;
+import javax.management.InstanceAlreadyExistsException;
import javax.management.InstanceNotFoundException;
import javax.management.MalformedObjectNameException;
+import javax.management.MBeanRegistrationException;
+import javax.management.NotCompliantMBeanException;
+import javax.management.StandardEmitterMBean;
+import javax.management.StandardMBean;
+import java.util.Collections;
+import java.util.ArrayList;
import java.util.List;
import java.security.AccessController;
import java.security.Permission;
import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import javax.management.JMX;
+import sun.management.ManagementFactoryHelper;
/**
* The <tt>ManagementFactory</tt> class is a factory class for getting
@@ -49,13 +63,16 @@ import javax.management.JMX;
* <ul>
* <li><i>Direct access to an MXBean interface</i>
* <ol type="a">
- * <li>Get the MXBean instance through the static factory method
+ * <li>Get the MXBean instance through the static factory method,
+ * or the {@link #getPlatformMXBeans(Class)} method
* and access the MXBean locally of the running
* virtual machine.
* </li>
* <li>Construct an MXBean proxy instance that forwards the
* method calls to a given {@link MBeanServer MBeanServer} by calling
- * {@link #newPlatformMXBeanProxy newPlatfromMXBeanProxy}.
+ * the {@link #newPlatformMXBeanProxy newPlatformMXBeanProxy} method
+ * or the {@link #getPlatformMXBeans(MBeanServerConnection, Class)}
+ * method.
* A proxy is typically constructed to remotely access
* an MXBean of another running virtual machine.
* </li>
@@ -83,6 +100,10 @@ import javax.management.JMX;
* a set of basic data types described below.
* See <a href="../../../javax/management/MXBean.html#MXBean-spec">
* the specification of MXBeans</a> for details.
+ * All platform MXBean interfaces extend {@link PlatformManagedObject}s
+ * and new methods may be added in these interfaces
+ * in future Java SE releases.
+ * <p>
* A JMX management application and the platform <tt>MBeanServer</tt>
* can interoperate without requiring classes for MXBean specific
* data types.
@@ -191,7 +212,10 @@ import javax.management.JMX;
* <h4><a name="MXBeanNames">MXBean Names</a></h4>
* Each platform MXBean for a Java virtual machine has a unique
* {@link javax.management.ObjectName ObjectName} for
- * registration in the platform <tt>MBeanServer</tt>.
+ * registration in the platform <tt>MBeanServer</tt> that can
+ * be obtained by calling the {@link PlatformManagedObject#getObjectName}
+ * method.
+ *
* A Java virtual machine has a single instance of the following management
* interfaces:
*
@@ -275,7 +299,7 @@ import javax.management.JMX;
* </blockquote>
*
* @see <a href="../../../javax/management/package-summary.html">
- * JMX Specification.</a>
+ * JMX Specification</a>
* @see <a href="package-summary.html#examples">
* Ways to Access Management Metrics</a>
* @see java.util.logging.LoggingMXBean
@@ -368,7 +392,7 @@ public class ManagementFactory {
* the Java virtual machine.
*/
public static ClassLoadingMXBean getClassLoadingMXBean() {
- return sun.management.ManagementFactory.getClassLoadingMXBean();
+ return ManagementFactoryHelper.getClassLoadingMXBean();
}
/**
@@ -378,7 +402,7 @@ public class ManagementFactory {
* @return a {@link MemoryMXBean} object for the Java virtual machine.
*/
public static MemoryMXBean getMemoryMXBean() {
- return sun.management.ManagementFactory.getMemoryMXBean();
+ return ManagementFactoryHelper.getMemoryMXBean();
}
/**
@@ -388,7 +412,7 @@ public class ManagementFactory {
* @return a {@link ThreadMXBean} object for the Java virtual machine.
*/
public static ThreadMXBean getThreadMXBean() {
- return sun.management.ManagementFactory.getThreadMXBean();
+ return ManagementFactoryHelper.getThreadMXBean();
}
/**
@@ -399,7 +423,7 @@ public class ManagementFactory {
*/
public static RuntimeMXBean getRuntimeMXBean() {
- return sun.management.ManagementFactory.getRuntimeMXBean();
+ return ManagementFactoryHelper.getRuntimeMXBean();
}
/**
@@ -412,7 +436,7 @@ public class ManagementFactory {
* no compilation system.
*/
public static CompilationMXBean getCompilationMXBean() {
- return sun.management.ManagementFactory.getCompilationMXBean();
+ return ManagementFactoryHelper.getCompilationMXBean();
}
/**
@@ -423,7 +447,7 @@ public class ManagementFactory {
* the Java virtual machine.
*/
public static OperatingSystemMXBean getOperatingSystemMXBean() {
- return sun.management.ManagementFactory.getOperatingSystemMXBean();
+ return ManagementFactoryHelper.getOperatingSystemMXBean();
}
/**
@@ -436,7 +460,7 @@ public class ManagementFactory {
*
*/
public static List<MemoryPoolMXBean> getMemoryPoolMXBeans() {
- return sun.management.ManagementFactory.getMemoryPoolMXBeans();
+ return ManagementFactoryHelper.getMemoryPoolMXBeans();
}
/**
@@ -449,7 +473,7 @@ public class ManagementFactory {
*
*/
public static List<MemoryManagerMXBean> getMemoryManagerMXBeans() {
- return sun.management.ManagementFactory.getMemoryManagerMXBeans();
+ return ManagementFactoryHelper.getMemoryManagerMXBeans();
}
@@ -465,7 +489,7 @@ public class ManagementFactory {
*
*/
public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans() {
- return sun.management.ManagementFactory.getGarbageCollectorMXBeans();
+ return ManagementFactoryHelper.getGarbageCollectorMXBeans();
}
private static MBeanServer platformMBeanServer;
@@ -518,8 +542,25 @@ public class ManagementFactory {
}
if (platformMBeanServer == null) {
- platformMBeanServer =
- sun.management.ManagementFactory.createPlatformMBeanServer();
+ platformMBeanServer = MBeanServerFactory.createMBeanServer();
+ for (PlatformComponent pc : PlatformComponent.values()) {
+ List<? extends PlatformManagedObject> list =
+ pc.getMXBeans(pc.getMXBeanInterface());
+ for (PlatformManagedObject o : list) {
+ // Each PlatformComponent represents one management
+ // interface. Some MXBean may extend another one.
+ // The MXBean instances for one platform component
+ // (returned by pc.getMXBeans()) might be also
+ // the MXBean instances for another platform component.
+ // e.g. com.sun.management.GarbageCollectorMXBean
+ //
+ // So need to check if an MXBean instance is registered
+ // before registering into the platform MBeanServer
+ if (!platformMBeanServer.isRegistered(o.getObjectName())) {
+ addMXBean(platformMBeanServer, o);
+ }
+ }
+ }
}
return platformMBeanServer;
}
@@ -657,6 +698,136 @@ public class ManagementFactory {
}
}
+ /**
+ * Returns the list of platform MXBeans that implement
+ * the given {@code mxbeanInterface} in the running Java
+ * virtual machine.
+ * The returned list may contain zero, one, or more instances.
+ * The number of instances in the returned list is defined
+ * in the specification of the given management interface.
+ *
+ * @param mxbeanInterface a management interface for a platform
+ * MXBean
+ *
+ * @return the list of platform MXBeans that implements
+ * {@code mxbeanInterface}.
+ *
+ * @throws IllegalArgumentException if {@code mxbeanInterface}
+ * is not a management interface for the platform.
+ *
+ * @since 1.7
+ */
+ public static <T extends PlatformManagedObject> List<T>
+ getPlatformMXBeans(Class<T> mxbeanInterface) {
+ String className = mxbeanInterface.getName();
+ for (PlatformComponent component: PlatformComponent.values()) {
+ // comparing the class name first instead of the Class instance
+ // to avoid causing unnecessary class loading of
+ // the other MXBean interfaces
+ if (className.equals(component.getMXBeanInterfaceName())) {
+ if (component.getMXBeanInterface() == mxbeanInterface) {
+ return component.getMXBeans(mxbeanInterface);
+ }
+ }
+ }
+ throw new IllegalArgumentException(mxbeanInterface.getName() +
+ " is not implemented by any of the platform MXBeans.");
+ }
+
+ /**
+ * Returns the list of the platform MXBean proxies for
+ * forwarding the method calls of the {@code mxbeanInterface}
+ * through the given {@code MBeanServerConnection}.
+ * The returned list may contain zero, one, or more instances.
+ * The number of instances in the returned list is defined
+ * in the specification of the given management interface.
+ *
+ * @param connection the {@code MBeanServerConnection} to forward to.
+ * @param mxbeanInterface a management interface for a platform
+ * MXBean
+ *
+ * @return the list of platform MXBean proxies for
+ * forwarding the method calls of the {@code mxbeanInterface}
+ * through the given {@code MBeanServerConnection}.
+ *
+ * @throws IllegalArgumentException if {@code mxbeanInterface}
+ * is not a management interface for the platform.
+ *
+ * @throws java.io.IOException if a communication problem
+ * occurred when accessing the {@code MBeanServerConnection}.
+ *
+ * @since 1.7
+ */
+ public static <T extends PlatformManagedObject>
+ List<T> getPlatformMXBeans(MBeanServerConnection connection,
+ Class<T> mxbeanInterface)
+ throws java.io.IOException
+ {
+ String className = mxbeanInterface.getName();
+ for (PlatformComponent component: PlatformComponent.values()) {
+ // comparing the class name first instead of the Class instance
+ // to avoid causing unnecessary class loading of
+ // the other MXBean interfaces
+ if (className.equals(component.getMXBeanInterfaceName())) {
+ if (component.getMXBeanInterface() == mxbeanInterface) {
+ return component.getMXBeans(connection,
+ mxbeanInterface);
+ }
+ }
+ }
+ throw new IllegalArgumentException(mxbeanInterface.getName() +
+ " is not implemented by any of the platform MXBeans.");
+ }
+
+ /**
+ * Returns a list of {@code Class} objects, subinterface of
+ * {@link PlatformManagedObject}, representing
+ * all management interfaces for
+ * monitoring and managing the Java platform.
+ *
+ * @return a list of {@code Class} objects, subinterface of
+ * {@link PlatformManagedObject} representing
+ * the management interfaces for
+ * monitoring and managing the Java platform.
+ *
+ * @since 1.7
+ */
+ public static List<Class<? extends PlatformManagedObject>> getAllPlatformMXBeanInterfaces() {
+ List<Class<? extends PlatformManagedObject>> result =
+ new ArrayList<Class<? extends PlatformManagedObject>>();
+ for (PlatformComponent component: PlatformComponent.values()) {
+ result.add(component.getMXBeanInterface());
+ }
+ return result;
+ }
+
private static final String NOTIF_EMITTER =
"javax.management.NotificationEmitter";
+
+ /**
+ * Registers an MXBean.
+ */
+ private static void addMXBean(final MBeanServer mbs, final PlatformManagedObject pmo) {
+ // Make DynamicMBean out of MXBean by wrapping it with a StandardMBean
+ final DynamicMBean dmbean;
+ if (pmo instanceof NotificationEmitter) {
+ dmbean = new StandardEmitterMBean(pmo, null, true, (NotificationEmitter) pmo);
+ } else {
+ dmbean = new StandardMBean(pmo, null, true);
+ }
+
+ try {
+ AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
+ public Void run() throws InstanceAlreadyExistsException,
+ MBeanRegistrationException,
+ NotCompliantMBeanException {
+ mbs.registerMBean(dmbean, pmo.getObjectName());
+ return null;
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ throw new RuntimeException(e.getException());
+ }
+ }
+
}
--- a/src/share/classes/java/lang/management/MemoryMXBean.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/lang/management/MemoryMXBean.java Tue Apr 15 17:46:47 2008 -0700
@@ -45,6 +45,9 @@ import javax.management.openmbean.Compos
* {@link ManagementFactory#MEMORY_MXBEAN_NAME
* <tt>java.lang:type=Memory</tt>}
* </blockquote>
+ *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
*
* <h4> Memory </h4>
* The memory system of the Java virtual machine manages
@@ -190,6 +193,7 @@ import javax.management.openmbean.Compos
* emitter.addNotificationListener(listener, null, null);
* </pre></blockquote>
*
+ * @see ManagementFactory#getPlatformMXBeans(Class)
* @see <a href="../../../javax/management/package-summary.html">
* JMX Specification.</a>
* @see <a href="package-summary.html#examples">
@@ -198,7 +202,7 @@ import javax.management.openmbean.Compos
* @author Mandy Chung
* @since 1.5
*/
-public interface MemoryMXBean {
+public interface MemoryMXBean extends PlatformManagedObject {
/**
* Returns the approximate number of objects for which
* finalization is pending.
--- a/src/share/classes/java/lang/management/MemoryManagerMXBean.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/lang/management/MemoryManagerMXBean.java Tue Apr 15 17:46:47 2008 -0700
@@ -45,6 +45,10 @@ package java.lang.management;
* <tt>java.lang:type=MemoryManager</tt>}<tt>,name=</tt><i>manager's name</i>
* </blockquote>
*
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
* @see MemoryMXBean
*
* @see <a href="../../../javax/management/package-summary.html">
@@ -55,7 +59,7 @@ package java.lang.management;
* @author Mandy Chung
* @since 1.5
*/
-public interface MemoryManagerMXBean {
+public interface MemoryManagerMXBean extends PlatformManagedObject {
/**
* Returns the name representing this memory manager.
*
--- a/src/share/classes/java/lang/management/MemoryPoolMXBean.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/lang/management/MemoryPoolMXBean.java Tue Apr 15 17:46:47 2008 -0700
@@ -45,6 +45,9 @@ package java.lang.management;
* {@link ManagementFactory#MEMORY_POOL_MXBEAN_DOMAIN_TYPE
* <tt>java.lang:type=MemoryPool</tt>}<tt>,name=</tt><i>pool's name</i>
* </blockquote>
+ *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
*
* <h4>Memory Type</h4>
* <p>The Java virtual machine has a heap for object allocation and also
@@ -349,6 +352,7 @@ package java.lang.management;
* described above for the <a href="#UsageThreshold">usage threshold</a>
* in a similar fashion.
*
+ * @see ManagementFactory#getPlatformMXBeans(Class)
* @see <a href="../../../javax/management/package-summary.html">
* JMX Specification.</a>
* @see <a href="package-summary.html#examples">
@@ -357,7 +361,7 @@ package java.lang.management;
* @author Mandy Chung
* @since 1.5
*/
-public interface MemoryPoolMXBean {
+public interface MemoryPoolMXBean extends PlatformManagedObject {
/**
* Returns the name representing this memory pool.
*
--- a/src/share/classes/java/lang/management/OperatingSystemMXBean.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/lang/management/OperatingSystemMXBean.java Tue Apr 15 17:46:47 2008 -0700
@@ -44,10 +44,14 @@ package java.lang.management;
* <tt>java.lang:type=OperatingSystem</tt>}
* </blockquote>
*
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
* <p> This interface defines several convenient methods for accessing
* system properties about the operating system on which the Java
* virtual machine is running.
*
+ * @see ManagementFactory#getPlatformMXBeans(Class)
* @see <a href="../../../javax/management/package-summary.html">
* JMX Specification.</a>
* @see <a href="package-summary.html#examples">
@@ -56,7 +60,7 @@ package java.lang.management;
* @author Mandy Chung
* @since 1.5
*/
-public interface OperatingSystemMXBean {
+public interface OperatingSystemMXBean extends PlatformManagedObject {
/**
* Returns the operating system name.
* This method is equivalent to <tt>System.getProperty("os.name")</tt>.
--- a/src/share/classes/java/lang/management/RuntimeMXBean.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/lang/management/RuntimeMXBean.java Tue Apr 15 17:46:47 2008 -0700
@@ -44,9 +44,13 @@ package java.lang.management;
* <tt>java.lang:type=Runtime</tt>}
* </blockquote>
*
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
* <p> This interface defines several convenient methods for accessing
* system properties about the Java virtual machine.
*
+ * @see ManagementFactory#getPlatformMXBeans(Class)
* @see <a href="../../../javax/management/package-summary.html">
* JMX Specification.</a>
* @see <a href="package-summary.html#examples">
@@ -55,7 +59,7 @@ package java.lang.management;
* @author Mandy Chung
* @since 1.5
*/
-public interface RuntimeMXBean {
+public interface RuntimeMXBean extends PlatformManagedObject {
/**
* Returns the name representing the running Java virtual machine.
* The returned name string can be any arbitrary string and
--- a/src/share/classes/java/lang/management/ThreadInfo.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/lang/management/ThreadInfo.java Tue Apr 15 17:46:47 2008 -0700
@@ -26,6 +26,7 @@ package java.lang.management;
package java.lang.management;
import javax.management.openmbean.CompositeData;
+import sun.management.ManagementFactoryHelper;
import sun.management.ThreadInfoCompositeData;
import static java.lang.Thread.State.*;
@@ -220,12 +221,9 @@ public class ThreadInfo {
LockInfo[] lockedSynchronizers) {
this.threadId = t.getId();
this.threadName = t.getName();
- this.threadState =
- sun.management.ManagementFactory.toThreadState(state);
- this.suspended =
- sun.management.ManagementFactory.isThreadSuspended(state);
- this.inNative =
- sun.management.ManagementFactory.isThreadRunningNative(state);
+ this.threadState = ManagementFactoryHelper.toThreadState(state);
+ this.suspended = ManagementFactoryHelper.isThreadSuspended(state);
+ this.inNative = ManagementFactoryHelper.isThreadRunningNative(state);
this.blockedCount = blockedCount;
this.blockedTime = blockedTime;
this.waitedCount = waitedCount;
--- a/src/share/classes/java/lang/management/ThreadMXBean.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/lang/management/ThreadMXBean.java Tue Apr 15 17:46:47 2008 -0700
@@ -45,6 +45,9 @@ import java.util.Map;
* {@link ManagementFactory#THREAD_MXBEAN_NAME
* <tt>java.lang:type=Threading</tt>}
* </blockquote>
+ *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
*
* <h4>Thread ID</h4>
* Thread ID is a positive long value returned by calling the
@@ -108,6 +111,7 @@ import java.util.Map;
* {@link #findDeadlockedThreads} methods to find deadlocks in
* the running application.
*
+ * @see ManagementFactory#getPlatformMXBeans(Class)
* @see <a href="../../../javax/management/package-summary.html">
* JMX Specification.</a>
* @see <a href="package-summary.html#examples">
@@ -117,7 +121,7 @@ import java.util.Map;
* @since 1.5
*/
-public interface ThreadMXBean {
+public interface ThreadMXBean extends PlatformManagedObject {
/**
* Returns the current number of live threads including both
* daemon and non-daemon threads.
--- a/src/share/classes/java/util/logging/Logging.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/util/logging/Logging.java Tue Apr 15 17:46:47 2008 -0700
@@ -28,6 +28,8 @@ import java.util.Enumeration;
import java.util.Enumeration;
import java.util.List;
import java.util.ArrayList;
+
+import javax.management.ObjectName;
/**
* Logging is the implementation class of LoggingMXBean.
@@ -115,4 +117,7 @@ class Logging implements LoggingMXBean {
}
}
+ public ObjectName getObjectName() {
+ return com.sun.jmx.mbeanserver.Util.newObjectName(LogManager.LOGGING_MXBEAN_NAME);
+ }
}
--- a/src/share/classes/java/util/logging/LoggingMXBean.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/util/logging/LoggingMXBean.java Tue Apr 15 17:46:47 2008 -0700
@@ -25,6 +25,8 @@
package java.util.logging;
+import java.lang.management.PlatformManagedObject;
+
/**
* The management interface for the logging facility.
*
@@ -43,14 +45,17 @@ package java.util.logging;
* <tt>java.util.logging:type=Logging</tt>}
* </blockquote>
*
- * @see java.lang.management.ManagementFactory
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see java.lang.management.ManagementFactory#getPlatformMXBeans(Class)
*
* @author Ron Mann
* @author Mandy Chung
* @since 1.5
*
*/
-public interface LoggingMXBean {
+public interface LoggingMXBean extends PlatformManagedObject {
/**
* Returns the list of currently registered loggers. This method
--- a/src/share/classes/java/util/regex/Pattern.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/java/util/regex/Pattern.java Tue Apr 15 17:46:47 2008 -0700
@@ -2844,7 +2844,15 @@ loop: for(int x=0, offset=0; x<nCodePo
/**
* Utility method for parsing unicode escape sequences.
*/
- private int u() {
+ private int cursor() {
+ return cursor;
+ }
+
+ private void setcursor(int pos) {
+ cursor = pos;
+ }
+
+ private int uxxxx() {
int n = 0;
for (int i = 0; i < 4; i++) {
int ch = read();
@@ -2852,6 +2860,20 @@ loop: for(int x=0, offset=0; x<nCodePo
throw error("Illegal Unicode escape sequence");
}
n = n * 16 + ASCII.toDigit(ch);
+ }
+ return n;
+ }
+
+ private int u() {
+ int n = uxxxx();
+ if (Character.isHighSurrogate((char)n)) {
+ int cur = cursor();
+ if (read() == '\\' && read() == 'u') {
+ int n2 = uxxxx();
+ if (Character.isLowSurrogate((char)n2))
+ return Character.toCodePoint((char)n, (char)n2);
+ }
+ setcursor(cur);
}
return n;
}
--- a/src/share/classes/sun/management/ClassLoadingImpl.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/ClassLoadingImpl.java Tue Apr 15 17:46:47 2008 -0700
@@ -26,6 +26,8 @@ package sun.management;
package sun.management;
import java.lang.management.ClassLoadingMXBean;
+import java.lang.management.ManagementFactory;
+import javax.management.ObjectName;
/**
* Implementation class for the class loading subsystem.
@@ -62,9 +64,13 @@ class ClassLoadingImpl implements ClassL
}
public void setVerbose(boolean value) {
- ManagementFactory.checkControlAccess();
+ Util.checkControlAccess();
setVerboseClass(value);
}
native static void setVerboseClass(boolean value);
+
+ public ObjectName getObjectName() {
+ return Util.newObjectName(ManagementFactory.CLASS_LOADING_MXBEAN_NAME);
+ }
}
--- a/src/share/classes/sun/management/CompilationImpl.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/CompilationImpl.java Tue Apr 15 17:46:47 2008 -0700
@@ -26,6 +26,8 @@ package sun.management;
package sun.management;
import java.lang.management.CompilationMXBean;
+import java.lang.management.ManagementFactory;
+import javax.management.ObjectName;
/**
* Implementation class for the compilation subsystem.
@@ -46,7 +48,7 @@ class CompilationImpl implements Compila
this.jvm = vm;
this.name = jvm.getCompilerName();
if (name == null) {
- throw new InternalError("Null compiler name");
+ throw new AssertionError("Null compiler name");
}
}
@@ -67,4 +69,9 @@ class CompilationImpl implements Compila
return jvm.getTotalCompileTime();
}
+ public ObjectName getObjectName() {
+ return Util.newObjectName(ManagementFactory.COMPILATION_MXBEAN_NAME);
+ }
+
+
}
--- a/src/share/classes/sun/management/GarbageCollectorImpl.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/GarbageCollectorImpl.java Tue Apr 15 17:46:47 2008 -0700
@@ -34,6 +34,7 @@ import javax.management.openmbean.Compos
import javax.management.openmbean.CompositeData;
import javax.management.MBeanInfo;
import javax.management.MBeanAttributeInfo;
+import javax.management.ObjectName;
import java.util.List;
import java.util.ListIterator;
@@ -88,4 +89,8 @@ class GarbageCollectorImpl extends Memor
return info;
}
+ public ObjectName getObjectName() {
+ return Util.newObjectName(ManagementFactory.GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE, getName());
+ }
+
}
--- a/src/share/classes/sun/management/GcInfoBuilder.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/GcInfoBuilder.java Tue Apr 15 17:46:47 2008 -0700
@@ -145,7 +145,7 @@ public class GcInfoBuilder {
allItemTypes[i] = SimpleType.DOUBLE;
break;
default:
- throw new InternalError(
+ throw new AssertionError(
"Unsupported type [" + gcExtItemTypes[i] + "]");
}
}
--- a/src/share/classes/sun/management/GcInfoCompositeData.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/GcInfoCompositeData.java Tue Apr 15 17:46:47 2008 -0700
@@ -80,19 +80,19 @@ public class GcInfoCompositeData extends
};
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newAssertionError(e);
+ throw new AssertionError(e);
}
// Get the item values for the extension attributes
final int gcExtItemCount = builder.getGcExtItemCount();
if (gcExtItemCount == 0 &&
gcExtItemValues != null && gcExtItemValues.length != 0) {
- throw new InternalError("Unexpected Gc Extension Item Values");
+ throw new AssertionError("Unexpected Gc Extension Item Values");
}
if (gcExtItemCount > 0 && (gcExtItemValues == null ||
gcExtItemCount != gcExtItemValues.length)) {
- throw new InternalError("Unmatched Gc Extension Item Values");
+ throw new AssertionError("Unmatched Gc Extension Item Values");
}
Object[] values = new Object[baseGcInfoItemValues.length +
@@ -111,7 +111,7 @@ public class GcInfoCompositeData extends
values);
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
@@ -141,10 +141,10 @@ public class GcInfoCompositeData extends
MappedMXBeanType.getMappedType(m.getGenericReturnType());
} catch (NoSuchMethodException e) {
// Should never reach here
- throw Util.newAssertionError(e);
- } catch (OpenDataException e) {
- // Should never reach here
- throw Util.newAssertionError(e);
+ throw new AssertionError(e);
+ } catch (OpenDataException e) {
+ // Should never reach here
+ throw new AssertionError(e);
}
}
@@ -186,10 +186,10 @@ public class GcInfoCompositeData extends
return cast(memoryUsageMapType.toJavaTypeData(td));
} catch (InvalidObjectException e) {
// Should never reach here
- throw Util.newAssertionError(e);
- } catch (OpenDataException e) {
- // Should never reach here
- throw Util.newAssertionError(e);
+ throw new AssertionError(e);
+ } catch (OpenDataException e) {
+ // Should never reach here
+ throw new AssertionError(e);
}
}
@@ -205,10 +205,10 @@ public class GcInfoCompositeData extends
return cast(memoryUsageMapType.toJavaTypeData(td));
} catch (InvalidObjectException e) {
// Should never reach here
- throw Util.newAssertionError(e);
- } catch (OpenDataException e) {
- // Should never reach here
- throw Util.newAssertionError(e);
+ throw new AssertionError(e);
+ } catch (OpenDataException e) {
+ // Should never reach here
+ throw new AssertionError(e);
}
}
--- a/src/share/classes/sun/management/HotSpotDiagnostic.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/HotSpotDiagnostic.java Tue Apr 15 17:46:47 2008 -0700
@@ -28,6 +28,8 @@ import java.util.*;
import java.util.*;
import java.io.IOException;
import java.lang.reflect.Method;
+import javax.management.ObjectName;
+
import com.sun.management.HotSpotDiagnosticMXBean;
import com.sun.management.VMOption;
@@ -72,7 +74,7 @@ public class HotSpotDiagnostic implement
throw new NullPointerException("value cannot be null");
}
- ManagementFactory.checkControlAccess();
+ Util.checkControlAccess();
Flag flag = Flag.getFlag(name);
if (flag == null) {
throw new IllegalArgumentException("VM option \"" +
@@ -113,4 +115,8 @@ public class HotSpotDiagnostic implement
v.getClass().getName());
}
}
+
+ public ObjectName getObjectName() {
+ return Util.newObjectName("com.sun.management:type=HotSpotDiagnostic");
+ }
}
--- a/src/share/classes/sun/management/HotspotCompilation.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/HotspotCompilation.java Tue Apr 15 17:46:47 2008 -0700
@@ -131,7 +131,7 @@ class HotspotCompilation
}
// FIXME: should tolerate if counter doesn't exist
- throw new InternalError("Counter " + name + " does not exist");
+ throw new AssertionError("Counter " + name + " does not exist");
}
private void initCompilerCounters() {
--- a/src/share/classes/sun/management/HotspotInternal.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/HotspotInternal.java Tue Apr 15 17:46:47 2008 -0700
@@ -39,6 +39,9 @@ public class HotspotInternal
public class HotspotInternal
implements HotspotInternalMBean, MBeanRegistration {
+ private final static String HOTSPOT_INTERNAL_MBEAN_NAME =
+ "sun.management:type=HotspotInternal";
+ private static ObjectName objName = Util.newObjectName(HOTSPOT_INTERNAL_MBEAN_NAME);
private MBeanServer server = null;
/**
@@ -52,16 +55,16 @@ public class HotspotInternal
ObjectName name) throws java.lang.Exception {
// register all internal MBeans when this MBean is instantiated
// and to be registered in a MBeanServer.
- ManagementFactory.registerInternalMBeans(server);
+ ManagementFactoryHelper.registerInternalMBeans(server);
this.server = server;
- return ManagementFactory.getHotspotInternalObjectName();
+ return objName;
}
public void postRegister(Boolean registrationDone) {};
public void preDeregister() throws java.lang.Exception {
// unregister all internal MBeans when this MBean is unregistered.
- ManagementFactory.unregisterInternalMBeans(server);
+ ManagementFactoryHelper.unregisterInternalMBeans(server);
}
public void postDeregister() {};
--- a/src/share/classes/sun/management/LockDataConverter.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/LockDataConverter.java Tue Apr 15 17:46:47 2008 -0700
@@ -73,7 +73,7 @@ class LockDataConverter extends Standard
try {
return (CompositeData) getAttribute("LockInfo");
} catch (Exception e) {
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
@@ -81,7 +81,7 @@ class LockDataConverter extends Standard
try {
return (CompositeData[]) getAttribute("LockedSynchronizers");
} catch (Exception e) {
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
@@ -89,7 +89,7 @@ class LockDataConverter extends Standard
try {
setAttribute(new Attribute("LockInfo", cd));
} catch (Exception e) {
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
return getLockInfo();
}
@@ -98,7 +98,7 @@ class LockDataConverter extends Standard
try {
setAttribute(new Attribute("LockedSynchronizers", cd));
} catch (Exception e) {
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
return getLockedSynchronizers();
}
--- a/src/share/classes/sun/management/ManagementFactory.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/ManagementFactory.java Tue Apr 15 17:46:47 2008 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * 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
@@ -25,444 +25,16 @@
package sun.management;
-import java.lang.management.*;
-import java.util.logging.LogManager;
-
-import javax.management.DynamicMBean;
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-import javax.management.MBeanInfo;
-import javax.management.NotificationEmitter;
-import javax.management.ObjectName;
-import javax.management.ObjectInstance;
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.InstanceNotFoundException;
-import javax.management.MBeanRegistrationException;
-import javax.management.NotCompliantMBeanException;
-import javax.management.MalformedObjectNameException;
-import javax.management.RuntimeOperationsException;
-import javax.management.StandardEmitterMBean;
-import javax.management.StandardMBean;
-import java.security.AccessController;
-import java.security.Permission;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import sun.security.action.LoadLibraryAction;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.Iterator;
-import java.util.ListIterator;
-import com.sun.management.OSMBeanFactory;
-import com.sun.management.HotSpotDiagnosticMXBean;
-
-import static java.lang.management.ManagementFactory.*;
+import java.lang.management.MemoryManagerMXBean;
+import java.lang.management.MemoryPoolMXBean;
+import java.lang.management.GarbageCollectorMXBean;
/**
- * ManagementFactory provides static factory methods to create
- * instances of the management interface.
+ * ManagementFactory class provides the methods that the HotSpot VM
+ * will invoke. So the class and method names cannot be renamed.
*/
-public class ManagementFactory {
+class ManagementFactory {
private ManagementFactory() {};
-
- private static VMManagement jvm;
-
- private static boolean mbeansCreated = false;
- private static ClassLoadingImpl classMBean = null;
- private static MemoryImpl memoryMBean = null;
- private static ThreadImpl threadMBean = null;
- private static RuntimeImpl runtimeMBean = null;
- private static CompilationImpl compileMBean = null;
- private static OperatingSystemImpl osMBean = null;
-
- public static synchronized ClassLoadingMXBean getClassLoadingMXBean() {
- if (classMBean == null) {
- classMBean = new ClassLoadingImpl(jvm);
- }
- return classMBean;
- }
-
- public static synchronized MemoryMXBean getMemoryMXBean() {
- if (memoryMBean == null) {
- memoryMBean = new MemoryImpl(jvm);
- }
- return memoryMBean;
- }
-
- public static synchronized ThreadMXBean getThreadMXBean() {
- if (threadMBean == null) {
- threadMBean = new ThreadImpl(jvm);
- }
- return threadMBean;
- }
-
- public static synchronized RuntimeMXBean getRuntimeMXBean() {
- if (runtimeMBean == null) {
- runtimeMBean = new RuntimeImpl(jvm);
- }
- return runtimeMBean;
- }
-
- public static synchronized CompilationMXBean getCompilationMXBean() {
- if (compileMBean == null && jvm.getCompilerName() != null) {
- compileMBean = new CompilationImpl(jvm);
- }
- return compileMBean;
- }
-
- public static synchronized OperatingSystemMXBean getOperatingSystemMXBean() {
- if (osMBean == null) {
- osMBean = (OperatingSystemImpl)
- OSMBeanFactory.getOperatingSystemMXBean(jvm);
- }
- return osMBean;
- }
-
- public static List<MemoryPoolMXBean> getMemoryPoolMXBeans() {
- MemoryPoolMXBean[] pools = MemoryImpl.getMemoryPools();
- List<MemoryPoolMXBean> list = new ArrayList<MemoryPoolMXBean>(pools.length);
- for (int i = 0; i < pools.length; i++) {
- MemoryPoolMXBean p = pools[i];
- list.add(p);
- }
- return list;
- }
-
- public static List<MemoryManagerMXBean> getMemoryManagerMXBeans() {
- MemoryManagerMXBean[] mgrs = MemoryImpl.getMemoryManagers();
- List<MemoryManagerMXBean> result = new ArrayList<MemoryManagerMXBean>(mgrs.length);
- for (int i = 0; i < mgrs.length; i++) {
- MemoryManagerMXBean m = mgrs[i];
- result.add(m);
- }
- return result;
- }
-
- public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans() {
- MemoryManagerMXBean[] mgrs = MemoryImpl.getMemoryManagers();
- List<GarbageCollectorMXBean> result = new ArrayList<GarbageCollectorMXBean>(mgrs.length);
- for (int i = 0; i < mgrs.length; i++) {
- if (mgrs[i] instanceof GarbageCollectorMXBean) {
- GarbageCollectorMXBean gc = (GarbageCollectorMXBean) mgrs[i];
- result.add(gc);
- }
- }
- return result;
- }
-
- private static HotSpotDiagnostic hsDiagMBean = null;
- private static HotspotRuntime hsRuntimeMBean = null;
- private static HotspotClassLoading hsClassMBean = null;
- private static HotspotThread hsThreadMBean = null;
- private static HotspotCompilation hsCompileMBean = null;
- private static HotspotMemory hsMemoryMBean = null;
-
- public static synchronized HotSpotDiagnosticMXBean getDiagnosticMXBean() {
- if (hsDiagMBean == null) {
- hsDiagMBean = new HotSpotDiagnostic();
- }
- return hsDiagMBean;
- }
-
- /**
-
- /**
- * This method is for testing only.
- */
- public static synchronized HotspotRuntimeMBean getHotspotRuntimeMBean() {
- if (hsRuntimeMBean == null) {
- hsRuntimeMBean = new HotspotRuntime(jvm);
- }
- return hsRuntimeMBean;
- }
-
- /**
- * This method is for testing only.
- */
- public static synchronized HotspotClassLoadingMBean getHotspotClassLoadingMBean() {
- if (hsClassMBean == null) {
- hsClassMBean = new HotspotClassLoading(jvm);
- }
- return hsClassMBean;
- }
-
- /**
- * This method is for testing only.
- */
- public static synchronized HotspotThreadMBean getHotspotThreadMBean() {
- if (hsThreadMBean == null) {
- hsThreadMBean = new HotspotThread(jvm);
- }
- return hsThreadMBean;
- }
-
- /**
- * This method is for testing only.
- */
- public static synchronized HotspotMemoryMBean getHotspotMemoryMBean() {
- if (hsMemoryMBean == null) {
- hsMemoryMBean = new HotspotMemory(jvm);
- }
- return hsMemoryMBean;
- }
-
- /**
- * This method is for testing only.
- */
- public static synchronized HotspotCompilationMBean getHotspotCompilationMBean() {
- if (hsCompileMBean == null) {
- hsCompileMBean = new HotspotCompilation(jvm);
- }
- return hsCompileMBean;
- }
-
- private static Permission monitorPermission =
- new ManagementPermission("monitor");
- private static Permission controlPermission =
- new ManagementPermission("control");
-
- /**
- * Check that the current context is trusted to perform monitoring
- * or management.
- * <p>
- * If the check fails we throw a SecurityException, otherwise
- * we return normally.
- *
- * @exception SecurityException if a security manager exists and if
- * the caller does not have ManagementPermission("control").
- */
- static void checkAccess(Permission p)
- throws SecurityException {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null) {
- sm.checkPermission(p);
- }
- }
-
- static void checkMonitorAccess() throws SecurityException {
- checkAccess(monitorPermission);
- }
- static void checkControlAccess() throws SecurityException {
- checkAccess(controlPermission);
- }
-
- /**
- * Registers an MXBean and throws exception if an instance with the same
- * name exists.
- *
- * This method makes a DynamicMBean out of an MXBean by wrapping it with a
- * StandardMBean (StandardEmitterMBean if the supplied emitter is not null),
- * so it can be registered in an MBeanServer which does not have support for
- * MXBeans.
- */
- private static void addMXBean(MBeanServer mbs, Object mbean,
- String mbeanName, NotificationEmitter emitter) {
- // Make DynamicMBean out of MXBean by wrapping it with a StandardMBean
- //
- final DynamicMBean dmbean;
- if (emitter == null) {
- dmbean = new StandardMBean(mbean, null, true);
- } else {
- dmbean = new StandardEmitterMBean(mbean, null, true, emitter);
- }
- addMBean(mbs, dmbean, mbeanName, false);
- }
-
- /**
- * Registers a Standard MBean or a Dynamic MBean and throws
- * exception if an instance with the same name exists.
- */
- private static void addMBean(MBeanServer mbs, Object mbean, String mbeanName) {
- addMBean(mbs, mbean, mbeanName, false);
- }
-
- private static void addMBean(MBeanServer mbs, Object mbean,
- String mbeanName, boolean ignoreConflicts) {
- try {
- final ObjectName objName = new ObjectName(mbeanName);
-
- // inner class requires these fields to be final
- final MBeanServer mbs0 = mbs;
- final Object mbean0 = mbean;
- final boolean ignore = ignoreConflicts;
- AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
- public Object run() throws InstanceAlreadyExistsException,
- MBeanRegistrationException,
- NotCompliantMBeanException {
- try {
- ObjectInstance o = mbs0.registerMBean(mbean0,
- objName);
- return null;
- } catch (InstanceAlreadyExistsException e) {
- // if an instance with the object name exists in
- // the MBeanServer ignore the exception
- // if ignoreConflicts is true;
- // otherwise, throws exception.
- if (!ignore) {
- throw e;
- }
- }
- return null;
- }
- });
- } catch (PrivilegedActionException e) {
- throw Util.newException(e.getException());
- } catch (MalformedObjectNameException e) {
- // should not reach here
- throw Util.newException(e);
- }
- }
-
- public static MBeanServer createPlatformMBeanServer() {
- MBeanServer mbs = MBeanServerFactory.createMBeanServer();
- // Register all the platform MBeans to this MBeanServer
- addMXBean(mbs, getClassLoadingMXBean(),
- CLASS_LOADING_MXBEAN_NAME, null);
- addMXBean(mbs, getMemoryMXBean(),
- MEMORY_MXBEAN_NAME, (NotificationEmitter) getMemoryMXBean());
- addMXBean(mbs, getOperatingSystemMXBean(),
- OPERATING_SYSTEM_MXBEAN_NAME, null);
- addMXBean(mbs, getRuntimeMXBean(),
- RUNTIME_MXBEAN_NAME, null);
- addMXBean(mbs, getThreadMXBean(),
- THREAD_MXBEAN_NAME, null);
- addMXBean(mbs, getDiagnosticMXBean(),
- HOTSPOT_DIAGNOSTIC_MXBEAN_NAME, null);
-
- // CompilationMBean may not exist
- if (getCompilationMXBean() != null) {
- addMXBean(mbs, getCompilationMXBean(),
- COMPILATION_MXBEAN_NAME, null);
- }
-
- // Register MBeans for memory pools and memory managers
- addMemoryManagers(mbs);
- addMemoryPools(mbs);
-
- // Register platform extension
- addMXBean(mbs, LogManager.getLoggingMXBean(),
- LogManager.LOGGING_MXBEAN_NAME, null);
-
- return mbs;
- }
-
- private final static String HOTSPOT_DIAGNOSTIC_MXBEAN_NAME =
- "com.sun.management:type=HotSpotDiagnostic";
-
- private final static String HOTSPOT_CLASS_LOADING_MBEAN_NAME =
- "sun.management:type=HotspotClassLoading";
-
- private final static String HOTSPOT_COMPILATION_MBEAN_NAME =
- "sun.management:type=HotspotCompilation";
-
- private final static String HOTSPOT_MEMORY_MBEAN_NAME =
- "sun.management:type=HotspotMemory";
-
- private static final String HOTSPOT_RUNTIME_MBEAN_NAME =
- "sun.management:type=HotspotRuntime";
-
- private final static String HOTSPOT_THREAD_MBEAN_NAME =
- "sun.management:type=HotspotThreading";
-
- private final static String HOTSPOT_INTERNAL_MBEAN_NAME =
- "sun.management:type=HotspotInternal";
-
- private static ObjectName hsInternalObjName = null;
- static synchronized ObjectName getHotspotInternalObjectName() {
- if (hsInternalObjName == null) {
- try {
- hsInternalObjName = new ObjectName(HOTSPOT_INTERNAL_MBEAN_NAME);
- } catch (MalformedObjectNameException e) {
- // should not reach here
- throw Util.newException(e);
- }
- }
- return hsInternalObjName;
- }
-
- static void registerInternalMBeans(MBeanServer mbs) {
- // register all internal MBeans if not registered
- // No exception is thrown if a MBean with that object name
- // already registered (i.e. ignore if name conflicts).
- addMBean(mbs, getHotspotClassLoadingMBean(),
- HOTSPOT_CLASS_LOADING_MBEAN_NAME, true);
- addMBean(mbs, getHotspotMemoryMBean(),
- HOTSPOT_MEMORY_MBEAN_NAME, true);
- addMBean(mbs, getHotspotRuntimeMBean(),
- HOTSPOT_RUNTIME_MBEAN_NAME, true);
- addMBean(mbs, getHotspotThreadMBean(),
- HOTSPOT_THREAD_MBEAN_NAME, true);
-
- // CompilationMBean may not exist
- if (getCompilationMXBean() != null) {
- addMBean(mbs, getHotspotCompilationMBean(),
- HOTSPOT_COMPILATION_MBEAN_NAME, true);
- }
- }
-
- private static void unregisterMBean(MBeanServer mbs, String mbeanName) {
- try {
- final ObjectName objName = new ObjectName(mbeanName);
-
- // inner class requires these fields to be final
- final MBeanServer mbs0 = mbs;
- AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
- public Object run() throws MBeanRegistrationException,
- RuntimeOperationsException {
- try {
- mbs0.unregisterMBean(objName);
- } catch (InstanceNotFoundException e) {
- // ignore exception if not found
- }
- return null;
- }
- });
- } catch (PrivilegedActionException e) {
- throw Util.newException(e.getException());
- } catch (MalformedObjectNameException e) {
- // should not reach here
- throw Util.newException(e);
- }
- }
-
- static void unregisterInternalMBeans(MBeanServer mbs) {
- // unregister all internal MBeans
- unregisterMBean(mbs, HOTSPOT_CLASS_LOADING_MBEAN_NAME);
- unregisterMBean(mbs, HOTSPOT_MEMORY_MBEAN_NAME);
- unregisterMBean(mbs, HOTSPOT_RUNTIME_MBEAN_NAME);
- unregisterMBean(mbs, HOTSPOT_THREAD_MBEAN_NAME);
-
- // CompilationMBean may not exist
- if (getCompilationMXBean() != null) {
- unregisterMBean(mbs, HOTSPOT_COMPILATION_MBEAN_NAME);
- }
- }
-
- private static synchronized void addMemoryPools(MBeanServer mbs) {
-
- // Get a list of memory pools
- MemoryPoolMXBean[] newPools = MemoryImpl.getMemoryPools();
-
- for (int i = 0; i < newPools.length; i++) {
- String poolObjNameString = Util.getMBeanObjectName(newPools[i]);
- addMXBean(mbs, newPools[i], poolObjNameString, null);
- }
- }
-
- // Register all memory managers with the MBeanServer;
- private static synchronized void addMemoryManagers(MBeanServer mbs) {
-
- // Get a list of memory managers
- MemoryManagerMXBean[] newMgrs = MemoryImpl.getMemoryManagers();
-
- for (int i = 0; i < newMgrs.length; i++) {
- String mgrObjNameString = Util.getMBeanObjectName(newMgrs[i]);
- addMXBean(mbs, newMgrs[i], mgrObjNameString, null);
- }
- }
// Invoked by the VM
private static MemoryPoolMXBean createMemoryPool
@@ -480,29 +52,4 @@ public class ManagementFactory {
// ignore type parameter which is for future extension
return new GarbageCollectorImpl(name);
}
-
- static {
- AccessController.doPrivileged(new LoadLibraryAction("management"));
- jvm = new VMManagementImpl();
- }
-
- public static boolean isThreadSuspended(int state) {
- return ((state & JMM_THREAD_STATE_FLAG_SUSPENDED) != 0);
- }
-
- public static boolean isThreadRunningNative(int state) {
- return ((state & JMM_THREAD_STATE_FLAG_NATIVE) != 0);
- }
-
- public static Thread.State toThreadState(int state) {
- // suspended and native bits may be set in state
- int threadStatus = state & ~JMM_THREAD_STATE_FLAG_MASK;
- return sun.misc.VM.toThreadState(threadStatus);
- }
-
- // These values are defined in jmm.h
- private static final int JMM_THREAD_STATE_FLAG_MASK = 0xFFF00000;
- private static final int JMM_THREAD_STATE_FLAG_SUSPENDED = 0x00100000;
- private static final int JMM_THREAD_STATE_FLAG_NATIVE = 0x00400000;
-
}
--- a/src/share/classes/sun/management/MappedMXBeanType.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/MappedMXBeanType.java Tue Apr 15 17:46:47 2008 -0700
@@ -735,14 +735,14 @@ public abstract class MappedMXBeanType {
throws OpenDataException, InvalidObjectException {
if (fromMethod == null) {
- throw new InternalError("Does not support data conversion");
+ throw new AssertionError("Does not support data conversion");
}
try {
return fromMethod.invoke(null, data);
} catch (IllegalAccessException e) {
// should never reach here
- throw Util.newAssertionError(e);
+ throw new AssertionError(e);
} catch (InvocationTargetException e) {
final OpenDataException ode =
new OpenDataException("Failed to invoke " +
@@ -785,7 +785,7 @@ public abstract class MappedMXBeanType {
t = new InProgress();
} catch (OpenDataException e) {
// Should not reach here
- throw Util.newAssertionError(e);
+ throw new AssertionError(e);
}
inProgress = t;
}
@@ -807,9 +807,9 @@ public abstract class MappedMXBeanType {
} catch (ClassNotFoundException e) {
// the classes that these predefined types declare
// must exist!
- throw Util.newAssertionError(e);
+ throw new AssertionError(e);
} catch (OpenDataException e) {
- throw Util.newAssertionError(e);
+ throw new AssertionError(e);
}
if (c.getName().startsWith("java.lang.")) {
@@ -821,12 +821,12 @@ public abstract class MappedMXBeanType {
// OK: must not be a primitive wrapper
} catch (IllegalAccessException e) {
// Should not reach here
- throw Util.newAssertionError(e);
+ throw new AssertionError(e);
}
}
}
} catch (OpenDataException e) {
- throw Util.newAssertionError(e);
+ throw new AssertionError(e);
}
}
--- a/src/share/classes/sun/management/MemoryImpl.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/MemoryImpl.java Tue Apr 15 17:46:47 2008 -0700
@@ -25,13 +25,13 @@
package sun.management;
+import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
import java.lang.management.MemoryNotificationInfo;
import java.lang.management.MemoryManagerMXBean;
import java.lang.management.MemoryPoolMXBean;
import javax.management.ObjectName;
-import javax.management.MalformedObjectNameException;
import javax.management.MBeanNotificationInfo;
import javax.management.Notification;
import javax.management.NotificationEmitter;
@@ -88,7 +88,7 @@ class MemoryImpl extends NotificationEmi
}
public void setVerbose(boolean value) {
- ManagementFactory.checkControlAccess();
+ Util.checkControlAccess();
setVerboseGC(value);
}
@@ -150,19 +150,6 @@ class MemoryImpl extends NotificationEmi
return ++seqNumber;
}
- private static ObjectName objname = null;
- private static synchronized ObjectName getObjectName() {
- if (objname != null) return objname;
-
- try {
- objname = new ObjectName(java.lang.management.ManagementFactory.MEMORY_MXBEAN_NAME);
- } catch (MalformedObjectNameException e) {
- // should never reach here
- throw Util.newInternalError(e);
- }
- return objname;
- }
-
static void createNotification(String notifType,
String poolName,
MemoryUsage usage,
@@ -175,7 +162,7 @@ class MemoryImpl extends NotificationEmi
long timestamp = System.currentTimeMillis();
String msg = getNotifMsg(notifType);
Notification notif = new Notification(notifType,
- getObjectName(),
+ mbean.getObjectName(),
getNextSeqNumber(),
timestamp,
msg);
@@ -189,4 +176,8 @@ class MemoryImpl extends NotificationEmi
mbean.sendNotification(notif);
}
+ public ObjectName getObjectName() {
+ return Util.newObjectName(ManagementFactory.MEMORY_MXBEAN_NAME);
+ }
+
}
--- a/src/share/classes/sun/management/MemoryManagerImpl.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/MemoryManagerImpl.java Tue Apr 15 17:46:47 2008 -0700
@@ -25,8 +25,11 @@
package sun.management;
+import java.lang.management.ManagementFactory;
import java.lang.management.MemoryManagerMXBean;
import java.lang.management.MemoryPoolMXBean;
+
+import javax.management.ObjectName;
/**
* Implementation class for a memory manager.
@@ -73,4 +76,8 @@ class MemoryManagerImpl implements Memor
}
private native MemoryPoolMXBean[] getMemoryPools0();
+ public ObjectName getObjectName() {
+ return Util.newObjectName(ManagementFactory.MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE, getName());
+ }
+
}
--- a/src/share/classes/sun/management/MemoryNotifInfoCompositeData.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/MemoryNotifInfoCompositeData.java Tue Apr 15 17:46:47 2008 -0700
@@ -69,7 +69,7 @@ public class MemoryNotifInfoCompositeDat
memoryNotifInfoItemValues);
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
@@ -80,7 +80,7 @@ public class MemoryNotifInfoCompositeDat
MappedMXBeanType.toOpenType(MemoryNotificationInfo.class);
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
--- a/src/share/classes/sun/management/MemoryPoolImpl.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/MemoryPoolImpl.java Tue Apr 15 17:46:47 2008 -0700
@@ -25,12 +25,13 @@
package sun.management;
+import java.lang.management.ManagementFactory;
import java.lang.management.MemoryPoolMXBean;
-
import java.lang.management.MemoryUsage;
import java.lang.management.MemoryType;
import java.lang.management.MemoryManagerMXBean;
import javax.management.openmbean.CompositeData;
+import javax.management.ObjectName;
import static java.lang.management.MemoryNotificationInfo.*;
@@ -114,7 +115,7 @@ class MemoryPoolImpl implements MemoryPo
"Usage threshold is not supported");
}
- ManagementFactory.checkControlAccess();
+ Util.checkControlAccess();
MemoryUsage usage = getUsage0();
if (newThreshold < 0) {
@@ -159,7 +160,7 @@ class MemoryPoolImpl implements MemoryPo
}
public void resetPeakUsage() {
- ManagementFactory.checkControlAccess();
+ Util.checkControlAccess();
synchronized (this) {
// synchronized since getPeakUsage may be called concurrently
@@ -211,7 +212,7 @@ class MemoryPoolImpl implements MemoryPo
"CollectionUsage threshold is not supported");
}
- ManagementFactory.checkControlAccess();
+ Util.checkControlAccess();
MemoryUsage usage = getUsage0();
if (newThreshold < 0) {
@@ -304,7 +305,7 @@ class MemoryPoolImpl implements MemoryPo
}
void triggerAction() {
// Should not reach here
- throw new InternalError();
+ throw new AssertionError("Should not reach here");
}
void clearAction() {
// do nothing
@@ -332,10 +333,15 @@ class MemoryPoolImpl implements MemoryPo
}
void triggerAction() {
// Should not reach here
- throw new InternalError();
+ throw new AssertionError("Should not reach here");
}
void clearAction() {
// do nothing
}
}
+
+ public ObjectName getObjectName() {
+ return Util.newObjectName(ManagementFactory.MEMORY_POOL_MXBEAN_DOMAIN_TYPE, getName());
+ }
+
}
--- a/src/share/classes/sun/management/MemoryUsageCompositeData.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/MemoryUsageCompositeData.java Tue Apr 15 17:46:47 2008 -0700
@@ -68,7 +68,7 @@ public class MemoryUsageCompositeData ex
memoryUsageItemValues);
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
@@ -79,7 +79,7 @@ public class MemoryUsageCompositeData ex
MappedMXBeanType.toOpenType(MemoryUsage.class);
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
--- a/src/share/classes/sun/management/MonitorInfoCompositeData.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/MonitorInfoCompositeData.java Tue Apr 15 17:46:47 2008 -0700
@@ -81,7 +81,7 @@ public class MonitorInfoCompositeData ex
values);
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
@@ -95,7 +95,7 @@ public class MonitorInfoCompositeData ex
monitorInfoItemNames = (String[]) s.toArray(new String[0]);
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
--- a/src/share/classes/sun/management/NotificationEmitterSupport.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/NotificationEmitterSupport.java Tue Apr 15 17:46:47 2008 -0700
@@ -156,7 +156,7 @@ abstract class NotificationEmitterSuppor
li.listener.handleNotification(notification, li.handback);
} catch (Exception e) {
e.printStackTrace();
- throw new InternalError("Error in invoking listener");
+ throw new AssertionError("Error in invoking listener");
}
}
}
--- a/src/share/classes/sun/management/OperatingSystemImpl.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/OperatingSystemImpl.java Tue Apr 15 17:46:47 2008 -0700
@@ -26,6 +26,8 @@ package sun.management;
package sun.management;
import java.lang.management.OperatingSystemMXBean;
+import java.lang.management.ManagementFactory;
+import javax.management.ObjectName;
import sun.misc.Unsafe;
/**
@@ -71,4 +73,9 @@ public class OperatingSystemImpl impleme
return -1.0;
}
}
+ public ObjectName getObjectName() {
+ return Util.newObjectName(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME);
+ }
+
}
+
--- a/src/share/classes/sun/management/RuntimeImpl.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/RuntimeImpl.java Tue Apr 15 17:46:47 2008 -0700
@@ -26,6 +26,7 @@ package sun.management;
package sun.management;
import java.lang.management.RuntimeMXBean;
+import java.lang.management.ManagementFactory;
import java.util.List;
import java.util.HashMap;
@@ -38,6 +39,7 @@ import javax.management.openmbean.OpenTy
import javax.management.openmbean.OpenType;
import javax.management.openmbean.SimpleType;
import javax.management.openmbean.OpenDataException;
+import javax.management.ObjectName;
/**
* Implementation class for the runtime subsystem.
@@ -104,12 +106,12 @@ class RuntimeImpl implements RuntimeMXBe
throw new UnsupportedOperationException(
"Boot class path mechanism is not supported");
}
- ManagementFactory.checkMonitorAccess();
+ Util.checkMonitorAccess();
return jvm.getBootClassPath();
}
public List<String> getInputArguments() {
- ManagementFactory.checkMonitorAccess();
+ Util.checkMonitorAccess();
return jvm.getVmArguments();
}
@@ -145,4 +147,9 @@ class RuntimeImpl implements RuntimeMXBe
return map;
}
+
+ public ObjectName getObjectName() {
+ return Util.newObjectName(ManagementFactory.RUNTIME_MXBEAN_NAME);
+ }
+
}
--- a/src/share/classes/sun/management/StackTraceElementCompositeData.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/StackTraceElementCompositeData.java Tue Apr 15 17:46:47 2008 -0700
@@ -76,7 +76,7 @@ public class StackTraceElementCompositeD
stackTraceElementItemValues);
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
@@ -87,7 +87,7 @@ public class StackTraceElementCompositeD
MappedMXBeanType.toOpenType(StackTraceElement.class);
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
--- a/src/share/classes/sun/management/ThreadImpl.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/ThreadImpl.java Tue Apr 15 17:46:47 2008 -0700
@@ -26,12 +26,15 @@ package sun.management;
package sun.management;
import java.lang.management.ThreadMXBean;
+import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.LockInfo;
import java.lang.management.MonitorInfo;
import java.util.Map;
import java.util.HashMap;
+
+import javax.management.ObjectName;
/**
* Implementation class for the thread subsystem.
@@ -102,7 +105,7 @@ class ThreadImpl implements ThreadMXBean
}
public long[] getAllThreadIds() {
- ManagementFactory.checkMonitorAccess();
+ Util.checkMonitorAccess();
Thread[] threads = getThreads();
int length = threads.length;
@@ -156,7 +159,7 @@ class ThreadImpl implements ThreadMXBean
"Invalid maxDepth parameter: " + maxDepth);
}
- ManagementFactory.checkMonitorAccess();
+ Util.checkMonitorAccess();
ThreadInfo[] infos = new ThreadInfo[ids.length];
if (maxDepth == Integer.MAX_VALUE) {
@@ -175,7 +178,7 @@ class ThreadImpl implements ThreadMXBean
"Thread contention monitoring is not supported");
}
- ManagementFactory.checkControlAccess();
+ Util.checkControlAccess();
synchronized (this) {
if (contentionMonitoringEnabled != enable) {
@@ -297,7 +300,7 @@ class ThreadImpl implements ThreadMXBean
"Thread CPU time measurement is not supported");
}
- ManagementFactory.checkControlAccess();
+ Util.checkControlAccess();
synchronized (this) {
if (cpuTimeEnabled != enable) {
// update VM of the state change
@@ -308,7 +311,7 @@ class ThreadImpl implements ThreadMXBean
}
public long[] findMonitorDeadlockedThreads() {
- ManagementFactory.checkMonitorAccess();
+ Util.checkMonitorAccess();
Thread[] threads = findMonitorDeadlockedThreads0();
if (threads == null) {
@@ -329,7 +332,7 @@ class ThreadImpl implements ThreadMXBean
"Monitoring of Synchronizer Usage is not supported.");
}
- ManagementFactory.checkMonitorAccess();
+ Util.checkMonitorAccess();
Thread[] threads = findDeadlockedThreads0();
if (threads == null) {
@@ -345,7 +348,7 @@ class ThreadImpl implements ThreadMXBean
}
public void resetPeakThreadCount() {
- ManagementFactory.checkControlAccess();
+ Util.checkControlAccess();
resetPeakThreadCount0();
}
@@ -373,7 +376,7 @@ class ThreadImpl implements ThreadMXBean
"Monitoring of Synchronizer Usage is not supported.");
}
- ManagementFactory.checkMonitorAccess();
+ Util.checkMonitorAccess();
return dumpThreads0(ids, lockedMonitors, lockedSynchronizers);
}
@@ -388,7 +391,7 @@ class ThreadImpl implements ThreadMXBean
"Monitoring of Synchronizer Usage is not supported.");
}
- ManagementFactory.checkMonitorAccess();
+ Util.checkMonitorAccess();
return dumpThreads0(null, lockedMonitors, lockedSynchronizers);
}
@@ -410,4 +413,10 @@ class ThreadImpl implements ThreadMXBean
// tid == 0 to reset contention times for all threads
private static native void resetContentionTimes0(long tid);
+
+ public ObjectName getObjectName() {
+ return Util.newObjectName(ManagementFactory.THREAD_MXBEAN_NAME);
+ }
+
}
+
--- a/src/share/classes/sun/management/ThreadInfoCompositeData.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/ThreadInfoCompositeData.java Tue Apr 15 17:46:47 2008 -0700
@@ -126,7 +126,7 @@ public class ThreadInfoCompositeData ext
threadInfoItemValues);
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
@@ -209,7 +209,7 @@ public class ThreadInfoCompositeData ext
v5ItemTypes);
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
// Each CompositeData object has its CompositeType associated
--- a/src/share/classes/sun/management/Util.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/Util.java Tue Apr 15 17:46:47 2008 -0700
@@ -26,48 +26,58 @@ package sun.management;
package sun.management;
import java.lang.management.*;
+import java.util.List;
+import java.security.Permission;
+import javax.management.ObjectName;
+import javax.management.MalformedObjectNameException;
+
import static java.lang.management.ManagementFactory.*;
-import java.util.List;
class Util {
- static String getMBeanObjectName(MemoryPoolMXBean pool) {
- return MEMORY_POOL_MXBEAN_DOMAIN_TYPE +
- ",name=" + pool.getName();
+ static RuntimeException newException(Exception e) {
+ throw new RuntimeException(e);
}
- static String getMBeanObjectName(MemoryManagerMXBean mgr) {
- if (mgr instanceof GarbageCollectorMXBean) {
- return getMBeanObjectName((GarbageCollectorMXBean) mgr);
- } else {
- return MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE +
- ",name=" + mgr.getName();
+ private static final String[] EMPTY_STRING_ARRAY = new String[0];
+ static String[] toStringArray(List<String> list) {
+ return (String[]) list.toArray(EMPTY_STRING_ARRAY);
+ }
+
+ static ObjectName newObjectName(String name) {
+ return com.sun.jmx.mbeanserver.Util.newObjectName(name);
+ }
+
+ public static ObjectName newObjectName(String domainAndType, String name) {
+ return newObjectName(domainAndType + ",name=" + name);
+ }
+
+ private static ManagementPermission monitorPermission =
+ new ManagementPermission("monitor");
+ private static ManagementPermission controlPermission =
+ new ManagementPermission("control");
+
+ /**
+ * Check that the current context is trusted to perform monitoring
+ * or management.
+ * <p>
+ * If the check fails we throw a SecurityException, otherwise
+ * we return normally.
+ *
+ * @exception SecurityException if a security manager exists and if
+ * the caller does not have ManagementPermission("control").
+ */
+ static void checkAccess(ManagementPermission p)
+ throws SecurityException {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ sm.checkPermission(p);
}
}
- static String getMBeanObjectName(GarbageCollectorMXBean gc) {
- return GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE +
- ",name=" + gc.getName();
+ static void checkMonitorAccess() throws SecurityException {
+ checkAccess(monitorPermission);
}
-
- static RuntimeException newException(Exception e) {
- RuntimeException e1 = new RuntimeException(e.getMessage());
- e1.initCause(e);
- return e1;
- }
-
- static InternalError newInternalError(Exception e) {
- InternalError e1 = new InternalError(e.getMessage());
- e1.initCause(e);
- return e1;
- }
- static AssertionError newAssertionError(Exception e) {
- AssertionError e1 = new AssertionError(e.getMessage());
- e1.initCause(e);
- return e1;
- }
-
- private static String[] EMPTY_STRING_ARRAY = new String[0];
- static String[] toStringArray(List<String> list) {
- return (String[]) list.toArray(EMPTY_STRING_ARRAY);
+ static void checkControlAccess() throws SecurityException {
+ checkAccess(controlPermission);
}
}
--- a/src/share/classes/sun/management/VMManagementImpl.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/VMManagementImpl.java Tue Apr 15 17:46:47 2008 -0700
@@ -59,7 +59,7 @@ class VMManagementImpl implements VMMana
static {
version = getVersion0();
if (version == null) {
- throw new InternalError("Invalid Management Version");
+ throw new AssertionError("Invalid Management Version");
}
initOptionalSupportFields();
}
@@ -244,7 +244,7 @@ class VMManagementImpl implements VMMana
// was set
noPerfData = true;
} catch (IOException e) {
- throw new InternalError(e.getMessage());
+ throw new AssertionError(e);
}
return perfInstr;
}
--- a/src/share/classes/sun/management/VMOptionCompositeData.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/management/VMOptionCompositeData.java Tue Apr 15 17:46:47 2008 -0700
@@ -69,7 +69,7 @@ public class VMOptionCompositeData exten
vmOptionItemValues);
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
@@ -80,7 +80,7 @@ public class VMOptionCompositeData exten
MappedMXBeanType.toOpenType(VMOption.class);
} catch (OpenDataException e) {
// Should never reach here
- throw Util.newInternalError(e);
+ throw new AssertionError(e);
}
}
--- a/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Fri Apr 11 15:06:20 2008 -0700
+++ b/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Tue Apr 15 17:46:47 2008 -0700
@@ -23,9 +23,6 @@
* have any questions.
*/
-/*
- */
-
package sun.nio.cs.ext;
import java.lang.ref.SoftReference;
@@ -181,6 +178,25 @@ public class ExtendedCharsets
"x0212",
"iso-ir-159",
"csISO159JISX02121990"
+ });
+
+ charset("x-SJIS_0213", "SJIS_0213",
+ new String[] {
+ "sjis-0213",
+ "sjis_0213",
+ "sjis:2004",
+ "sjis_0213:2004",
+ "shift_jis_0213:2004",
+ "shift_jis:2004"
+ });
+
+ charset("x-MS932_0213", "MS932_0213",
+ new String[] {
+ "MS932-0213",
+ "MS932_0213",
+ "MS932:2004",
+ "windows-932-0213",
+ "windows-932:2004"
});
charset("EUC-JP", "EUC_JP",
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.java Tue Apr 15 17:46:47 2008 -0700
@@ -29,14 +29,14 @@
*/
import java.lang.management.*;
+import java.util.List;
import javax.management.MBeanServer;
import com.sun.management.HotSpotDiagnosticMXBean;
public class DumpHeap {
public static void main(String[] argv) throws Exception {
- MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
- HotSpotDiagnosticMXBean dm = sun.management.ManagementFactory.getDiagnosticMXBean();
+ List<HotSpotDiagnosticMXBean> list = ManagementFactory.getPlatformMXBeans(HotSpotDiagnosticMXBean.class);
System.out.println("Dumping to file: " + argv[0] + " ....");
- dm.dumpHeap(argv[0], true);
+ list.get(0).dumpHeap(argv[0], true);
}
}
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticOptions.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticOptions.java Tue Apr 15 17:46:47 2008 -0700
@@ -41,8 +41,9 @@ public class GetDiagnosticOptions {
"com.sun.management:type=HotSpotDiagnostic";
public static void main(String[] args) throws Exception {
- HotSpotDiagnosticMXBean mbean =
- sun.management.ManagementFactory.getDiagnosticMXBean();
+ List<HotSpotDiagnosticMXBean> list =
+ ManagementFactory.getPlatformMXBeans(HotSpotDiagnosticMXBean.class);
+ HotSpotDiagnosticMXBean mbean = list.get(0);
checkDiagnosticOptions(mbean);
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/GetVMOption.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/GetVMOption.java Tue Apr 15 17:46:47 2008 -0700
@@ -34,6 +34,7 @@ import com.sun.management.VMOption;
import com.sun.management.VMOption;
import com.sun.management.VMOption.Origin;
import java.lang.management.ManagementFactory;
+import java.util.List;
import javax.management.MBeanServer;
public class GetVMOption {
@@ -44,8 +45,9 @@ public class GetVMOption {
"com.sun.management:type=HotSpotDiagnostic";
public static void main(String[] args) throws Exception {
- HotSpotDiagnosticMXBean mbean =
- sun.management.ManagementFactory.getDiagnosticMXBean();
+ List<HotSpotDiagnosticMXBean> list =
+ ManagementFactory.getPlatformMXBeans(HotSpotDiagnosticMXBean.class);
+ HotSpotDiagnosticMXBean mbean = list.get(0);
checkVMOption(mbean);
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java Tue Apr 15 17:46:47 2008 -0700
@@ -31,11 +31,11 @@
* @run main/othervm -XX:+PrintGCDetails SetVMOption
*/
+import java.lang.management.ManagementFactory;
import java.util.*;
import com.sun.management.HotSpotDiagnosticMXBean;
import com.sun.management.VMOption;
import com.sun.management.VMOption.Origin;
-import sun.management.ManagementFactory;
import sun.misc.Version;
public class SetVMOption {
@@ -44,10 +44,11 @@ public class SetVMOption {
private static String BAD_VALUE = "yes";
private static String NEW_VALUE = "false";
private static String MANAGEMENT_SERVER = "ManagementServer";
- private static HotSpotDiagnosticMXBean mbean =
- ManagementFactory.getDiagnosticMXBean();
+ private static HotSpotDiagnosticMXBean mbean;
public static void main(String[] args) throws Exception {
+ List<HotSpotDiagnosticMXBean> list =
+ ManagementFactory.getPlatformMXBeans(HotSpotDiagnosticMXBean.class);
// The following test is transitional only and should be removed
// once build 52 is promoted.
--- a/test/sun/management/HotspotClassLoadingMBean/GetClassInitializationTime.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/sun/management/HotspotClassLoadingMBean/GetClassInitializationTime.java Tue Apr 15 17:46:47 2008 -0700
@@ -37,7 +37,7 @@ public class GetClassInitializationTime
public class GetClassInitializationTime {
private static HotspotClassLoadingMBean mbean =
- (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+ (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
// Careful with these values.
private static final long MIN_TIME_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetClassLoadingTime.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/sun/management/HotspotClassLoadingMBean/GetClassLoadingTime.java Tue Apr 15 17:46:47 2008 -0700
@@ -39,7 +39,7 @@ public class GetClassLoadingTime {
public class GetClassLoadingTime {
private static HotspotClassLoadingMBean mbean =
- (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+ (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
// Careful with these values.
private static final long MIN_TIME_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetInitializedClassCount.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/sun/management/HotspotClassLoadingMBean/GetInitializedClassCount.java Tue Apr 15 17:46:47 2008 -0700
@@ -37,7 +37,7 @@ public class GetInitializedClassCount {
public class GetInitializedClassCount {
private static HotspotClassLoadingMBean mbean =
- (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+ (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
// Careful with these values.
private static final long MIN_VALUE_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetLoadedClassSize.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/sun/management/HotspotClassLoadingMBean/GetLoadedClassSize.java Tue Apr 15 17:46:47 2008 -0700
@@ -37,7 +37,7 @@ public class GetLoadedClassSize {
public class GetLoadedClassSize {
private static HotspotClassLoadingMBean mbean =
- (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+ (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
// Careful with these values.
private static final long MIN_VALUE_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetMethodDataSize.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/sun/management/HotspotClassLoadingMBean/GetMethodDataSize.java Tue Apr 15 17:46:47 2008 -0700
@@ -37,7 +37,7 @@ public class GetMethodDataSize {
public class GetMethodDataSize {
private static HotspotClassLoadingMBean mbean =
- (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+ (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
// Careful with these values.
private static final long MIN_VALUE_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetUnloadedClassSize.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/sun/management/HotspotClassLoadingMBean/GetUnloadedClassSize.java Tue Apr 15 17:46:47 2008 -0700
@@ -37,7 +37,7 @@ public class GetUnloadedClassSize {
public class GetUnloadedClassSize {
private static HotspotClassLoadingMBean mbean =
- (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+ (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
// Careful with these values.
private static final long MIN_VALUE_FOR_PASS = 0;
--- a/test/sun/management/HotspotRuntimeMBean/GetSafepointCount.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/sun/management/HotspotRuntimeMBean/GetSafepointCount.java Tue Apr 15 17:46:47 2008 -0700
@@ -37,7 +37,7 @@ public class GetSafepointCount {
public class GetSafepointCount {
private static HotspotRuntimeMBean mbean =
- (HotspotRuntimeMBean)ManagementFactory.getHotspotRuntimeMBean();
+ (HotspotRuntimeMBean)ManagementFactoryHelper.getHotspotRuntimeMBean();
private static final long NUM_THREAD_DUMPS = 5;
--- a/test/sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java Tue Apr 15 17:46:47 2008 -0700
@@ -37,7 +37,7 @@ public class GetSafepointSyncTime {
public class GetSafepointSyncTime {
private static HotspotRuntimeMBean mbean =
- (HotspotRuntimeMBean)ManagementFactory.getHotspotRuntimeMBean();
+ (HotspotRuntimeMBean)ManagementFactoryHelper.getHotspotRuntimeMBean();
private static final long NUM_THREAD_DUMPS = 300;
--- a/test/sun/management/HotspotRuntimeMBean/GetTotalSafepointTime.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/sun/management/HotspotRuntimeMBean/GetTotalSafepointTime.java Tue Apr 15 17:46:47 2008 -0700
@@ -37,7 +37,7 @@ public class GetTotalSafepointTime {
public class GetTotalSafepointTime {
private static HotspotRuntimeMBean mbean =
- (HotspotRuntimeMBean)ManagementFactory.getHotspotRuntimeMBean();
+ (HotspotRuntimeMBean)ManagementFactoryHelper.getHotspotRuntimeMBean();
private static final long NUM_THREAD_DUMPS = 100;
--- a/test/sun/management/HotspotThreadMBean/GetInternalThreads.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/sun/management/HotspotThreadMBean/GetInternalThreads.java Tue Apr 15 17:46:47 2008 -0700
@@ -32,10 +32,11 @@ import sun.management.*;
import sun.management.*;
import java.util.*;
import java.lang.management.ThreadMXBean;
+import java.lang.management.ManagementFactory;
public class GetInternalThreads {
private static HotspotThreadMBean mbean =
- ManagementFactory.getHotspotThreadMBean();
+ ManagementFactoryHelper.getHotspotThreadMBean();
// Minimum number of VM internal threads
// VM thread, watcher thread, Low memory detector, compiler thread
@@ -55,7 +56,7 @@ public class GetInternalThreads {
System.out.println("Internal Thread Count = " + value);
ThreadMXBean thread =
- java.lang.management.ManagementFactory.getThreadMXBean();
+ ManagementFactory.getThreadMXBean();
if (!thread.isThreadCpuTimeSupported()) {
System.out.println("Thread Cpu Time is not supported.");
return;
--- a/test/tools/launcher/Arrrghs.java Fri Apr 11 15:06:20 2008 -0700
+++ b/test/tools/launcher/Arrrghs.java Tue Apr 15 17:46:47 2008 -0700
@@ -1,3 +1,26 @@ import java.io.BufferedReader;
+/*
+ * 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.
+ */
+
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
@@ -10,31 +33,7 @@ import java.util.Map;
import java.util.Map;
import java.util.StringTokenizer;
-/*
- * 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.
- */
-
-
-public class Arrrghs{
+public class Arrrghs {
/**
* A group of tests to ensure that arguments are passed correctly to
@@ -113,12 +112,10 @@ public class Arrrghs{
return retval;
}
-
-
private static boolean doExec0(ProcessBuilder pb, String expectedArguments) {
boolean retval = false;
try {
- pb.redirectErrorStream(_debug);
+ pb.redirectErrorStream(true);
Process p = pb.start();
retval = detectCookie(p.getInputStream(), expectedArguments);
p.waitFor();
@@ -167,7 +164,6 @@ public class Arrrghs{
}
}
-
if (_debug) System.out.println("Starting Arrrghs tests");
// Basic test
if (!doExec("-a -b -c -d")) exitValue++;
--- a/test/tools/launcher/Arrrghs.sh Fri Apr 11 15:06:20 2008 -0700
+++ b/test/tools/launcher/Arrrghs.sh Tue Apr 15 17:46:47 2008 -0700
@@ -1,13 +1,13 @@
#!/bin/sh
# @test Arrrghs.sh
-# @bug 5030233 6214916 6356475 6571029
+# @bug 5030233 6214916 6356475 6571029 6684582
# @build Arrrghs
# @run shell Arrrghs.sh
# @summary Argument parsing validation.
# @author Joseph E. Kowalski
#
-# 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
@@ -104,6 +104,44 @@ TestHelp() {
}
#
+# Test to ensure that a missing main class is indicated in the error message
+#
+TestMissingMainClass() {
+ # First create a small jar file with no main
+ printf "public class Foo {}\n" > Foo.java
+ $TESTJAVA/bin/javac Foo.java
+ if [ $? -ne 0 ]; then
+ printf "Error: compilation of Foo.java failed\n"
+ exit 1
+ fi
+ printf "Main-Class: Bar\n" > manifest
+ $TESTJAVA/bin/jar -cvfm some.jar manifest Foo.class
+ if [ ! -f some.jar ]; then
+ printf "Error: did not find some.jar\n"
+ exit 1
+ fi
+
+ # test a non-existence main-class using -jar
+ mess="`$TESTJAVA/bin/java -jar some.jar 2>&1 1>/dev/null`"
+ echo $mess | grep 'Bar' 2>&1 > /dev/null
+ if [ $? -ne 0 ]; then
+ printf "Error: did not find main class missing message\n"
+ exit 1
+ fi
+
+ # test a non-existent main-class using classpath
+ mess="`$TESTJAVA/bin/java -cp some.jar Bar 2>&1 1>/dev/null`"
+ echo $mess | grep 'Bar' 2>&1 > /dev/null
+ if [ $? -ne 0 ]; then
+ printf "Error: did not find main class missing message\n"
+ exit 1
+ fi
+
+ # cleanup
+ rm -f some.jar Foo.* manifest
+}
+
+#
# Main processing:
#
@@ -117,6 +155,7 @@ TestCP javac -classpath
TestCP javac -classpath
TestXUsage
TestHelp
+TestMissingMainClass
#
# Tests for 6214916
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/Makefile Tue Apr 15 17:46:47 2008 -0700
@@ -0,0 +1,43 @@
+#
+# 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. Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the charsetmapping tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.charsetmapping
+PRODUCT = tools
+PROGRAM = charsetmapping
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN = $(PKGDIR)/GenerateMapping.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/sjis0213.map Tue Apr 15 17:46:47 2008 -0700
@@ -0,0 +1,11471 @@
+## Shift_JIS-2004 (JIS X 0213:2004 Appendix 1) vs Unicode mapping table
+##
+## Date: 13 May 2006
+## License:
+## Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
+## Copyright (C) 2001 I'O, All Rights Reserved.
+## Copyright (C) 2006 Project X0213, All Rights Reserved.
+## You can use, modify, distribute this table freely.
+## Note:
+## [1983] JIS codepoint defined by JIS X 0208-1983
+## [1990] JIS codepoint defined by JIS X 0208-1990
+## [2000] JIS codepoint defined by JIS X 0213:2000
+## [2004] JIS codepoint defined by JIS X 0213:2004
+## [Unicode3.1] UCS codepoint defined by Unicode 3.1
+## [Unicode3.2] UCS codepoint defined by Unicode 3.2
+## Fullwidth UCS fullwidth form (U+Fxxx)
+## Windows Windows (CP932) mapping
+## Some 0213 character can't represent by one UCS character.
+## In this table, such characters are described as 'U+xxxx+xxxx'.
+##
+##
+## (1)Added JIS0213 entries
+## (2)Updated 2 entries
+## 0x81b0 -> u+ff5e
+## 0x815f -> u+ff3c
+##
+## JIS Unicode Name Note
+##
+## Note: Block f09f--f0fc has been moved to the correct(sorted) position
+##
+## <RegEx Pattern="0x(\p{XDigit}++)\s++U\+(\p{XDigit}++)(?:\+(\p{XDigit}++))?\s++#.*"> GDB=1 GC=2 GCC=3>
+##
+#
+# sjis0201
+#
+0x20 U+0020 # SPACE
+0x21 U+0021 # EXCLAMATION MARK
+0x22 U+0022 # QUOTATION MARK
+0x23 U+0023 # NUMBER SIGN
+0x24 U+0024 # DOLLAR SIGN
+0x25 U+0025 # PERCENT SIGN
+0x26 U+0026 # AMPERSAND
+0x27 U+0027 # APOSTROPHE
+0x28 U+0028 # LEFT PARENTHESIS
+0x29 U+0029 # RIGHT PARENTHESIS
+0x2A U+002A # ASTERISK
+0x2B U+002B # PLUS SIGN
+0x2C U+002C # COMMA
+0x2D U+002D # HYPHEN-MINUS
+0x2E U+002E # FULL STOP
+0x2F U+002F # SOLIDUS
+0x30 U+0030 # DIGIT ZERO
+0x31 U+0031 # DIGIT ONE
+0x32 U+0032 # DIGIT TWO
+0x33 U+0033 # DIGIT THREE
+0x34 U+0034 # DIGIT FOUR
+0x35 U+0035 # DIGIT FIVE
+0x36 U+0036 # DIGIT SIX
+0x37 U+0037 # DIGIT SEVEN
+0x38 U+0038 # DIGIT EIGHT
+0x39 U+0039 # DIGIT NINE
+0x3A U+003A # COLON
+0x3B U+003B # SEMICOLON
+0x3C U+003C # LESS-THAN SIGN
+0x3D U+003D # EQUALS SIGN
+0x3E U+003E # GREATER-THAN SIGN
+0x3F U+003F # QUESTION MARK
+0x40 U+0040 # COMMERCIAL AT
+0x41 U+0041 # LATIN CAPITAL LETTER A
+0x42 U+0042 # LATIN CAPITAL LETTER B
+0x43 U+0043 # LATIN CAPITAL LETTER C
+0x44 U+0044 # LATIN CAPITAL LETTER D
+0x45 U+0045 # LATIN CAPITAL LETTER E
+0x46 U+0046 # LATIN CAPITAL LETTER F
+0x47 U+0047 # LATIN CAPITAL LETTER G
+0x48 U+0048 # LATIN CAPITAL LETTER H
+0x49 U+0049 # LATIN CAPITAL LETTER I
+0x4A U+004A # LATIN CAPITAL LETTER J
+0x4B U+004B # LATIN CAPITAL LETTER K
+0x4C U+004C # LATIN CAPITAL LETTER L
+0x4D U+004D # LATIN CAPITAL LETTER M
+0x4E U+004E # LATIN CAPITAL LETTER N
+0x4F U+004F # LATIN CAPITAL LETTER O
+0x50 U+0050 # LATIN CAPITAL LETTER P
+0x51 U+0051 # LATIN CAPITAL LETTER Q
+0x52 U+0052 # LATIN CAPITAL LETTER R
+0x53 U+0053 # LATIN CAPITAL LETTER S
+0x54 U+0054 # LATIN CAPITAL LETTER T
+0x55 U+0055 # LATIN CAPITAL LETTER U
+0x56 U+0056 # LATIN CAPITAL LETTER V
+0x57 U+0057 # LATIN CAPITAL LETTER W
+0x58 U+0058 # LATIN CAPITAL LETTER X
+0x59 U+0059 # LATIN CAPITAL LETTER Y
+0x5A U+005A # LATIN CAPITAL LETTER Z
+0x5B U+005B # LEFT SQUARE BRACKET
+0x5C U+005C # YEN SIGN
+0x5D U+005D # RIGHT SQUARE BRACKET
+0x5E U+005E # CIRCUMFLEX ACCENT
+0x5F U+005F # LOW LINE
+0x60 U+0060 # GRAVE ACCENT
+0x61 U+0061 # LATIN SMALL LETTER A
+0x62 U+0062 # LATIN SMALL LETTER B
+0x63 U+0063 # LATIN SMALL LETTER C
+0x64 U+0064 # LATIN SMALL LETTER D
+0x65 U+0065 # LATIN SMALL LETTER E
+0x66 U+0066 # LATIN SMALL LETTER F
+0x67 U+0067 # LATIN SMALL LETTER G
+0x68 U+0068 # LATIN SMALL LETTER H
+0x69 U+0069 # LATIN SMALL LETTER I
+0x6A U+006A # LATIN SMALL LETTER J
+0x6B U+006B # LATIN SMALL LETTER K
+0x6C U+006C # LATIN SMALL LETTER L
+0x6D U+006D # LATIN SMALL LETTER M
+0x6E U+006E # LATIN SMALL LETTER N
+0x6F U+006F # LATIN SMALL LETTER O
+0x70 U+0070 # LATIN SMALL LETTER P
+0x71 U+0071 # LATIN SMALL LETTER Q
+0x72 U+0072 # LATIN SMALL LETTER R
+0x73 U+0073 # LATIN SMALL LETTER S
+0x74 U+0074 # LATIN SMALL LETTER T
+0x75 U+0075 # LATIN SMALL LETTER U
+0x76 U+0076 # LATIN SMALL LETTER V
+0x77 U+0077 # LATIN SMALL LETTER W
+0x78 U+0078 # LATIN SMALL LETTER X
+0x79 U+0079 # LATIN SMALL LETTER Y
+0x7A U+007A # LATIN SMALL LETTER Z
+0x7B U+007B # LEFT CURLY BRACKET
+0x7C U+007C # VERTICAL LINE
+0x7D U+007D # RIGHT CURLY BRACKET
+0x7E U+007E # OVERLINE
+0x7F U+007F # DELETE
+0xA1 U+FF61 # HALFWIDTH IDEOGRAPHIC FULL STOP
+0xA2 U+FF62 # HALFWIDTH LEFT CORNER BRACKET
+0xA3 U+FF63 # HALFWIDTH RIGHT CORNER BRACKET
+0xA4 U+FF64 # HALFWIDTH IDEOGRAPHIC COMMA
+0xA5 U+FF65 # HALFWIDTH KATAKANA MIDDLE DOT
+0xA6 U+FF66 # HALFWIDTH KATAKANA LETTER WO
+0xA7 U+FF67 # HALFWIDTH KATAKANA LETTER SMALL A
+0xA8 U+FF68 # HALFWIDTH KATAKANA LETTER SMALL I
+0xA9 U+FF69 # HALFWIDTH KATAKANA LETTER SMALL U
+0xAA U+FF6A # HALFWIDTH KATAKANA LETTER SMALL E
+0xAB U+FF6B # HALFWIDTH KATAKANA LETTER SMALL O
+0xAC U+FF6C # HALFWIDTH KATAKANA LETTER SMALL YA
+0xAD U+FF6D # HALFWIDTH KATAKANA LETTER SMALL YU
+0xAE U+FF6E # HALFWIDTH KATAKANA LETTER SMALL YO
+0xAF U+FF6F # HALFWIDTH KATAKANA LETTER SMALL TU
+0xB0 U+FF70 # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+0xB1 U+FF71 # HALFWIDTH KATAKANA LETTER A
+0xB2 U+FF72 # HALFWIDTH KATAKANA LETTER I
+0xB3 U+FF73 # HALFWIDTH KATAKANA LETTER U
+0xB4 U+FF74 # HALFWIDTH KATAKANA LETTER E
+0xB5 U+FF75 # HALFWIDTH KATAKANA LETTER O
+0xB6 U+FF76 # HALFWIDTH KATAKANA LETTER KA
+0xB7 U+FF77 # HALFWIDTH KATAKANA LETTER KI
+0xB8 U+FF78 # HALFWIDTH KATAKANA LETTER KU
+0xB9 U+FF79 # HALFWIDTH KATAKANA LETTER KE
+0xBA U+FF7A # HALFWIDTH KATAKANA LETTER KO
+0xBB U+FF7B # HALFWIDTH KATAKANA LETTER SA
+0xBC U+FF7C # HALFWIDTH KATAKANA LETTER SI
+0xBD U+FF7D # HALFWIDTH KATAKANA LETTER SU
+0xBE U+FF7E # HALFWIDTH KATAKANA LETTER SE
+0xBF U+FF7F # HALFWIDTH KATAKANA LETTER SO
+0xC0 U+FF80 # HALFWIDTH KATAKANA LETTER TA
+0xC1 U+FF81 # HALFWIDTH KATAKANA LETTER TI
+0xC2 U+FF82 # HALFWIDTH KATAKANA LETTER TU
+0xC3 U+FF83 # HALFWIDTH KATAKANA LETTER TE
+0xC4 U+FF84 # HALFWIDTH KATAKANA LETTER TO
+0xC5 U+FF85 # HALFWIDTH KATAKANA LETTER NA
+0xC6 U+FF86 # HALFWIDTH KATAKANA LETTER NI
+0xC7 U+FF87 # HALFWIDTH KATAKANA LETTER NU
+0xC8 U+FF88 # HALFWIDTH KATAKANA LETTER NE
+0xC9 U+FF89 # HALFWIDTH KATAKANA LETTER NO
+0xCA U+FF8A # HALFWIDTH KATAKANA LETTER HA
+0xCB U+FF8B # HALFWIDTH KATAKANA LETTER HI
+0xCC U+FF8C # HALFWIDTH KATAKANA LETTER HU
+0xCD U+FF8D # HALFWIDTH KATAKANA LETTER HE
+0xCE U+FF8E # HALFWIDTH KATAKANA LETTER HO
+0xCF U+FF8F # HALFWIDTH KATAKANA LETTER MA
+0xD0 U+FF90 # HALFWIDTH KATAKANA LETTER MI
+0xD1 U+FF91 # HALFWIDTH KATAKANA LETTER MU
+0xD2 U+FF92 # HALFWIDTH KATAKANA LETTER ME
+0xD3 U+FF93 # HALFWIDTH KATAKANA LETTER MO
+0xD4 U+FF94 # HALFWIDTH KATAKANA LETTER YA
+0xD5 U+FF95 # HALFWIDTH KATAKANA LETTER YU
+0xD6 U+FF96 # HALFWIDTH KATAKANA LETTER YO
+0xD7 U+FF97 # HALFWIDTH KATAKANA LETTER RA
+0xD8 U+FF98 # HALFWIDTH KATAKANA LETTER RI
+0xD9 U+FF99 # HALFWIDTH KATAKANA LETTER RU
+0xDA U+FF9A # HALFWIDTH KATAKANA LETTER RE
+0xDB U+FF9B # HALFWIDTH KATAKANA LETTER RO
+0xDC U+FF9C # HALFWIDTH KATAKANA LETTER WA
+0xDD U+FF9D # HALFWIDTH KATAKANA LETTER N
+0xDE U+FF9E # HALFWIDTH KATAKANA VOICED SOUND MARK
+0xDF U+FF9F # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+#
+# sjis0213
+#
+0x8140 U+3000 # IDEOGRAPHIC SPACE
+0x8141 U+3001 # IDEOGRAPHIC COMMA
+0x8142 U+3002 # IDEOGRAPHIC FULL STOP
+0x8143 U+FF0C # FULLWIDTH COMMA
+0x8144 U+FF0E # FULLWIDTH FULL STOP
+0x8145 U+30FB # KATAKANA MIDDLE DOT
+0x8146 U+FF1A # FULLWIDTH COLON
+0x8147 U+FF1B # FULLWIDTH SEMICOLON
+0x8148 U+FF1F # FULLWIDTH QUESTION MARK
+0x8149 U+FF01 # FULLWIDTH EXCLAMATION MARK
+0x814A U+309B # KATAKANA-HIRAGANA VOICED SOUND MARK
+0x814B U+309C # KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+0x814C U+00B4 # ACUTE ACCENT
+0x814D U+FF40 # FULLWIDTH GRAVE ACCENT
+0x814E U+00A8 # DIAERESIS
+0x814F U+FF3E # FULLWIDTH CIRCUMFLEX ACCENT
+0x8150 U+FFE3 # FULLWIDTH MACRON
+0x8151 U+FF3F # FULLWIDTH LOW LINE
+0x8152 U+30FD # KATAKANA ITERATION MARK
+0x8153 U+30FE # KATAKANA VOICED ITERATION MARK
+0x8154 U+309D # HIRAGANA ITERATION MARK
+0x8155 U+309E # HIRAGANA VOICED ITERATION MARK
+0x8156 U+3003 # DITTO MARK
+0x8157 U+4EDD # <cjk>
+0x8158 U+3005 # IDEOGRAPHIC ITERATION MARK
+0x8159 U+3006 # IDEOGRAPHIC CLOSING MARK
+0x815A U+3007 # IDEOGRAPHIC NUMBER ZERO
+0x815B U+30FC # KATAKANA-HIRAGANA PROLONGED SOUND MARK
+0x815C U+2014 # EM DASH Windows: U+2015
+0x815D U+2010 # HYPHEN
+0x815E U+FF0F # FULLWIDTH SOLIDUS
+#0x815F U+005C # REVERSE SOLIDUS Fullwidth: U+FF3C
+0x815F U+FF3C # REVERSE SOLIDUS Fullwidth: U+FF3C
+0x8160 U+301C # WAVE DASH Windows: U+FF5E
+0x8161 U+2016 # DOUBLE VERTICAL LINE Windows: U+2225
+0x8162 U+FF5C # FULLWIDTH VERTICAL LINE
+0x8163 U+2026 # HORIZONTAL ELLIPSIS
+0x8164 U+2025 # TWO DOT LEADER
+0x8165 U+2018 # LEFT SINGLE QUOTATION MARK
+0x8166 U+2019 # RIGHT SINGLE QUOTATION MARK
+0x8167 U+201C # LEFT DOUBLE QUOTATION MARK
+0x8168 U+201D # RIGHT DOUBLE QUOTATION MARK
+0x8169 U+FF08 # FULLWIDTH LEFT PARENTHESIS
+0x816A U+FF09 # FULLWIDTH RIGHT PARENTHESIS
+0x816B U+3014 # LEFT TORTOISE SHELL BRACKET
+0x816C U+3015 # RIGHT TORTOISE SHELL BRACKET
+0x816D U+FF3B # FULLWIDTH LEFT SQUARE BRACKET
+0x816E U+FF3D # FULLWIDTH RIGHT SQUARE BRACKET
+0x816F U+FF5B # FULLWIDTH LEFT CURLY BRACKET
+0x8170 U+FF5D # FULLWIDTH RIGHT CURLY BRACKET
+0x8171 U+3008 # LEFT ANGLE BRACKET
+0x8172 U+3009 # RIGHT ANGLE BRACKET
+0x8173 U+300A # LEFT DOUBLE ANGLE BRACKET
+0x8174 U+300B # RIGHT DOUBLE ANGLE BRACKET
+0x8175 U+300C # LEFT CORNER BRACKET
+0x8176 U+300D # RIGHT CORNER BRACKET
+0x8177 U+300E # LEFT WHITE CORNER BRACKET
+0x8178 U+300F # RIGHT WHITE CORNER BRACKET
+0x8179 U+3010 # LEFT BLACK LENTICULAR BRACKET
+0x817A U+3011 # RIGHT BLACK LENTICULAR BRACKET
+0x817B U+FF0B # FULLWIDTH PLUS SIGN
+0x817C U+2212 # MINUS SIGN Windows: U+FF0D
+0x817D U+00B1 # PLUS-MINUS SIGN
+0x817E U+00D7 # MULTIPLICATION SIGN
+0x8180 U+00F7 # DIVISION SIGN
+0x8181 U+FF1D # FULLWIDTH EQUALS SIGN
+0x8182 U+2260 # NOT EQUAL TO
+0x8183 U+FF1C # FULLWIDTH LESS-THAN SIGN
+0x8184 U+FF1E # FULLWIDTH GREATER-THAN SIGN
+0x8185 U+2266 # LESS-THAN OVER EQUAL TO
+0x8186 U+2267 # GREATER-THAN OVER EQUAL TO
+0x8187 U+221E # INFINITY
+0x8188 U+2234 # THEREFORE
+0x8189 U+2642 # MALE SIGN
+0x818A U+2640 # FEMALE SIGN
+0x818B U+00B0 # DEGREE SIGN
+0x818C U+2032 # PRIME
+0x818D U+2033 # DOUBLE PRIME
+0x818E U+2103 # DEGREE CELSIUS
+0x818F U+FFE5 # FULLWIDTH YEN SIGN
+0x8190 U+FF04 # FULLWIDTH DOLLAR SIGN
+0x8191 U+00A2 # CENT SIGN Windows: U+FFE0
+0x8192 U+00A3 # POUND SIGN Windows: U+FFE1
+0x8193 U+FF05 # FULLWIDTH PERCENT SIGN
+0x8194 U+FF03 # FULLWIDTH NUMBER SIGN
+0x8195 U+FF06 # FULLWIDTH AMPERSAND
+0x8196 U+FF0A # FULLWIDTH ASTERISK
+0x8197 U+FF20 # FULLWIDTH COMMERCIAL AT
+0x8198 U+00A7 # SECTION SIGN
+0x8199 U+2606 # WHITE STAR
+0x819A U+2605 # BLACK STAR
+0x819B U+25CB # WHITE CIRCLE
+0x819C U+25CF # BLACK CIRCLE
+0x819D U+25CE # BULLSEYE
+0x819E U+25C7 # WHITE DIAMOND
+0x819F U+25C6 # BLACK DIAMOND
+0x81A0 U+25A1 # WHITE SQUARE
+0x81A1 U+25A0 # BLACK SQUARE
+0x81A2 U+25B3 # WHITE UP-POINTING TRIANGLE
+0x81A3 U+25B2 # BLACK UP-POINTING TRIANGLE
+0x81A4 U+25BD # WHITE DOWN-POINTING TRIANGLE
+0x81A5 U+25BC # BLACK DOWN-POINTING TRIANGLE
+0x81A6 U+203B # REFERENCE MARK
+0x81A7 U+3012 # POSTAL MARK
+0x81A8 U+2192 # RIGHTWARDS ARROW
+0x81A9 U+2190 # LEFTWARDS ARROW
+0x81AA U+2191 # UPWARDS ARROW
+0x81AB U+2193 # DOWNWARDS ARROW
+0x81AC U+3013 # GETA MARK
+0x81AD U+FF07 # FULLWIDTH APOSTROPHE
+0x81AE U+FF02 # FULLWIDTH QUOTATION MARK [2000]
+0x81AF U+FF0D # FULLWIDTH HYPHEN-MINUS [2000]
+#0x81B0 U+007E # TILDE [2000] Fullwidth: U+FF5E
+0x81B0 U+FF5E # TILDE [2000] Fullwidth: U+FF5E
+0x81B1 U+3033 # VERTICAL KANA REPEAT MARK UPPER HALF [2000]
+0x81B2 U+3034 # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF [2000]
+0x81B3 U+3035 # VERTICAL KANA REPEAT MARK LOWER HALF [2000]
+0x81B4 U+303B # VERTICAL IDEOGRAPHIC ITERATION MARK [2000] [Unicode3.2]
+0x81B5 U+303C # MASU MARK [2000] [Unicode3.2]
+0x81B6 U+30FF # KATAKANA DIGRAPH KOTO [2000] [Unicode3.2]
+0x81B7 U+309F # HIRAGANA DIGRAPH YORI [2000] [Unicode3.2]
+0x81B8 U+2208 # ELEMENT OF [1983]
+0x81B9 U+220B # CONTAINS AS MEMBER [1983]
+0x81BA U+2286 # SUBSET OF OR EQUAL TO [1983]
+0x81BB U+2287 # SUPERSET OF OR EQUAL TO [1983]
+0x81BC U+2282 # SUBSET OF [1983]
+0x81BD U+2283 # SUPERSET OF [1983]
+0x81BE U+222A # UNION [1983]
+0x81BF U+2229 # INTERSECTION [1983]
+0x81C0 U+2284 # NOT A SUBSET OF [2000]
+0x81C1 U+2285 # NOT A SUPERSET OF [2000]
+0x81C2 U+228A # SUBSET OF WITH NOT EQUAL TO [2000]
+0x81C3 U+228B # SUPERSET OF WITH NOT EQUAL TO [2000]
+0x81C4 U+2209 # NOT AN ELEMENT OF [2000]
+0x81C5 U+2205 # EMPTY SET [2000]
+0x81C6 U+2305 # PROJECTIVE [2000]
+0x81C7 U+2306 # PERSPECTIVE [2000]
+0x81C8 U+2227 # LOGICAL AND [1983]
+0x81C9 U+2228 # LOGICAL OR [1983]
+0x81CA U+00AC # NOT SIGN [1983] Windows: U+FFE2
+0x81CB U+21D2 # RIGHTWARDS DOUBLE ARROW [1983]
+0x81CC U+21D4 # LEFT RIGHT DOUBLE ARROW [1983]
+0x81CD U+2200 # FOR ALL [1983]
+0x81CE U+2203 # THERE EXISTS [1983]
+0x81CF U+2295 # CIRCLED PLUS [2000]
+0x81D0 U+2296 # CIRCLED MINUS [2000]
+0x81D1 U+2297 # CIRCLED TIMES [2000]
+0x81D2 U+2225 # PARALLEL TO [2000]
+0x81D3 U+2226 # NOT PARALLEL TO [2000]
+0x81D4 U+FF5F # FULLWIDTH LEFT WHITE PARENTHESIS [2000] [Unicode3.2]
+0x81D5 U+FF60 # FULLWIDTH RIGHT WHITE PARENTHESIS [2000] [Unicode3.2]
+0x81D6 U+3018 # LEFT WHITE TORTOISE SHELL BRACKET [2000]
+0x81D7 U+3019 # RIGHT WHITE TORTOISE SHELL BRACKET [2000]
+0x81D8 U+3016 # LEFT WHITE LENTICULAR BRACKET [2000]
+0x81D9 U+3017 # RIGHT WHITE LENTICULAR BRACKET [2000]
+0x81DA U+2220 # ANGLE [1983]
+0x81DB U+22A5 # UP TACK [1983]
+0x81DC U+2312 # ARC [1983]
+0x81DD U+2202 # PARTIAL DIFFERENTIAL [1983]
+0x81DE U+2207 # NABLA [1983]
+0x81DF U+2261 # IDENTICAL TO [1983]
+0x81E0 U+2252 # APPROXIMATELY EQUAL TO OR THE IMAGE OF [1983]
+0x81E1 U+226A # MUCH LESS-THAN [1983]
+0x81E2 U+226B # MUCH GREATER-THAN [1983]
+0x81E3 U+221A # SQUARE ROOT [1983]
+0x81E4 U+223D # REVERSED TILDE [1983]
+0x81E5 U+221D # PROPORTIONAL TO [1983]
+0x81E6 U+2235 # BECAUSE [1983]
+0x81E7 U+222B # INTEGRAL [1983]
+0x81E8 U+222C # DOUBLE INTEGRAL [1983]
+0x81E9 U+2262 # NOT IDENTICAL TO [2000]
+0x81EA U+2243 # ASYMPTOTICALLY EQUAL TO [2000]
+0x81EB U+2245 # APPROXIMATELY EQUAL TO [2000]
+0x81EC U+2248 # ALMOST EQUAL TO [2000]
+0x81ED U+2276 # LESS-THAN OR GREATER-THAN [2000]
+0x81EE U+2277 # GREATER-THAN OR LESS-THAN [2000]
+0x81EF U+2194 # LEFT RIGHT ARROW [2000]
+0x81F0 U+212B # ANGSTROM SIGN [1983]
+0x81F1 U+2030 # PER MILLE SIGN [1983]
+0x81F2 U+266F # MUSIC SHARP SIGN [1983]
+0x81F3 U+266D # MUSIC FLAT SIGN [1983]
+0x81F4 U+266A # EIGHTH NOTE [1983]
+0x81F5 U+2020 # DAGGER [1983]
+0x81F6 U+2021 # DOUBLE DAGGER [1983]
+0x81F7 U+00B6 # PILCROW SIGN [1983]
+0x81F8 U+266E # MUSIC NATURAL SIGN [2000]
+0x81F9 U+266B # BEAMED EIGHTH NOTES [2000]
+0x81FA U+266C # BEAMED SIXTEENTH NOTES [2000]
+0x81FB U+2669 # QUARTER NOTE [2000]
+0x81FC U+25EF # LARGE CIRCLE [1983]
+0x8240 U+25B7 # WHITE RIGHT-POINTING TRIANGLE [2000]
+0x8241 U+25B6 # BLACK RIGHT-POINTING TRIANGLE [2000]
+0x8242 U+25C1 # WHITE LEFT-POINTING TRIANGLE [2000]
+0x8243 U+25C0 # BLACK LEFT-POINTING TRIANGLE [2000]
+0x8244 U+2197 # NORTH EAST ARROW [2000]
+0x8245 U+2198 # SOUTH EAST ARROW [2000]
+0x8246 U+2196 # NORTH WEST ARROW [2000]
+0x8247 U+2199 # SOUTH WEST ARROW [2000]
+0x8248 U+21C4 # RIGHTWARDS ARROW OVER LEFTWARDS ARROW [2000]
+0x8249 U+21E8 # RIGHTWARDS WHITE ARROW [2000]
+0x824A U+21E6 # LEFTWARDS WHITE ARROW [2000]
+0x824B U+21E7 # UPWARDS WHITE ARROW [2000]
+0x824C U+21E9 # DOWNWARDS WHITE ARROW [2000]
+0x824D U+2934 # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS [2000] [Unicode3.2]
+0x824E U+2935 # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS [2000] [Unicode3.2]
+0x824F U+FF10 # FULLWIDTH DIGIT ZERO
+0x8250 U+FF11 # FULLWIDTH DIGIT ONE
+0x8251 U+FF12 # FULLWIDTH DIGIT TWO
+0x8252 U+FF13 # FULLWIDTH DIGIT THREE
+0x8253 U+FF14 # FULLWIDTH DIGIT FOUR
+0x8254 U+FF15 # FULLWIDTH DIGIT FIVE
+0x8255 U+FF16 # FULLWIDTH DIGIT SIX
+0x8256 U+FF17 # FULLWIDTH DIGIT SEVEN
+0x8257 U+FF18 # FULLWIDTH DIGIT EIGHT
+0x8258 U+FF19 # FULLWIDTH DIGIT NINE
+0x8259 U+29BF # CIRCLED BULLET [2000] [Unicode3.2]
+0x825A U+25C9 # FISHEYE [2000]
+0x825B U+303D # PART ALTERNATION MARK [2000] [Unicode3.2]
+0x825C U+FE46 # WHITE SESAME DOT [2000] [Unicode3.2]
+0x825D U+FE45 # SESAME DOT [2000] [Unicode3.2]
+0x825E U+25E6 # WHITE BULLET [2000]
+0x825F U+2022 # BULLET [2000]
+0x8260 U+FF21 # FULLWIDTH LATIN CAPITAL LETTER A
+0x8261 U+FF22 # FULLWIDTH LATIN CAPITAL LETTER B
+0x8262 U+FF23 # FULLWIDTH LATIN CAPITAL LETTER C
+0x8263 U+FF24 # FULLWIDTH LATIN CAPITAL LETTER D
+0x8264 U+FF25 # FULLWIDTH LATIN CAPITAL LETTER E
+0x8265 U+FF26 # FULLWIDTH LATIN CAPITAL LETTER F
+0x8266 U+FF27 # FULLWIDTH LATIN CAPITAL LETTER G
+0x8267 U+FF28 # FULLWIDTH LATIN CAPITAL LETTER H
+0x8268 U+FF29 # FULLWIDTH LATIN CAPITAL LETTER I
+0x8269 U+FF2A # FULLWIDTH LATIN CAPITAL LETTER J
+0x826A U+FF2B # FULLWIDTH LATIN CAPITAL LETTER K
+0x826B U+FF2C # FULLWIDTH LATIN CAPITAL LETTER L
+0x826C U+FF2D # FULLWIDTH LATIN CAPITAL LETTER M
+0x826D U+FF2E # FULLWIDTH LATIN CAPITAL LETTER N
+0x826E U+FF2F # FULLWIDTH LATIN CAPITAL LETTER O
+0x826F U+FF30 # FULLWIDTH LATIN CAPITAL LETTER P
+0x8270 U+FF31 # FULLWIDTH LATIN CAPITAL LETTER Q
+0x8271 U+FF32 # FULLWIDTH LATIN CAPITAL LETTER R
+0x8272 U+FF33 # FULLWIDTH LATIN CAPITAL LETTER S
+0x8273 U+FF34 # FULLWIDTH LATIN CAPITAL LETTER T
+0x8274 U+FF35 # FULLWIDTH LATIN CAPITAL LETTER U
+0x8275 U+FF36 # FULLWIDTH LATIN CAPITAL LETTER V
+0x8276 U+FF37 # FULLWIDTH LATIN CAPITAL LETTER W
+0x8277 U+FF38 # FULLWIDTH LATIN CAPITAL LETTER X
+0x8278 U+FF39 # FULLWIDTH LATIN CAPITAL LETTER Y
+0x8279 U+FF3A # FULLWIDTH LATIN CAPITAL LETTER Z
+0x827A U+2213 # MINUS-OR-PLUS SIGN [2000]
+0x827B U+2135 # ALEF SYMBOL [2000]
+0x827C U+210F # PLANCK CONSTANT OVER TWO PI [2000]
+0x827D U+33CB # SQUARE HP [2000]
+0x827E U+2113 # SCRIPT SMALL L [2000]
+0x8280 U+2127 # INVERTED OHM SIGN [2000]
+0x8281 U+FF41 # FULLWIDTH LATIN SMALL LETTER A
+0x8282 U+FF42 # FULLWIDTH LATIN SMALL LETTER B
+0x8283 U+FF43 # FULLWIDTH LATIN SMALL LETTER C
+0x8284 U+FF44 # FULLWIDTH LATIN SMALL LETTER D
+0x8285 U+FF45 # FULLWIDTH LATIN SMALL LETTER E
+0x8286 U+FF46 # FULLWIDTH LATIN SMALL LETTER F
+0x8287 U+FF47 # FULLWIDTH LATIN SMALL LETTER G
+0x8288 U+FF48 # FULLWIDTH LATIN SMALL LETTER H
+0x8289 U+FF49 # FULLWIDTH LATIN SMALL LETTER I
+0x828A U+FF4A # FULLWIDTH LATIN SMALL LETTER J
+0x828B U+FF4B # FULLWIDTH LATIN SMALL LETTER K
+0x828C U+FF4C # FULLWIDTH LATIN SMALL LETTER L
+0x828D U+FF4D # FULLWIDTH LATIN SMALL LETTER M
+0x828E U+FF4E # FULLWIDTH LATIN SMALL LETTER N
+0x828F U+FF4F # FULLWIDTH LATIN SMALL LETTER O
+0x8290 U+FF50 # FULLWIDTH LATIN SMALL LETTER P
+0x8291 U+FF51 # FULLWIDTH LATIN SMALL LETTER Q
+0x8292 U+FF52 # FULLWIDTH LATIN SMALL LETTER R
+0x8293 U+FF53 # FULLWIDTH LATIN SMALL LETTER S
+0x8294 U+FF54 # FULLWIDTH LATIN SMALL LETTER T
+0x8295 U+FF55 # FULLWIDTH LATIN SMALL LETTER U
+0x8296 U+FF56 # FULLWIDTH LATIN SMALL LETTER V
+0x8297 U+FF57 # FULLWIDTH LATIN SMALL LETTER W
+0x8298 U+FF58 # FULLWIDTH LATIN SMALL LETTER X
+0x8299 U+FF59 # FULLWIDTH LATIN SMALL LETTER Y
+0x829A U+FF5A # FULLWIDTH LATIN SMALL LETTER Z
+0x829B U+30A0 # KATAKANA-HIRAGANA DOUBLE HYPHEN [2000] [Unicode3.2]
+0x829C U+2013 # EN DASH [2000]
+0x829D U+29FA # DOUBLE PLUS [2000] [Unicode3.2]
+0x829E U+29FB # TRIPLE PLUS [2000] [Unicode3.2]
+0x829F U+3041 # HIRAGANA LETTER SMALL A
+0x82A0 U+3042 # HIRAGANA LETTER A
+0x82A1 U+3043 # HIRAGANA LETTER SMALL I
+0x82A2 U+3044 # HIRAGANA LETTER I
+0x82A3 U+3045 # HIRAGANA LETTER SMALL U
+0x82A4 U+3046 # HIRAGANA LETTER U
+0x82A5 U+3047 # HIRAGANA LETTER SMALL E
+0x82A6 U+3048 # HIRAGANA LETTER E
+0x82A7 U+3049 # HIRAGANA LETTER SMALL O
+0x82A8 U+304A # HIRAGANA LETTER O
+0x82A9 U+304B # HIRAGANA LETTER KA
+0x82AA U+304C # HIRAGANA LETTER GA
+0x82AB U+304D # HIRAGANA LETTER KI
+0x82AC U+304E # HIRAGANA LETTER GI
+0x82AD U+304F # HIRAGANA LETTER KU
+0x82AE U+3050 # HIRAGANA LETTER GU
+0x82AF U+3051 # HIRAGANA LETTER KE
+0x82B0 U+3052 # HIRAGANA LETTER GE
+0x82B1 U+3053 # HIRAGANA LETTER KO
+0x82B2 U+3054 # HIRAGANA LETTER GO
+0x82B3 U+3055 # HIRAGANA LETTER SA
+0x82B4 U+3056 # HIRAGANA LETTER ZA
+0x82B5 U+3057 # HIRAGANA LETTER SI
+0x82B6 U+3058 # HIRAGANA LETTER ZI
+0x82B7 U+3059 # HIRAGANA LETTER SU
+0x82B8 U+305A # HIRAGANA LETTER ZU
+0x82B9 U+305B # HIRAGANA LETTER SE
+0x82BA U+305C # HIRAGANA LETTER ZE
+0x82BB U+305D # HIRAGANA LETTER SO
+0x82BC U+305E # HIRAGANA LETTER ZO
+0x82BD U+305F # HIRAGANA LETTER TA
+0x82BE U+3060 # HIRAGANA LETTER DA
+0x82BF U+3061 # HIRAGANA LETTER TI
+0x82C0 U+3062 # HIRAGANA LETTER DI
+0x82C1 U+3063 # HIRAGANA LETTER SMALL TU
+0x82C2 U+3064 # HIRAGANA LETTER TU
+0x82C3 U+3065 # HIRAGANA LETTER DU
+0x82C4 U+3066 # HIRAGANA LETTER TE
+0x82C5 U+3067 # HIRAGANA LETTER DE
+0x82C6 U+3068 # HIRAGANA LETTER TO
+0x82C7 U+3069 # HIRAGANA LETTER DO
+0x82C8 U+306A # HIRAGANA LETTER NA
+0x82C9 U+306B # HIRAGANA LETTER NI
+0x82CA U+306C # HIRAGANA LETTER NU
+0x82CB U+306D # HIRAGANA LETTER NE
+0x82CC U+306E # HIRAGANA LETTER NO
+0x82CD U+306F # HIRAGANA LETTER HA
+0x82CE U+3070 # HIRAGANA LETTER BA
+0x82CF U+3071 # HIRAGANA LETTER PA
+0x82D0 U+3072 # HIRAGANA LETTER HI
+0x82D1 U+3073 # HIRAGANA LETTER BI
+0x82D2 U+3074 # HIRAGANA LETTER PI
+0x82D3 U+3075 # HIRAGANA LETTER HU
+0x82D4 U+3076 # HIRAGANA LETTER BU
+0x82D5 U+3077 # HIRAGANA LETTER PU
+0x82D6 U+3078 # HIRAGANA LETTER HE
+0x82D7 U+3079 # HIRAGANA LETTER BE
+0x82D8 U+307A # HIRAGANA LETTER PE
+0x82D9 U+307B # HIRAGANA LETTER HO
+0x82DA U+307C # HIRAGANA LETTER BO
+0x82DB U+307D # HIRAGANA LETTER PO
+0x82DC U+307E # HIRAGANA LETTER MA
+0x82DD U+307F # HIRAGANA LETTER MI
+0x82DE U+3080 # HIRAGANA LETTER MU
+0x82DF U+3081 # HIRAGANA LETTER ME
+0x82E0 U+3082 # HIRAGANA LETTER MO
+0x82E1 U+3083 # HIRAGANA LETTER SMALL YA
+0x82E2 U+3084 # HIRAGANA LETTER YA
+0x82E3 U+3085 # HIRAGANA LETTER SMALL YU
+0x82E4 U+3086 # HIRAGANA LETTER YU
+0x82E5 U+3087 # HIRAGANA LETTER SMALL YO
+0x82E6 U+3088 # HIRAGANA LETTER YO
+0x82E7 U+3089 # HIRAGANA LETTER RA
+0x82E8 U+308A # HIRAGANA LETTER RI
+0x82E9 U+308B # HIRAGANA LETTER RU
+0x82EA U+308C # HIRAGANA LETTER RE
+0x82EB U+308D # HIRAGANA LETTER RO
+0x82EC U+308E # HIRAGANA LETTER SMALL WA
+0x82ED U+308F # HIRAGANA LETTER WA
+0x82EE U+3090 # HIRAGANA LETTER WI
+0x82EF U+3091 # HIRAGANA LETTER WE
+0x82F0 U+3092 # HIRAGANA LETTER WO
+0x82F1 U+3093 # HIRAGANA LETTER N
+0x82F2 U+3094 # HIRAGANA LETTER VU [2000]
+0x82F3 U+3095 # HIRAGANA LETTER SMALL KA [2000] [Unicode3.2]
+0x82F4 U+3096 # HIRAGANA LETTER SMALL KE [2000] [Unicode3.2]
+0x82F5 U+304B+309A # [2000]
+0x82F6 U+304D+309A # [2000]
+0x82F7 U+304F+309A # [2000]
+0x82F8 U+3051+309A # [2000]
+0x82F9 U+3053+309A # [2000]
+0x82FA # <reserved>
+0x82FB # <reserved>
+0x82FC # <reserved>
+0x8340 U+30A1 # KATAKANA LETTER SMALL A
+0x8341 U+30A2 # KATAKANA LETTER A
+0x8342 U+30A3 # KATAKANA LETTER SMALL I
+0x8343 U+30A4 # KATAKANA LETTER I
+0x8344 U+30A5 # KATAKANA LETTER SMALL U
+0x8345 U+30A6 # KATAKANA LETTER U
+0x8346 U+30A7 # KATAKANA LETTER SMALL E
+0x8347 U+30A8 # KATAKANA LETTER E
+0x8348 U+30A9 # KATAKANA LETTER SMALL O
+0x8349 U+30AA # KATAKANA LETTER O
+0x834A U+30AB # KATAKANA LETTER KA
+0x834B U+30AC # KATAKANA LETTER GA
+0x834C U+30AD # KATAKANA LETTER KI
+0x834D U+30AE # KATAKANA LETTER GI
+0x834E U+30AF # KATAKANA LETTER KU
+0x834F U+30B0 # KATAKANA LETTER GU
+0x8350 U+30B1 # KATAKANA LETTER KE
+0x8351 U+30B2 # KATAKANA LETTER GE
+0x8352 U+30B3 # KATAKANA LETTER KO
+0x8353 U+30B4 # KATAKANA LETTER GO
+0x8354 U+30B5 # KATAKANA LETTER SA
+0x8355 U+30B6 # KATAKANA LETTER ZA
+0x8356 U+30B7 # KATAKANA LETTER SI
+0x8357 U+30B8 # KATAKANA LETTER ZI
+0x8358 U+30B9 # KATAKANA LETTER SU
+0x8359 U+30BA # KATAKANA LETTER ZU
+0x835A U+30BB # KATAKANA LETTER SE
+0x835B U+30BC # KATAKANA LETTER ZE
+0x835C U+30BD # KATAKANA LETTER SO
+0x835D U+30BE # KATAKANA LETTER ZO
+0x835E U+30BF # KATAKANA LETTER TA
+0x835F U+30C0 # KATAKANA LETTER DA
+0x8360 U+30C1 # KATAKANA LETTER TI
+0x8361 U+30C2 # KATAKANA LETTER DI
+0x8362 U+30C3 # KATAKANA LETTER SMALL TU
+0x8363 U+30C4 # KATAKANA LETTER TU
+0x8364 U+30C5 # KATAKANA LETTER DU
+0x8365 U+30C6 # KATAKANA LETTER TE
+0x8366 U+30C7 # KATAKANA LETTER DE
+0x8367 U+30C8 # KATAKANA LETTER TO
+0x8368 U+30C9 # KATAKANA LETTER DO
+0x8369 U+30CA # KATAKANA LETTER NA
+0x836A U+30CB # KATAKANA LETTER NI
+0x836B U+30CC # KATAKANA LETTER NU
+0x836C U+30CD # KATAKANA LETTER NE
+0x836D U+30CE # KATAKANA LETTER NO
+0x836E U+30CF # KATAKANA LETTER HA
+0x836F U+30D0 # KATAKANA LETTER BA
+0x8370 U+30D1 # KATAKANA LETTER PA
+0x8371 U+30D2 # KATAKANA LETTER HI
+0x8372 U+30D3 # KATAKANA LETTER BI
+0x8373 U+30D4 # KATAKANA LETTER PI
+0x8374 U+30D5 # KATAKANA LETTER HU
+0x8375 U+30D6 # KATAKANA LETTER BU
+0x8376 U+30D7 # KATAKANA LETTER PU
+0x8377 U+30D8 # KATAKANA LETTER HE
+0x8378 U+30D9 # KATAKANA LETTER BE
+0x8379 U+30DA # KATAKANA LETTER PE
+0x837A U+30DB # KATAKANA LETTER HO
+0x837B U+30DC # KATAKANA LETTER BO
+0x837C U+30DD # KATAKANA LETTER PO
+0x837D U+30DE # KATAKANA LETTER MA
+0x837E U+30DF # KATAKANA LETTER MI
+0x8380 U+30E0 # KATAKANA LETTER MU
+0x8381 U+30E1 # KATAKANA LETTER ME
+0x8382 U+30E2 # KATAKANA LETTER MO
+0x8383 U+30E3 # KATAKANA LETTER SMALL YA
+0x8384 U+30E4 # KATAKANA LETTER YA
+0x8385 U+30E5 # KATAKANA LETTER SMALL YU
+0x8386 U+30E6 # KATAKANA LETTER YU
+0x8387 U+30E7 # KATAKANA LETTER SMALL YO
+0x8388 U+30E8 # KATAKANA LETTER YO
+0x8389 U+30E9 # KATAKANA LETTER RA
+0x838A U+30EA # KATAKANA LETTER RI
+0x838B U+30EB # KATAKANA LETTER RU
+0x838C U+30EC # KATAKANA LETTER RE
+0x838D U+30ED # KATAKANA LETTER RO
+0x838E U+30EE # KATAKANA LETTER SMALL WA
+0x838F U+30EF # KATAKANA LETTER WA
+0x8390 U+30F0 # KATAKANA LETTER WI
+0x8391 U+30F1 # KATAKANA LETTER WE
+0x8392 U+30F2 # KATAKANA LETTER WO
+0x8393 U+30F3 # KATAKANA LETTER N
+0x8394 U+30F4 # KATAKANA LETTER VU
+0x8395 U+30F5 # KATAKANA LETTER SMALL KA
+0x8396 U+30F6 # KATAKANA LETTER SMALL KE
+0x8397 U+30AB+309A # [2000]
+0x8398 U+30AD+309A # [2000]
+0x8399 U+30AF+309A # [2000]
+0x839A U+30B1+309A # [2000]
+0x839B U+30B3+309A # [2000]
+0x839C U+30BB+309A # [2000]
+0x839D U+30C4+309A # [2000]
+0x839E U+30C8+309A # [2000]
+0x839F U+0391 # GREEK CAPITAL LETTER ALPHA
+0x83A0 U+0392 # GREEK CAPITAL LETTER BETA
+0x83A1 U+0393 # GREEK CAPITAL LETTER GAMMA
+0x83A2 U+0394 # GREEK CAPITAL LETTER DELTA
+0x83A3 U+0395 # GREEK CAPITAL LETTER EPSILON
+0x83A4 U+0396 # GREEK CAPITAL LETTER ZETA
+0x83A5 U+0397 # GREEK CAPITAL LETTER ETA
+0x83A6 U+0398 # GREEK CAPITAL LETTER THETA
+0x83A7 U+0399 # GREEK CAPITAL LETTER IOTA
+0x83A8 U+039A # GREEK CAPITAL LETTER KAPPA
+0x83A9 U+039B # GREEK CAPITAL LETTER LAMDA
+0x83AA U+039C # GREEK CAPITAL LETTER MU
+0x83AB U+039D # GREEK CAPITAL LETTER NU
+0x83AC U+039E # GREEK CAPITAL LETTER XI
+0x83AD U+039F # GREEK CAPITAL LETTER OMICRON
+0x83AE U+03A0 # GREEK CAPITAL LETTER PI
+0x83AF U+03A1 # GREEK CAPITAL LETTER RHO
+0x83B0 U+03A3 # GREEK CAPITAL LETTER SIGMA
+0x83B1 U+03A4 # GREEK CAPITAL LETTER TAU
+0x83B2 U+03A5 # GREEK CAPITAL LETTER UPSILON
+0x83B3 U+03A6 # GREEK CAPITAL LETTER PHI
+0x83B4 U+03A7 # GREEK CAPITAL LETTER CHI
+0x83B5 U+03A8 # GREEK CAPITAL LETTER PSI
+0x83B6 U+03A9 # GREEK CAPITAL LETTER OMEGA
+0x83B7 U+2664 # WHITE SPADE SUIT [2000]
+0x83B8 U+2660 # BLACK SPADE SUIT [2000]
+0x83B9 U+2662 # WHITE DIAMOND SUIT [2000]
+0x83BA U+2666 # BLACK DIAMOND SUIT [2000]
+0x83BB U+2661 # WHITE HEART SUIT [2000]
+0x83BC U+2665 # BLACK HEART SUIT [2000]
+0x83BD U+2667 # WHITE CLUB SUIT [2000]
+0x83BE U+2663 # BLACK CLUB SUIT [2000]
+0x83BF U+03B1 # GREEK SMALL LETTER ALPHA
+0x83C0 U+03B2 # GREEK SMALL LETTER BETA
+0x83C1 U+03B3 # GREEK SMALL LETTER GAMMA
+0x83C2 U+03B4 # GREEK SMALL LETTER DELTA
+0x83C3 U+03B5 # GREEK SMALL LETTER EPSILON
+0x83C4 U+03B6 # GREEK SMALL LETTER ZETA
+0x83C5 U+03B7 # GREEK SMALL LETTER ETA
+0x83C6 U+03B8 # GREEK SMALL LETTER THETA
+0x83C7 U+03B9 # GREEK SMALL LETTER IOTA
+0x83C8 U+03BA # GREEK SMALL LETTER KAPPA
+0x83C9 U+03BB # GREEK SMALL LETTER LAMDA
+0x83CA U+03BC # GREEK SMALL LETTER MU
+0x83CB U+03BD # GREEK SMALL LETTER NU
+0x83CC U+03BE # GREEK SMALL LETTER XI
+0x83CD U+03BF # GREEK SMALL LETTER OMICRON
+0x83CE U+03C0 # GREEK SMALL LETTER PI
+0x83CF U+03C1 # GREEK SMALL LETTER RHO
+0x83D0 U+03C3 # GREEK SMALL LETTER SIGMA
+0x83D1 U+03C4 # GREEK SMALL LETTER TAU
+0x83D2 U+03C5 # GREEK SMALL LETTER UPSILON
+0x83D3 U+03C6 # GREEK SMALL LETTER PHI
+0x83D4 U+03C7 # GREEK SMALL LETTER CHI
+0x83D5 U+03C8 # GREEK SMALL LETTER PSI
+0x83D6 U+03C9 # GREEK SMALL LETTER OMEGA
+0x83D7 U+03C2 # GREEK SMALL LETTER FINAL SIGMA [2000]
+0x83D8 U+24F5 # DOUBLE CIRCLED DIGIT ONE [2000] [Unicode3.2]
+0x83D9 U+24F6 # DOUBLE CIRCLED DIGIT TWO [2000] [Unicode3.2]
+0x83DA U+24F7 # DOUBLE CIRCLED DIGIT THREE [2000] [Unicode3.2]
+0x83DB U+24F8 # DOUBLE CIRCLED DIGIT FOUR [2000] [Unicode3.2]
+0x83DC U+24F9 # DOUBLE CIRCLED DIGIT FIVE [2000] [Unicode3.2]
+0x83DD U+24FA # DOUBLE CIRCLED DIGIT SIX [2000] [Unicode3.2]
+0x83DE U+24FB # DOUBLE CIRCLED DIGIT SEVEN [2000] [Unicode3.2]
+0x83DF U+24FC # DOUBLE CIRCLED DIGIT EIGHT [2000] [Unicode3.2]
+0x83E0 U+24FD # DOUBLE CIRCLED DIGIT NINE [2000] [Unicode3.2]
+0x83E1 U+24FE # DOUBLE CIRCLED NUMBER TEN [2000] [Unicode3.2]
+0x83E2 U+2616 # WHITE SHOGI PIECE [2000] [Unicode3.2]
+0x83E3 U+2617 # BLACK SHOGI PIECE [2000] [Unicode3.2]
+0x83E4 U+3020 # POSTAL MARK FACE [2000]
+0x83E5 U+260E # BLACK TELEPHONE [2000]
+0x83E6 U+2600 # BLACK SUN WITH RAYS [2000]
+0x83E7 U+2601 # CLOUD [2000]
+0x83E8 U+2602 # UMBRELLA [2000]
+0x83E9 U+2603 # SNOWMAN [2000]
+0x83EA U+2668 # HOT SPRINGS [2000]
+0x83EB U+25B1 # WHITE PARALLELOGRAM [2000]
+0x83EC U+31F0 # KATAKANA LETTER SMALL KU [2000] [Unicode3.2]
+0x83ED U+31F1 # KATAKANA LETTER SMALL SI [2000] [Unicode3.2]
+0x83EE U+31F2 # KATAKANA LETTER SMALL SU [2000] [Unicode3.2]
+0x83EF U+31F3 # KATAKANA LETTER SMALL TO [2000] [Unicode3.2]
+0x83F0 U+31F4 # KATAKANA LETTER SMALL NU [2000] [Unicode3.2]
+0x83F1 U+31F5 # KATAKANA LETTER SMALL HA [2000] [Unicode3.2]
+0x83F2 U+31F6 # KATAKANA LETTER SMALL HI [2000] [Unicode3.2]
+0x83F3 U+31F7 # KATAKANA LETTER SMALL HU [2000] [Unicode3.2]
+0x83F4 U+31F8 # KATAKANA LETTER SMALL HE [2000] [Unicode3.2]
+0x83F5 U+31F9 # KATAKANA LETTER SMALL HO [2000] [Unicode3.2]
+0x83F6 U+31F7+309A # [2000]
+0x83F7 U+31FA # KATAKANA LETTER SMALL MU [2000] [Unicode3.2]
+0x83F8 U+31FB # KATAKANA LETTER SMALL RA [2000] [Unicode3.2]
+0x83F9 U+31FC # KATAKANA LETTER SMALL RI [2000] [Unicode3.2]
+0x83FA U+31FD # KATAKANA LETTER SMALL RU [2000] [Unicode3.2]
+0x83FB U+31FE # KATAKANA LETTER SMALL RE [2000] [Unicode3.2]
+0x83FC U+31FF # KATAKANA LETTER SMALL RO [2000] [Unicode3.2]
+0x8440 U+0410 # CYRILLIC CAPITAL LETTER A
+0x8441 U+0411 # CYRILLIC CAPITAL LETTER BE
+0x8442 U+0412 # CYRILLIC CAPITAL LETTER VE
+0x8443 U+0413 # CYRILLIC CAPITAL LETTER GHE
+0x8444 U+0414 # CYRILLIC CAPITAL LETTER DE
+0x8445 U+0415 # CYRILLIC CAPITAL LETTER IE
+0x8446 U+0401 # CYRILLIC CAPITAL LETTER IO
+0x8447 U+0416 # CYRILLIC CAPITAL LETTER ZHE
+0x8448 U+0417 # CYRILLIC CAPITAL LETTER ZE
+0x8449 U+0418 # CYRILLIC CAPITAL LETTER I
+0x844A U+0419 # CYRILLIC CAPITAL LETTER SHORT I
+0x844B U+041A # CYRILLIC CAPITAL LETTER KA
+0x844C U+041B # CYRILLIC CAPITAL LETTER EL
+0x844D U+041C # CYRILLIC CAPITAL LETTER EM
+0x844E U+041D # CYRILLIC CAPITAL LETTER EN
+0x844F U+041E # CYRILLIC CAPITAL LETTER O
+0x8450 U+041F # CYRILLIC CAPITAL LETTER PE
+0x8451 U+0420 # CYRILLIC CAPITAL LETTER ER
+0x8452 U+0421 # CYRILLIC CAPITAL LETTER ES
+0x8453 U+0422 # CYRILLIC CAPITAL LETTER TE
+0x8454 U+0423 # CYRILLIC CAPITAL LETTER U
+0x8455 U+0424 # CYRILLIC CAPITAL LETTER EF
+0x8456 U+0425 # CYRILLIC CAPITAL LETTER HA
+0x8457 U+0426 # CYRILLIC CAPITAL LETTER TSE
+0x8458 U+0427 # CYRILLIC CAPITAL LETTER CHE
+0x8459 U+0428 # CYRILLIC CAPITAL LETTER SHA
+0x845A U+0429 # CYRILLIC CAPITAL LETTER SHCHA
+0x845B U+042A # CYRILLIC CAPITAL LETTER HARD SIGN
+0x845C U+042B # CYRILLIC CAPITAL LETTER YERU
+0x845D U+042C # CYRILLIC CAPITAL LETTER SOFT SIGN
+0x845E U+042D # CYRILLIC CAPITAL LETTER E
+0x845F U+042E # CYRILLIC CAPITAL LETTER YU
+0x8460 U+042F # CYRILLIC CAPITAL LETTER YA
+0x8461 U+23BE # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT [2000] [Unicode3.2]
+0x8462 U+23BF # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT [2000] [Unicode3.2]
+0x8463 U+23C0 # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE [2000] [Unicode3.2]
+0x8464 U+23C1 # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE [2000] [Unicode3.2]
+0x8465 U+23C2 # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE [2000] [Unicode3.2]
+0x8466 U+23C3 # DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE [2000] [Unicode3.2]
+0x8467 U+23C4 # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE [2000] [Unicode3.2]
+0x8468 U+23C5 # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE [2000] [Unicode3.2]
+0x8469 U+23C6 # DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE [2000] [Unicode3.2]
+0x846A U+23C7 # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE [2000] [Unicode3.2]
+0x846B U+23C8 # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE [2000] [Unicode3.2]
+0x846C U+23C9 # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL [2000] [Unicode3.2]
+0x846D U+23CA # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL [2000] [Unicode3.2]
+0x846E U+23CB # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT [2000] [Unicode3.2]
+0x846F U+23CC # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT [2000] [Unicode3.2]
+0x8470 U+0430 # CYRILLIC SMALL LETTER A
+0x8471 U+0431 # CYRILLIC SMALL LETTER BE
+0x8472 U+0432 # CYRILLIC SMALL LETTER VE
+0x8473 U+0433 # CYRILLIC SMALL LETTER GHE
+0x8474 U+0434 # CYRILLIC SMALL LETTER DE
+0x8475 U+0435 # CYRILLIC SMALL LETTER IE
+0x8476 U+0451 # CYRILLIC SMALL LETTER IO
+0x8477 U+0436 # CYRILLIC SMALL LETTER ZHE
+0x8478 U+0437 # CYRILLIC SMALL LETTER ZE
+0x8479 U+0438 # CYRILLIC SMALL LETTER I
+0x847A U+0439 # CYRILLIC SMALL LETTER SHORT I
+0x847B U+043A # CYRILLIC SMALL LETTER KA
+0x847C U+043B # CYRILLIC SMALL LETTER EL
+0x847D U+043C # CYRILLIC SMALL LETTER EM
+0x847E U+043D # CYRILLIC SMALL LETTER EN
+0x8480 U+043E # CYRILLIC SMALL LETTER O
+0x8481 U+043F # CYRILLIC SMALL LETTER PE
+0x8482 U+0440 # CYRILLIC SMALL LETTER ER
+0x8483 U+0441 # CYRILLIC SMALL LETTER ES
+0x8484 U+0442 # CYRILLIC SMALL LETTER TE
+0x8485 U+0443 # CYRILLIC SMALL LETTER U
+0x8486 U+0444 # CYRILLIC SMALL LETTER EF
+0x8487 U+0445 # CYRILLIC SMALL LETTER HA
+0x8488 U+0446 # CYRILLIC SMALL LETTER TSE
+0x8489 U+0447 # CYRILLIC SMALL LETTER CHE
+0x848A U+0448 # CYRILLIC SMALL LETTER SHA
+0x848B U+0449 # CYRILLIC SMALL LETTER SHCHA
+0x848C U+044A # CYRILLIC SMALL LETTER HARD SIGN
+0x848D U+044B # CYRILLIC SMALL LETTER YERU
+0x848E U+044C # CYRILLIC SMALL LETTER SOFT SIGN
+0x848F U+044D # CYRILLIC SMALL LETTER E
+0x8490 U+044E # CYRILLIC SMALL LETTER YU
+0x8491 U+044F # CYRILLIC SMALL LETTER YA
+0x8492 U+30F7 # KATAKANA LETTER VA [2000]
+0x8493 U+30F8 # KATAKANA LETTER VI [2000]
+0x8494 U+30F9 # KATAKANA LETTER VE [2000]
+0x8495 U+30FA # KATAKANA LETTER VO [2000]
+0x8496 U+22DA # LESS-THAN EQUAL TO OR GREATER-THAN [2000]
+0x8497 U+22DB # GREATER-THAN EQUAL TO OR LESS-THAN [2000]
+0x8498 U+2153 # VULGAR FRACTION ONE THIRD [2000]
+0x8499 U+2154 # VULGAR FRACTION TWO THIRDS [2000]
+0x849A U+2155 # VULGAR FRACTION ONE FIFTH [2000]
+0x849B U+2713 # CHECK MARK [2000]
+0x849C U+2318 # PLACE OF INTEREST SIGN [2000]
+0x849D U+2423 # OPEN BOX [2000]
+0x849E U+23CE # RETURN SYMBOL [2000] [Unicode3.2]
+0x849F U+2500 # BOX DRAWINGS LIGHT HORIZONTAL [1983]
+0x84A0 U+2502 # BOX DRAWINGS LIGHT VERTICAL [1983]
+0x84A1 U+250C # BOX DRAWINGS LIGHT DOWN AND RIGHT [1983]
+0x84A2 U+2510 # BOX DRAWINGS LIGHT DOWN AND LEFT [1983]
+0x84A3 U+2518 # BOX DRAWINGS LIGHT UP AND LEFT [1983]
+0x84A4 U+2514 # BOX DRAWINGS LIGHT UP AND RIGHT [1983]
+0x84A5 U+251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT [1983]
+0x84A6 U+252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL [1983]
+0x84A7 U+2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT [1983]
+0x84A8 U+2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL [1983]
+0x84A9 U+253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL [1983]
+0x84AA U+2501 # BOX DRAWINGS HEAVY HORIZONTAL [1983]
+0x84AB U+2503 # BOX DRAWINGS HEAVY VERTICAL [1983]
+0x84AC U+250F # BOX DRAWINGS HEAVY DOWN AND RIGHT [1983]
+0x84AD U+2513 # BOX DRAWINGS HEAVY DOWN AND LEFT [1983]
+0x84AE U+251B # BOX DRAWINGS HEAVY UP AND LEFT [1983]
+0x84AF U+2517 # BOX DRAWINGS HEAVY UP AND RIGHT [1983]
+0x84B0 U+2523 # BOX DRAWINGS HEAVY VERTICAL AND RIGHT [1983]
+0x84B1 U+2533 # BOX DRAWINGS HEAVY DOWN AND HORIZONTAL [1983]
+0x84B2 U+252B # BOX DRAWINGS HEAVY VERTICAL AND LEFT [1983]
+0x84B3 U+253B # BOX DRAWINGS HEAVY UP AND HORIZONTAL [1983]
+0x84B4 U+254B # BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL [1983]
+0x84B5 U+2520 # BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT [1983]
+0x84B6 U+252F # BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY [1983]
+0x84B7 U+2528 # BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT [1983]
+0x84B8 U+2537 # BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY [1983]
+0x84B9 U+253F # BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY [1983]
+0x84BA U+251D # BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY [1983]
+0x84BB U+2530 # BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT [1983]
+0x84BC U+2525 # BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY [1983]
+0x84BD U+2538 # BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT [1983]
+0x84BE U+2542 # BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT [1983]
+0x84BF U+3251 # CIRCLED NUMBER TWENTY ONE [2000] [Unicode3.2]
+0x84C0 U+3252 # CIRCLED NUMBER TWENTY TWO [2000] [Unicode3.2]
+0x84C1 U+3253 # CIRCLED NUMBER TWENTY THREE [2000] [Unicode3.2]
+0x84C2 U+3254 # CIRCLED NUMBER TWENTY FOUR [2000] [Unicode3.2]
+0x84C3 U+3255 # CIRCLED NUMBER TWENTY FIVE [2000] [Unicode3.2]
+0x84C4 U+3256 # CIRCLED NUMBER TWENTY SIX [2000] [Unicode3.2]
+0x84C5 U+3257 # CIRCLED NUMBER TWENTY SEVEN [2000] [Unicode3.2]
+0x84C6 U+3258 # CIRCLED NUMBER TWENTY EIGHT [2000] [Unicode3.2]
+0x84C7 U+3259 # CIRCLED NUMBER TWENTY NINE [2000] [Unicode3.2]
+0x84C8 U+325A # CIRCLED NUMBER THIRTY [2000] [Unicode3.2]
+0x84C9 U+325B # CIRCLED NUMBER THIRTY ONE [2000] [Unicode3.2]
+0x84CA U+325C # CIRCLED NUMBER THIRTY TWO [2000] [Unicode3.2]
+0x84CB U+325D # CIRCLED NUMBER THIRTY THREE [2000] [Unicode3.2]
+0x84CC U+325E # CIRCLED NUMBER THIRTY FOUR [2000] [Unicode3.2]
+0x84CD U+325F # CIRCLED NUMBER THIRTY FIVE [2000] [Unicode3.2]
+0x84CE U+32B1 # CIRCLED NUMBER THIRTY SIX [2000] [Unicode3.2]
+0x84CF U+32B2 # CIRCLED NUMBER THIRTY SEVEN [2000] [Unicode3.2]
+0x84D0 U+32B3 # CIRCLED NUMBER THIRTY EIGHT [2000] [Unicode3.2]
+0x84D1 U+32B4 # CIRCLED NUMBER THIRTY NINE [2000] [Unicode3.2]
+0x84D2 U+32B5 # CIRCLED NUMBER FORTY [2000] [Unicode3.2]
+0x84D3 U+32B6 # CIRCLED NUMBER FORTY ONE [2000] [Unicode3.2]
+0x84D4 U+32B7 # CIRCLED NUMBER FORTY TWO [2000] [Unicode3.2]
+0x84D5 U+32B8 # CIRCLED NUMBER FORTY THREE [2000] [Unicode3.2]
+0x84D6 U+32B9 # CIRCLED NUMBER FORTY FOUR [2000] [Unicode3.2]
+0x84D7 U+32BA # CIRCLED NUMBER FORTY FIVE [2000] [Unicode3.2]
+0x84D8 U+32BB # CIRCLED NUMBER FORTY SIX [2000] [Unicode3.2]
+0x84D9 U+32BC # CIRCLED NUMBER FORTY SEVEN [2000] [Unicode3.2]
+0x84DA U+32BD # CIRCLED NUMBER FORTY EIGHT [2000] [Unicode3.2]
+0x84DB U+32BE # CIRCLED NUMBER FORTY NINE [2000] [Unicode3.2]
+0x84DC U+32BF # CIRCLED NUMBER FIFTY [2000] [Unicode3.2]
+0x84DD # <reserved>
+0x84DE # <reserved>
+0x84DF # <reserved>
+0x84E0 # <reserved>
+0x84E1 # <reserved>
+0x84E2 # <reserved>
+0x84E3 # <reserved>
+0x84E4 # <reserved>
+0x84E5 U+25D0 # CIRCLE WITH LEFT HALF BLACK [2000]
+0x84E6 U+25D1 # CIRCLE WITH RIGHT HALF BLACK [2000]
+0x84E7 U+25D2 # CIRCLE WITH LOWER HALF BLACK [2000]
+0x84E8 U+25D3 # CIRCLE WITH UPPER HALF BLACK [2000]
+0x84E9 U+203C # DOUBLE EXCLAMATION MARK [2000]
+0x84EA U+2047 # DOUBLE QUESTION MARK [2000] [Unicode3.2]
+0x84EB U+2048 # QUESTION EXCLAMATION MARK [2000]
+0x84EC U+2049 # EXCLAMATION QUESTION MARK [2000]
+0x84ED U+01CD # LATIN CAPITAL LETTER A WITH CARON [2000]
+0x84EE U+01CE # LATIN SMALL LETTER A WITH CARON [2000]
+0x84EF U+01D0 # LATIN SMALL LETTER I WITH CARON [2000]
+0x84F0 U+1E3E # LATIN CAPITAL LETTER M WITH ACUTE [2000]
+0x84F1 U+1E3F # LATIN SMALL LETTER M WITH ACUTE [2000]
+0x84F2 U+01F8 # LATIN CAPITAL LETTER N WITH GRAVE [2000]
+0x84F3 U+01F9 # LATIN SMALL LETTER N WITH GRAVE [2000]
+0x84F4 U+01D1 # LATIN CAPITAL LETTER O WITH CARON [2000]
+0x84F5 U+01D2 # LATIN SMALL LETTER O WITH CARON [2000]
+0x84F6 U+01D4 # LATIN SMALL LETTER U WITH CARON [2000]
+0x84F7 U+01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON [2000]
+0x84F8 U+01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE [2000]
+0x84F9 U+01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON [2000]
+0x84FA U+01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE [2000]
+0x84FB # <reserved>
+0x84FC # <reserved>
+0x8540 U+20AC # EURO SIGN [2000]
+0x8541 U+00A0 # NO-BREAK SPACE [2000]
+0x8542 U+00A1 # INVERTED EXCLAMATION MARK [2000]
+0x8543 U+00A4 # CURRENCY SIGN [2000]
+0x8544 U+00A6 # BROKEN BAR [2000]
+0x8545 U+00A9 # COPYRIGHT SIGN [2000]
+0x8546 U+00AA # FEMININE ORDINAL INDICATOR [2000]
+0x8547 U+00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK [2000]
+0x8548 U+00AD # SOFT HYPHEN [2000]
+0x8549 U+00AE # REGISTERED SIGN [2000]
+0x854A U+00AF # MACRON [2000]
+0x854B U+00B2 # SUPERSCRIPT TWO [2000]
+0x854C U+00B3 # SUPERSCRIPT THREE [2000]
+0x854D U+00B7 # MIDDLE DOT [2000]
+0x854E U+00B8 # CEDILLA [2000]
+0x854F U+00B9 # SUPERSCRIPT ONE [2000]
+0x8550 U+00BA # MASCULINE ORDINAL INDICATOR [2000]
+0x8551 U+00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK [2000]
+0x8552 U+00BC # VULGAR FRACTION ONE QUARTER [2000]
+0x8553 U+00BD # VULGAR FRACTION ONE HALF [2000]
+0x8554 U+00BE # VULGAR FRACTION THREE QUARTERS [2000]
+0x8555 U+00BF # INVERTED QUESTION MARK [2000]
+0x8556 U+00C0 # LATIN CAPITAL LETTER A WITH GRAVE [2000]
+0x8557 U+00C1 # LATIN CAPITAL LETTER A WITH ACUTE [2000]
+0x8558 U+00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX [2000]
+0x8559 U+00C3 # LATIN CAPITAL LETTER A WITH TILDE [2000]
+0x855A U+00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS [2000]
+0x855B U+00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE [2000]
+0x855C U+00C6 # LATIN CAPITAL LETTER AE [2000]
+0x855D U+00C7 # LATIN CAPITAL LETTER C WITH CEDILLA [2000]
+0x855E U+00C8 # LATIN CAPITAL LETTER E WITH GRAVE [2000]
+0x855F U+00C9 # LATIN CAPITAL LETTER E WITH ACUTE [2000]
+0x8560 U+00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX [2000]
+0x8561 U+00CB # LATIN CAPITAL LETTER E WITH DIAERESIS [2000]
+0x8562 U+00CC # LATIN CAPITAL LETTER I WITH GRAVE [2000]
+0x8563 U+00CD # LATIN CAPITAL LETTER I WITH ACUTE [2000]
+0x8564 U+00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX [2000]
+0x8565 U+00CF # LATIN CAPITAL LETTER I WITH DIAERESIS [2000]
+0x8566 U+00D0 # LATIN CAPITAL LETTER ETH [2000]
+0x8567 U+00D1 # LATIN CAPITAL LETTER N WITH TILDE [2000]
+0x8568 U+00D2 # LATIN CAPITAL LETTER O WITH GRAVE [2000]
+0x8569 U+00D3 # LATIN CAPITAL LETTER O WITH ACUTE [2000]
+0x856A U+00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX [2000]
+0x856B U+00D5 # LATIN CAPITAL LETTER O WITH TILDE [2000]
+0x856C U+00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS [2000]
+0x856D U+00D8 # LATIN CAPITAL LETTER O WITH STROKE [2000]
+0x856E U+00D9 # LATIN CAPITAL LETTER U WITH GRAVE [2000]
+0x856F U+00DA # LATIN CAPITAL LETTER U WITH ACUTE [2000]
+0x8570 U+00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX [2000]
+0x8571 U+00DC # LATIN CAPITAL LETTER U WITH DIAERESIS [2000]
+0x8572 U+00DD # LATIN CAPITAL LETTER Y WITH ACUTE [2000]
+0x8573 U+00DE # LATIN CAPITAL LETTER THORN [2000]
+0x8574 U+00DF # LATIN SMALL LETTER SHARP S [2000]
+0x8575 U+00E0 # LATIN SMALL LETTER A WITH GRAVE [2000]
+0x8576 U+00E1 # LATIN SMALL LETTER A WITH ACUTE [2000]
+0x8577 U+00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX [2000]
+0x8578 U+00E3 # LATIN SMALL LETTER A WITH TILDE [2000]
+0x8579 U+00E4 # LATIN SMALL LETTER A WITH DIAERESIS [2000]
+0x857A U+00E5 # LATIN SMALL LETTER A WITH RING ABOVE [2000]
+0x857B U+00E6 # LATIN SMALL LETTER AE [2000]
+0x857C U+00E7 # LATIN SMALL LETTER C WITH CEDILLA [2000]
+0x857D U+00E8 # LATIN SMALL LETTER E WITH GRAVE [2000]
+0x857E U+00E9 # LATIN SMALL LETTER E WITH ACUTE [2000]
+0x8580 U+00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX [2000]
+0x8581 U+00EB # LATIN SMALL LETTER E WITH DIAERESIS [2000]
+0x8582 U+00EC # LATIN SMALL LETTER I WITH GRAVE [2000]
+0x8583 U+00ED # LATIN SMALL LETTER I WITH ACUTE [2000]
+0x8584 U+00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX [2000]
+0x8585 U+00EF # LATIN SMALL LETTER I WITH DIAERESIS [2000]
+0x8586 U+00F0 # LATIN SMALL LETTER ETH [2000]
+0x8587 U+00F1 # LATIN SMALL LETTER N WITH TILDE [2000]
+0x8588 U+00F2 # LATIN SMALL LETTER O WITH GRAVE [2000]
+0x8589 U+00F3 # LATIN SMALL LETTER O WITH ACUTE [2000]
+0x858A U+00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX [2000]
+0x858B U+00F5 # LATIN SMALL LETTER O WITH TILDE [2000]
+0x858C U+00F6 # LATIN SMALL LETTER O WITH DIAERESIS [2000]
+0x858D U+00F8 # LATIN SMALL LETTER O WITH STROKE [2000]
+0x858E U+00F9 # LATIN SMALL LETTER U WITH GRAVE [2000]
+0x858F U+00FA # LATIN SMALL LETTER U WITH ACUTE [2000]
+0x8590 U+00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX [2000]
+0x8591 U+00FC # LATIN SMALL LETTER U WITH DIAERESIS [2000]
+0x8592 U+00FD # LATIN SMALL LETTER Y WITH ACUTE [2000]
+0x8593 U+00FE # LATIN SMALL LETTER THORN [2000]
+0x8594 U+00FF # LATIN SMALL LETTER Y WITH DIAERESIS [2000]
+0x8595 U+0100 # LATIN CAPITAL LETTER A WITH MACRON [2000]
+0x8596 U+012A # LATIN CAPITAL LETTER I WITH MACRON [2000]
+0x8597 U+016A # LATIN CAPITAL LETTER U WITH MACRON [2000]
+0x8598 U+0112 # LATIN CAPITAL LETTER E WITH MACRON [2000]
+0x8599 U+014C # LATIN CAPITAL LETTER O WITH MACRON [2000]
+0x859A U+0101 # LATIN SMALL LETTER A WITH MACRON [2000]
+0x859B U+012B # LATIN SMALL LETTER I WITH MACRON [2000]
+0x859C U+016B # LATIN SMALL LETTER U WITH MACRON [2000]
+0x859D U+0113 # LATIN SMALL LETTER E WITH MACRON [2000]
+0x859E U+014D # LATIN SMALL LETTER O WITH MACRON [2000]
+0x859F U+0104 # LATIN CAPITAL LETTER A WITH OGONEK [2000]
+0x85A0 U+02D8 # BREVE [2000]
+0x85A1 U+0141 # LATIN CAPITAL LETTER L WITH STROKE [2000]
+0x85A2 U+013D # LATIN CAPITAL LETTER L WITH CARON [2000]
+0x85A3 U+015A # LATIN CAPITAL LETTER S WITH ACUTE [2000]
+0x85A4 U+0160 # LATIN CAPITAL LETTER S WITH CARON [2000]
+0x85A5 U+015E # LATIN CAPITAL LETTER S WITH CEDILLA [2000]
+0x85A6 U+0164 # LATIN CAPITAL LETTER T WITH CARON [2000]
+0x85A7 U+0179 # LATIN CAPITAL LETTER Z WITH ACUTE [2000]
+0x85A8 U+017D # LATIN CAPITAL LETTER Z WITH CARON [2000]
+0x85A9 U+017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE [2000]
+0x85AA U+0105 # LATIN SMALL LETTER A WITH OGONEK [2000]
+0x85AB U+02DB # OGONEK [2000]
+0x85AC U+0142 # LATIN SMALL LETTER L WITH STROKE [2000]
+0x85AD U+013E # LATIN SMALL LETTER L WITH CARON [2000]
+0x85AE U+015B # LATIN SMALL LETTER S WITH ACUTE [2000]
+0x85AF U+02C7 # CARON [2000]
+0x85B0 U+0161 # LATIN SMALL LETTER S WITH CARON [2000]
+0x85B1 U+015F # LATIN SMALL LETTER S WITH CEDILLA [2000]
+0x85B2 U+0165 # LATIN SMALL LETTER T WITH CARON [2000]
+0x85B3 U+017A # LATIN SMALL LETTER Z WITH ACUTE [2000]
+0x85B4 U+02DD # DOUBLE ACUTE ACCENT [2000]
+0x85B5 U+017E # LATIN SMALL LETTER Z WITH CARON [2000]
+0x85B6 U+017C # LATIN SMALL LETTER Z WITH DOT ABOVE [2000]
+0x85B7 U+0154 # LATIN CAPITAL LETTER R WITH ACUTE [2000]
+0x85B8 U+0102 # LATIN CAPITAL LETTER A WITH BREVE [2000]
+0x85B9 U+0139 # LATIN CAPITAL LETTER L WITH ACUTE [2000]
+0x85BA U+0106 # LATIN CAPITAL LETTER C WITH ACUTE [2000]
+0x85BB U+010C # LATIN CAPITAL LETTER C WITH CARON [2000]
+0x85BC U+0118 # LATIN CAPITAL LETTER E WITH OGONEK [2000]
+0x85BD U+011A # LATIN CAPITAL LETTER E WITH CARON [2000]
+0x85BE U+010E # LATIN CAPITAL LETTER D WITH CARON [2000]
+0x85BF U+0143 # LATIN CAPITAL LETTER N WITH ACUTE [2000]
+0x85C0 U+0147 # LATIN CAPITAL LETTER N WITH CARON [2000]
+0x85C1 U+0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE [2000]
+0x85C2 U+0158 # LATIN CAPITAL LETTER R WITH CARON [2000]
+0x85C3 U+016E # LATIN CAPITAL LETTER U WITH RING ABOVE [2000]
+0x85C4 U+0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE [2000]
+0x85C5 U+0162 # LATIN CAPITAL LETTER T WITH CEDILLA [2000]
+0x85C6 U+0155 # LATIN SMALL LETTER R WITH ACUTE [2000]
+0x85C7 U+0103 # LATIN SMALL LETTER A WITH BREVE [2000]
+0x85C8 U+013A # LATIN SMALL LETTER L WITH ACUTE [2000]
+0x85C9 U+0107 # LATIN SMALL LETTER C WITH ACUTE [2000]
+0x85CA U+010D # LATIN SMALL LETTER C WITH CARON [2000]
+0x85CB U+0119 # LATIN SMALL LETTER E WITH OGONEK [2000]
+0x85CC U+011B # LATIN SMALL LETTER E WITH CARON [2000]
+0x85CD U+010F # LATIN SMALL LETTER D WITH CARON [2000]
+0x85CE U+0111 # LATIN SMALL LETTER D WITH STROKE [2000]
+0x85CF U+0144 # LATIN SMALL LETTER N WITH ACUTE [2000]
+0x85D0 U+0148 # LATIN SMALL LETTER N WITH CARON [2000]
+0x85D1 U+0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE [2000]
+0x85D2 U+0159 # LATIN SMALL LETTER R WITH CARON [2000]
+0x85D3 U+016F # LATIN SMALL LETTER U WITH RING ABOVE [2000]
+0x85D4 U+0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE [2000]
+0x85D5 U+0163 # LATIN SMALL LETTER T WITH CEDILLA [2000]
+0x85D6 U+02D9 # DOT ABOVE [2000]
+0x85D7 U+0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX [2000]
+0x85D8 U+011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX [2000]
+0x85D9 U+0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX [2000]
+0x85DA U+0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX [2000]
+0x85DB U+015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX [2000]
+0x85DC U+016C # LATIN CAPITAL LETTER U WITH BREVE [2000]
+0x85DD U+0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX [2000]
+0x85DE U+011D # LATIN SMALL LETTER G WITH CIRCUMFLEX [2000]
+0x85DF U+0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX [2000]
+0x85E0 U+0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX [2000]
+0x85E1 U+015D # LATIN SMALL LETTER S WITH CIRCUMFLEX [2000]
+0x85E2 U+016D # LATIN SMALL LETTER U WITH BREVE [2000]
+0x85E3 U+0271 # LATIN SMALL LETTER M WITH HOOK [2000]
+0x85E4 U+028B # LATIN SMALL LETTER V WITH HOOK [2000]
+0x85E5 U+027E # LATIN SMALL LETTER R WITH FISHHOOK [2000]
+0x85E6 U+0283 # LATIN SMALL LETTER ESH [2000]
+0x85E7 U+0292 # LATIN SMALL LETTER EZH [2000]
+0x85E8 U+026C # LATIN SMALL LETTER L WITH BELT [2000]
+0x85E9 U+026E # LATIN SMALL LETTER LEZH [2000]
+0x85EA U+0279 # LATIN SMALL LETTER TURNED R [2000]
+0x85EB U+0288 # LATIN SMALL LETTER T WITH RETROFLEX HOOK [2000]
+0x85EC U+0256 # LATIN SMALL LETTER D WITH TAIL [2000]
+0x85ED U+0273 # LATIN SMALL LETTER N WITH RETROFLEX HOOK [2000]
+0x85EE U+027D # LATIN SMALL LETTER R WITH TAIL [2000]
+0x85EF U+0282 # LATIN SMALL LETTER S WITH HOOK [2000]
+0x85F0 U+0290 # LATIN SMALL LETTER Z WITH RETROFLEX HOOK [2000]
+0x85F1 U+027B # LATIN SMALL LETTER TURNED R WITH HOOK [2000]
+0x85F2 U+026D # LATIN SMALL LETTER L WITH RETROFLEX HOOK [2000]
+0x85F3 U+025F # LATIN SMALL LETTER DOTLESS J WITH STROKE [2000]
+0x85F4 U+0272 # LATIN SMALL LETTER N WITH LEFT HOOK [2000]
+0x85F5 U+029D # LATIN SMALL LETTER J WITH CROSSED-TAIL [2000]
+0x85F6 U+028E # LATIN SMALL LETTER TURNED Y [2000]
+0x85F7 U+0261 # LATIN SMALL LETTER SCRIPT G [2000]
+0x85F8 U+014B # LATIN SMALL LETTER ENG [2000]
+0x85F9 U+0270 # LATIN SMALL LETTER TURNED M WITH LONG LEG [2000]
+0x85FA U+0281 # LATIN LETTER SMALL CAPITAL INVERTED R [2000]
+0x85FB U+0127 # LATIN SMALL LETTER H WITH STROKE [2000]
+0x85FC U+0295 # LATIN LETTER PHARYNGEAL VOICED FRICATIVE [2000]
+0x8640 U+0294 # LATIN LETTER GLOTTAL STOP [2000]
+0x8641 U+0266 # LATIN SMALL LETTER H WITH HOOK [2000]
+0x8642 U+0298 # LATIN LETTER BILABIAL CLICK [2000]
+0x8643 U+01C2 # LATIN LETTER ALVEOLAR CLICK [2000]
+0x8644 U+0253 # LATIN SMALL LETTER B WITH HOOK [2000]
+0x8645 U+0257 # LATIN SMALL LETTER D WITH HOOK [2000]
+0x8646 U+0284 # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK [2000]
+0x8647 U+0260 # LATIN SMALL LETTER G WITH HOOK [2000]
+0x8648 U+0193 # LATIN CAPITAL LETTER G WITH HOOK [2000]
+0x8649 U+0153 # LATIN SMALL LIGATURE OE [2000]
+0x864A U+0152 # LATIN CAPITAL LIGATURE OE [2000]
+0x864B U+0268 # LATIN SMALL LETTER I WITH STROKE [2000]
+0x864C U+0289 # LATIN SMALL LETTER U BAR [2000]
+0x864D U+0258 # LATIN SMALL LETTER REVERSED E [2000]
+0x864E U+0275 # LATIN SMALL LETTER BARRED O [2000]
+0x864F U+0259 # LATIN SMALL LETTER SCHWA [2000]
+0x8650 U+025C # LATIN SMALL LETTER REVERSED OPEN E [2000]
+0x8651 U+025E # LATIN SMALL LETTER CLOSED REVERSED OPEN E [2000]
+0x8652 U+0250 # LATIN SMALL LETTER TURNED A [2000]
+0x8653 U+026F # LATIN SMALL LETTER TURNED M [2000]
+0x8654 U+028A # LATIN SMALL LETTER UPSILON [2000]
+0x8655 U+0264 # LATIN SMALL LETTER RAMS HORN [2000]
+0x8656 U+028C # LATIN SMALL LETTER TURNED V [2000]
+0x8657 U+0254 # LATIN SMALL LETTER OPEN O [2000]
+0x8658 U+0251 # LATIN SMALL LETTER ALPHA [2000]
+0x8659 U+0252 # LATIN SMALL LETTER TURNED ALPHA [2000]
+0x865A U+028D # LATIN SMALL LETTER TURNED W [2000]
+0x865B U+0265 # LATIN SMALL LETTER TURNED H [2000]
+0x865C U+02A2 # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE [2000]
+0x865D U+02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE [2000]
+0x865E U+0255 # LATIN SMALL LETTER C WITH CURL [2000]
+0x865F U+0291 # LATIN SMALL LETTER Z WITH CURL [2000]
+0x8660 U+027A # LATIN SMALL LETTER TURNED R WITH LONG LEG [2000]
+0x8661 U+0267 # LATIN SMALL LETTER HENG WITH HOOK [2000]
+0x8662 U+025A # LATIN SMALL LETTER SCHWA WITH HOOK [2000]
+0x8663 U+00E6+0300 # [2000]
+0x8664 U+01FD # LATIN SMALL LETTER AE WITH ACUTE [2000]
+0x8665 U+1F70 # GREEK SMALL LETTER ALPHA WITH VARIA [2000]
+0x8666 U+1F71 # GREEK SMALL LETTER ALPHA WITH OXIA [2000]
+0x8667 U+0254+0300 # [2000]
+0x8668 U+0254+0301 # [2000]
+0x8669 U+028C+0300 # [2000]
+0x866A U+028C+0301 # [2000]
+0x866B U+0259+0300 # [2000]
+0x866C U+0259+0301 # [2000]
+0x866D U+025A+0300 # [2000]
+0x866E U+025A+0301 # [2000]
+0x866F U+1F72 # GREEK SMALL LETTER EPSILON WITH VARIA [2000]
+0x8670 U+1F73 # GREEK SMALL LETTER EPSILON WITH OXIA [2000]
+0x8671 U+0361 # COMBINING DOUBLE INVERTED BREVE [2000]
+0x8672 U+02C8 # MODIFIER LETTER VERTICAL LINE [2000]
+0x8673 U+02CC # MODIFIER LETTER LOW VERTICAL LINE [2000]
+0x8674 U+02D0 # MODIFIER LETTER TRIANGULAR COLON [2000]
+0x8675 U+02D1 # MODIFIER LETTER HALF TRIANGULAR COLON [2000]
+0x8676 U+0306 # COMBINING BREVE [2000]
+0x8677 U+203F # UNDERTIE [2000]
+0x8678 U+030B # COMBINING DOUBLE ACUTE ACCENT [2000]
+0x8679 U+0301 # COMBINING ACUTE ACCENT [2000]
+0x867A U+0304 # COMBINING MACRON [2000]
+0x867B U+0300 # COMBINING GRAVE ACCENT [2000]
+0x867C U+030F # COMBINING DOUBLE GRAVE ACCENT [2000]
+0x867D U+030C # COMBINING CARON [2000]
+0x867E U+0302 # COMBINING CIRCUMFLEX ACCENT [2000]
+0x8680 U+02E5 # MODIFIER LETTER EXTRA-HIGH TONE BAR [2000]
+0x8681 U+02E6 # MODIFIER LETTER HIGH TONE BAR [2000]
+0x8682 U+02E7 # MODIFIER LETTER MID TONE BAR [2000]
+0x8683 U+02E8 # MODIFIER LETTER LOW TONE BAR [2000]
+0x8684 U+02E9 # MODIFIER LETTER EXTRA-LOW TONE BAR [2000]
+0x8685 U+02E9+02E5 # [2000]
+0x8686 U+02E5+02E9 # [2000]
+0x8687 U+0325 # COMBINING RING BELOW [2000]
+0x8688 U+032C # COMBINING CARON BELOW [2000]
+0x8689 U+0339 # COMBINING RIGHT HALF RING BELOW [2000]
+0x868A U+031C # COMBINING LEFT HALF RING BELOW [2000]
+0x868B U+031F # COMBINING PLUS SIGN BELOW [2000]
+0x868C U+0320 # COMBINING MINUS SIGN BELOW [2000]
+0x868D U+0308 # COMBINING DIAERESIS [2000]
+0x868E U+033D # COMBINING X ABOVE [2000]
+0x868F U+0329 # COMBINING VERTICAL LINE BELOW [2000]
+0x8690 U+032F # COMBINING INVERTED BREVE BELOW [2000]
+0x8691 U+02DE # MODIFIER LETTER RHOTIC HOOK [2000]
+0x8692 U+0324 # COMBINING DIAERESIS BELOW [2000]
+0x8693 U+0330 # COMBINING TILDE BELOW [2000]
+0x8694 U+033C # COMBINING SEAGULL BELOW [2000]
+0x8695 U+0334 # COMBINING TILDE OVERLAY [2000]
+0x8696 U+031D # COMBINING UP TACK BELOW [2000]
+0x8697 U+031E # COMBINING DOWN TACK BELOW [2000]
+0x8698 U+0318 # COMBINING LEFT TACK BELOW [2000]
+0x8699 U+0319 # COMBINING RIGHT TACK BELOW [2000]
+0x869A U+032A # COMBINING BRIDGE BELOW [2000]
+0x869B U+033A # COMBINING INVERTED BRIDGE BELOW [2000]
+0x869C U+033B # COMBINING SQUARE BELOW [2000]
+0x869D U+0303 # COMBINING TILDE [2000]
+0x869E U+031A # COMBINING LEFT ANGLE ABOVE [2000]
+0x869F U+2776 # DINGBAT NEGATIVE CIRCLED DIGIT ONE [2000]
+0x86A0 U+2777 # DINGBAT NEGATIVE CIRCLED DIGIT TWO [2000]
+0x86A1 U+2778 # DINGBAT NEGATIVE CIRCLED DIGIT THREE [2000]
+0x86A2 U+2779 # DINGBAT NEGATIVE CIRCLED DIGIT FOUR [2000]
+0x86A3 U+277A # DINGBAT NEGATIVE CIRCLED DIGIT FIVE [2000]
+0x86A4 U+277B # DINGBAT NEGATIVE CIRCLED DIGIT SIX [2000]
+0x86A5 U+277C # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN [2000]
+0x86A6 U+277D # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT [2000]
+0x86A7 U+277E # DINGBAT NEGATIVE CIRCLED DIGIT NINE [2000]
+0x86A8 U+277F # DINGBAT NEGATIVE CIRCLED NUMBER TEN [2000]
+0x86A9 U+24EB # NEGATIVE CIRCLED NUMBER ELEVEN [2000] [Unicode3.2]
+0x86AA U+24EC # NEGATIVE CIRCLED NUMBER TWELVE [2000] [Unicode3.2]
+0x86AB U+24ED # NEGATIVE CIRCLED NUMBER THIRTEEN [2000] [Unicode3.2]
+0x86AC U+24EE # NEGATIVE CIRCLED NUMBER FOURTEEN [2000] [Unicode3.2]
+0x86AD U+24EF # NEGATIVE CIRCLED NUMBER FIFTEEN [2000] [Unicode3.2]
+0x86AE U+24F0 # NEGATIVE CIRCLED NUMBER SIXTEEN [2000] [Unicode3.2]
+0x86AF U+24F1 # NEGATIVE CIRCLED NUMBER SEVENTEEN [2000] [Unicode3.2]
+0x86B0 U+24F2 # NEGATIVE CIRCLED NUMBER EIGHTEEN [2000] [Unicode3.2]
+0x86B1 U+24F3 # NEGATIVE CIRCLED NUMBER NINETEEN [2000] [Unicode3.2]
+0x86B2 U+24F4 # NEGATIVE CIRCLED NUMBER TWENTY [2000] [Unicode3.2]
+0x86B3 U+2170 # SMALL ROMAN NUMERAL ONE [2000]
+0x86B4 U+2171 # SMALL ROMAN NUMERAL TWO [2000]
+0x86B5 U+2172 # SMALL ROMAN NUMERAL THREE [2000]
+0x86B6 U+2173 # SMALL ROMAN NUMERAL FOUR [2000]
+0x86B7 U+2174 # SMALL ROMAN NUMERAL FIVE [2000]
+0x86B8 U+2175 # SMALL ROMAN NUMERAL SIX [2000]
+0x86B9 U+2176 # SMALL ROMAN NUMERAL SEVEN [2000]
+0x86BA U+2177 # SMALL ROMAN NUMERAL EIGHT [2000]
+0x86BB U+2178 # SMALL ROMAN NUMERAL NINE [2000]
+0x86BC U+2179 # SMALL ROMAN NUMERAL TEN [2000]
+0x86BD U+217A # SMALL ROMAN NUMERAL ELEVEN [2000]
+0x86BE U+217B # SMALL ROMAN NUMERAL TWELVE [2000]
+0x86BF U+24D0 # CIRCLED LATIN SMALL LETTER A [2000]
+0x86C0 U+24D1 # CIRCLED LATIN SMALL LETTER B [2000]
+0x86C1 U+24D2 # CIRCLED LATIN SMALL LETTER C [2000]
+0x86C2 U+24D3 # CIRCLED LATIN SMALL LETTER D [2000]
+0x86C3 U+24D4 # CIRCLED LATIN SMALL LETTER E [2000]
+0x86C4 U+24D5 # CIRCLED LATIN SMALL LETTER F [2000]
+0x86C5 U+24D6 # CIRCLED LATIN SMALL LETTER G [2000]
+0x86C6 U+24D7 # CIRCLED LATIN SMALL LETTER H [2000]
+0x86C7 U+24D8 # CIRCLED LATIN SMALL LETTER I [2000]
+0x86C8 U+24D9 # CIRCLED LATIN SMALL LETTER J [2000]
+0x86C9 U+24DA # CIRCLED LATIN SMALL LETTER K [2000]
+0x86CA U+24DB # CIRCLED LATIN SMALL LETTER L [2000]
+0x86CB U+24DC # CIRCLED LATIN SMALL LETTER M [2000]
+0x86CC U+24DD # CIRCLED LATIN SMALL LETTER N [2000]
+0x86CD U+24DE # CIRCLED LATIN SMALL LETTER O [2000]
+0x86CE U+24DF # CIRCLED LATIN SMALL LETTER P [2000]
+0x86CF U+24E0 # CIRCLED LATIN SMALL LETTER Q [2000]
+0x86D0 U+24E1 # CIRCLED LATIN SMALL LETTER R [2000]
+0x86D1 U+24E2 # CIRCLED LATIN SMALL LETTER S [2000]
+0x86D2 U+24E3 # CIRCLED LATIN SMALL LETTER T [2000]
+0x86D3 U+24E4 # CIRCLED LATIN SMALL LETTER U [2000]
+0x86D4 U+24E5 # CIRCLED LATIN SMALL LETTER V [2000]
+0x86D5 U+24E6 # CIRCLED LATIN SMALL LETTER W [2000]
+0x86D6 U+24E7 # CIRCLED LATIN SMALL LETTER X [2000]
+0x86D7 U+24E8 # CIRCLED LATIN SMALL LETTER Y [2000]
+0x86D8 U+24E9 # CIRCLED LATIN SMALL LETTER Z [2000]
+0x86D9 U+32D0 # CIRCLED KATAKANA A [2000]
+0x86DA U+32D1 # CIRCLED KATAKANA I [2000]
+0x86DB U+32D2 # CIRCLED KATAKANA U [2000]
+0x86DC U+32D3 # CIRCLED KATAKANA E [2000]
+0x86DD U+32D4 # CIRCLED KATAKANA O [2000]
+0x86DE U+32D5 # CIRCLED KATAKANA KA [2000]
+0x86DF U+32D6 # CIRCLED KATAKANA KI [2000]
+0x86E0 U+32D7 # CIRCLED KATAKANA KU [2000]
+0x86E1 U+32D8 # CIRCLED KATAKANA KE [2000]
+0x86E2 U+32D9 # CIRCLED KATAKANA KO [2000]
+0x86E3 U+32DA # CIRCLED KATAKANA SA [2000]
+0x86E4 U+32DB # CIRCLED KATAKANA SI [2000]
+0x86E5 U+32DC # CIRCLED KATAKANA SU [2000]
+0x86E6 U+32DD # CIRCLED KATAKANA SE [2000]
+0x86E7 U+32DE # CIRCLED KATAKANA SO [2000]
+0x86E8 U+32DF # CIRCLED KATAKANA TA [2000]
+0x86E9 U+32E0 # CIRCLED KATAKANA TI [2000]
+0x86EA U+32E1 # CIRCLED KATAKANA TU [2000]
+0x86EB U+32E2 # CIRCLED KATAKANA TE [2000]
+0x86EC U+32E3 # CIRCLED KATAKANA TO [2000]
+0x86ED U+32FA # CIRCLED KATAKANA RO [2000]
+0x86EE U+32E9 # CIRCLED KATAKANA HA [2000]
+0x86EF U+32E5 # CIRCLED KATAKANA NI [2000]
+0x86F0 U+32ED # CIRCLED KATAKANA HO [2000]
+0x86F1 U+32EC # CIRCLED KATAKANA HE [2000]
+0x86F2 # <reserved>
+0x86F3 # <reserved>
+0x86F4 # <reserved>
+0x86F5 # <reserved>
+0x86F6 # <reserved>
+0x86F7 # <reserved>
+0x86F8 # <reserved>
+0x86F9 # <reserved>
+0x86FA # <reserved>
+0x86FB U+2051 # TWO ASTERISKS ALIGNED VERTICALLY [2000] [Unicode3.2]
+0x86FC U+2042 # ASTERISM [2000]
+0x8740 U+2460 # CIRCLED DIGIT ONE [2000]
+0x8741 U+2461 # CIRCLED DIGIT TWO [2000]
+0x8742 U+2462 # CIRCLED DIGIT THREE [2000]
+0x8743 U+2463 # CIRCLED DIGIT FOUR [2000]
+0x8744 U+2464 # CIRCLED DIGIT FIVE [2000]
+0x8745 U+2465 # CIRCLED DIGIT SIX [2000]
+0x8746 U+2466 # CIRCLED DIGIT SEVEN [2000]
+0x8747 U+2467 # CIRCLED DIGIT EIGHT [2000]
+0x8748 U+2468 # CIRCLED DIGIT NINE [2000]
+0x8749 U+2469 # CIRCLED NUMBER TEN [2000]
+0x874A U+246A # CIRCLED NUMBER ELEVEN [2000]
+0x874B U+246B # CIRCLED NUMBER TWELVE [2000]
+0x874C U+246C # CIRCLED NUMBER THIRTEEN [2000]
+0x874D U+246D # CIRCLED NUMBER FOURTEEN [2000]
+0x874E U+246E # CIRCLED NUMBER FIFTEEN [2000]
+0x874F U+246F # CIRCLED NUMBER SIXTEEN [2000]
+0x8750 U+2470 # CIRCLED NUMBER SEVENTEEN [2000]
+0x8751 U+2471 # CIRCLED NUMBER EIGHTEEN [2000]
+0x8752 U+2472 # CIRCLED NUMBER NINETEEN [2000]
+0x8753 U+2473 # CIRCLED NUMBER TWENTY [2000]
+0x8754 U+2160 # ROMAN NUMERAL ONE [2000]
+0x8755 U+2161 # ROMAN NUMERAL TWO [2000]
+0x8756 U+2162 # ROMAN NUMERAL THREE [2000]
+0x8757 U+2163 # ROMAN NUMERAL FOUR [2000]
+0x8758 U+2164 # ROMAN NUMERAL FIVE [2000]
+0x8759 U+2165 # ROMAN NUMERAL SIX [2000]
+0x875A U+2166 # ROMAN NUMERAL SEVEN [2000]
+0x875B U+2167 # ROMAN NUMERAL EIGHT [2000]
+0x875C U+2168 # ROMAN NUMERAL NINE [2000]
+0x875D U+2169 # ROMAN NUMERAL TEN [2000]
+0x875E U+216A # ROMAN NUMERAL ELEVEN [2000]
+0x875F U+3349 # SQUARE MIRI [2000]
+0x8760 U+3314 # SQUARE KIRO [2000]
+0x8761 U+3322 # SQUARE SENTI [2000]
+0x8762 U+334D # SQUARE MEETORU [2000]
+0x8763 U+3318 # SQUARE GURAMU [2000]
+0x8764 U+3327 # SQUARE TON [2000]
+0x8765 U+3303 # SQUARE AARU [2000]
+0x8766 U+3336 # SQUARE HEKUTAARU [2000]
+0x8767 U+3351 # SQUARE RITTORU [2000]
+0x8768 U+3357 # SQUARE WATTO [2000]
+0x8769 U+330D # SQUARE KARORII [2000]
+0x876A U+3326 # SQUARE DORU [2000]
+0x876B U+3323 # SQUARE SENTO [2000]
+0x876C U+332B # SQUARE PAASENTO [2000]
+0x876D U+334A # SQUARE MIRIBAARU [2000]
+0x876E U+333B # SQUARE PEEZI [2000]
+0x876F U+339C # SQUARE MM [2000]
+0x8770 U+339D # SQUARE CM [2000]
+0x8771 U+339E # SQUARE KM [2000]
+0x8772 U+338E # SQUARE MG [2000]
+0x8773 U+338F # SQUARE KG [2000]
+0x8774 U+33C4 # SQUARE CC [2000]
+0x8775 U+33A1 # SQUARE M SQUARED [2000]
+0x8776 U+216B # ROMAN NUMERAL TWELVE [2000]
+0x8777 # <reserved>
+0x8778 # <reserved>
+0x8779 # <reserved>
+0x877A # <reserved>
+0x877B # <reserved>
+0x877C # <reserved>
+0x877D # <reserved>
+0x877E U+337B # SQUARE ERA NAME HEISEI [2000]
+0x8780 U+301D # REVERSED DOUBLE PRIME QUOTATION MARK [2000]
+0x8781 U+301F # LOW DOUBLE PRIME QUOTATION MARK [2000]
+0x8782 U+2116 # NUMERO SIGN [2000]
+0x8783 U+33CD # SQUARE KK [2000]
+0x8784 U+2121 # TELEPHONE SIGN [2000]
+0x8785 U+32A4 # CIRCLED IDEOGRAPH HIGH [2000]
+0x8786 U+32A5 # CIRCLED IDEOGRAPH CENTRE [2000]
+0x8787 U+32A6 # CIRCLED IDEOGRAPH LOW [2000]
+0x8788 U+32A7 # CIRCLED IDEOGRAPH LEFT [2000]
+0x8789 U+32A8 # CIRCLED IDEOGRAPH RIGHT [2000]
+0x878A U+3231 # PARENTHESIZED IDEOGRAPH STOCK [2000]
+0x878B U+3232 # PARENTHESIZED IDEOGRAPH HAVE [2000]
+0x878C U+3239 # PARENTHESIZED IDEOGRAPH REPRESENT [2000]
+0x878D U+337E # SQUARE ERA NAME MEIZI [2000]
+0x878E U+337D # SQUARE ERA NAME TAISYOU [2000]
+0x878F U+337C # SQUARE ERA NAME SYOUWA [2000]
+0x8790 # <reserved> Windows: U+2252
+0x8791 # <reserved> Windows: U+2261
+0x8792 # <reserved> Windows: U+222B
+0x8793 U+222E # CONTOUR INTEGRAL [2000]
+0x8794 # <reserved> Windows: U+2211
+0x8795 # <reserved> Windows: U+221A
+0x8796 # <reserved> Windows: U+22A5
+0x8797 # <reserved> Windows: U+2220
+0x8798 U+221F # RIGHT ANGLE [2000]
+0x8799 U+22BF # RIGHT TRIANGLE [2000]
+0x879A # <reserved> Windows: U+2235
+0x879B # <reserved> Windows: U+2229
+0x879C # <reserved> Windows: U+222A
+0x879D U+2756 # BLACK DIAMOND MINUS WHITE X [2000]
+0x879E U+261E # WHITE RIGHT POINTING INDEX [2000]
+0x879F U+4FF1 # <cjk> [2004]
+0x87A0 U+2000B # <cjk> [2000] [Unicode3.1]
+0x87A1 U+3402 # <cjk> [2000]
+0x87A2 U+4E28 # <cjk> [2000]
+0x87A3 U+4E2F # <cjk> [2000]
+0x87A4 U+4E30 # <cjk> [2000]
+0x87A5 U+4E8D # <cjk> [2000]
+0x87A6 U+4EE1 # <cjk> [2000]
+0x87A7 U+4EFD # <cjk> [2000]
+0x87A8 U+4EFF # <cjk> [2000]
+0x87A9 U+4F03 # <cjk> [2000]
+0x87AA U+4F0B # <cjk> [2000]
+0x87AB U+4F60 # <cjk> [2000]
+0x87AC U+4F48 # <cjk> [2000]
+0x87AD U+4F49 # <cjk> [2000]
+0x87AE U+4F56 # <cjk> [2000]
+0x87AF U+4F5F # <cjk> [2000]
+0x87B0 U+4F6A # <cjk> [2000]
+0x87B1 U+4F6C # <cjk> [2000]
+0x87B2 U+4F7E # <cjk> [2000]
+0x87B3 U+4F8A # <cjk> [2000]
+0x87B4 U+4F94 # <cjk> [2000]
+0x87B5 U+4F97 # <cjk> [2000]
+0x87B6 U+FA30 # CJK COMPATIBILITY IDEOGRAPH-FA30 [2000] [Unicode3.2]
+0x87B7 U+4FC9 # <cjk> [2000]
+0x87B8 U+4FE0 # <cjk> [2000]
+0x87B9 U+5001 # <cjk> [2000]
+0x87BA U+5002 # <cjk> [2000]
+0x87BB U+500E # <cjk> [2000]
+0x87BC U+5018 # <cjk> [2000]
+0x87BD U+5027 # <cjk> [2000]
+0x87BE U+502E # <cjk> [2000]
+0x87BF U+5040 # <cjk> [2000]
+0x87C0 U+503B # <cjk> [2000]
+0x87C1 U+5041 # <cjk> [2000]
+0x87C2 U+5094 # <cjk> [2000]
+0x87C3 U+50CC # <cjk> [2000]
+0x87C4 U+50F2 # <cjk> [2000]
+0x87C5 U+50D0 # <cjk> [2000]
+0x87C6 U+50E6 # <cjk> [2000]
+0x87C7 U+FA31 # CJK COMPATIBILITY IDEOGRAPH-FA31 [2000] [Unicode3.2]
+0x87C8 U+5106 # <cjk> [2000]
+0x87C9 U+5103 # <cjk> [2000]
+0x87CA U+510B # <cjk> [2000]
+0x87CB U+511E # <cjk> [2000]
+0x87CC U+5135 # <cjk> [2000]
+0x87CD U+514A # <cjk> [2000]
+0x87CE U+FA32 # CJK COMPATIBILITY IDEOGRAPH-FA32 [2000] [Unicode3.2]
+0x87CF U+5155 # <cjk> [2000]
+0x87D0 U+5157 # <cjk> [2000]
+0x87D1 U+34B5 # <cjk> [2000]
+0x87D2 U+519D # <cjk> [2000]
+0x87D3 U+51C3 # <cjk> [2000]
+0x87D4 U+51CA # <cjk> [2000]
+0x87D5 U+51DE # <cjk> [2000]
+0x87D6 U+51E2 # <cjk> [2000]
+0x87D7 U+51EE # <cjk> [2000]
+0x87D8 U+5201 # <cjk> [2000]
+0x87D9 U+34DB # <cjk> [2000]
+0x87DA U+5213 # <cjk> [2000]
+0x87DB U+5215 # <cjk> [2000]
+0x87DC U+5249 # <cjk> [2000]
+0x87DD U+5257 # <cjk> [2000]
+0x87DE U+5261 # <cjk> [2000]
+0x87DF U+5293 # <cjk> [2000]
+0x87E0 U+52C8 # <cjk> [2000]
+0x87E1 U+FA33 # CJK COMPATIBILITY IDEOGRAPH-FA33 [2000] [Unicode3.2]
+0x87E2 U+52CC # <cjk> [2000]
+0x87E3 U+52D0 # <cjk> [2000]
+0x87E4 U+52D6 # <cjk> [2000]
+0x87E5 U+52DB # <cjk> [2000]
+0x87E6 U+FA34 # CJK COMPATIBILITY IDEOGRAPH-FA34 [2000] [Unicode3.2]
+0x87E7 U+52F0 # <cjk> [2000]
+0x87E8 U+52FB # <cjk> [2000]
+0x87E9 U+5300 # <cjk> [2000]
+0x87EA U+5307 # <cjk> [2000]
+0x87EB U+531C # <cjk> [2000]
+0x87EC U+FA35 # CJK COMPATIBILITY IDEOGRAPH-FA35 [2000] [Unicode3.2]
+0x87ED U+5361 # <cjk> [2000]
+0x87EE U+5363 # <cjk> [2000]
+0x87EF U+537D # <cjk> [2000]
+0x87F0 U+5393 # <cjk> [2000]
+0x87F1 U+539D # <cjk> [2000]
+0x87F2 U+53B2 # <cjk> [2000]
+0x87F3 U+5412 # <cjk> [2000]
+0x87F4 U+5427 # <cjk> [2000]
+0x87F5 U+544D # <cjk> [2000]
+0x87F6 U+549C # <cjk> [2000]
+0x87F7 U+546B # <cjk> [2000]
+0x87F8 U+5474 # <cjk> [2000]
+0x87F9 U+547F # <cjk> [2000]
+0x87FA U+5488 # <cjk> [2000]
+0x87FB U+5496 # <cjk> [2000]
+0x87FC U+54A1 # <cjk> [2000]
+0x8840 U+54A9 # <cjk> [2000]
+0x8841 U+54C6 # <cjk> [2000]
+0x8842 U+54FF # <cjk> [2000]
+0x8843 U+550E # <cjk> [2000]
+0x8844 U+552B # <cjk> [2000]
+0x8845 U+5535 # <cjk> [2000]
+0x8846 U+5550 # <cjk> [2000]
+0x8847 U+555E # <cjk> [2000]
+0x8848 U+5581 # <cjk> [2000]
+0x8849 U+5586 # <cjk> [2000]
+0x884A U+558E # <cjk> [2000]
+0x884B U+FA36 # CJK COMPATIBILITY IDEOGRAPH-FA36 [2000] [Unicode3.2]
+0x884C U+55AD # <cjk> [2000]
+0x884D U+55CE # <cjk> [2000]
+0x884E U+FA37 # CJK COMPATIBILITY IDEOGRAPH-FA37 [2000] [Unicode3.2]
+0x884F U+5608 # <cjk> [2000]
+0x8850 U+560E # <cjk> [2000]
+0x8851 U+563B # <cjk> [2000]
+0x8852 U+5649 # <cjk> [2000]
+0x8853 U+5676 # <cjk> [2000]
+0x8854 U+5666 # <cjk> [2000]
+0x8855 U+FA38 # CJK COMPATIBILITY IDEOGRAPH-FA38 [2000] [Unicode3.2]
+0x8856 U+566F # <cjk> [2000]
+0x8857 U+5671 # <cjk> [2000]
+0x8858 U+5672 # <cjk> [2000]
+0x8859 U+5699 # <cjk> [2000]
+0x885A U+569E # <cjk> [2000]
+0x885B U+56A9 # <cjk> [2000]
+0x885C U+56AC # <cjk> [2000]
+0x885D U+56B3 # <cjk> [2000]
+0x885E U+56C9 # <cjk> [2000]
+0x885F U+56CA # <cjk> [2000]
+0x8860 U+570A # <cjk> [2000]
+0x8861 U+2123D # <cjk> [2000] [Unicode3.1]
+0x8862 U+5721 # <cjk> [2000]
+0x8863 U+572F # <cjk> [2000]
+0x8864 U+5733 # <cjk> [2000]
+0x8865 U+5734 # <cjk> [2000]
+0x8866 U+5770 # <cjk> [2000]
+0x8867 U+5777 # <cjk> [2000]
+0x8868 U+577C # <cjk> [2000]
+0x8869 U+579C # <cjk> [2000]
+0x886A U+FA0F # CJK COMPATIBILITY IDEOGRAPH-FA0F [2000]
+0x886B U+2131B # <cjk> [2000] [Unicode3.1]
+0x886C U+57B8 # <cjk> [2000]
+0x886D U+57C7 # <cjk> [2000]
+0x886E U+57C8 # <cjk> [2000]
+0x886F U+57CF # <cjk> [2000]
+0x8870 U+57E4 # <cjk> [2000]
+0x8871 U+57ED # <cjk> [2000]
+0x8872 U+57F5 # <cjk> [2000]
+0x8873 U+57F6 # <cjk> [2000]
+0x8874 U+57FF # <cjk> [2000]
+0x8875 U+5809 # <cjk> [2000]
+0x8876 U+FA10 # CJK COMPATIBILITY IDEOGRAPH-FA10 [2000]
+0x8877 U+5861 # <cjk> [2000]
+0x8878 U+5864 # <cjk> [2000]
+0x8879 U+FA39 # CJK COMPATIBILITY IDEOGRAPH-FA39 [2000] [Unicode3.2]
+0x887A U+587C # <cjk> [2000]
+0x887B U+5889 # <cjk> [2000]
+0x887C U+589E # <cjk> [2000]
+0x887D U+FA3A # CJK COMPATIBILITY IDEOGRAPH-FA3A [2000] [Unicode3.2]
+0x887E U+58A9 # <cjk> [2000]
+0x8880 U+2146E # <cjk> [2000] [Unicode3.1]
+0x8881 U+58D2 # <cjk> [2000]
+0x8882 U+58CE # <cjk> [2000]
+0x8883 U+58D4 # <cjk> [2000]
+0x8884 U+58DA # <cjk> [2000]
+0x8885 U+58E0 # <cjk> [2000]
+0x8886 U+58E9 # <cjk> [2000]
+0x8887 U+590C # <cjk> [2000]
+0x8888 U+8641 # <cjk> [2000]
+0x8889 U+595D # <cjk> [2000]
+0x888A U+596D # <cjk> [2000]
+0x888B U+598B # <cjk> [2000]
+0x888C U+5992 # <cjk> [2000]
+0x888D U+59A4 # <cjk> [2000]
+0x888E U+59C3 # <cjk> [2000]
+0x888F U+59D2 # <cjk> [2000]
+0x8890 U+59DD # <cjk> [2000]
+0x8891 U+5A13 # <cjk> [2000]
+0x8892 U+5A23 # <cjk> [2000]
+0x8893 U+5A67 # <cjk> [2000]
+0x8894 U+5A6D # <cjk> [2000]
+0x8895 U+5A77 # <cjk> [2000]
+0x8896 U+5A7E # <cjk> [2000]
+0x8897 U+5A84 # <cjk> [2000]
+0x8898 U+5A9E # <cjk> [2000]
+0x8899 U+5AA7 # <cjk> [2000]
+0x889A U+5AC4 # <cjk> [2000]
+0x889B U+218BD # <cjk> [2000] [Unicode3.1]
+0x889C U+5B19 # <cjk> [2000]
+0x889D U+5B25 # <cjk> [2000]
+0x889E U+525D # <cjk> [2004]
+0x889F U+4E9C # <cjk>
+0x88A0 U+5516 # <cjk>
+0x88A1 U+5A03 # <cjk>
+0x88A2 U+963F # <cjk>
+0x88A3 U+54C0 # <cjk>
+0x88A4 U+611B # <cjk>
+0x88A5 U+6328 # <cjk>
+0x88A6 U+59F6 # <cjk>
+0x88A7 U+9022 # <cjk>
+0x88A8 U+8475 # <cjk>
+0x88A9 U+831C # <cjk>
+0x88AA U+7A50 # <cjk>
+0x88AB U+60AA # <cjk>
+0x88AC U+63E1 # <cjk>
+0x88AD U+6E25 # <cjk>
+0x88AE U+65ED # <cjk>
+0x88AF U+8466 # <cjk>
+0x88B0 U+82A6 # <cjk>
+0x88B1 U+9BF5 # <cjk>
+0x88B2 U+6893 # <cjk>
+0x88B3 U+5727 # <cjk>
+0x88B4 U+65A1 # <cjk>
+0x88B5 U+6271 # <cjk>
+0x88B6 U+5B9B # <cjk>
+0x88B7 U+59D0 # <cjk>
+0x88B8 U+867B # <cjk>
+0x88B9 U+98F4 # <cjk>
+0x88BA U+7D62 # <cjk>
+0x88BB U+7DBE # <cjk>
+0x88BC U+9B8E # <cjk>
+0x88BD U+6216 # <cjk>
+0x88BE U+7C9F # <cjk>
+0x88BF U+88B7 # <cjk>
+0x88C0 U+5B89 # <cjk>
+0x88C1 U+5EB5 # <cjk>
+0x88C2 U+6309 # <cjk>
+0x88C3 U+6697 # <cjk>
+0x88C4 U+6848 # <cjk>
+0x88C5 U+95C7 # <cjk>
+0x88C6 U+978D # <cjk>
+0x88C7 U+674F # <cjk>
+0x88C8 U+4EE5 # <cjk>
+0x88C9 U+4F0A # <cjk>
+0x88CA U+4F4D # <cjk>
+0x88CB U+4F9D # <cjk>
+0x88CC U+5049 # <cjk>
+0x88CD U+56F2 # <cjk>
+0x88CE U+5937 # <cjk>
+0x88CF U+59D4 # <cjk>
+0x88D0 U+5A01 # <cjk>
+0x88D1 U+5C09 # <cjk>
+0x88D2 U+60DF # <cjk>
+0x88D3 U+610F # <cjk>
+0x88D4 U+6170 # <cjk>
+0x88D5 U+6613 # <cjk>
+0x88D6 U+6905 # <cjk>
+0x88D7 U+70BA # <cjk>
+0x88D8 U+754F # <cjk>
+0x88D9 U+7570 # <cjk>
+0x88DA U+79FB # <cjk>
+0x88DB U+7DAD # <cjk>
+0x88DC U+7DEF # <cjk>
+0x88DD U+80C3 # <cjk>
+0x88DE U+840E # <cjk>
+0x88DF U+8863 # <cjk>
+0x88E0 U+8B02 # <cjk>
+0x88E1 U+9055 # <cjk>
+0x88E2 U+907A # <cjk>
+0x88E3 U+533B # <cjk>
+0x88E4 U+4E95 # <cjk>
+0x88E5 U+4EA5 # <cjk>
+0x88E6 U+57DF # <cjk>
+0x88E7 U+80B2 # <cjk>
+0x88E8 U+90C1 # <cjk>
+0x88E9 U+78EF # <cjk>
+0x88EA U+4E00 # <cjk>
+0x88EB U+58F1 # <cjk>
+0x88EC U+6EA2 # <cjk>
+0x88ED U+9038 # <cjk>
+0x88EE U+7A32 # <cjk>
+0x88EF U+8328 # <cjk>
+0x88F0 U+828B # <cjk>
+0x88F1 U+9C2F # <cjk>
+0x88F2 U+5141 # <cjk>
+0x88F3 U+5370 # <cjk>
+0x88F4 U+54BD # <cjk>
+0x88F5 U+54E1 # <cjk>
+0x88F6 U+56E0 # <cjk>
+0x88F7 U+59FB # <cjk>
+0x88F8 U+5F15 # <cjk>
+0x88F9 U+98F2 # <cjk>
+0x88FA U+6DEB # <cjk>
+0x88FB U+80E4 # <cjk>
+0x88FC U+852D # <cjk>
+0x8940 U+9662 # <cjk>
+0x8941 U+9670 # <cjk>
+0x8942 U+96A0 # <cjk>
+0x8943 U+97FB # <cjk>
+0x8944 U+540B # <cjk>
+0x8945 U+53F3 # <cjk>
+0x8946 U+5B87 # <cjk>
+0x8947 U+70CF # <cjk>
+0x8948 U+7FBD # <cjk>
+0x8949 U+8FC2 # <cjk>
+0x894A U+96E8 # <cjk>
+0x894B U+536F # <cjk>
+0x894C U+9D5C # <cjk>
+0x894D U+7ABA # <cjk>
+0x894E U+4E11 # <cjk>
+0x894F U+7893 # <cjk>
+0x8950 U+81FC # <cjk>
+0x8951 U+6E26 # <cjk>
+0x8952 U+5618 # <cjk>
+0x8953 U+5504 # <cjk>
+0x8954 U+6B1D # <cjk>
+0x8955 U+851A # <cjk>
+0x8956 U+9C3B # <cjk>
+0x8957 U+59E5 # <cjk>
+0x8958 U+53A9 # <cjk>
+0x8959 U+6D66 # <cjk>
+0x895A U+74DC # <cjk>
+0x895B U+958F # <cjk>
+0x895C U+5642 # <cjk>
+0x895D U+4E91 # <cjk>
+0x895E U+904B # <cjk>
+0x895F U+96F2 # <cjk>
+0x8960 U+834F # <cjk>
+0x8961 U+990C # <cjk>
+0x8962 U+53E1 # <cjk>
+0x8963 U+55B6 # <cjk>
+0x8964 U+5B30 # <cjk>
+0x8965 U+5F71 # <cjk>
+0x8966 U+6620 # <cjk>
+0x8967 U+66F3 # <cjk>
+0x8968 U+6804 # <cjk>
+0x8969 U+6C38 # <cjk>
+0x896A U+6CF3 # <cjk>
+0x896B U+6D29 # <cjk>
+0x896C U+745B # <cjk>
+0x896D U+76C8 # <cjk>
+0x896E U+7A4E # <cjk>
+0x896F U+9834 # <cjk>
+0x8970 U+82F1 # <cjk>
+0x8971 U+885B # <cjk>
+0x8972 U+8A60 # <cjk>
+0x8973 U+92ED # <cjk>
+0x8974 U+6DB2 # <cjk>
+0x8975 U+75AB # <cjk>
+0x8976 U+76CA # <cjk>
+0x8977 U+99C5 # <cjk>
+0x8978 U+60A6 # <cjk>
+0x8979 U+8B01 # <cjk>
+0x897A U+8D8A # <cjk>
+0x897B U+95B2 # <cjk>
+0x897C U+698E # <cjk>
+0x897D U+53AD # <cjk>
+0x897E U+5186 # <cjk>
+0x8980 U+5712 # <cjk>
+0x8981 U+5830 # <cjk>
+0x8982 U+5944 # <cjk>
+0x8983 U+5BB4 # <cjk>
+0x8984 U+5EF6 # <cjk>
+0x8985 U+6028 # <cjk>
+0x8986 U+63A9 # <cjk>
+0x8987 U+63F4 # <cjk>
+0x8988 U+6CBF # <cjk>
+0x8989 U+6F14 # <cjk>
+0x898A U+708E # <cjk>
+0x898B U+7114 # <cjk>
+0x898C U+7159 # <cjk>
+0x898D U+71D5 # <cjk>
+0x898E U+733F # <cjk>
+0x898F U+7E01 # <cjk>
+0x8990 U+8276 # <cjk>
+0x8991 U+82D1 # <cjk>
+0x8992 U+8597 # <cjk>
+0x8993 U+9060 # <cjk>
+0x8994 U+925B # <cjk>
+0x8995 U+9D1B # <cjk>
+0x8996 U+5869 # <cjk>
+0x8997 U+65BC # <cjk>
+0x8998 U+6C5A # <cjk>
+0x8999 U+7525 # <cjk>
+0x899A U+51F9 # <cjk>
+0x899B U+592E # <cjk>
+0x899C U+5965 # <cjk>
+0x899D U+5F80 # <cjk>
+0x899E U+5FDC # <cjk>
+0x899F U+62BC # <cjk>
+0x89A0 U+65FA # <cjk>
+0x89A1 U+6A2A # <cjk>
+0x89A2 U+6B27 # <cjk>
+0x89A3 U+6BB4 # <cjk>
+0x89A4 U+738B # <cjk>
+0x89A5 U+7FC1 # <cjk>
+0x89A6 U+8956 # <cjk>
+0x89A7 U+9D2C # <cjk>
+0x89A8 U+9D0E # <cjk>
+0x89A9 U+9EC4 # <cjk>
+0x89AA U+5CA1 # <cjk>
+0x89AB U+6C96 # <cjk>
+0x89AC U+837B # <cjk>
+0x89AD U+5104 # <cjk>
+0x89AE U+5C4B # <cjk>
+0x89AF U+61B6 # <cjk>
+0x89B0 U+81C6 # <cjk>
+0x89B1 U+6876 # <cjk>
+0x89B2 U+7261 # <cjk>
+0x89B3 U+4E59 # <cjk>
+0x89B4 U+4FFA # <cjk>
+0x89B5 U+5378 # <cjk>
+0x89B6 U+6069 # <cjk>
+0x89B7 U+6E29 # <cjk>
+0x89B8 U+7A4F # <cjk>
+0x89B9 U+97F3 # <cjk>
+0x89BA U+4E0B # <cjk>
+0x89BB U+5316 # <cjk>
+0x89BC U+4EEE # <cjk>
+0x89BD U+4F55 # <cjk>
+0x89BE U+4F3D # <cjk>
+0x89BF U+4FA1 # <cjk>
+0x89C0 U+4F73 # <cjk>
+0x89C1 U+52A0 # <cjk>
+0x89C2 U+53EF # <cjk>
+0x89C3 U+5609 # <cjk>
+0x89C4 U+590F # <cjk>
+0x89C5 U+5AC1 # <cjk>
+0x89C6 U+5BB6 # <cjk>
+0x89C7 U+5BE1 # <cjk>
+0x89C8 U+79D1 # <cjk>
+0x89C9 U+6687 # <cjk>
+0x89CA U+679C # <cjk>
+0x89CB U+67B6 # <cjk>
+0x89CC U+6B4C # <cjk>
+0x89CD U+6CB3 # <cjk>
+0x89CE U+706B # <cjk>
+0x89CF U+73C2 # <cjk>
+0x89D0 U+798D # <cjk>
+0x89D1 U+79BE # <cjk>
+0x89D2 U+7A3C # <cjk>
+0x89D3 U+7B87 # <cjk>
+0x89D4 U+82B1 # <cjk>
+0x89D5 U+82DB # <cjk>
+0x89D6 U+8304 # <cjk>
+0x89D7 U+8377 # <cjk>
+0x89D8 U+83EF # <cjk>
+0x89D9 U+83D3 # <cjk>
+0x89DA U+8766 # <cjk>
+0x89DB U+8AB2 # <cjk>
+0x89DC U+5629 # <cjk>
+0x89DD U+8CA8 # <cjk>
+0x89DE U+8FE6 # <cjk>
+0x89DF U+904E # <cjk>
+0x89E0 U+971E # <cjk>
+0x89E1 U+868A # <cjk>
+0x89E2 U+4FC4 # <cjk>
+0x89E3 U+5CE8 # <cjk>
+0x89E4 U+6211 # <cjk>
+0x89E5 U+7259 # <cjk>
+0x89E6 U+753B # <cjk>
+0x89E7 U+81E5 # <cjk>
+0x89E8 U+82BD # <cjk>
+0x89E9 U+86FE # <cjk>
+0x89EA U+8CC0 # <cjk>
+0x89EB U+96C5 # <cjk>
+0x89EC U+9913 # <cjk>
+0x89ED U+99D5 # <cjk>
+0x89EE U+4ECB # <cjk>
+0x89EF U+4F1A # <cjk>
+0x89F0 U+89E3 # <cjk>
+0x89F1 U+56DE # <cjk>
+0x89F2 U+584A # <cjk>
+0x89F3 U+58CA # <cjk>
+0x89F4 U+5EFB # <cjk>
+0x89F5 U+5FEB # <cjk>
+0x89F6 U+602A # <cjk>
+0x89F7 U+6094 # <cjk>
+0x89F8 U+6062 # <cjk>
+0x89F9 U+61D0 # <cjk>
+0x89FA U+6212 # <cjk>
+0x89FB U+62D0 # <cjk>
+0x89FC U+6539 # <cjk>
+0x8A40 U+9B41 # <cjk>
+0x8A41 U+6666 # <cjk>
+0x8A42 U+68B0 # <cjk>
+0x8A43 U+6D77 # <cjk>
+0x8A44 U+7070 # <cjk>
+0x8A45 U+754C # <cjk>
+0x8A46 U+7686 # <cjk>
+0x8A47 U+7D75 # <cjk>
+0x8A48 U+82A5 # <cjk>
+0x8A49 U+87F9 # <cjk>
+0x8A4A U+958B # <cjk>
+0x8A4B U+968E # <cjk>
+0x8A4C U+8C9D # <cjk>
+0x8A4D U+51F1 # <cjk>
+0x8A4E U+52BE # <cjk>
+0x8A4F U+5916 # <cjk>
+0x8A50 U+54B3 # <cjk>
+0x8A51 U+5BB3 # <cjk>
+0x8A52 U+5D16 # <cjk>
+0x8A53 U+6168 # <cjk>
+0x8A54 U+6982 # <cjk>
+0x8A55 U+6DAF # <cjk>
+0x8A56 U+788D # <cjk>
+0x8A57 U+84CB # <cjk>
+0x8A58 U+8857 # <cjk>
+0x8A59 U+8A72 # <cjk>
+0x8A5A U+93A7 # <cjk>
+0x8A5B U+9AB8 # <cjk>
+0x8A5C U+6D6C # <cjk>
+0x8A5D U+99A8 # <cjk>
+0x8A5E U+86D9 # <cjk>
+0x8A5F U+57A3 # <cjk>
+0x8A60 U+67FF # <cjk>
+0x8A61 U+86CE # <cjk>
+0x8A62 U+920E # <cjk>
+0x8A63 U+5283 # <cjk>
+0x8A64 U+5687 # <cjk>
+0x8A65 U+5404 # <cjk>
+0x8A66 U+5ED3 # <cjk>
+0x8A67 U+62E1 # <cjk>
+0x8A68 U+64B9 # <cjk>
+0x8A69 U+683C # <cjk>
+0x8A6A U+6838 # <cjk>
+0x8A6B U+6BBB # <cjk>
+0x8A6C U+7372 # <cjk>
+0x8A6D U+78BA # <cjk>
+0x8A6E U+7A6B # <cjk>
+0x8A6F U+899A # <cjk>
+0x8A70 U+89D2 # <cjk>
+0x8A71 U+8D6B # <cjk>
+0x8A72 U+8F03 # <cjk>
+0x8A73 U+90ED # <cjk>
+0x8A74 U+95A3 # <cjk>
+0x8A75 U+9694 # <cjk>
+0x8A76 U+9769 # <cjk>
+0x8A77 U+5B66 # <cjk>
+0x8A78 U+5CB3 # <cjk>
+0x8A79 U+697D # <cjk>
+0x8A7A U+984D # <cjk>
+0x8A7B U+984E # <cjk>
+0x8A7C U+639B # <cjk>
+0x8A7D U+7B20 # <cjk>
+0x8A7E U+6A2B # <cjk>
+0x8A80 U+6A7F # <cjk>
+0x8A81 U+68B6 # <cjk>
+0x8A82 U+9C0D # <cjk>
+0x8A83 U+6F5F # <cjk>
+0x8A84 U+5272 # <cjk>
+0x8A85 U+559D # <cjk>
+0x8A86 U+6070 # <cjk>
+0x8A87 U+62EC # <cjk>
+0x8A88 U+6D3B # <cjk>
+0x8A89 U+6E07 # <cjk>
+0x8A8A U+6ED1 # <cjk>
+0x8A8B U+845B # <cjk>
+0x8A8C U+8910 # <cjk>
+0x8A8D U+8F44 # <cjk>
+0x8A8E U+4E14 # <cjk>
+0x8A8F U+9C39 # <cjk>
+0x8A90 U+53F6 # <cjk>
+0x8A91 U+691B # <cjk>
+0x8A92 U+6A3A # <cjk>
+0x8A93 U+9784 # <cjk>
+0x8A94 U+682A # <cjk>
+0x8A95 U+515C # <cjk>
+0x8A96 U+7AC3 # <cjk>
+0x8A97 U+84B2 # <cjk>
+0x8A98 U+91DC # <cjk>
+0x8A99 U+938C # <cjk>
+0x8A9A U+565B # <cjk>
+0x8A9B U+9D28 # <cjk>
+0x8A9C U+6822 # <cjk>
+0x8A9D U+8305 # <cjk>
+0x8A9E U+8431 # <cjk>
+0x8A9F U+7CA5 # <cjk>
+0x8AA0 U+5208 # <cjk>
+0x8AA1 U+82C5 # <cjk>
+0x8AA2 U+74E6 # <cjk>
+0x8AA3 U+4E7E # <cjk>
+0x8AA4 U+4F83 # <cjk>
+0x8AA5 U+51A0 # <cjk>
+0x8AA6 U+5BD2 # <cjk>
+0x8AA7 U+520A # <cjk>
+0x8AA8 U+52D8 # <cjk>
+0x8AA9 U+52E7 # <cjk>
+0x8AAA U+5DFB # <cjk>
+0x8AAB U+559A # <cjk>
+0x8AAC U+582A # <cjk>
+0x8AAD U+59E6 # <cjk>
+0x8AAE U+5B8C # <cjk>
+0x8AAF U+5B98 # <cjk>
+0x8AB0 U+5BDB # <cjk>
+0x8AB1 U+5E72 # <cjk>
+0x8AB2 U+5E79 # <cjk>
+0x8AB3 U+60A3 # <cjk>
+0x8AB4 U+611F # <cjk>
+0x8AB5 U+6163 # <cjk>
+0x8AB6 U+61BE # <cjk>
+0x8AB7 U+63DB # <cjk>
+0x8AB8 U+6562 # <cjk>
+0x8AB9 U+67D1 # <cjk>
+0x8ABA U+6853 # <cjk>
+0x8ABB U+68FA # <cjk>
+0x8ABC U+6B3E # <cjk>
+0x8ABD U+6B53 # <cjk>
+0x8ABE U+6C57 # <cjk>
+0x8ABF U+6F22 # <cjk>
+0x8AC0 U+6F97 # <cjk>
+0x8AC1 U+6F45 # <cjk>
+0x8AC2 U+74B0 # <cjk>
+0x8AC3 U+7518 # <cjk>
+0x8AC4 U+76E3 # <cjk>
+0x8AC5 U+770B # <cjk>
+0x8AC6 U+7AFF # <cjk>
+0x8AC7 U+7BA1 # <cjk>
+0x8AC8 U+7C21 # <cjk>
+0x8AC9 U+7DE9 # <cjk>
+0x8ACA U+7F36 # <cjk>
+0x8ACB U+7FF0 # <cjk>
+0x8ACC U+809D # <cjk>
+0x8ACD U+8266 # <cjk>
+0x8ACE U+839E # <cjk>
+0x8ACF U+89B3 # <cjk>
+0x8AD0 U+8ACC # <cjk>
+0x8AD1 U+8CAB # <cjk>
+0x8AD2 U+9084 # <cjk>
+0x8AD3 U+9451 # <cjk>
+0x8AD4 U+9593 # <cjk>
+0x8AD5 U+9591 # <cjk>
+0x8AD6 U+95A2 # <cjk>
+0x8AD7 U+9665 # <cjk>
+0x8AD8 U+97D3 # <cjk>
+0x8AD9 U+9928 # <cjk>
+0x8ADA U+8218 # <cjk>
+0x8ADB U+4E38 # <cjk>
+0x8ADC U+542B # <cjk>
+0x8ADD U+5CB8 # <cjk>
+0x8ADE U+5DCC # <cjk>
+0x8ADF U+73A9 # <cjk>
+0x8AE0 U+764C # <cjk>
+0x8AE1 U+773C # <cjk>
+0x8AE2 U+5CA9 # <cjk>
+0x8AE3 U+7FEB # <cjk>
+0x8AE4 U+8D0B # <cjk>
+0x8AE5 U+96C1 # <cjk>
+0x8AE6 U+9811 # <cjk>
+0x8AE7 U+9854 # <cjk>
+0x8AE8 U+9858 # <cjk>
+0x8AE9 U+4F01 # <cjk>
+0x8AEA U+4F0E # <cjk>
+0x8AEB U+5371 # <cjk>
+0x8AEC U+559C # <cjk>
+0x8AED U+5668 # <cjk>
+0x8AEE U+57FA # <cjk>
+0x8AEF U+5947 # <cjk>
+0x8AF0 U+5B09 # <cjk>
+0x8AF1 U+5BC4 # <cjk>
+0x8AF2 U+5C90 # <cjk>
+0x8AF3 U+5E0C # <cjk>
+0x8AF4 U+5E7E # <cjk>
+0x8AF5 U+5FCC # <cjk>
+0x8AF6 U+63EE # <cjk>
+0x8AF7 U+673A # <cjk>
+0x8AF8 U+65D7 # <cjk>
+0x8AF9 U+65E2 # <cjk>
+0x8AFA U+671F # <cjk>
+0x8AFB U+68CB # <cjk>
+0x8AFC U+68C4 # <cjk>
+0x8B40 U+6A5F # <cjk>
+0x8B41 U+5E30 # <cjk>
+0x8B42 U+6BC5 # <cjk>
+0x8B43 U+6C17 # <cjk>
+0x8B44 U+6C7D # <cjk>
+0x8B45 U+757F # <cjk>
+0x8B46 U+7948 # <cjk>
+0x8B47 U+5B63 # <cjk>
+0x8B48 U+7A00 # <cjk>
+0x8B49 U+7D00 # <cjk>
+0x8B4A U+5FBD # <cjk>
+0x8B4B U+898F # <cjk>
+0x8B4C U+8A18 # <cjk>
+0x8B4D U+8CB4 # <cjk>
+0x8B4E U+8D77 # <cjk>
+0x8B4F U+8ECC # <cjk>
+0x8B50 U+8F1D # <cjk>
+0x8B51 U+98E2 # <cjk>
+0x8B52 U+9A0E # <cjk>
+0x8B53 U+9B3C # <cjk>
+0x8B54 U+4E80 # <cjk>
+0x8B55 U+507D # <cjk>
+0x8B56 U+5100 # <cjk>
+0x8B57 U+5993 # <cjk>
+0x8B58 U+5B9C # <cjk>
+0x8B59 U+622F # <cjk>
+0x8B5A U+6280 # <cjk>
+0x8B5B U+64EC # <cjk>
+0x8B5C U+6B3A # <cjk>
+0x8B5D U+72A0 # <cjk>
+0x8B5E U+7591 # <cjk>
+0x8B5F U+7947 # <cjk>
+0x8B60 U+7FA9 # <cjk>
+0x8B61 U+87FB # <cjk>
+0x8B62 U+8ABC # <cjk>
+0x8B63 U+8B70 # <cjk>
+0x8B64 U+63AC # <cjk>
+0x8B65 U+83CA # <cjk>
+0x8B66 U+97A0 # <cjk>
+0x8B67 U+5409 # <cjk>
+0x8B68 U+5403 # <cjk>
+0x8B69 U+55AB # <cjk>
+0x8B6A U+6854 # <cjk>
+0x8B6B U+6A58 # <cjk>
+0x8B6C U+8A70 # <cjk>
+0x8B6D U+7827 # <cjk>
+0x8B6E U+6775 # <cjk>
+0x8B6F U+9ECD # <cjk>
+0x8B70 U+5374 # <cjk>
+0x8B71 U+5BA2 # <cjk>
+0x8B72 U+811A # <cjk>
+0x8B73 U+8650 # <cjk>
+0x8B74 U+9006 # <cjk>
+0x8B75 U+4E18 # <cjk>
+0x8B76 U+4E45 # <cjk>
+0x8B77 U+4EC7 # <cjk>
+0x8B78 U+4F11 # <cjk>
+0x8B79 U+53CA # <cjk>
+0x8B7A U+5438 # <cjk>
+0x8B7B U+5BAE # <cjk>
+0x8B7C U+5F13 # <cjk>
+0x8B7D U+6025 # <cjk>
+0x8B7E U+6551 # <cjk>
+0x8B80 U+673D # <cjk>
+0x8B81 U+6C42 # <cjk>
+0x8B82 U+6C72 # <cjk>
+0x8B83 U+6CE3 # <cjk>
+0x8B84 U+7078 # <cjk>
+0x8B85 U+7403 # <cjk>
+0x8B86 U+7A76 # <cjk>
+0x8B87 U+7AAE # <cjk>
+0x8B88 U+7B08 # <cjk>
+0x8B89 U+7D1A # <cjk>
+0x8B8A U+7CFE # <cjk>
+0x8B8B U+7D66 # <cjk>
+0x8B8C U+65E7 # <cjk>
+0x8B8D U+725B # <cjk>
+0x8B8E U+53BB # <cjk>
+0x8B8F U+5C45 # <cjk>
+0x8B90 U+5DE8 # <cjk>
+0x8B91 U+62D2 # <cjk>
+0x8B92 U+62E0 # <cjk>
+0x8B93 U+6319 # <cjk>
+0x8B94 U+6E20 # <cjk>
+0x8B95 U+865A # <cjk>
+0x8B96 U+8A31 # <cjk>
+0x8B97 U+8DDD # <cjk>
+0x8B98 U+92F8 # <cjk>
+0x8B99 U+6F01 # <cjk>
+0x8B9A U+79A6 # <cjk>
+0x8B9B U+9B5A # <cjk>
+0x8B9C U+4EA8 # <cjk>
+0x8B9D U+4EAB # <cjk>
+0x8B9E U+4EAC # <cjk>
+0x8B9F U+4F9B # <cjk>
+0x8BA0 U+4FA0 # <cjk>
+0x8BA1 U+50D1 # <cjk>
+0x8BA2 U+5147 # <cjk>
+0x8BA3 U+7AF6 # <cjk>
+0x8BA4 U+5171 # <cjk>
+0x8BA5 U+51F6 # <cjk>
+0x8BA6 U+5354 # <cjk>
+0x8BA7 U+5321 # <cjk>
+0x8BA8 U+537F # <cjk>
+0x8BA9 U+53EB # <cjk>
+0x8BAA U+55AC # <cjk>
+0x8BAB U+5883 # <cjk>
+0x8BAC U+5CE1 # <cjk>
+0x8BAD U+5F37 # <cjk>
+0x8BAE U+5F4A # <cjk>
+0x8BAF U+602F # <cjk>
+0x8BB0 U+6050 # <cjk>
+0x8BB1 U+606D # <cjk>
+0x8BB2 U+631F # <cjk>
+0x8BB3 U+6559 # <cjk>
+0x8BB4 U+6A4B # <cjk>
+0x8BB5 U+6CC1 # <cjk>
+0x8BB6 U+72C2 # <cjk>
+0x8BB7 U+72ED # <cjk>
+0x8BB8 U+77EF # <cjk>
+0x8BB9 U+80F8 # <cjk>
+0x8BBA U+8105 # <cjk>
+0x8BBB U+8208 # <cjk>
+0x8BBC U+854E # <cjk>
+0x8BBD U+90F7 # <cjk>
+0x8BBE U+93E1 # <cjk>
+0x8BBF U+97FF # <cjk>
+0x8BC0 U+9957 # <cjk>
+0x8BC1 U+9A5A # <cjk>
+0x8BC2 U+4EF0 # <cjk>
+0x8BC3 U+51DD # <cjk>
+0x8BC4 U+5C2D # <cjk>
+0x8BC5 U+6681 # <cjk>
+0x8BC6 U+696D # <cjk>
+0x8BC7 U+5C40 # <cjk>
+0x8BC8 U+66F2 # <cjk>
+0x8BC9 U+6975 # <cjk>
+0x8BCA U+7389 # <cjk>
+0x8BCB U+6850 # <cjk>
+0x8BCC U+7C81 # <cjk>
+0x8BCD U+50C5 # <cjk>
+0x8BCE U+52E4 # <cjk>
+0x8BCF U+5747 # <cjk>
+0x8BD0 U+5DFE # <cjk>
+0x8BD1 U+9326 # <cjk>
+0x8BD2 U+65A4 # <cjk>
+0x8BD3 U+6B23 # <cjk>
+0x8BD4 U+6B3D # <cjk>
+0x8BD5 U+7434 # <cjk>
+0x8BD6 U+7981 # <cjk>
+0x8BD7 U+79BD # <cjk>
+0x8BD8 U+7B4B # <cjk>
+0x8BD9 U+7DCA # <cjk>
+0x8BDA U+82B9 # <cjk>
+0x8BDB U+83CC # <cjk>
+0x8BDC U+887F # <cjk>
+0x8BDD U+895F # <cjk>
+0x8BDE U+8B39 # <cjk>
+0x8BDF U+8FD1 # <cjk>
+0x8BE0 U+91D1 # <cjk>
+0x8BE1 U+541F # <cjk>
+0x8BE2 U+9280 # <cjk>
+0x8BE3 U+4E5D # <cjk>
+0x8BE4 U+5036 # <cjk>
+0x8BE5 U+53E5 # <cjk>
+0x8BE6 U+533A # <cjk>
+0x8BE7 U+72D7 # <cjk>
+0x8BE8 U+7396 # <cjk>
+0x8BE9 U+77E9 # <cjk>
+0x8BEA U+82E6 # <cjk>
+0x8BEB U+8EAF # <cjk>
+0x8BEC U+99C6 # <cjk>
+0x8BED U+99C8 # <cjk>
+0x8BEE U+99D2 # <cjk>
+0x8BEF U+5177 # <cjk>
+0x8BF0 U+611A # <cjk>
+0x8BF1 U+865E # <cjk>
+0x8BF2 U+55B0 # <cjk>
+0x8BF3 U+7A7A # <cjk>
+0x8BF4 U+5076 # <cjk>
+0x8BF5 U+5BD3 # <cjk>
+0x8BF6 U+9047 # <cjk>
+0x8BF7 U+9685 # <cjk>
+0x8BF8 U+4E32 # <cjk>
+0x8BF9 U+6ADB # <cjk>
+0x8BFA U+91E7 # <cjk>
+0x8BFB U+5C51 # <cjk>
+0x8BFC U+5C48 # <cjk>
+0x8C40 U+6398 # <cjk>
+0x8C41 U+7A9F # <cjk>
+0x8C42 U+6C93 # <cjk>
+0x8C43 U+9774 # <cjk>
+0x8C44 U+8F61 # <cjk>
+0x8C45 U+7AAA # <cjk>
+0x8C46 U+718A # <cjk>
+0x8C47 U+9688 # <cjk>
+0x8C48 U+7C82 # <cjk>
+0x8C49 U+6817 # <cjk>
+0x8C4A U+7E70 # <cjk>
+0x8C4B U+6851 # <cjk>
+0x8C4C U+936C # <cjk>
+0x8C4D U+52F2 # <cjk>
+0x8C4E U+541B # <cjk>
+0x8C4F U+85AB # <cjk>
+0x8C50 U+8A13 # <cjk>
+0x8C51 U+7FA4 # <cjk>
+0x8C52 U+8ECD # <cjk>
+0x8C53 U+90E1 # <cjk>
+0x8C54 U+5366 # <cjk>
+0x8C55 U+8888 # <cjk>
+0x8C56 U+7941 # <cjk>
+0x8C57 U+4FC2 # <cjk>
+0x8C58 U+50BE # <cjk>
+0x8C59 U+5211 # <cjk>
+0x8C5A U+5144 # <cjk>
+0x8C5B U+5553 # <cjk>
+0x8C5C U+572D # <cjk>
+0x8C5D U+73EA # <cjk>
+0x8C5E U+578B # <cjk>
+0x8C5F U+5951 # <cjk>
+0x8C60 U+5F62 # <cjk>
+0x8C61 U+5F84 # <cjk>
+0x8C62 U+6075 # <cjk>
+0x8C63 U+6176 # <cjk>
+0x8C64 U+6167 # <cjk>
+0x8C65 U+61A9 # <cjk>
+0x8C66 U+63B2 # <cjk>
+0x8C67 U+643A # <cjk>
+0x8C68 U+656C # <cjk>
+0x8C69 U+666F # <cjk>
+0x8C6A U+6842 # <cjk>
+0x8C6B U+6E13 # <cjk>
+0x8C6C U+7566 # <cjk>
+0x8C6D U+7A3D # <cjk>
+0x8C6E U+7CFB # <cjk>
+0x8C6F U+7D4C # <cjk>
+0x8C70 U+7D99 # <cjk>
+0x8C71 U+7E4B # <cjk>
+0x8C72 U+7F6B # <cjk>
+0x8C73 U+830E # <cjk>
+0x8C74 U+834A # <cjk>
+0x8C75 U+86CD # <cjk>
+0x8C76 U+8A08 # <cjk>
+0x8C77 U+8A63 # <cjk>
+0x8C78 U+8B66 # <cjk>
+0x8C79 U+8EFD # <cjk>
+0x8C7A U+981A # <cjk>
+0x8C7B U+9D8F # <cjk>
+0x8C7C U+82B8 # <cjk>
+0x8C7D U+8FCE # <cjk>
+0x8C7E U+9BE8 # <cjk>
+0x8C80 U+5287 # <cjk>
+0x8C81 U+621F # <cjk>
+0x8C82 U+6483 # <cjk>
+0x8C83 U+6FC0 # <cjk>
+0x8C84 U+9699 # <cjk>
+0x8C85 U+6841 # <cjk>
+0x8C86 U+5091 # <cjk>
+0x8C87 U+6B20 # <cjk>
+0x8C88 U+6C7A # <cjk>
+0x8C89 U+6F54 # <cjk>
+0x8C8A U+7A74 # <cjk>
+0x8C8B U+7D50 # <cjk>
+0x8C8C U+8840 # <cjk>
+0x8C8D U+8A23 # <cjk>
+0x8C8E U+6708 # <cjk>
+0x8C8F U+4EF6 # <cjk>
+0x8C90 U+5039 # <cjk>
+0x8C91 U+5026 # <cjk>
+0x8C92 U+5065 # <cjk>
+0x8C93 U+517C # <cjk>
+0x8C94 U+5238 # <cjk>
+0x8C95 U+5263 # <cjk>
+0x8C96 U+55A7 # <cjk>
+0x8C97 U+570F # <cjk>
+0x8C98 U+5805 # <cjk>
+0x8C99 U+5ACC # <cjk>
+0x8C9A U+5EFA # <cjk>
+0x8C9B U+61B2 # <cjk>
+0x8C9C U+61F8 # <cjk>
+0x8C9D U+62F3 # <cjk>
+0x8C9E U+6372 # <cjk>
+0x8C9F U+691C # <cjk>
+0x8CA0 U+6A29 # <cjk>
+0x8CA1 U+727D # <cjk>
+0x8CA2 U+72AC # <cjk>
+0x8CA3 U+732E # <cjk>
+0x8CA4 U+7814 # <cjk>
+0x8CA5 U+786F # <cjk>
+0x8CA6 U+7D79 # <cjk>
+0x8CA7 U+770C # <cjk>
+0x8CA8 U+80A9 # <cjk>
+0x8CA9 U+898B # <cjk>
+0x8CAA U+8B19 # <cjk>
+0x8CAB U+8CE2 # <cjk>
+0x8CAC U+8ED2 # <cjk>
+0x8CAD U+9063 # <cjk>
+0x8CAE U+9375 # <cjk>
+0x8CAF U+967A # <cjk>
+0x8CB0 U+9855 # <cjk>
+0x8CB1 U+9A13 # <cjk>
+0x8CB2 U+9E78 # <cjk>
+0x8CB3 U+5143 # <cjk>
+0x8CB4 U+539F # <cjk>
+0x8CB5 U+53B3 # <cjk>
+0x8CB6 U+5E7B # <cjk>
+0x8CB7 U+5F26 # <cjk>
+0x8CB8 U+6E1B # <cjk>
+0x8CB9 U+6E90 # <cjk>
+0x8CBA U+7384 # <cjk>
+0x8CBB U+73FE # <cjk>
+0x8CBC U+7D43 # <cjk>
+0x8CBD U+8237 # <cjk>
+0x8CBE U+8A00 # <cjk>
+0x8CBF U+8AFA # <cjk>
+0x8CC0 U+9650 # <cjk>
+0x8CC1 U+4E4E # <cjk>
+0x8CC2 U+500B # <cjk>
+0x8CC3 U+53E4 # <cjk>
+0x8CC4 U+547C # <cjk>
+0x8CC5 U+56FA # <cjk>
+0x8CC6 U+59D1 # <cjk>
+0x8CC7 U+5B64 # <cjk>
+0x8CC8 U+5DF1 # <cjk>
+0x8CC9 U+5EAB # <cjk>
+0x8CCA U+5F27 # <cjk>
+0x8CCB U+6238 # <cjk>
+0x8CCC U+6545 # <cjk>
+0x8CCD U+67AF # <cjk>
+0x8CCE U+6E56 # <cjk>
+0x8CCF U+72D0 # <cjk>
+0x8CD0 U+7CCA # <cjk>
+0x8CD1 U+88B4 # <cjk>
+0x8CD2 U+80A1 # <cjk>
+0x8CD3 U+80E1 # <cjk>
+0x8CD4 U+83F0 # <cjk>
+0x8CD5 U+864E # <cjk>
+0x8CD6 U+8A87 # <cjk>
+0x8CD7 U+8DE8 # <cjk>
+0x8CD8 U+9237 # <cjk>
+0x8CD9 U+96C7 # <cjk>
+0x8CDA U+9867 # <cjk>
+0x8CDB U+9F13 # <cjk>
+0x8CDC U+4E94 # <cjk>
+0x8CDD U+4E92 # <cjk>
+0x8CDE U+4F0D # <cjk>
+0x8CDF U+5348 # <cjk>
+0x8CE0 U+5449 # <cjk>
+0x8CE1 U+543E # <cjk>
+0x8CE2 U+5A2F # <cjk>
+0x8CE3 U+5F8C # <cjk>
+0x8CE4 U+5FA1 # <cjk>
+0x8CE5 U+609F # <cjk>
+0x8CE6 U+68A7 # <cjk>
+0x8CE7 U+6A8E # <cjk>
+0x8CE8 U+745A # <cjk>
+0x8CE9 U+7881 # <cjk>
+0x8CEA U+8A9E # <cjk>
+0x8CEB U+8AA4 # <cjk>
+0x8CEC U+8B77 # <cjk>
+0x8CED U+9190 # <cjk>
+0x8CEE U+4E5E # <cjk>
+0x8CEF U+9BC9 # <cjk>
+0x8CF0 U+4EA4 # <cjk>
+0x8CF1 U+4F7C # <cjk>
+0x8CF2 U+4FAF # <cjk>
+0x8CF3 U+5019 # <cjk>
+0x8CF4 U+5016 # <cjk>
+0x8CF5 U+5149 # <cjk>
+0x8CF6 U+516C # <cjk>
+0x8CF7 U+529F # <cjk>
+0x8CF8 U+52B9 # <cjk>
+0x8CF9 U+52FE # <cjk>
+0x8CFA U+539A # <cjk>
+0x8CFB U+53E3 # <cjk>
+0x8CFC U+5411 # <cjk>
+0x8D40 U+540E # <cjk>
+0x8D41 U+5589 # <cjk>
+0x8D42 U+5751 # <cjk>
+0x8D43 U+57A2 # <cjk>
+0x8D44 U+597D # <cjk>
+0x8D45 U+5B54 # <cjk>
+0x8D46 U+5B5D # <cjk>
+0x8D47 U+5B8F # <cjk>
+0x8D48 U+5DE5 # <cjk>
+0x8D49 U+5DE7 # <cjk>
+0x8D4A U+5DF7 # <cjk>
+0x8D4B U+5E78 # <cjk>
+0x8D4C U+5E83 # <cjk>
+0x8D4D U+5E9A # <cjk>
+0x8D4E U+5EB7 # <cjk>
+0x8D4F U+5F18 # <cjk>
+0x8D50 U+6052 # <cjk>
+0x8D51 U+614C # <cjk>
+0x8D52 U+6297 # <cjk>
+0x8D53 U+62D8 # <cjk>
+0x8D54 U+63A7 # <cjk>
+0x8D55 U+653B # <cjk>
+0x8D56 U+6602 # <cjk>
+0x8D57 U+6643 # <cjk>
+0x8D58 U+66F4 # <cjk>
+0x8D59 U+676D # <cjk>
+0x8D5A U+6821 # <cjk>
+0x8D5B U+6897 # <cjk>
+0x8D5C U+69CB # <cjk>
+0x8D5D U+6C5F # <cjk>
+0x8D5E U+6D2A # <cjk>
+0x8D5F U+6D69 # <cjk>
+0x8D60 U+6E2F # <cjk>
+0x8D61 U+6E9D # <cjk>
+0x8D62 U+7532 # <cjk>
+0x8D63 U+7687 # <cjk>
+0x8D64 U+786C # <cjk>
+0x8D65 U+7A3F # <cjk>
+0x8D66 U+7CE0 # <cjk>
+0x8D67 U+7D05 # <cjk>
+0x8D68 U+7D18 # <cjk>
+0x8D69 U+7D5E # <cjk>
+0x8D6A U+7DB1 # <cjk>
+0x8D6B U+8015 # <cjk>
+0x8D6C U+8003 # <cjk>
+0x8D6D U+80AF # <cjk>
+0x8D6E U+80B1 # <cjk>
+0x8D6F U+8154 # <cjk>
+0x8D70 U+818F # <cjk>
+0x8D71 U+822A # <cjk>
+0x8D72 U+8352 # <cjk>
+0x8D73 U+884C # <cjk>
+0x8D74 U+8861 # <cjk>
+0x8D75 U+8B1B # <cjk>
+0x8D76 U+8CA2 # <cjk>
+0x8D77 U+8CFC # <cjk>
+0x8D78 U+90CA # <cjk>
+0x8D79 U+9175 # <cjk>
+0x8D7A U+9271 # <cjk>
+0x8D7B U+783F # <cjk>
+0x8D7C U+92FC # <cjk>
+0x8D7D U+95A4 # <cjk>
+0x8D7E U+964D # <cjk>
+0x8D80 U+9805 # <cjk>
+0x8D81 U+9999 # <cjk>
+0x8D82 U+9AD8 # <cjk>
+0x8D83 U+9D3B # <cjk>
+0x8D84 U+525B # <cjk>
+0x8D85 U+52AB # <cjk>
+0x8D86 U+53F7 # <cjk>
+0x8D87 U+5408 # <cjk>
+0x8D88 U+58D5 # <cjk>
+0x8D89 U+62F7 # <cjk>
+0x8D8A U+6FE0 # <cjk>
+0x8D8B U+8C6A # <cjk>
+0x8D8C U+8F5F # <cjk>
+0x8D8D U+9EB9 # <cjk>
+0x8D8E U+514B # <cjk>
+0x8D8F U+523B # <cjk>
+0x8D90 U+544A # <cjk>
+0x8D91 U+56FD # <cjk>
+0x8D92 U+7A40 # <cjk>
+0x8D93 U+9177 # <cjk>
+0x8D94 U+9D60 # <cjk>
+0x8D95 U+9ED2 # <cjk>
+0x8D96 U+7344 # <cjk>
+0x8D97 U+6F09 # <cjk>
+0x8D98 U+8170 # <cjk>
+0x8D99 U+7511 # <cjk>
+0x8D9A U+5FFD # <cjk>
+0x8D9B U+60DA # <cjk>
+0x8D9C U+9AA8 # <cjk>
+0x8D9D U+72DB # <cjk>
+0x8D9E U+8FBC # <cjk>
+0x8D9F U+6B64 # <cjk>
+0x8DA0 U+9803 # <cjk>
+0x8DA1 U+4ECA # <cjk>
+0x8DA2 U+56F0 # <cjk>
+0x8DA3 U+5764 # <cjk>
+0x8DA4 U+58BE # <cjk>
+0x8DA5 U+5A5A # <cjk>
+0x8DA6 U+6068 # <cjk>
+0x8DA7 U+61C7 # <cjk>
+0x8DA8 U+660F # <cjk>
+0x8DA9 U+6606 # <cjk>
+0x8DAA U+6839 # <cjk>
+0x8DAB U+68B1 # <cjk>
+0x8DAC U+6DF7 # <cjk>
+0x8DAD U+75D5 # <cjk>
+0x8DAE U+7D3A # <cjk>
+0x8DAF U+826E # <cjk>
+0x8DB0 U+9B42 # <cjk>
+0x8DB1 U+4E9B # <cjk>
+0x8DB2 U+4F50 # <cjk>
+0x8DB3 U+53C9 # <cjk>
+0x8DB4 U+5506 # <cjk>
+0x8DB5 U+5D6F # <cjk>
+0x8DB6 U+5DE6 # <cjk>
+0x8DB7 U+5DEE # <cjk>
+0x8DB8 U+67FB # <cjk>
+0x8DB9 U+6C99 # <cjk>
+0x8DBA U+7473 # <cjk>
+0x8DBB U+7802 # <cjk>
+0x8DBC U+8A50 # <cjk>
+0x8DBD U+9396 # <cjk>
+0x8DBE U+88DF # <cjk>
+0x8DBF U+5750 # <cjk>
+0x8DC0 U+5EA7 # <cjk>
+0x8DC1 U+632B # <cjk>
+0x8DC2 U+50B5 # <cjk>
+0x8DC3 U+50AC # <cjk>
+0x8DC4 U+518D # <cjk>
+0x8DC5 U+6700 # <cjk>
+0x8DC6 U+54C9 # <cjk>
+0x8DC7 U+585E # <cjk>
+0x8DC8 U+59BB # <cjk>
+0x8DC9 U+5BB0 # <cjk>
+0x8DCA U+5F69 # <cjk>
+0x8DCB U+624D # <cjk>
+0x8DCC U+63A1 # <cjk>
+0x8DCD U+683D # <cjk>
+0x8DCE U+6B73 # <cjk>
+0x8DCF U+6E08 # <cjk>
+0x8DD0 U+707D # <cjk>
+0x8DD1 U+91C7 # <cjk>
+0x8DD2 U+7280 # <cjk>
+0x8DD3 U+7815 # <cjk>
+0x8DD4 U+7826 # <cjk>
+0x8DD5 U+796D # <cjk>
+0x8DD6 U+658E # <cjk>
+0x8DD7 U+7D30 # <cjk>
+0x8DD8 U+83DC # <cjk>
+0x8DD9 U+88C1 # <cjk>
+0x8DDA U+8F09 # <cjk>
+0x8DDB U+969B # <cjk>
+0x8DDC U+5264 # <cjk>
+0x8DDD U+5728 # <cjk>
+0x8DDE U+6750 # <cjk>
+0x8DDF U+7F6A # <cjk>
+0x8DE0 U+8CA1 # <cjk>
+0x8DE1 U+51B4 # <cjk>
+0x8DE2 U+5742 # <cjk>
+0x8DE3 U+962A # <cjk>
+0x8DE4 U+583A # <cjk>
+0x8DE5 U+698A # <cjk>
+0x8DE6 U+80B4 # <cjk>
+0x8DE7 U+54B2 # <cjk>
+0x8DE8 U+5D0E # <cjk>
+0x8DE9 U+57FC # <cjk>
+0x8DEA U+7895 # <cjk>
+0x8DEB U+9DFA # <cjk>
+0x8DEC U+4F5C # <cjk>
+0x8DED U+524A # <cjk>
+0x8DEE U+548B # <cjk>
+0x8DEF U+643E # <cjk>
+0x8DF0 U+6628 # <cjk>
+0x8DF1 U+6714 # <cjk>
+0x8DF2 U+67F5 # <cjk>
+0x8DF3 U+7A84 # <cjk>
+0x8DF4 U+7B56 # <cjk>
+0x8DF5 U+7D22 # <cjk>
+0x8DF6 U+932F # <cjk>
+0x8DF7 U+685C # <cjk>
+0x8DF8 U+9BAD # <cjk>
+0x8DF9 U+7B39 # <cjk>
+0x8DFA U+5319 # <cjk>
+0x8DFB U+518A # <cjk>
+0x8DFC U+5237 # <cjk>
+0x8E40 U+5BDF # <cjk>
+0x8E41 U+62F6 # <cjk>
+0x8E42 U+64AE # <cjk>
+0x8E43 U+64E6 # <cjk>
+0x8E44 U+672D # <cjk>
+0x8E45 U+6BBA # <cjk>
+0x8E46 U+85A9 # <cjk>
+0x8E47 U+96D1 # <cjk>
+0x8E48 U+7690 # <cjk>
+0x8E49 U+9BD6 # <cjk>
+0x8E4A U+634C # <cjk>
+0x8E4B U+9306 # <cjk>
+0x8E4C U+9BAB # <cjk>
+0x8E4D U+76BF # <cjk>
+0x8E4E U+6652 # <cjk>
+0x8E4F U+4E09 # <cjk>
+0x8E50 U+5098 # <cjk>
+0x8E51 U+53C2 # <cjk>
+0x8E52 U+5C71 # <cjk>
+0x8E53 U+60E8 # <cjk>
+0x8E54 U+6492 # <cjk>
+0x8E55 U+6563 # <cjk>
+0x8E56 U+685F # <cjk>
+0x8E57 U+71E6 # <cjk>
+0x8E58 U+73CA # <cjk>
+0x8E59 U+7523 # <cjk>
+0x8E5A U+7B97 # <cjk>
+0x8E5B U+7E82 # <cjk>
+0x8E5C U+8695 # <cjk>
+0x8E5D U+8B83 # <cjk>
+0x8E5E U+8CDB # <cjk>
+0x8E5F U+9178 # <cjk>
+0x8E60 U+9910 # <cjk>
+0x8E61 U+65AC # <cjk>
+0x8E62 U+66AB # <cjk>
+0x8E63 U+6B8B # <cjk>
+0x8E64 U+4ED5 # <cjk>
+0x8E65 U+4ED4 # <cjk>
+0x8E66 U+4F3A # <cjk>
+0x8E67 U+4F7F # <cjk>
+0x8E68 U+523A # <cjk>
+0x8E69 U+53F8 # <cjk>
+0x8E6A U+53F2 # <cjk>
+0x8E6B U+55E3 # <cjk>
+0x8E6C U+56DB # <cjk>
+0x8E6D U+58EB # <cjk>
+0x8E6E U+59CB # <cjk>
+0x8E6F U+59C9 # <cjk>
+0x8E70 U+59FF # <cjk>
+0x8E71 U+5B50 # <cjk>
+0x8E72 U+5C4D # <cjk>
+0x8E73 U+5E02 # <cjk>
+0x8E74 U+5E2B # <cjk>
+0x8E75 U+5FD7 # <cjk>
+0x8E76 U+601D # <cjk>
+0x8E77 U+6307 # <cjk>
+0x8E78 U+652F # <cjk>
+0x8E79 U+5B5C # <cjk>
+0x8E7A U+65AF # <cjk>
+0x8E7B U+65BD # <cjk>
+0x8E7C U+65E8 # <cjk>
+0x8E7D U+679D # <cjk>
+0x8E7E U+6B62 # <cjk>
+0x8E80 U+6B7B # <cjk>
+0x8E81 U+6C0F # <cjk>
+0x8E82 U+7345 # <cjk>
+0x8E83 U+7949 # <cjk>
+0x8E84 U+79C1 # <cjk>
+0x8E85 U+7CF8 # <cjk>
+0x8E86 U+7D19 # <cjk>
+0x8E87 U+7D2B # <cjk>
+0x8E88 U+80A2 # <cjk>
+0x8E89 U+8102 # <cjk>
+0x8E8A U+81F3 # <cjk>
+0x8E8B U+8996 # <cjk>
+0x8E8C U+8A5E # <cjk>
+0x8E8D U+8A69 # <cjk>
+0x8E8E U+8A66 # <cjk>
+0x8E8F U+8A8C # <cjk>
+0x8E90 U+8AEE # <cjk>
+0x8E91 U+8CC7 # <cjk>
+0x8E92 U+8CDC # <cjk>
+0x8E93 U+96CC # <cjk>
+0x8E94 U+98FC # <cjk>
+0x8E95 U+6B6F # <cjk>
+0x8E96 U+4E8B # <cjk>
+0x8E97 U+4F3C # <cjk>
+0x8E98 U+4F8D # <cjk>
+0x8E99 U+5150 # <cjk>
+0x8E9A U+5B57 # <cjk>
+0x8E9B U+5BFA # <cjk>
+0x8E9C U+6148 # <cjk>
+0x8E9D U+6301 # <cjk>
+0x8E9E U+6642 # <cjk>
+0x8E9F U+6B21 # <cjk>
+0x8EA0 U+6ECB # <cjk>
+0x8EA1 U+6CBB # <cjk>
+0x8EA2 U+723E # <cjk>
+0x8EA3 U+74BD # <cjk>
+0x8EA4 U+75D4 # <cjk>
+0x8EA5 U+78C1 # <cjk>
+0x8EA6 U+793A # <cjk>
+0x8EA7 U+800C # <cjk>
+0x8EA8 U+8033 # <cjk>
+0x8EA9 U+81EA # <cjk>
+0x8EAA U+8494 # <cjk>
+0x8EAB U+8F9E # <cjk>
+0x8EAC U+6C50 # <cjk>
+0x8EAD U+9E7F # <cjk>
+0x8EAE U+5F0F # <cjk>
+0x8EAF U+8B58 # <cjk>
+0x8EB0 U+9D2B # <cjk>
+0x8EB1 U+7AFA # <cjk>
+0x8EB2 U+8EF8 # <cjk>
+0x8EB3 U+5B8D # <cjk>
+0x8EB4 U+96EB # <cjk>
+0x8EB5 U+4E03 # <cjk>
+0x8EB6 U+53F1 # <cjk>
+0x8EB7 U+57F7 # <cjk>
+0x8EB8 U+5931 # <cjk>
+0x8EB9 U+5AC9 # <cjk>
+0x8EBA U+5BA4 # <cjk>
+0x8EBB U+6089 # <cjk>
+0x8EBC U+6E7F # <cjk>
+0x8EBD U+6F06 # <cjk>
+0x8EBE U+75BE # <cjk>
+0x8EBF U+8CEA # <cjk>
+0x8EC0 U+5B9F # <cjk>
+0x8EC1 U+8500 # <cjk>
+0x8EC2 U+7BE0 # <cjk>
+0x8EC3 U+5072 # <cjk>
+0x8EC4 U+67F4 # <cjk>
+0x8EC5 U+829D # <cjk>
+0x8EC6 U+5C61 # <cjk>
+0x8EC7 U+854A # <cjk>
+0x8EC8 U+7E1E # <cjk>
+0x8EC9 U+820E # <cjk>
+0x8ECA U+5199 # <cjk>
+0x8ECB U+5C04 # <cjk>
+0x8ECC U+6368 # <cjk>
+0x8ECD U+8D66 # <cjk>
+0x8ECE U+659C # <cjk>
+0x8ECF U+716E # <cjk>
+0x8ED0 U+793E # <cjk>
+0x8ED1 U+7D17 # <cjk>
+0x8ED2 U+8005 # <cjk>
+0x8ED3 U+8B1D # <cjk>
+0x8ED4 U+8ECA # <cjk>
+0x8ED5 U+906E # <cjk>
+0x8ED6 U+86C7 # <cjk>
+0x8ED7 U+90AA # <cjk>
+0x8ED8 U+501F # <cjk>
+0x8ED9 U+52FA # <cjk>
+0x8EDA U+5C3A # <cjk>
+0x8EDB U+6753 # <cjk>
+0x8EDC U+707C # <cjk>
+0x8EDD U+7235 # <cjk>
+0x8EDE U+914C # <cjk>
+0x8EDF U+91C8 # <cjk>
+0x8EE0 U+932B # <cjk>
+0x8EE1 U+82E5 # <cjk>
+0x8EE2 U+5BC2 # <cjk>
+0x8EE3 U+5F31 # <cjk>
+0x8EE4 U+60F9 # <cjk>
+0x8EE5 U+4E3B # <cjk>
+0x8EE6 U+53D6 # <cjk>
+0x8EE7 U+5B88 # <cjk>
+0x8EE8 U+624B # <cjk>
+0x8EE9 U+6731 # <cjk>
+0x8EEA U+6B8A # <cjk>
+0x8EEB U+72E9 # <cjk>
+0x8EEC U+73E0 # <cjk>
+0x8EED U+7A2E # <cjk>
+0x8EEE U+816B # <cjk>
+0x8EEF U+8DA3 # <cjk>
+0x8EF0 U+9152 # <cjk>
+0x8EF1 U+9996 # <cjk>
+0x8EF2 U+5112 # <cjk>
+0x8EF3 U+53D7 # <cjk>
+0x8EF4 U+546A # <cjk>
+0x8EF5 U+5BFF # <cjk>
+0x8EF6 U+6388 # <cjk>
+0x8EF7 U+6A39 # <cjk>
+0x8EF8 U+7DAC # <cjk>
+0x8EF9 U+9700 # <cjk>
+0x8EFA U+56DA # <cjk>
+0x8EFB U+53CE # <cjk>
+0x8EFC U+5468 # <cjk>
+0x8F40 U+5B97 # <cjk>
+0x8F41 U+5C31 # <cjk>
+0x8F42 U+5DDE # <cjk>
+0x8F43 U+4FEE # <cjk>
+0x8F44 U+6101 # <cjk>
+0x8F45 U+62FE # <cjk>
+0x8F46 U+6D32 # <cjk>
+0x8F47 U+79C0 # <cjk>
+0x8F48 U+79CB # <cjk>
+0x8F49 U+7D42 # <cjk>
+0x8F4A U+7E4D # <cjk>
+0x8F4B U+7FD2 # <cjk>
+0x8F4C U+81ED # <cjk>
+0x8F4D U+821F # <cjk>
+0x8F4E U+8490 # <cjk>
+0x8F4F U+8846 # <cjk>
+0x8F50 U+8972 # <cjk>
+0x8F51 U+8B90 # <cjk>
+0x8F52 U+8E74 # <cjk>
+0x8F53 U+8F2F # <cjk>
+0x8F54 U+9031 # <cjk>
+0x8F55 U+914B # <cjk>
+0x8F56 U+916C # <cjk>
+0x8F57 U+96C6 # <cjk>
+0x8F58 U+919C # <cjk>
+0x8F59 U+4EC0 # <cjk>
+0x8F5A U+4F4F # <cjk>
+0x8F5B U+5145 # <cjk>
+0x8F5C U+5341 # <cjk>
+0x8F5D U+5F93 # <cjk>
+0x8F5E U+620E # <cjk>
+0x8F5F U+67D4 # <cjk>
+0x8F60 U+6C41 # <cjk>
+0x8F61 U+6E0B # <cjk>
+0x8F62 U+7363 # <cjk>
+0x8F63 U+7E26 # <cjk>
+0x8F64 U+91CD # <cjk>
+0x8F65 U+9283 # <cjk>
+0x8F66 U+53D4 # <cjk>
+0x8F67 U+5919 # <cjk>
+0x8F68 U+5BBF # <cjk>
+0x8F69 U+6DD1 # <cjk>
+0x8F6A U+795D # <cjk>
+0x8F6B U+7E2E # <cjk>
+0x8F6C U+7C9B # <cjk>
+0x8F6D U+587E # <cjk>
+0x8F6E U+719F # <cjk>
+0x8F6F U+51FA # <cjk>
+0x8F70 U+8853 # <cjk>
+0x8F71 U+8FF0 # <cjk>
+0x8F72 U+4FCA # <cjk>
+0x8F73 U+5CFB # <cjk>
+0x8F74 U+6625 # <cjk>
+0x8F75 U+77AC # <cjk>
+0x8F76 U+7AE3 # <cjk>
+0x8F77 U+821C # <cjk>
+0x8F78 U+99FF # <cjk>
+0x8F79 U+51C6 # <cjk>
+0x8F7A U+5FAA # <cjk>
+0x8F7B U+65EC # <cjk>
+0x8F7C U+696F # <cjk>
+0x8F7D U+6B89 # <cjk>
+0x8F7E U+6DF3 # <cjk>
+0x8F80 U+6E96 # <cjk>
+0x8F81 U+6F64 # <cjk>
+0x8F82 U+76FE # <cjk>
+0x8F83 U+7D14 # <cjk>
+0x8F84 U+5DE1 # <cjk>
+0x8F85 U+9075 # <cjk>
+0x8F86 U+9187 # <cjk>
+0x8F87 U+9806 # <cjk>
+0x8F88 U+51E6 # <cjk>
+0x8F89 U+521D # <cjk>
+0x8F8A U+6240 # <cjk>
+0x8F8B U+6691 # <cjk>
+0x8F8C U+66D9 # <cjk>
+0x8F8D U+6E1A # <cjk>
+0x8F8E U+5EB6 # <cjk>
+0x8F8F U+7DD2 # <cjk>
+0x8F90 U+7F72 # <cjk>
+0x8F91 U+66F8 # <cjk>
+0x8F92 U+85AF # <cjk>
+0x8F93 U+85F7 # <cjk>
+0x8F94 U+8AF8 # <cjk>
+0x8F95 U+52A9 # <cjk>
+0x8F96 U+53D9 # <cjk>
+0x8F97 U+5973 # <cjk>
+0x8F98 U+5E8F # <cjk>
+0x8F99 U+5F90 # <cjk>
+0x8F9A U+6055 # <cjk>
+0x8F9B U+92E4 # <cjk>
+0x8F9C U+9664 # <cjk>
+0x8F9D U+50B7 # <cjk>
+0x8F9E U+511F # <cjk>
+0x8F9F U+52DD # <cjk>
+0x8FA0 U+5320 # <cjk>
+0x8FA1 U+5347 # <cjk>
+0x8FA2 U+53EC # <cjk>
+0x8FA3 U+54E8 # <cjk>
+0x8FA4 U+5546 # <cjk>
+0x8FA5 U+5531 # <cjk>
+0x8FA6 U+5617 # <cjk>
+0x8FA7 U+5968 # <cjk>
+0x8FA8 U+59BE # <cjk>
+0x8FA9 U+5A3C # <cjk>
+0x8FAA U+5BB5 # <cjk>
+0x8FAB U+5C06 # <cjk>
+0x8FAC U+5C0F # <cjk>
+0x8FAD U+5C11 # <cjk>
+0x8FAE U+5C1A # <cjk>
+0x8FAF U+5E84 # <cjk>
+0x8FB0 U+5E8A # <cjk>
+0x8FB1 U+5EE0 # <cjk>
+0x8FB2 U+5F70 # <cjk>
+0x8FB3 U+627F # <cjk>
+0x8FB4 U+6284 # <cjk>
+0x8FB5 U+62DB # <cjk>
+0x8FB6 U+638C # <cjk>
+0x8FB7 U+6377 # <cjk>
+0x8FB8 U+6607 # <cjk>
+0x8FB9 U+660C # <cjk>
+0x8FBA U+662D # <cjk>
+0x8FBB U+6676 # <cjk>
+0x8FBC U+677E # <cjk>
+0x8FBD U+68A2 # <cjk>
+0x8FBE U+6A1F # <cjk>
+0x8FBF U+6A35 # <cjk>
+0x8FC0 U+6CBC # <cjk>
+0x8FC1 U+6D88 # <cjk>
+0x8FC2 U+6E09 # <cjk>
+0x8FC3 U+6E58 # <cjk>
+0x8FC4 U+713C # <cjk>
+0x8FC5 U+7126 # <cjk>
+0x8FC6 U+7167 # <cjk>
+0x8FC7 U+75C7 # <cjk>
+0x8FC8 U+7701 # <cjk>
+0x8FC9 U+785D # <cjk>
+0x8FCA U+7901 # <cjk>
+0x8FCB U+7965 # <cjk>
+0x8FCC U+79F0 # <cjk>
+0x8FCD U+7AE0 # <cjk>
+0x8FCE U+7B11 # <cjk>
+0x8FCF U+7CA7 # <cjk>
+0x8FD0 U+7D39 # <cjk>
+0x8FD1 U+8096 # <cjk>
+0x8FD2 U+83D6 # <cjk>
+0x8FD3 U+848B # <cjk>
+0x8FD4 U+8549 # <cjk>
+0x8FD5 U+885D # <cjk>
+0x8FD6 U+88F3 # <cjk>
+0x8FD7 U+8A1F # <cjk>
+0x8FD8 U+8A3C # <cjk>
+0x8FD9 U+8A54 # <cjk>
+0x8FDA U+8A73 # <cjk>
+0x8FDB U+8C61 # <cjk>
+0x8FDC U+8CDE # <cjk>
+0x8FDD U+91A4 # <cjk>
+0x8FDE U+9266 # <cjk>
+0x8FDF U+937E # <cjk>
+0x8FE0 U+9418 # <cjk>
+0x8FE1 U+969C # <cjk>
+0x8FE2 U+9798 # <cjk>
+0x8FE3 U+4E0A # <cjk>
+0x8FE4 U+4E08 # <cjk>
+0x8FE5 U+4E1E # <cjk>
+0x8FE6 U+4E57 # <cjk>
+0x8FE7 U+5197 # <cjk>
+0x8FE8 U+5270 # <cjk>
+0x8FE9 U+57CE # <cjk>
+0x8FEA U+5834 # <cjk>
+0x8FEB U+58CC # <cjk>
+0x8FEC U+5B22 # <cjk>
+0x8FED U+5E38 # <cjk>
+0x8FEE U+60C5 # <cjk>
+0x8FEF U+64FE # <cjk>
+0x8FF0 U+6761 # <cjk>
+0x8FF1 U+6756 # <cjk>
+0x8FF2 U+6D44 # <cjk>
+0x8FF3 U+72B6 # <cjk>
+0x8FF4 U+7573 # <cjk>
+0x8FF5 U+7A63 # <cjk>
+0x8FF6 U+84B8 # <cjk>
+0x8FF7 U+8B72 # <cjk>
+0x8FF8 U+91B8 # <cjk>
+0x8FF9 U+9320 # <cjk>
+0x8FFA U+5631 # <cjk>
+0x8FFB U+57F4 # <cjk>
+0x8FFC U+98FE # <cjk>
+0x9040 U+62ED # <cjk>
+0x9041 U+690D # <cjk>
+0x9042 U+6B96 # <cjk>
+0x9043 U+71ED # <cjk>
+0x9044 U+7E54 # <cjk>
+0x9045 U+8077 # <cjk>
+0x9046 U+8272 # <cjk>
+0x9047 U+89E6 # <cjk>
+0x9048 U+98DF # <cjk>
+0x9049 U+8755 # <cjk>
+0x904A U+8FB1 # <cjk>
+0x904B U+5C3B # <cjk>
+0x904C U+4F38 # <cjk>
+0x904D U+4FE1 # <cjk>
+0x904E U+4FB5 # <cjk>
+0x904F U+5507 # <cjk>
+0x9050 U+5A20 # <cjk>
+0x9051 U+5BDD # <cjk>
+0x9052 U+5BE9 # <cjk>
+0x9053 U+5FC3 # <cjk>
+0x9054 U+614E # <cjk>
+0x9055 U+632F # <cjk>
+0x9056 U+65B0 # <cjk>
+0x9057 U+664B # <cjk>
+0x9058 U+68EE # <cjk>
+0x9059 U+699B # <cjk>
+0x905A U+6D78 # <cjk>
+0x905B U+6DF1 # <cjk>
+0x905C U+7533 # <cjk>
+0x905D U+75B9 # <cjk>
+0x905E U+771F # <cjk>
+0x905F U+795E # <cjk>
+0x9060 U+79E6 # <cjk>
+0x9061 U+7D33 # <cjk>
+0x9062 U+81E3 # <cjk>
+0x9063 U+82AF # <cjk>
+0x9064 U+85AA # <cjk>
+0x9065 U+89AA # <cjk>
+0x9066 U+8A3A # <cjk>
+0x9067 U+8EAB # <cjk>
+0x9068 U+8F9B # <cjk>
+0x9069 U+9032 # <cjk>
+0x906A U+91DD # <cjk>
+0x906B U+9707 # <cjk>
+0x906C U+4EBA # <cjk>
+0x906D U+4EC1 # <cjk>
+0x906E U+5203 # <cjk>
+0x906F U+5875 # <cjk>
+0x9070 U+58EC # <cjk>
+0x9071 U+5C0B # <cjk>
+0x9072 U+751A # <cjk>
+0x9073 U+5C3D # <cjk>
+0x9074 U+814E # <cjk>
+0x9075 U+8A0A # <cjk>
+0x9076 U+8FC5 # <cjk>
+0x9077 U+9663 # <cjk>
+0x9078 U+976D # <cjk>
+0x9079 U+7B25 # <cjk>
+0x907A U+8ACF # <cjk>
+0x907B U+9808 # <cjk>
+0x907C U+9162 # <cjk>
+0x907D U+56F3 # <cjk>
+0x907E U+53A8 # <cjk>
+0x9080 U+9017 # <cjk>
+0x9081 U+5439 # <cjk>
+0x9082 U+5782 # <cjk>
+0x9083 U+5E25 # <cjk>
+0x9084 U+63A8 # <cjk>
+0x9085 U+6C34 # <cjk>
+0x9086 U+708A # <cjk>
+0x9087 U+7761 # <cjk>
+0x9088 U+7C8B # <cjk>
+0x9089 U+7FE0 # <cjk>
+0x908A U+8870 # <cjk>
+0x908B U+9042 # <cjk>
+0x908C U+9154 # <cjk>
+0x908D U+9310 # <cjk>
+0x908E U+9318 # <cjk>
+0x908F U+968F # <cjk>
+0x9090 U+745E # <cjk>
+0x9091 U+9AC4 # <cjk>
+0x9092 U+5D07 # <cjk>
+0x9093 U+5D69 # <cjk>
+0x9094 U+6570 # <cjk>
+0x9095 U+67A2 # <cjk>
+0x9096 U+8DA8 # <cjk>
+0x9097 U+96DB # <cjk>
+0x9098 U+636E # <cjk>
+0x9099 U+6749 # <cjk>
+0x909A U+6919 # <cjk>
+0x909B U+83C5 # <cjk>
+0x909C U+9817 # <cjk>
+0x909D U+96C0 # <cjk>
+0x909E U+88FE # <cjk>
+0x909F U+6F84 # <cjk>
+0x90A0 U+647A # <cjk>
+0x90A1 U+5BF8 # <cjk>
+0x90A2 U+4E16 # <cjk>
+0x90A3 U+702C # <cjk>
+0x90A4 U+755D # <cjk>
+0x90A5 U+662F # <cjk>
+0x90A6 U+51C4 # <cjk>
+0x90A7 U+5236 # <cjk>
+0x90A8 U+52E2 # <cjk>
+0x90A9 U+59D3 # <cjk>
+0x90AA U+5F81 # <cjk>
+0x90AB U+6027 # <cjk>
+0x90AC U+6210 # <cjk>
+0x90AD U+653F # <cjk>
+0x90AE U+6574 # <cjk>
+0x90AF U+661F # <cjk>
+0x90B0 U+6674 # <cjk>
+0x90B1 U+68F2 # <cjk>
+0x90B2 U+6816 # <cjk>
+0x90B3 U+6B63 # <cjk>
+0x90B4 U+6E05 # <cjk>
+0x90B5 U+7272 # <cjk>
+0x90B6 U+751F # <cjk>
+0x90B7 U+76DB # <cjk>
+0x90B8 U+7CBE # <cjk>
+0x90B9 U+8056 # <cjk>
+0x90BA U+58F0 # <cjk>
+0x90BB U+88FD # <cjk>
+0x90BC U+897F # <cjk>
+0x90BD U+8AA0 # <cjk>
+0x90BE U+8A93 # <cjk>
+0x90BF U+8ACB # <cjk>
+0x90C0 U+901D # <cjk>
+0x90C1 U+9192 # <cjk>
+0x90C2 U+9752 # <cjk>
+0x90C3 U+9759 # <cjk>
+0x90C4 U+6589 # <cjk>
+0x90C5 U+7A0E # <cjk>
+0x90C6 U+8106 # <cjk>
+0x90C7 U+96BB # <cjk>
+0x90C8 U+5E2D # <cjk>
+0x90C9 U+60DC # <cjk>
+0x90CA U+621A # <cjk>
+0x90CB U+65A5 # <cjk>
+0x90CC U+6614 # <cjk>
+0x90CD U+6790 # <cjk>
+0x90CE U+77F3 # <cjk>
+0x90CF U+7A4D # <cjk>
+0x90D0 U+7C4D # <cjk>
+0x90D1 U+7E3E # <cjk>
+0x90D2 U+810A # <cjk>
+0x90D3 U+8CAC # <cjk>
+0x90D4 U+8D64 # <cjk>
+0x90D5 U+8DE1 # <cjk>
+0x90D6 U+8E5F # <cjk>
+0x90D7 U+78A9 # <cjk>
+0x90D8 U+5207 # <cjk>
+0x90D9 U+62D9 # <cjk>
+0x90DA U+63A5 # <cjk>
+0x90DB U+6442 # <cjk>
+0x90DC U+6298 # <cjk>
+0x90DD U+8A2D # <cjk>
+0x90DE U+7A83 # <cjk>
+0x90DF U+7BC0 # <cjk>
+0x90E0 U+8AAC # <cjk>
+0x90E1 U+96EA # <cjk>
+0x90E2 U+7D76 # <cjk>
+0x90E3 U+820C # <cjk>
+0x90E4 U+8749 # <cjk>
+0x90E5 U+4ED9 # <cjk>
+0x90E6 U+5148 # <cjk>
+0x90E7 U+5343 # <cjk>
+0x90E8 U+5360 # <cjk>
+0x90E9 U+5BA3 # <cjk>
+0x90EA U+5C02 # <cjk>
+0x90EB U+5C16 # <cjk>
+0x90EC U+5DDD # <cjk>
+0x90ED U+6226 # <cjk>
+0x90EE U+6247 # <cjk>
+0x90EF U+64B0 # <cjk>
+0x90F0 U+6813 # <cjk>
+0x90F1 U+6834 # <cjk>
+0x90F2 U+6CC9 # <cjk>
+0x90F3 U+6D45 # <cjk>
+0x90F4 U+6D17 # <cjk>
+0x90F5 U+67D3 # <cjk>
+0x90F6 U+6F5C # <cjk>
+0x90F7 U+714E # <cjk>
+0x90F8 U+717D # <cjk>
+0x90F9 U+65CB # <cjk>
+0x90FA U+7A7F # <cjk>
+0x90FB U+7BAD # <cjk>
+0x90FC U+7DDA # <cjk>
+0x9140 U+7E4A # <cjk>
+0x9141 U+7FA8 # <cjk>
+0x9142 U+817A # <cjk>
+0x9143 U+821B # <cjk>
+0x9144 U+8239 # <cjk>
+0x9145 U+85A6 # <cjk>
+0x9146 U+8A6E # <cjk>
+0x9147 U+8CCE # <cjk>
+0x9148 U+8DF5 # <cjk>
+0x9149 U+9078 # <cjk>
+0x914A U+9077 # <cjk>
+0x914B U+92AD # <cjk>
+0x914C U+9291 # <cjk>
+0x914D U+9583 # <cjk>
+0x914E U+9BAE # <cjk>
+0x914F U+524D # <cjk>
+0x9150 U+5584 # <cjk>
+0x9151 U+6F38 # <cjk>
+0x9152 U+7136 # <cjk>
+0x9153 U+5168 # <cjk>
+0x9154 U+7985 # <cjk>
+0x9155 U+7E55 # <cjk>
+0x9156 U+81B3 # <cjk>
+0x9157 U+7CCE # <cjk>
+0x9158 U+564C # <cjk>
+0x9159 U+5851 # <cjk>
+0x915A U+5CA8 # <cjk>
+0x915B U+63AA # <cjk>
+0x915C U+66FE # <cjk>
+0x915D U+66FD # <cjk>
+0x915E U+695A # <cjk>
+0x915F U+72D9 # <cjk>
+0x9160 U+758F # <cjk>
+0x9161 U+758E # <cjk>
+0x9162 U+790E # <cjk>
+0x9163 U+7956 # <cjk>
+0x9164 U+79DF # <cjk>
+0x9165 U+7C97 # <cjk>
+0x9166 U+7D20 # <cjk>
+0x9167 U+7D44 # <cjk>
+0x9168 U+8607 # <cjk>
+0x9169 U+8A34 # <cjk>
+0x916A U+963B # <cjk>
+0x916B U+9061 # <cjk>
+0x916C U+9F20 # <cjk>
+0x916D U+50E7 # <cjk>
+0x916E U+5275 # <cjk>
+0x916F U+53CC # <cjk>
+0x9170 U+53E2 # <cjk>
+0x9171 U+5009 # <cjk>
+0x9172 U+55AA # <cjk>
+0x9173 U+58EE # <cjk>
+0x9174 U+594F # <cjk>
+0x9175 U+723D # <cjk>
+0x9176 U+5B8B # <cjk>
+0x9177 U+5C64 # <cjk>
+0x9178 U+531D # <cjk>
+0x9179 U+60E3 # <cjk>
+0x917A U+60F3 # <cjk>
+0x917B U+635C # <cjk>
+0x917C U+6383 # <cjk>
+0x917D U+633F # <cjk>
+0x917E U+63BB # <cjk>
+0x9180 U+64CD # <cjk>
+0x9181 U+65E9 # <cjk>
+0x9182 U+66F9 # <cjk>
+0x9183 U+5DE3 # <cjk>
+0x9184 U+69CD # <cjk>
+0x9185 U+69FD # <cjk>
+0x9186 U+6F15 # <cjk>
+0x9187 U+71E5 # <cjk>
+0x9188 U+4E89 # <cjk>
+0x9189 U+75E9 # <cjk>
+0x918A U+76F8 # <cjk>
+0x918B U+7A93 # <cjk>
+0x918C U+7CDF # <cjk>
+0x918D U+7DCF # <cjk>
+0x918E U+7D9C # <cjk>
+0x918F U+8061 # <cjk>
+0x9190 U+8349 # <cjk>
+0x9191 U+8358 # <cjk>
+0x9192 U+846C # <cjk>
+0x9193 U+84BC # <cjk>
+0x9194 U+85FB # <cjk>
+0x9195 U+88C5 # <cjk>
+0x9196 U+8D70 # <cjk>
+0x9197 U+9001 # <cjk>
+0x9198 U+906D # <cjk>
+0x9199 U+9397 # <cjk>
+0x919A U+971C # <cjk>
+0x919B U+9A12 # <cjk>
+0x919C U+50CF # <cjk>
+0x919D U+5897 # <cjk>
+0x919E U+618E # <cjk>
+0x919F U+81D3 # <cjk>
+0x91A0 U+8535 # <cjk>
+0x91A1 U+8D08 # <cjk>
+0x91A2 U+9020 # <cjk>
+0x91A3 U+4FC3 # <cjk>
+0x91A4 U+5074 # <cjk>
+0x91A5 U+5247 # <cjk>
+0x91A6 U+5373 # <cjk>
+0x91A7 U+606F # <cjk>
+0x91A8 U+6349 # <cjk>
+0x91A9 U+675F # <cjk>
+0x91AA U+6E2C # <cjk>
+0x91AB U+8DB3 # <cjk>
+0x91AC U+901F # <cjk>
+0x91AD U+4FD7 # <cjk>
+0x91AE U+5C5E # <cjk>
+0x91AF U+8CCA # <cjk>
+0x91B0 U+65CF # <cjk>
+0x91B1 U+7D9A # <cjk>
+0x91B2 U+5352 # <cjk>
+0x91B3 U+8896 # <cjk>
+0x91B4 U+5176 # <cjk>
+0x91B5 U+63C3 # <cjk>
+0x91B6 U+5B58 # <cjk>
+0x91B7 U+5B6B # <cjk>
+0x91B8 U+5C0A # <cjk>
+0x91B9 U+640D # <cjk>
+0x91BA U+6751 # <cjk>
+0x91BB U+905C # <cjk>
+0x91BC U+4ED6 # <cjk>
+0x91BD U+591A # <cjk>
+0x91BE U+592A # <cjk>
+0x91BF U+6C70 # <cjk>
+0x91C0 U+8A51 # <cjk>
+0x91C1 U+553E # <cjk>
+0x91C2 U+5815 # <cjk>
+0x91C3 U+59A5 # <cjk>
+0x91C4 U+60F0 # <cjk>
+0x91C5 U+6253 # <cjk>
+0x91C6 U+67C1 # <cjk>
+0x91C7 U+8235 # <cjk>
+0x91C8 U+6955 # <cjk>
+0x91C9 U+9640 # <cjk>
+0x91CA U+99C4 # <cjk>
+0x91CB U+9A28 # <cjk>
+0x91CC U+4F53 # <cjk>
+0x91CD U+5806 # <cjk>
+0x91CE U+5BFE # <cjk>
+0x91CF U+8010 # <cjk>
+0x91D0 U+5CB1 # <cjk>
+0x91D1 U+5E2F # <cjk>
+0x91D2 U+5F85 # <cjk>
+0x91D3 U+6020 # <cjk>
+0x91D4 U+614B # <cjk>
+0x91D5 U+6234 # <cjk>
+0x91D6 U+66FF # <cjk>
+0x91D7 U+6CF0 # <cjk>
+0x91D8 U+6EDE # <cjk>
+0x91D9 U+80CE # <cjk>
+0x91DA U+817F # <cjk>
+0x91DB U+82D4 # <cjk>
+0x91DC U+888B # <cjk>
+0x91DD U+8CB8 # <cjk>
+0x91DE U+9000 # <cjk>
+0x91DF U+902E # <cjk>
+0x91E0 U+968A # <cjk>
+0x91E1 U+9EDB # <cjk>
+0x91E2 U+9BDB # <cjk>
+0x91E3 U+4EE3 # <cjk>
+0x91E4 U+53F0 # <cjk>
+0x91E5 U+5927 # <cjk>
+0x91E6 U+7B2C # <cjk>
+0x91E7 U+918D # <cjk>
+0x91E8 U+984C # <cjk>
+0x91E9 U+9DF9 # <cjk>
+0x91EA U+6EDD # <cjk>
+0x91EB U+7027 # <cjk>
+0x91EC U+5353 # <cjk>
+0x91ED U+5544 # <cjk>
+0x91EE U+5B85 # <cjk>
+0x91EF U+6258 # <cjk>
+0x91F0 U+629E # <cjk>
+0x91F1 U+62D3 # <cjk>
+0x91F2 U+6CA2 # <cjk>
+0x91F3 U+6FEF # <cjk>
+0x91F4 U+7422 # <cjk>
+0x91F5 U+8A17 # <cjk>
+0x91F6 U+9438 # <cjk>
+0x91F7 U+6FC1 # <cjk>
+0x91F8 U+8AFE # <cjk>
+0x91F9 U+8338 # <cjk>
+0x91FA U+51E7 # <cjk>
+0x91FB U+86F8 # <cjk>
+0x91FC U+53EA # <cjk>
+0x9240 U+53E9 # <cjk>
+0x9241 U+4F46 # <cjk>
+0x9242 U+9054 # <cjk>
+0x9243 U+8FB0 # <cjk>
+0x9244 U+596A # <cjk>
+0x9245 U+8131 # <cjk>
+0x9246 U+5DFD # <cjk>
+0x9247 U+7AEA # <cjk>
+0x9248 U+8FBF # <cjk>
+0x9249 U+68DA # <cjk>
+0x924A U+8C37 # <cjk>
+0x924B U+72F8 # <cjk>
+0x924C U+9C48 # <cjk>
+0x924D U+6A3D # <cjk>
+0x924E U+8AB0 # <cjk>
+0x924F U+4E39 # <cjk>
+0x9250 U+5358 # <cjk>
+0x9251 U+5606 # <cjk>
+0x9252 U+5766 # <cjk>
+0x9253 U+62C5 # <cjk>
+0x9254 U+63A2 # <cjk>
+0x9255 U+65E6 # <cjk>
+0x9256 U+6B4E # <cjk>
+0x9257 U+6DE1 # <cjk>
+0x9258 U+6E5B # <cjk>
+0x9259 U+70AD # <cjk>
+0x925A U+77ED # <cjk>
+0x925B U+7AEF # <cjk>
+0x925C U+7BAA # <cjk>
+0x925D U+7DBB # <cjk>
+0x925E U+803D # <cjk>
+0x925F U+80C6 # <cjk>
+0x9260 U+86CB # <cjk>
+0x9261 U+8A95 # <cjk>
+0x9262 U+935B # <cjk>
+0x9263 U+56E3 # <cjk>
+0x9264 U+58C7 # <cjk>
+0x9265 U+5F3E # <cjk>
+0x9266 U+65AD # <cjk>
+0x9267 U+6696 # <cjk>
+0x9268 U+6A80 # <cjk>
+0x9269 U+6BB5 # <cjk>
+0x926A U+7537 # <cjk>
+0x926B U+8AC7 # <cjk>
+0x926C U+5024 # <cjk>
+0x926D U+77E5 # <cjk>
+0x926E U+5730 # <cjk>
+0x926F U+5F1B # <cjk>
+0x9270 U+6065 # <cjk>
+0x9271 U+667A # <cjk>
+0x9272 U+6C60 # <cjk>
+0x9273 U+75F4 # <cjk>
+0x9274 U+7A1A # <cjk>
+0x9275 U+7F6E # <cjk>
+0x9276 U+81F4 # <cjk>
+0x9277 U+8718 # <cjk>
+0x9278 U+9045 # <cjk>
+0x9279 U+99B3 # <cjk>
+0x927A U+7BC9 # <cjk>
+0x927B U+755C # <cjk>
+0x927C U+7AF9 # <cjk>
+0x927D U+7B51 # <cjk>
+0x927E U+84C4 # <cjk>
+0x9280 U+9010 # <cjk>
+0x9281 U+79E9 # <cjk>
+0x9282 U+7A92 # <cjk>
+0x9283 U+8336 # <cjk>
+0x9284 U+5AE1 # <cjk>
+0x9285 U+7740 # <cjk>
+0x9286 U+4E2D # <cjk>
+0x9287 U+4EF2 # <cjk>
+0x9288 U+5B99 # <cjk>
+0x9289 U+5FE0 # <cjk>
+0x928A U+62BD # <cjk>
+0x928B U+663C # <cjk>
+0x928C U+67F1 # <cjk>
+0x928D U+6CE8 # <cjk>
+0x928E U+866B # <cjk>
+0x928F U+8877 # <cjk>
+0x9290 U+8A3B # <cjk>
+0x9291 U+914E # <cjk>
+0x9292 U+92F3 # <cjk>
+0x9293 U+99D0 # <cjk>
+0x9294 U+6A17 # <cjk>
+0x9295 U+7026 # <cjk>
+0x9296 U+732A # <cjk>
+0x9297 U+82E7 # <cjk>
+0x9298 U+8457 # <cjk>
+0x9299 U+8CAF # <cjk>
+0x929A U+4E01 # <cjk>
+0x929B U+5146 # <cjk>
+0x929C U+51CB # <cjk>
+0x929D U+558B # <cjk>
+0x929E U+5BF5 # <cjk>
+0x929F U+5E16 # <cjk>
+0x92A0 U+5E33 # <cjk>
+0x92A1 U+5E81 # <cjk>
+0x92A2 U+5F14 # <cjk>
+0x92A3 U+5F35 # <cjk>
+0x92A4 U+5F6B # <cjk>
+0x92A5 U+5FB4 # <cjk>
+0x92A6 U+61F2 # <cjk>
+0x92A7 U+6311 # <cjk>
+0x92A8 U+66A2 # <cjk>
+0x92A9 U+671D # <cjk>
+0x92AA U+6F6E # <cjk>
+0x92AB U+7252 # <cjk>
+0x92AC U+753A # <cjk>
+0x92AD U+773A # <cjk>
+0x92AE U+8074 # <cjk>
+0x92AF U+8139 # <cjk>
+0x92B0 U+8178 # <cjk>
+0x92B1 U+8776 # <cjk>
+0x92B2 U+8ABF # <cjk>
+0x92B3 U+8ADC # <cjk>
+0x92B4 U+8D85 # <cjk>
+0x92B5 U+8DF3 # <cjk>
+0x92B6 U+929A # <cjk>
+0x92B7 U+9577 # <cjk>
+0x92B8 U+9802 # <cjk>
+0x92B9 U+9CE5 # <cjk>
+0x92BA U+52C5 # <cjk>
+0x92BB U+6357 # <cjk>
+0x92BC U+76F4 # <cjk>
+0x92BD U+6715 # <cjk>
+0x92BE U+6C88 # <cjk>
+0x92BF U+73CD # <cjk>
+0x92C0 U+8CC3 # <cjk>
+0x92C1 U+93AE # <cjk>
+0x92C2 U+9673 # <cjk>
+0x92C3 U+6D25 # <cjk>
+0x92C4 U+589C # <cjk>
+0x92C5 U+690E # <cjk>
+0x92C6 U+69CC # <cjk>
+0x92C7 U+8FFD # <cjk>
+0x92C8 U+939A # <cjk>
+0x92C9 U+75DB # <cjk>
+0x92CA U+901A # <cjk>
+0x92CB U+585A # <cjk>
+0x92CC U+6802 # <cjk>
+0x92CD U+63B4 # <cjk>
+0x92CE U+69FB # <cjk>
+0x92CF U+4F43 # <cjk>
+0x92D0 U+6F2C # <cjk>
+0x92D1 U+67D8 # <cjk>
+0x92D2 U+8FBB # <cjk>
+0x92D3 U+8526 # <cjk>
+0x92D4 U+7DB4 # <cjk>
+0x92D5 U+9354 # <cjk>
+0x92D6 U+693F # <cjk>
+0x92D7 U+6F70 # <cjk>
+0x92D8 U+576A # <cjk>
+0x92D9 U+58F7 # <cjk>
+0x92DA U+5B2C # <cjk>
+0x92DB U+7D2C # <cjk>
+0x92DC U+722A # <cjk>
+0x92DD U+540A # <cjk>
+0x92DE U+91E3 # <cjk>
+0x92DF U+9DB4 # <cjk>
+0x92E0 U+4EAD # <cjk>
+0x92E1 U+4F4E # <cjk>
+0x92E2 U+505C # <cjk>
+0x92E3 U+5075 # <cjk>
+0x92E4 U+5243 # <cjk>
+0x92E5 U+8C9E # <cjk>
+0x92E6 U+5448 # <cjk>
+0x92E7 U+5824 # <cjk>
+0x92E8 U+5B9A # <cjk>
+0x92E9 U+5E1D # <cjk>
+0x92EA U+5E95 # <cjk>
+0x92EB U+5EAD # <cjk>
+0x92EC U+5EF7 # <cjk>
+0x92ED U+5F1F # <cjk>
+0x92EE U+608C # <cjk>
+0x92EF U+62B5 # <cjk>
+0x92F0 U+633A # <cjk>
+0x92F1 U+63D0 # <cjk>
+0x92F2 U+68AF # <cjk>
+0x92F3 U+6C40 # <cjk>
+0x92F4 U+7887 # <cjk>
+0x92F5 U+798E # <cjk>
+0x92F6 U+7A0B # <cjk>
+0x92F7 U+7DE0 # <cjk>
+0x92F8 U+8247 # <cjk>
+0x92F9 U+8A02 # <cjk>
+0x92FA U+8AE6 # <cjk>
+0x92FB U+8E44 # <cjk>
+0x92FC U+9013 # <cjk>
+0x9340 U+90B8 # <cjk>
+0x9341 U+912D # <cjk>
+0x9342 U+91D8 # <cjk>
+0x9343 U+9F0E # <cjk>
+0x9344 U+6CE5 # <cjk>
+0x9345 U+6458 # <cjk>
+0x9346 U+64E2 # <cjk>
+0x9347 U+6575 # <cjk>
+0x9348 U+6EF4 # <cjk>
+0x9349 U+7684 # <cjk>
+0x934A U+7B1B # <cjk>
+0x934B U+9069 # <cjk>
+0x934C U+93D1 # <cjk>
+0x934D U+6EBA # <cjk>
+0x934E U+54F2 # <cjk>
+0x934F U+5FB9 # <cjk>
+0x9350 U+64A4 # <cjk>
+0x9351 U+8F4D # <cjk>
+0x9352 U+8FED # <cjk>
+0x9353 U+9244 # <cjk>
+0x9354 U+5178 # <cjk>
+0x9355 U+586B # <cjk>
+0x9356 U+5929 # <cjk>
+0x9357 U+5C55 # <cjk>
+0x9358 U+5E97 # <cjk>
+0x9359 U+6DFB # <cjk>
+0x935A U+7E8F # <cjk>
+0x935B U+751C # <cjk>
+0x935C U+8CBC # <cjk>
+0x935D U+8EE2 # <cjk>
+0x935E U+985B # <cjk>
+0x935F U+70B9 # <cjk>
+0x9360 U+4F1D # <cjk>
+0x9361 U+6BBF # <cjk>
+0x9362 U+6FB1 # <cjk>
+0x9363 U+7530 # <cjk>
+0x9364 U+96FB # <cjk>
+0x9365 U+514E # <cjk>
+0x9366 U+5410 # <cjk>
+0x9367 U+5835 # <cjk>
+0x9368 U+5857 # <cjk>
+0x9369 U+59AC # <cjk>
+0x936A U+5C60 # <cjk>
+0x936B U+5F92 # <cjk>
+0x936C U+6597 # <cjk>
+0x936D U+675C # <cjk>
+0x936E U+6E21 # <cjk>
+0x936F U+767B # <cjk>
+0x9370 U+83DF # <cjk>
+0x9371 U+8CED # <cjk>
+0x9372 U+9014 # <cjk>
+0x9373 U+90FD # <cjk>
+0x9374 U+934D # <cjk>
+0x9375 U+7825 # <cjk>
+0x9376 U+783A # <cjk>
+0x9377 U+52AA # <cjk>
+0x9378 U+5EA6 # <cjk>
+0x9379 U+571F # <cjk>
+0x937A U+5974 # <cjk>
+0x937B U+6012 # <cjk>
+0x937C U+5012 # <cjk>
+0x937D U+515A # <cjk>
+0x937E U+51AC # <cjk>
+0x9380 U+51CD # <cjk>
+0x9381 U+5200 # <cjk>
+0x9382 U+5510 # <cjk>
+0x9383 U+5854 # <cjk>
+0x9384 U+5858 # <cjk>
+0x9385 U+5957 # <cjk>
+0x9386 U+5B95 # <cjk>
+0x9387 U+5CF6 # <cjk>
+0x9388 U+5D8B # <cjk>
+0x9389 U+60BC # <cjk>
+0x938A U+6295 # <cjk>
+0x938B U+642D # <cjk>
+0x938C U+6771 # <cjk>
+0x938D U+6843 # <cjk>
+0x938E U+68BC # <cjk>
+0x938F U+68DF # <cjk>
+0x9390 U+76D7 # <cjk>
+0x9391 U+6DD8 # <cjk>
+0x9392 U+6E6F # <cjk>
+0x9393 U+6D9B # <cjk>
+0x9394 U+706F # <cjk>
+0x9395 U+71C8 # <cjk>
+0x9396 U+5F53 # <cjk>
+0x9397 U+75D8 # <cjk>
+0x9398 U+7977 # <cjk>
+0x9399 U+7B49 # <cjk>
+0x939A U+7B54 # <cjk>
+0x939B U+7B52 # <cjk>
+0x939C U+7CD6 # <cjk>
+0x939D U+7D71 # <cjk>
+0x939E U+5230 # <cjk>
+0x939F U+8463 # <cjk>
+0x93A0 U+8569 # <cjk>
+0x93A1 U+85E4 # <cjk>
+0x93A2 U+8A0E # <cjk>
+0x93A3 U+8B04 # <cjk>
+0x93A4 U+8C46 # <cjk>
+0x93A5 U+8E0F # <cjk>
+0x93A6 U+9003 # <cjk>
+0x93A7 U+900F # <cjk>
+0x93A8 U+9419 # <cjk>
+0x93A9 U+9676 # <cjk>
+0x93AA U+982D # <cjk>
+0x93AB U+9A30 # <cjk>
+0x93AC U+95D8 # <cjk>
+0x93AD U+50CD # <cjk>
+0x93AE U+52D5 # <cjk>
+0x93AF U+540C # <cjk>
+0x93B0 U+5802 # <cjk>
+0x93B1 U+5C0E # <cjk>
+0x93B2 U+61A7 # <cjk>
+0x93B3 U+649E # <cjk>
+0x93B4 U+6D1E # <cjk>
+0x93B5 U+77B3 # <cjk>
+0x93B6 U+7AE5 # <cjk>
+0x93B7 U+80F4 # <cjk>
+0x93B8 U+8404 # <cjk>
+0x93B9 U+9053 # <cjk>
+0x93BA U+9285 # <cjk>
+0x93BB U+5CE0 # <cjk>
+0x93BC U+9D07 # <cjk>
+0x93BD U+533F # <cjk>
+0x93BE U+5F97 # <cjk>
+0x93BF U+5FB3 # <cjk>
+0x93C0 U+6D9C # <cjk>
+0x93C1 U+7279 # <cjk>
+0x93C2 U+7763 # <cjk>
+0x93C3 U+79BF # <cjk>
+0x93C4 U+7BE4 # <cjk>
+0x93C5 U+6BD2 # <cjk>
+0x93C6 U+72EC # <cjk>
+0x93C7 U+8AAD # <cjk>
+0x93C8 U+6803 # <cjk>
+0x93C9 U+6A61 # <cjk>
+0x93CA U+51F8 # <cjk>
+0x93CB U+7A81 # <cjk>
+0x93CC U+6934 # <cjk>
+0x93CD U+5C4A # <cjk>
+0x93CE U+9CF6 # <cjk>
+0x93CF U+82EB # <cjk>
+0x93D0 U+5BC5 # <cjk>
+0x93D1 U+9149 # <cjk>
+0x93D2 U+701E # <cjk>
+0x93D3 U+5678 # <cjk>
+0x93D4 U+5C6F # <cjk>
+0x93D5 U+60C7 # <cjk>
+0x93D6 U+6566 # <cjk>
+0x93D7 U+6C8C # <cjk>
+0x93D8 U+8C5A # <cjk>
+0x93D9 U+9041 # <cjk>
+0x93DA U+9813 # <cjk>
+0x93DB U+5451 # <cjk>
+0x93DC U+66C7 # <cjk>
+0x93DD U+920D # <cjk>
+0x93DE U+5948 # <cjk>
+0x93DF U+90A3 # <cjk>
+0x93E0 U+5185 # <cjk>
+0x93E1 U+4E4D # <cjk>
+0x93E2 U+51EA # <cjk>
+0x93E3 U+8599 # <cjk>
+0x93E4 U+8B0E # <cjk>
+0x93E5 U+7058 # <cjk>
+0x93E6 U+637A # <cjk>
+0x93E7 U+934B # <cjk>
+0x93E8 U+6962 # <cjk>
+0x93E9 U+99B4 # <cjk>
+0x93EA U+7E04 # <cjk>
+0x93EB U+7577 # <cjk>
+0x93EC U+5357 # <cjk>
+0x93ED U+6960 # <cjk>
+0x93EE U+8EDF # <cjk>
+0x93EF U+96E3 # <cjk>
+0x93F0 U+6C5D # <cjk>
+0x93F1 U+4E8C # <cjk>
+0x93F2 U+5C3C # <cjk>
+0x93F3 U+5F10 # <cjk>
+0x93F4 U+8FE9 # <cjk>
+0x93F5 U+5302 # <cjk>
+0x93F6 U+8CD1 # <cjk>
+0x93F7 U+8089 # <cjk>
+0x93F8 U+8679 # <cjk>
+0x93F9 U+5EFF # <cjk>
+0x93FA U+65E5 # <cjk>
+0x93FB U+4E73 # <cjk>
+0x93FC U+5165 # <cjk>
+0x9440 U+5982 # <cjk>
+0x9441 U+5C3F # <cjk>
+0x9442 U+97EE # <cjk>
+0x9443 U+4EFB # <cjk>
+0x9444 U+598A # <cjk>
+0x9445 U+5FCD # <cjk>
+0x9446 U+8A8D # <cjk>
+0x9447 U+6FE1 # <cjk>
+0x9448 U+79B0 # <cjk>
+0x9449 U+7962 # <cjk>
+0x944A U+5BE7 # <cjk>
+0x944B U+8471 # <cjk>
+0x944C U+732B # <cjk>
+0x944D U+71B1 # <cjk>
+0x944E U+5E74 # <cjk>
+0x944F U+5FF5 # <cjk>
+0x9450 U+637B # <cjk>
+0x9451 U+649A # <cjk>
+0x9452 U+71C3 # <cjk>
+0x9453 U+7C98 # <cjk>
+0x9454 U+4E43 # <cjk>
+0x9455 U+5EFC # <cjk>
+0x9456 U+4E4B # <cjk>
+0x9457 U+57DC # <cjk>
+0x9458 U+56A2 # <cjk>
+0x9459 U+60A9 # <cjk>
+0x945A U+6FC3 # <cjk>
+0x945B U+7D0D # <cjk>
+0x945C U+80FD # <cjk>
+0x945D U+8133 # <cjk>
+0x945E U+81BF # <cjk>
+0x945F U+8FB2 # <cjk>
+0x9460 U+8997 # <cjk>
+0x9461 U+86A4 # <cjk>
+0x9462 U+5DF4 # <cjk>
+0x9463 U+628A # <cjk>
+0x9464 U+64AD # <cjk>
+0x9465 U+8987 # <cjk>
+0x9466 U+6777 # <cjk>
+0x9467 U+6CE2 # <cjk>
+0x9468 U+6D3E # <cjk>
+0x9469 U+7436 # <cjk>
+0x946A U+7834 # <cjk>
+0x946B U+5A46 # <cjk>
+0x946C U+7F75 # <cjk>
+0x946D U+82AD # <cjk>
+0x946E U+99AC # <cjk>
+0x946F U+4FF3 # <cjk>
+0x9470 U+5EC3 # <cjk>
+0x9471 U+62DD # <cjk>
+0x9472 U+6392 # <cjk>
+0x9473 U+6557 # <cjk>
+0x9474 U+676F # <cjk>
+0x9475 U+76C3 # <cjk>
+0x9476 U+724C # <cjk>
+0x9477 U+80CC # <cjk>
+0x9478 U+80BA # <cjk>
+0x9479 U+8F29 # <cjk>
+0x947A U+914D # <cjk>
+0x947B U+500D # <cjk>
+0x947C U+57F9 # <cjk>
+0x947D U+5A92 # <cjk>
+0x947E U+6885 # <cjk>
+0x9480 U+6973 # <cjk>
+0x9481 U+7164 # <cjk>
+0x9482 U+72FD # <cjk>
+0x9483 U+8CB7 # <cjk>
+0x9484 U+58F2 # <cjk>
+0x9485 U+8CE0 # <cjk>
+0x9486 U+966A # <cjk>
+0x9487 U+9019 # <cjk>
+0x9488 U+877F # <cjk>
+0x9489 U+79E4 # <cjk>
+0x948A U+77E7 # <cjk>
+0x948B U+8429 # <cjk>
+0x948C U+4F2F # <cjk>
+0x948D U+5265 # <cjk>
+0x948E U+535A # <cjk>
+0x948F U+62CD # <cjk>
+0x9490 U+67CF # <cjk>
+0x9491 U+6CCA # <cjk>
+0x9492 U+767D # <cjk>
+0x9493 U+7B94 # <cjk>
+0x9494 U+7C95 # <cjk>
+0x9495 U+8236 # <cjk>
+0x9496 U+8584 # <cjk>
+0x9497 U+8FEB # <cjk>
+0x9498 U+66DD # <cjk>
+0x9499 U+6F20 # <cjk>
+0x949A U+7206 # <cjk>
+0x949B U+7E1B # <cjk>
+0x949C U+83AB # <cjk>
+0x949D U+99C1 # <cjk>
+0x949E U+9EA6 # <cjk>
+0x949F U+51FD # <cjk>
+0x94A0 U+7BB1 # <cjk>
+0x94A1 U+7872 # <cjk>
+0x94A2 U+7BB8 # <cjk>
+0x94A3 U+8087 # <cjk>
+0x94A4 U+7B48 # <cjk>
+0x94A5 U+6AE8 # <cjk>
+0x94A6 U+5E61 # <cjk>
+0x94A7 U+808C # <cjk>
+0x94A8 U+7551 # <cjk>
+0x94A9 U+7560 # <cjk>
+0x94AA U+516B # <cjk>
+0x94AB U+9262 # <cjk>
+0x94AC U+6E8C # <cjk>
+0x94AD U+767A # <cjk>
+0x94AE U+9197 # <cjk>
+0x94AF U+9AEA # <cjk>
+0x94B0 U+4F10 # <cjk>
+0x94B1 U+7F70 # <cjk>
+0x94B2 U+629C # <cjk>
+0x94B3 U+7B4F # <cjk>
+0x94B4 U+95A5 # <cjk>
+0x94B5 U+9CE9 # <cjk>
+0x94B6 U+567A # <cjk>
+0x94B7 U+5859 # <cjk>
+0x94B8 U+86E4 # <cjk>
+0x94B9 U+96BC # <cjk>
+0x94BA U+4F34 # <cjk>
+0x94BB U+5224 # <cjk>
+0x94BC U+534A # <cjk>
+0x94BD U+53CD # <cjk>
+0x94BE U+53DB # <cjk>
+0x94BF U+5E06 # <cjk>
+0x94C0 U+642C # <cjk>
+0x94C1 U+6591 # <cjk>
+0x94C2 U+677F # <cjk>
+0x94C3 U+6C3E # <cjk>
+0x94C4 U+6C4E # <cjk>
+0x94C5 U+7248 # <cjk>
+0x94C6 U+72AF # <cjk>
+0x94C7 U+73ED # <cjk>
+0x94C8 U+7554 # <cjk>
+0x94C9 U+7E41 # <cjk>
+0x94CA U+822C # <cjk>
+0x94CB U+85E9 # <cjk>
+0x94CC U+8CA9 # <cjk>
+0x94CD U+7BC4 # <cjk>
+0x94CE U+91C6 # <cjk>
+0x94CF U+7169 # <cjk>
+0x94D0 U+9812 # <cjk>
+0x94D1 U+98EF # <cjk>
+0x94D2 U+633D # <cjk>
+0x94D3 U+6669 # <cjk>
+0x94D4 U+756A # <cjk>
+0x94D5 U+76E4 # <cjk>
+0x94D6 U+78D0 # <cjk>
+0x94D7 U+8543 # <cjk>
+0x94D8 U+86EE # <cjk>
+0x94D9 U+532A # <cjk>
+0x94DA U+5351 # <cjk>
+0x94DB U+5426 # <cjk>
+0x94DC U+5983 # <cjk>
+0x94DD U+5E87 # <cjk>
+0x94DE U+5F7C # <cjk>
+0x94DF U+60B2 # <cjk>
+0x94E0 U+6249 # <cjk>
+0x94E1 U+6279 # <cjk>
+0x94E2 U+62AB # <cjk>
+0x94E3 U+6590 # <cjk>
+0x94E4 U+6BD4 # <cjk>
+0x94E5 U+6CCC # <cjk>
+0x94E6 U+75B2 # <cjk>
+0x94E7 U+76AE # <cjk>
+0x94E8 U+7891 # <cjk>
+0x94E9 U+79D8 # <cjk>
+0x94EA U+7DCB # <cjk>
+0x94EB U+7F77 # <cjk>
+0x94EC U+80A5 # <cjk>
+0x94ED U+88AB # <cjk>
+0x94EE U+8AB9 # <cjk>
+0x94EF U+8CBB # <cjk>
+0x94F0 U+907F # <cjk>
+0x94F1 U+975E # <cjk>
+0x94F2 U+98DB # <cjk>
+0x94F3 U+6A0B # <cjk>
+0x94F4 U+7C38 # <cjk>
+0x94F5 U+5099 # <cjk>
+0x94F6 U+5C3E # <cjk>
+0x94F7 U+5FAE # <cjk>
+0x94F8 U+6787 # <cjk>
+0x94F9 U+6BD8 # <cjk>
+0x94FA U+7435 # <cjk>
+0x94FB U+7709 # <cjk>
+0x94FC U+7F